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
columnviewsettingspage.cpp
detailsviewsettingspage.cpp
dolphinapplication.cpp
+ dolphinfontrequester.cpp
dolphinmainwindow.cpp
dolphinnewmenu.cpp
dolphinviewcontainer.cpp
#include "columnviewsettingspage.h"
+#include "dolphinfontrequester.h"
#include "dolphinsettings.h"
#include "dolphin_columnmodesettings.h"
#include <kdialog.h>
-#include <kfontrequester.h>
#include <klocale.h>
#include <QButtonGroup>
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);
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());
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);
}
#include <kvbox.h>
class DolphinMainWindow;
-class KFontRequester;
+class DolphinFontRequester;
class QSlider;
class QRadioButton;
QRadioButton* m_smallIconSize;
QRadioButton* m_mediumIconSize;
QRadioButton* m_largeIconSize;
- KFontRequester* m_fontRequester;
+ DolphinFontRequester* m_fontRequester;
QSlider* m_columnWidthSlider;
};
#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,
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);
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());
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"
#include <kvbox.h>
class DolphinMainWindow;
-class KFontRequester;
+class DolphinFontRequester;
class QCheckBox;
class QRadioButton;
QRadioButton* m_smallIconSize;
QRadioButton* m_mediumIconSize;
QRadioButton* m_largeIconSize;
- KFontRequester* m_fontRequester;
+ DolphinFontRequester* m_fontRequester;
};
#endif
<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>
<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>
<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>
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at> *
+ * *
+ * 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"
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at> *
+ * *
+ * 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
#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>
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);
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());
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());
#include <kvbox.h>
class DolphinMainWindow;
-class KFontRequester;
+class DolphinFontRequester;
class QCheckBox;
class QComboBox;
class QPushButton;
QPushButton* m_iconSizeButton;
QComboBox* m_textWidthBox;
- KFontRequester* m_fontRequester;
+ DolphinFontRequester* m_fontRequester;
QSpinBox* m_textlinesCountBox;
QComboBox* m_arrangementBox;