]>
cloud.milkyroute.net Git - dolphin.git/blob - src/iconsviewsettingspage.cpp
1 /***************************************************************************
2 * Copyright (C) 2006 by Peter Penz *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
21 #include "iconsviewsettingspage.h"
25 #include <q3buttongroup.h>
26 #include <qradiobutton.h>
28 #include <kiconloader.h>
29 #include <qfontcombobox.h>
35 #include "iconsmodesettings.h"
36 #include "dolphinsettings.h"
37 #include "pixmapviewer.h"
39 #define GRID_SPACING_BASE 8
40 #define GRID_SPACING_INC 12
42 IconsViewSettingsPage::IconsViewSettingsPage(/*DolphinIconsView::LayoutMode mode,*/
47 m_previewSizeSlider(0),
52 m_textlinesCountBox(0),
55 const int spacing
= KDialog::spacingHint();
56 const int margin
= KDialog::marginHint();
57 const QSizePolicy
sizePolicy(QSizePolicy::Preferred
, QSizePolicy::Fixed
);
62 IconsModeSettings
* settings
= DolphinSettings::instance().iconsModeSettings();
63 assert(settings
!= 0);
65 KHBox
* sizesLayout
= new KHBox(this);
66 sizesLayout
->setSpacing(spacing
);
67 sizesLayout
->setSizePolicy(sizePolicy
);
69 // create 'Icon Size' group including slider and preview
70 Q3GroupBox
* iconSizeGroup
= new Q3GroupBox(2, Qt::Vertical
, i18n("Icon Size"), sizesLayout
);
71 iconSizeGroup
->setSizePolicy(sizePolicy
);
72 iconSizeGroup
->setMargin(margin
);
74 const QColor
iconBackgroundColor(KGlobalSettings::baseColor());
76 KHBox
* iconSizeVBox
= new KHBox(iconSizeGroup
);
77 iconSizeVBox
->setSpacing(spacing
);
78 new QLabel(i18n("Small"), iconSizeVBox
);
79 m_iconSizeSlider
= new QSlider(0, 5, 1, 0, Qt::Horizontal
, iconSizeVBox
);
80 m_iconSizeSlider
->setValue(sliderValue(settings
->iconSize()));
81 m_iconSizeSlider
->setTickmarks(QSlider::TicksBelow
);
82 connect(m_iconSizeSlider
, SIGNAL(valueChanged(int)),
83 this, SLOT(slotIconSizeChanged(int)));
84 new QLabel(i18n("Large"), iconSizeVBox
);
86 m_iconSizeViewer
= new PixmapViewer(iconSizeGroup
);
87 m_iconSizeViewer
->setMinimumWidth(K3Icon::SizeEnormous
);
88 m_iconSizeViewer
->setFixedHeight(K3Icon::SizeEnormous
);
89 m_iconSizeViewer
->setEraseColor(iconBackgroundColor
);
90 slotIconSizeChanged(m_iconSizeSlider
->value());
92 if (false /*m_mode == DolphinIconsView::Previews*/) {
93 // create 'Preview Size' group including slider and preview
94 Q3GroupBox
* previewSizeGroup
= new Q3GroupBox(2, Qt::Vertical
, i18n("Preview Size"), sizesLayout
);
95 previewSizeGroup
->setSizePolicy(sizePolicy
);
96 previewSizeGroup
->setMargin(margin
);
98 KHBox
* previewSizeVBox
= new KHBox(previewSizeGroup
);
99 previewSizeVBox
->setSpacing(spacing
);
100 new QLabel(i18n("Small"), previewSizeVBox
);
101 m_previewSizeSlider
= new QSlider(0, 5, 1, 0, Qt::Horizontal
, previewSizeVBox
);
102 m_previewSizeSlider
->setValue(sliderValue(settings
->previewSize()));
103 m_previewSizeSlider
->setTickmarks(QSlider::TicksBelow
);
104 connect(m_previewSizeSlider
, SIGNAL(valueChanged(int)),
105 this, SLOT(slotPreviewSizeChanged(int)));
106 new QLabel(i18n("Large"), previewSizeVBox
);
108 m_previewSizeViewer
= new PixmapViewer(previewSizeGroup
);
109 m_previewSizeViewer
->setMinimumWidth(K3Icon::SizeEnormous
);
110 m_previewSizeViewer
->setFixedHeight(K3Icon::SizeEnormous
);
111 m_previewSizeViewer
->setEraseColor(iconBackgroundColor
);
113 slotPreviewSizeChanged(m_previewSizeSlider
->value());
116 Q3GroupBox
* textGroup
= new Q3GroupBox(2, Qt::Horizontal
, i18n("Text"), this);
117 textGroup
->setSizePolicy(sizePolicy
);
118 textGroup
->setMargin(margin
);
120 new QLabel(i18n("Font family:"), textGroup
);
121 m_fontFamilyBox
= new QFontComboBox(textGroup
);
122 m_fontFamilyBox
->setCurrentFont(settings
->fontFamily());
124 new QLabel(i18n("Font size:"), textGroup
);
125 m_fontSizeBox
= new QSpinBox(6, 99, 1, textGroup
);
126 m_fontSizeBox
->setValue(settings
->fontSize());
128 new QLabel(i18n("Number of lines:"), textGroup
);
129 m_textlinesCountBox
= new QSpinBox(1, 5, 1, textGroup
);
130 m_textlinesCountBox
->setValue(settings
->numberOfTexlines());
132 new QLabel(i18n("Text width:"), textGroup
);
133 m_textWidthBox
= new QComboBox(textGroup
);
134 m_textWidthBox
->insertItem(i18n("Small"));
135 m_textWidthBox
->insertItem(i18n("Medium"));
136 m_textWidthBox
->insertItem(i18n("Large"));
138 Q3GroupBox
* gridGroup
= new Q3GroupBox(2, Qt::Horizontal
, i18n("Grid"), this);
139 gridGroup
->setSizePolicy(sizePolicy
);
140 gridGroup
->setMargin(margin
);
142 const bool leftToRightArrangement
= (settings
->arrangement() == "LeftToRight");
143 new QLabel(i18n("Arrangement:"), gridGroup
);
144 m_arrangementBox
= new QComboBox(gridGroup
);
145 m_arrangementBox
->insertItem(i18n("Left to right"));
146 m_arrangementBox
->insertItem(i18n("Top to bottom"));
147 m_arrangementBox
->setCurrentItem(leftToRightArrangement
? 0 : 1);
149 new QLabel(i18n("Grid spacing:"), gridGroup
);
150 m_gridSpacingBox
= new QComboBox(gridGroup
);
151 m_gridSpacingBox
->insertItem(i18n("Small"));
152 m_gridSpacingBox
->insertItem(i18n("Medium"));
153 m_gridSpacingBox
->insertItem(i18n("Large"));
154 m_gridSpacingBox
->setCurrentItem((settings
->gridSpacing() - GRID_SPACING_BASE
) / GRID_SPACING_INC
);
156 // Add a dummy widget with no restriction regarding
157 // a vertical resizing. This assures that the dialog layout
158 // is not stretched vertically.
161 adjustTextWidthSelection();
164 IconsViewSettingsPage::~IconsViewSettingsPage()
168 void IconsViewSettingsPage::applySettings()
170 IconsModeSettings
* settings
= DolphinSettings::instance().iconsModeSettings();
171 assert(settings
!= 0);
173 const int defaultSize
= iconSize(m_iconSizeSlider
->value());
174 settings
->setIconSize(defaultSize
);
176 int previewSize
= //(m_mode == DolphinIconsView::Previews) ?
177 //iconSize(m_previewSizeSlider->value()) :
179 if (previewSize
< defaultSize
) {
180 // assure that the preview size is never smaller than the icon size
181 previewSize
= defaultSize
;
183 settings
->setPreviewSize(previewSize
);
185 const int fontSize
= m_fontSizeBox
->value();
187 QString arrangement
= (m_arrangementBox
->currentItem() == 0) ?
190 settings
->setArrangement(arrangement
);
191 DolphinSettings::instance().calculateGridSize(m_textWidthBox
->currentItem());
193 settings
->setFontFamily(m_fontFamilyBox
->currentFont().family());
194 settings
->setFontSize(fontSize
);
195 settings
->setNumberOfTexlines(m_textlinesCountBox
->value());
197 settings
->setGridSpacing(GRID_SPACING_BASE
+
198 m_gridSpacingBox
->currentItem() * GRID_SPACING_INC
);
201 void IconsViewSettingsPage::slotIconSizeChanged(int value
)
203 KIconLoader iconLoader
;
204 m_iconSizeViewer
->setPixmap(iconLoader
.loadIcon("folder", K3Icon::Desktop
, iconSize(value
)));
206 if (m_previewSizeSlider
!= 0) {
207 int previewSizeValue
= m_previewSizeSlider
->value();
208 if (previewSizeValue
< value
) {
209 // assure that the preview size is never smaller than the icon size
210 previewSizeValue
= value
;
212 slotPreviewSizeChanged(previewSizeValue
);
216 void IconsViewSettingsPage::slotPreviewSizeChanged(int value
)
218 KIconLoader iconLoader
;
219 const int iconSizeValue
= m_iconSizeSlider
->value();
220 if (value
< iconSizeValue
) {
221 // assure that the preview size is never smaller than the icon size
222 value
= iconSizeValue
;
224 m_previewSizeViewer
->setPixmap(iconLoader
.loadIcon("preview", K3Icon::Desktop
, iconSize(value
)));
227 int IconsViewSettingsPage::iconSize(int sliderValue
) const
229 int size
= K3Icon::SizeMedium
;
230 switch (sliderValue
) {
231 case 0: size
= K3Icon::SizeSmall
; break;
232 case 1: size
= K3Icon::SizeSmallMedium
; break;
233 case 2: size
= K3Icon::SizeMedium
; break;
234 case 3: size
= K3Icon::SizeLarge
; break;
235 case 4: size
= K3Icon::SizeHuge
; break;
236 case 5: size
= K3Icon::SizeEnormous
; break;
241 int IconsViewSettingsPage::sliderValue(int iconSize
) const
245 case K3Icon::SizeSmall
: value
= 0; break;
246 case K3Icon::SizeSmallMedium
: value
= 1; break;
247 case K3Icon::SizeMedium
: value
= 2; break;
248 case K3Icon::SizeLarge
: value
= 3; break;
249 case K3Icon::SizeHuge
: value
= 4; break;
250 case K3Icon::SizeEnormous
: value
= 5; break;
256 void IconsViewSettingsPage::adjustTextWidthSelection()
258 IconsModeSettings
* settings
= DolphinSettings::instance().iconsModeSettings();
259 assert(settings
!= 0);
260 m_textWidthBox
->setCurrentItem(DolphinSettings::instance().textWidthHint());
263 #include "iconsviewsettingspage.moc"