From: Peter Penz Date: Fri, 15 Feb 2008 22:51:23 +0000 (+0000) Subject: Currently when the general font of KDE has been changed, the used fonts for the view... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/d38de66f4b97a6d9cd30f3fc69e66b343ca312dc?ds=inline Currently when the general font of KDE has been changed, the used fonts for the view in Dolphin have not been changed. This has been fixed by differing between a "Use system font" setting (= default) or a "Use custom font" setting. TODO: if the general font of KDE is changed during Dolphin is open, no update is done yet CCMAIL: ereslibre@kde.org svn path=/trunk/KDE/kdebase/apps/; revision=775487 --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f5a6c3ed9..4cbadd238 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -85,6 +85,7 @@ set(dolphin_SRCS columnviewsettingspage.cpp detailsviewsettingspage.cpp dolphinapplication.cpp + dolphinfontrequester.cpp dolphinmainwindow.cpp dolphinnewmenu.cpp dolphinviewcontainer.cpp diff --git a/src/columnviewsettingspage.cpp b/src/columnviewsettingspage.cpp index 57d246fa2..f5e2319bf 100644 --- a/src/columnviewsettingspage.cpp +++ b/src/columnviewsettingspage.cpp @@ -19,11 +19,11 @@ #include "columnviewsettingspage.h" +#include "dolphinfontrequester.h" #include "dolphinsettings.h" #include "dolphin_columnmodesettings.h" #include -#include #include #include @@ -92,7 +92,7 @@ ColumnViewSettingsPage::ColumnViewSettingsPage(DolphinMainWindow* mainWindow, textBox->setSizePolicy(sizePolicy); QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textBox); - m_fontRequester = new KFontRequester(textBox); + m_fontRequester = new DolphinFontRequester(textBox); QHBoxLayout* textLayout = new QHBoxLayout(textBox); textLayout->addWidget(fontLabel); @@ -123,6 +123,7 @@ void ColumnViewSettingsPage::applySettings() settings->setIconSize(iconSize); const QFont font = m_fontRequester->font(); + settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); settings->setFontFamily(font.family()); settings->setFontSize(font.pointSize()); settings->setItalicFont(font.italic()); @@ -157,11 +158,16 @@ void ColumnViewSettingsPage::loadSettings() m_smallIconSize->setChecked(true); } - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); + if (settings->useSystemFont()) { + m_fontRequester->setMode(DolphinFontRequester::SystemFont); + } else { + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setMode(DolphinFontRequester::CustomFont); + m_fontRequester->setCustomFont(font); + } m_columnWidthSlider->setValue((settings->columnWidth() - 150) / 50); } diff --git a/src/columnviewsettingspage.h b/src/columnviewsettingspage.h index e5780d989..acf92e744 100644 --- a/src/columnviewsettingspage.h +++ b/src/columnviewsettingspage.h @@ -23,7 +23,7 @@ #include class DolphinMainWindow; -class KFontRequester; +class DolphinFontRequester; class QSlider; class QRadioButton; @@ -57,7 +57,7 @@ private: QRadioButton* m_smallIconSize; QRadioButton* m_mediumIconSize; QRadioButton* m_largeIconSize; - KFontRequester* m_fontRequester; + DolphinFontRequester* m_fontRequester; QSlider* m_columnWidthSlider; }; diff --git a/src/detailsviewsettingspage.cpp b/src/detailsviewsettingspage.cpp index ea45c9688..50f2bac8a 100644 --- a/src/detailsviewsettingspage.cpp +++ b/src/detailsviewsettingspage.cpp @@ -23,16 +23,16 @@ #include "dolphin_detailsmodesettings.h" #include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, @@ -74,7 +74,7 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, textBox->setSizePolicy(sizePolicy); QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textBox); - m_fontRequester = new KFontRequester(textBox); + m_fontRequester = new DolphinFontRequester(textBox); QHBoxLayout* textLayout = new QHBoxLayout(textBox); textLayout->addWidget(fontLabel); @@ -105,6 +105,7 @@ void DetailsViewSettingsPage::applySettings() settings->setIconSize(iconSize); const QFont font = m_fontRequester->font(); + settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); settings->setFontFamily(font.family()); settings->setFontSize(font.pointSize()); settings->setItalicFont(font.italic()); @@ -136,11 +137,16 @@ void DetailsViewSettingsPage::loadSettings() m_smallIconSize->setChecked(true); } - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); + if (settings->useSystemFont()) { + m_fontRequester->setMode(DolphinFontRequester::SystemFont); + } else { + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setMode(DolphinFontRequester::CustomFont); + m_fontRequester->setCustomFont(font); + } } #include "detailsviewsettingspage.moc" diff --git a/src/detailsviewsettingspage.h b/src/detailsviewsettingspage.h index 79986f1ba..d06b814cf 100644 --- a/src/detailsviewsettingspage.h +++ b/src/detailsviewsettingspage.h @@ -23,7 +23,7 @@ #include class DolphinMainWindow; -class KFontRequester; +class DolphinFontRequester; class QCheckBox; class QRadioButton; @@ -57,7 +57,7 @@ private: QRadioButton* m_smallIconSize; QRadioButton* m_mediumIconSize; QRadioButton* m_largeIconSize; - KFontRequester* m_fontRequester; + DolphinFontRequester* m_fontRequester; }; #endif diff --git a/src/dolphin_columnmodesettings.kcfg b/src/dolphin_columnmodesettings.kcfg index c57db4073..54887d9e9 100644 --- a/src/dolphin_columnmodesettings.kcfg +++ b/src/dolphin_columnmodesettings.kcfg @@ -9,6 +9,10 @@ KGlobalSettings::generalFont().family() + + + true + KGlobalSettings::generalFont().pointSize() diff --git a/src/dolphin_detailsmodesettings.kcfg b/src/dolphin_detailsmodesettings.kcfg index 869409e37..ce16a551c 100644 --- a/src/dolphin_detailsmodesettings.kcfg +++ b/src/dolphin_detailsmodesettings.kcfg @@ -9,6 +9,10 @@ KGlobalSettings::generalFont().family() + + + true + KGlobalSettings::generalFont().pointSize() diff --git a/src/dolphin_iconsmodesettings.kcfg b/src/dolphin_iconsmodesettings.kcfg index 22871dcf9..ef1ec456f 100644 --- a/src/dolphin_iconsmodesettings.kcfg +++ b/src/dolphin_iconsmodesettings.kcfg @@ -10,6 +10,10 @@ QListView::TopToBottom + + + true + KGlobalSettings::generalFont().family() diff --git a/src/dolphinfontrequester.cpp b/src/dolphinfontrequester.cpp new file mode 100644 index 000000000..5295ed939 --- /dev/null +++ b/src/dolphinfontrequester.cpp @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (C) 2008 by Peter Penz * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +#include "dolphinfontrequester.h" + +#include +#include +#include + +#include +#include +#include + +DolphinFontRequester::DolphinFontRequester(QWidget* parent) : + KHBox(parent), + m_modeCombo(0), + m_chooseFontButton(0), + m_mode(SystemFont), + m_customFont() +{ + m_modeCombo = new QComboBox(this); + m_modeCombo->addItem(i18nc("@item:inlistbox Font", "System Font")); + m_modeCombo->addItem(i18nc("@item:inlistbox Font", "Custom Font")); + connect(m_modeCombo, SIGNAL(activated(int)), + this, SLOT(changeMode(int))); + + m_chooseFontButton = new QPushButton(i18n("Choose..."), this); + connect(m_chooseFontButton, SIGNAL(clicked()), + this, SLOT(openFontDialog())); + + changeMode(m_modeCombo->currentIndex()); +} + +DolphinFontRequester::~DolphinFontRequester() +{ +} + +void DolphinFontRequester::setMode(Mode mode) +{ + m_mode = mode; + m_modeCombo->setCurrentIndex(m_mode); + m_modeCombo->setFont(font()); + m_chooseFontButton->setEnabled(m_mode == CustomFont); +} + +DolphinFontRequester::Mode DolphinFontRequester::mode() const +{ + return m_mode; +} + +QFont DolphinFontRequester::font() const +{ + return (m_mode == CustomFont) ? m_customFont : KGlobalSettings::generalFont(); +} + +void DolphinFontRequester::setCustomFont(const QFont& font) +{ + m_customFont = font; +} + +QFont DolphinFontRequester::customFont() const +{ + return m_customFont; +} + +bool DolphinFontRequester::event(QEvent* event) +{ + if (event->type() == QEvent::Polish) { + m_modeCombo->setFont(font()); + } + return KHBox::event(event); +} + +void DolphinFontRequester::openFontDialog() +{ + QFont font; + const int result = KFontDialog::getFont(font, + KFontChooser::NoDisplayFlags, + this); + if (result == KFontDialog::Accepted) { + m_customFont = font; + m_modeCombo->setFont(m_customFont); + } +} + +void DolphinFontRequester::changeMode(int index) +{ + setMode((index == CustomFont) ? CustomFont : SystemFont); +} + +#include "dolphinfontrequester.moc" diff --git a/src/dolphinfontrequester.h b/src/dolphinfontrequester.h new file mode 100644 index 000000000..83a478a30 --- /dev/null +++ b/src/dolphinfontrequester.h @@ -0,0 +1,75 @@ +/*************************************************************************** + * Copyright (C) 2008 by Peter Penz * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +#ifndef DOLPHINFONTREQUESTER_H +#define DOLPHINFONTREQUESTER_H + +#include + +#include + +class QComboBox; +class QPushButton; + +/** + * @brief Allows to select between using the system font or a custom font. + */ +class DolphinFontRequester : public KHBox +{ + Q_OBJECT + +public: + enum Mode + { + SystemFont = 0, + CustomFont = 1 + }; + + DolphinFontRequester(QWidget* parent); + virtual ~DolphinFontRequester(); + + void setMode(Mode mode); + Mode mode() const; + + /** + * Returns the custom font (see DolphinFontRequester::customFont()), + * if the mode is \a CustomFont, otherwise the system font is + * returned. + */ + QFont font() const; + + void setCustomFont(const QFont& font); + QFont customFont() const; + +protected: + bool event(QEvent* event); + +private slots: + void openFontDialog(); + void changeMode(int index); + +private: + QComboBox* m_modeCombo; + QPushButton* m_chooseFontButton; + + Mode m_mode; + QFont m_customFont; +}; + +#endif diff --git a/src/iconsviewsettingspage.cpp b/src/iconsviewsettingspage.cpp index 6bcc78ae8..970b7202d 100644 --- a/src/iconsviewsettingspage.cpp +++ b/src/iconsviewsettingspage.cpp @@ -19,13 +19,13 @@ #include "iconsviewsettingspage.h" +#include "dolphinfontrequester.h" #include "dolphinsettings.h" #include "iconsizedialog.h" #include "dolphin_iconsmodesettings.h" #include -#include #include #include #include @@ -70,7 +70,7 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, textGroup->setSizePolicy(sizePolicy); QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); - m_fontRequester = new KFontRequester(textGroup); + m_fontRequester = new DolphinFontRequester(textGroup); QLabel* textlinesCountLabel = new QLabel(i18nc("@label:textbox", "Number of lines:"), textGroup); m_textlinesCountBox = new QSpinBox(textGroup); @@ -155,6 +155,7 @@ void IconsViewSettingsPage::applySettings() settings->setItemWidth(itemWidth); settings->setItemHeight(itemHeight); + settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); settings->setFontFamily(font.family()); settings->setFontSize(font.pointSize()); settings->setItalicFont(font.italic()); @@ -189,11 +190,16 @@ void IconsViewSettingsPage::loadSettings() m_iconSize = settings->iconSize(); m_previewSize = settings->previewSize(); - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); + if (settings->useSystemFont()) { + m_fontRequester->setMode(DolphinFontRequester::SystemFont); + } else { + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setMode(DolphinFontRequester::CustomFont); + m_fontRequester->setCustomFont(font); + } m_textlinesCountBox->setValue(settings->numberOfTextlines()); diff --git a/src/iconsviewsettingspage.h b/src/iconsviewsettingspage.h index f45a14fd6..1aa1c74bb 100644 --- a/src/iconsviewsettingspage.h +++ b/src/iconsviewsettingspage.h @@ -24,7 +24,7 @@ #include class DolphinMainWindow; -class KFontRequester; +class DolphinFontRequester; class QCheckBox; class QComboBox; class QPushButton; @@ -86,7 +86,7 @@ private: QPushButton* m_iconSizeButton; QComboBox* m_textWidthBox; - KFontRequester* m_fontRequester; + DolphinFontRequester* m_fontRequester; QSpinBox* m_textlinesCountBox; QComboBox* m_arrangementBox;