Add (and install) svg for the new krunner interface.
[kdebase/uwolfer.git] / apps / dolphin / src / detailsviewsettingspage.cpp
blob8838ee7ec784c361bf97c08c70a467fc8fbfa637
1 /***************************************************************************
2 * Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
20 #include "detailsviewsettingspage.h"
22 #include "dolphinsettings.h"
23 #include "dolphin_detailsmodesettings.h"
25 #include <kdialog.h>
26 #include <dolphinfontrequester.h>
27 #include <klocale.h>
29 #include <QButtonGroup>
30 #include <QCheckBox>
31 #include <QComboBox>
32 #include <QGroupBox>
33 #include <QGridLayout>
34 #include <QLabel>
35 #include <QRadioButton>
36 #include <QtGui/QSpinBox>
38 DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow,
39 QWidget* parent) :
40 KVBox(parent),
41 m_mainWindow(mainWindow),
42 m_smallIconSize(0),
43 m_mediumIconSize(0),
44 m_largeIconSize(0),
45 m_fontRequester(0),
46 m_expandableFolders(0)
48 const int spacing = KDialog::spacingHint();
49 const int margin = KDialog::marginHint();
50 const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
52 setSpacing(spacing);
53 setMargin(margin);
55 // Create "Icon" properties
56 QGroupBox* iconSizeBox = new QGroupBox(i18nc("@title:group", "Icon Size"), this);
57 iconSizeBox->setSizePolicy(sizePolicy);
59 m_smallIconSize = new QRadioButton(i18nc("@option:radio Icon Size", "Small"), this);
60 m_mediumIconSize = new QRadioButton(i18nc("@option:radio Icon Size", "Medium"), this);
61 m_largeIconSize = new QRadioButton(i18nc("@option:radio Icon Size", "Large"), this);
63 QButtonGroup* iconSizeGroup = new QButtonGroup(this);
64 iconSizeGroup->addButton(m_smallIconSize);
65 iconSizeGroup->addButton(m_mediumIconSize);
66 iconSizeGroup->addButton(m_largeIconSize);
68 QHBoxLayout* iconSizeLayout = new QHBoxLayout(iconSizeBox);
69 iconSizeLayout->addWidget(m_smallIconSize);
70 iconSizeLayout->addWidget(m_mediumIconSize);
71 iconSizeLayout->addWidget(m_largeIconSize);
73 // create "Text" properties
74 QGroupBox* textBox = new QGroupBox(i18nc("@title:group", "Text"), this);
75 textBox->setSizePolicy(sizePolicy);
77 QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textBox);
78 m_fontRequester = new DolphinFontRequester(textBox);
80 QHBoxLayout* textLayout = new QHBoxLayout(textBox);
81 textLayout->addWidget(fontLabel);
82 textLayout->addWidget(m_fontRequester);
84 // create "Expandable Folders" checkbox
85 m_expandableFolders = new QCheckBox(i18nc("@option:check", "Expandable Folders"), this);
87 // Add a dummy widget with no restriction regarding
88 // a vertical resizing. This assures that the dialog layout
89 // is not stretched vertically.
90 new QWidget(this);
92 loadSettings();
95 DetailsViewSettingsPage::~DetailsViewSettingsPage()
99 void DetailsViewSettingsPage::applySettings()
101 DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
103 int iconSize = KIconLoader::SizeSmall;
104 if (m_mediumIconSize->isChecked()) {
105 iconSize = KIconLoader::SizeMedium;
106 } else if (m_largeIconSize->isChecked()) {
107 iconSize = KIconLoader::SizeLarge;
109 settings->setIconSize(iconSize);
111 const QFont font = m_fontRequester->font();
112 settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont);
113 settings->setFontFamily(font.family());
114 settings->setFontSize(font.pointSize());
115 settings->setItalicFont(font.italic());
116 settings->setFontWeight(font.weight());
118 settings->setExpandableFolders(m_expandableFolders->isChecked());
121 void DetailsViewSettingsPage::restoreDefaults()
123 DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
124 settings->setDefaults();
125 loadSettings();
128 void DetailsViewSettingsPage::loadSettings()
130 DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings();
132 switch (settings->iconSize()) {
133 case KIconLoader::SizeLarge:
134 m_largeIconSize->setChecked(true);
135 break;
137 case KIconLoader::SizeMedium:
138 m_mediumIconSize->setChecked(true);
139 break;
141 case KIconLoader::SizeSmall:
142 default:
143 m_smallIconSize->setChecked(true);
146 if (settings->useSystemFont()) {
147 m_fontRequester->setMode(DolphinFontRequester::SystemFont);
148 } else {
149 QFont font(settings->fontFamily(),
150 settings->fontSize());
151 font.setItalic(settings->italicFont());
152 font.setWeight(settings->fontWeight());
153 m_fontRequester->setMode(DolphinFontRequester::CustomFont);
154 m_fontRequester->setCustomFont(font);
157 m_expandableFolders->setChecked(settings->expandableFolders());
160 #include "detailsviewsettingspage.moc"