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"