┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-02-15 22:51:23 +0000
committerPeter Penz <[email protected]>2008-02-15 22:51:23 +0000
commitd38de66f4b97a6d9cd30f3fc69e66b343ca312dc (patch)
treecc59063d8371ea9ab6cdb084bb7c6b5e54454480
parent8f975fec469798b75a6aa11f3d97ac51ee23ae8c (diff)
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: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=775487
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/columnviewsettingspage.cpp20
-rw-r--r--src/columnviewsettingspage.h4
-rw-r--r--src/detailsviewsettingspage.cpp34
-rw-r--r--src/detailsviewsettingspage.h4
-rw-r--r--src/dolphin_columnmodesettings.kcfg4
-rw-r--r--src/dolphin_detailsmodesettings.kcfg4
-rw-r--r--src/dolphin_iconsmodesettings.kcfg4
-rw-r--r--src/dolphinfontrequester.cpp107
-rw-r--r--src/dolphinfontrequester.h75
-rw-r--r--src/iconsviewsettingspage.cpp20
-rw-r--r--src/iconsviewsettingspage.h4
12 files changed, 247 insertions, 34 deletions
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 <kdialog.h>
-#include <kfontrequester.h>
#include <klocale.h>
#include <QButtonGroup>
@@ -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 <kvbox.h>
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 <kdialog.h>
-#include <kfontrequester.h>
+#include <dolphinfontrequester.h>
#include <klocale.h>
-#include <QtGui/QButtonGroup>
-#include <QtGui/QCheckBox>
-#include <QtGui/QComboBox>
-#include <QtGui/QGroupBox>
-#include <QtGui/QGridLayout>
-#include <QtGui/QLabel>
-#include <QtGui/QRadioButton>
+#include <QButtonGroup>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QGroupBox>
+#include <QGridLayout>
+#include <QLabel>
+#include <QRadioButton>
#include <QtGui/QSpinBox>
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 <kvbox.h>
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 @@
<label context="@label">Font family</label>
<default code="true">KGlobalSettings::generalFont().family()</default>
</entry>
+ <entry name="UseSystemFont" type="Bool">
+ <label context="@label">Use system font</label>
+ <default>true</default>
+ </entry>
<entry name="FontSize" type="Int">
<label context="@label">Font size</label>
<default code="true">KGlobalSettings::generalFont().pointSize()</default>
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 @@
<label context="@label">Font family</label>
<default code="true">KGlobalSettings::generalFont().family()</default>
</entry>
+ <entry name="UseSystemFont" type="Bool">
+ <label context="@label">Use system font</label>
+ <default>true</default>
+ </entry>
<entry name="FontSize" type="Int">
<label context="@label">Font size</label>
<default code="true">KGlobalSettings::generalFont().pointSize()</default>
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 @@
<label context="@label">Arrangement</label>
<default code="true">QListView::TopToBottom</default>
</entry>
+ <entry name="UseSystemFont" type="Bool">
+ <label context="@label">Use system font</label>
+ <default>true</default>
+ </entry>
<entry name="FontFamily" type="String">
<label context="@label">Font family</label>
<default code="true">KGlobalSettings::generalFont().family()</default>
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 <[email protected]> *
+ * *
+ * 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 <kfontdialog.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+
+#include <QComboBox>
+#include <QEvent>
+#include <QPushButton>
+
+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 <[email protected]> *
+ * *
+ * 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 <khbox.h>
+
+#include <QFont>
+
+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 <kdialog.h>
-#include <kfontrequester.h>
#include <kiconloader.h>
#include <kglobalsettings.h>
#include <klocale.h>
@@ -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 <kvbox.h>
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;