]> cloud.milkyroute.net Git - dolphin.git/blob - src/settings/viewmodes/dolphinfontrequester.cpp
ffa460f425085141a4e2aa5c9905256c4cdbdfc7
[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, &QComboBox::activated, this, &DolphinFontRequester::changeMode);
31
32 m_chooseFontButton = new QPushButton(i18nc("@action:button Choose font", "Choose…"), this);
33 connect(m_chooseFontButton, &QPushButton::clicked, this, &DolphinFontRequester::openFontDialog);
34
35 changeMode(m_modeCombo->currentIndex());
36
37 topLayout->addWidget(m_modeCombo);
38 topLayout->addWidget(m_chooseFontButton);
39 }
40
41 DolphinFontRequester::~DolphinFontRequester()
42 {
43 }
44
45 void DolphinFontRequester::setMode(Mode mode)
46 {
47 m_mode = mode;
48 m_modeCombo->setCurrentIndex(m_mode);
49 m_chooseFontButton->setEnabled(m_mode == CustomFont);
50 }
51
52 DolphinFontRequester::Mode DolphinFontRequester::mode() const
53 {
54 return m_mode;
55 }
56
57 QFont DolphinFontRequester::currentFont() const
58 {
59 return (m_mode == CustomFont) ? m_customFont : QFontDatabase::systemFont(QFontDatabase::GeneralFont);
60 }
61
62 void DolphinFontRequester::setCustomFont(const QFont &font)
63 {
64 m_customFont = font;
65 }
66
67 QFont DolphinFontRequester::customFont() const
68 {
69 return m_customFont;
70 }
71
72 void DolphinFontRequester::openFontDialog()
73 {
74 bool ok = false;
75 const QFont font = QFontDialog::getFont(&ok, this);
76 if (ok) {
77 m_customFont = font;
78 m_modeCombo->setFont(m_customFont);
79 Q_EMIT changed();
80 }
81 }
82
83 void DolphinFontRequester::changeMode(int index)
84 {
85 setMode((index == CustomFont) ? CustomFont : SystemFont);
86 Q_EMIT changed();
87 }