]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/dolphinfontrequester.cpp
cb66870afe83e722fc381bc7da51edfeabc2a2eb
[dolphin.git] / src / settings / viewmodes / dolphinfontrequester.cpp
1 /*
2 * SPDX-FileCopyrightText: 2008 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "dolphinfontrequester.h"
8
9 #include <KLocalizedString>
10
11 #include <QComboBox>
12 #include <QFontDatabase>
13 #include <QFontDialog>
14 #include <QHBoxLayout>
15 #include <QPushButton>
16
17 DolphinFontRequester::DolphinFontRequester(QWidget* parent) :
18 QWidget(parent),
19 m_modeCombo(nullptr),
20 m_chooseFontButton(nullptr),
21 m_mode(SystemFont),
22 m_customFont()
23 {
24 QHBoxLayout* topLayout = new QHBoxLayout(this);
25 topLayout->setContentsMargins(0, 0, 0, 0);
26
27 m_modeCombo = new QComboBox(this);
28 m_modeCombo->addItem(i18nc("@item:inlistbox Font", "System Font"));
29 m_modeCombo->addItem(i18nc("@item:inlistbox Font", "Custom Font"));
30 connect(m_modeCombo, QOverload<int>::of(&QComboBox::activated),
31 this, &DolphinFontRequester::changeMode);
32
33 m_chooseFontButton = new QPushButton(i18nc("@action:button Choose font", "Choose..."), this);
34 connect(m_chooseFontButton, &QPushButton::clicked,
35 this, &DolphinFontRequester::openFontDialog);
36
37 changeMode(m_modeCombo->currentIndex());
38
39 topLayout->addWidget(m_modeCombo);
40 topLayout->addWidget(m_chooseFontButton);
41 }
42
43 DolphinFontRequester::~DolphinFontRequester()
44 {
45 }
46
47 void DolphinFontRequester::setMode(Mode mode)
48 {
49 m_mode = mode;
50 m_modeCombo->setCurrentIndex(m_mode);
51 m_chooseFontButton->setEnabled(m_mode == CustomFont);
52 }
53
54 DolphinFontRequester::Mode DolphinFontRequester::mode() const
55 {
56 return m_mode;
57 }
58
59 QFont DolphinFontRequester::currentFont() const
60 {
61 return (m_mode == CustomFont) ? m_customFont : QFontDatabase::systemFont(QFontDatabase::GeneralFont);
62 }
63
64 void DolphinFontRequester::setCustomFont(const QFont& font)
65 {
66 m_customFont = font;
67 }
68
69 QFont DolphinFontRequester::customFont() const
70 {
71 return m_customFont;
72 }
73
74 void DolphinFontRequester::openFontDialog()
75 {
76 bool ok = false;
77 const QFont font = QFontDialog::getFont(&ok, this);
78 if (ok) {
79 m_customFont = font;
80 m_modeCombo->setFont(m_customFont);
81 Q_EMIT changed();
82 }
83 }
84
85 void DolphinFontRequester::changeMode(int index)
86 {
87 setMode((index == CustomFont) ? CustomFont : SystemFont);
88 Q_EMIT changed();
89 }
90