File indexing completed on 2024-05-12 17:18:54
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Peter Penz <peter.penz19@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "dolphinfontrequester.h" 0008 0009 #include <KLocalizedString> 0010 0011 #include <QComboBox> 0012 #include <QFontDatabase> 0013 #include <QFontDialog> 0014 #include <QHBoxLayout> 0015 #include <QPushButton> 0016 0017 DolphinFontRequester::DolphinFontRequester(QWidget *parent) 0018 : QWidget(parent) 0019 , m_modeCombo(nullptr) 0020 , m_chooseFontButton(nullptr) 0021 , m_mode(SystemFont) 0022 , m_customFont() 0023 { 0024 QHBoxLayout *topLayout = new QHBoxLayout(this); 0025 topLayout->setContentsMargins(0, 0, 0, 0); 0026 0027 m_modeCombo = new QComboBox(this); 0028 m_modeCombo->addItem(i18nc("@item:inlistbox Font", "System Font")); 0029 m_modeCombo->addItem(i18nc("@item:inlistbox Font", "Custom Font")); 0030 connect(m_modeCombo, &QComboBox::activated, this, &DolphinFontRequester::changeMode); 0031 0032 m_chooseFontButton = new QPushButton(i18nc("@action:button Choose font", "Choose…"), this); 0033 connect(m_chooseFontButton, &QPushButton::clicked, this, &DolphinFontRequester::openFontDialog); 0034 0035 changeMode(m_modeCombo->currentIndex()); 0036 0037 topLayout->addWidget(m_modeCombo); 0038 topLayout->addWidget(m_chooseFontButton); 0039 } 0040 0041 DolphinFontRequester::~DolphinFontRequester() 0042 { 0043 } 0044 0045 void DolphinFontRequester::setMode(Mode mode) 0046 { 0047 m_mode = mode; 0048 m_modeCombo->setCurrentIndex(m_mode); 0049 m_chooseFontButton->setEnabled(m_mode == CustomFont); 0050 } 0051 0052 DolphinFontRequester::Mode DolphinFontRequester::mode() const 0053 { 0054 return m_mode; 0055 } 0056 0057 QFont DolphinFontRequester::currentFont() const 0058 { 0059 return (m_mode == CustomFont) ? m_customFont : QFontDatabase::systemFont(QFontDatabase::GeneralFont); 0060 } 0061 0062 void DolphinFontRequester::setCustomFont(const QFont &font) 0063 { 0064 m_customFont = font; 0065 } 0066 0067 QFont DolphinFontRequester::customFont() const 0068 { 0069 return m_customFont; 0070 } 0071 0072 void DolphinFontRequester::openFontDialog() 0073 { 0074 bool ok = false; 0075 const QFont font = QFontDialog::getFont(&ok, this); 0076 if (ok) { 0077 m_customFont = font; 0078 m_modeCombo->setFont(m_customFont); 0079 Q_EMIT changed(); 0080 } 0081 } 0082 0083 void DolphinFontRequester::changeMode(int index) 0084 { 0085 setMode((index == CustomFont) ? CustomFont : SystemFont); 0086 Q_EMIT changed(); 0087 } 0088 0089 #include "moc_dolphinfontrequester.cpp"