1
/***************************************************************************
2
* Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
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. *
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. *
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 "columnviewsettingspage.h"
22
#include "dolphinfontrequester.h"
23
#include "dolphinsettings.h"
24
#include "dolphin_columnmodesettings.h"
25
#include "iconsizegroupbox.h"
26
#include "zoomlevelinfo.h"
30
#include <kcombobox.h>
32
#include <QButtonGroup>
35
#include <QHBoxLayout>
38
#include <QRadioButton>
40
ColumnViewSettingsPage::ColumnViewSettingsPage(QWidget* parent) :
41
ViewSettingsPageBase(parent),
42
m_iconSizeGroupBox(0),
46
const int spacing = KDialog::spacingHint();
47
const int margin = KDialog::marginHint();
48
const QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
53
// Create "Icon" properties
54
m_iconSizeGroupBox = new IconSizeGroupBox(this);
55
m_iconSizeGroupBox->setSizePolicy(sizePolicy);
57
const int min = ZoomLevelInfo::minimumLevel();
58
const int max = ZoomLevelInfo::maximumLevel();
59
m_iconSizeGroupBox->setDefaultSizeRange(min, max);
60
m_iconSizeGroupBox->setPreviewSizeRange(min, max);
62
connect(m_iconSizeGroupBox, SIGNAL(defaultSizeChanged(int)),
63
this, SIGNAL(changed()));
64
connect(m_iconSizeGroupBox, SIGNAL(previewSizeChanged(int)),
65
this, SIGNAL(changed()));
67
// create "Text" properties
68
QGroupBox* textGroup = new QGroupBox(i18nc("@title:group", "Text"), this);
69
textGroup->setSizePolicy(sizePolicy);
71
QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup);
72
m_fontRequester = new DolphinFontRequester(textGroup);
73
connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed()));
75
QLabel* textWidthLabel = new QLabel(i18nc("@label:listbox", "Text width:"), textGroup);
76
m_textWidthBox = new KComboBox(textGroup);
77
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Small"));
78
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Medium"));
79
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Large"));
80
m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Huge"));
81
connect(m_textWidthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed()));
83
QGridLayout* textGroupLayout = new QGridLayout(textGroup);
84
textGroupLayout->addWidget(fontLabel, 0, 0, Qt::AlignRight);
85
textGroupLayout->addWidget(m_fontRequester, 0, 1);
86
textGroupLayout->addWidget(textWidthLabel, 1, 0, Qt::AlignRight);
87
textGroupLayout->addWidget(m_textWidthBox, 1, 1);
89
// Add a dummy widget with no restriction regarding
90
// a vertical resizing. This assures that the dialog layout
91
// is not stretched vertically.
97
ColumnViewSettingsPage::~ColumnViewSettingsPage()
101
void ColumnViewSettingsPage::applySettings()
103
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
105
const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->defaultSizeValue());
106
const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->previewSizeValue());
107
settings->setIconSize(iconSize);
108
settings->setPreviewSize(previewSize);
110
const QFont font = m_fontRequester->font();
111
settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont);
112
settings->setFontFamily(font.family());
113
settings->setFontSize(font.pointSizeF());
114
settings->setItalicFont(font.italic());
115
settings->setFontWeight(font.weight());
117
const int columnWidth = BaseTextWidth + (m_textWidthBox->currentIndex() * TextInc);
118
settings->setColumnWidth(columnWidth);
120
settings->writeConfig();
123
void ColumnViewSettingsPage::restoreDefaults()
125
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
126
settings->useDefaults(true);
128
settings->useDefaults(false);
131
void ColumnViewSettingsPage::loadSettings()
133
ColumnModeSettings* settings = DolphinSettings::instance().columnModeSettings();
135
const QSize iconSize(settings->iconSize(), settings->iconSize());
136
const int iconSizeValue = ZoomLevelInfo::zoomLevelForIconSize(iconSize);
137
m_iconSizeGroupBox->setDefaultSizeValue(iconSizeValue);
139
const QSize previewSize(settings->previewSize(), settings->previewSize());
140
const int previewSizeValue = ZoomLevelInfo::zoomLevelForIconSize(previewSize);
141
m_iconSizeGroupBox->setPreviewSizeValue(previewSizeValue);
143
if (settings->useSystemFont()) {
144
m_fontRequester->setMode(DolphinFontRequester::SystemFont);
146
QFont font(settings->fontFamily(),
147
qRound(settings->fontSize()));
148
font.setItalic(settings->italicFont());
149
font.setWeight(settings->fontWeight());
150
font.setPointSizeF(settings->fontSize());
151
m_fontRequester->setMode(DolphinFontRequester::CustomFont);
152
m_fontRequester->setCustomFont(font);
155
m_textWidthBox->setCurrentIndex((settings->columnWidth() - BaseTextWidth) / TextInc);
158
#include "columnviewsettingspage.moc"