X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/df8f2e3646017bf6ba99bb18ef0df7defaf2eb10..148282e2d856b47ceb191eeef4c834118c8cdffd:/src/iconsviewsettingspage.cpp diff --git a/src/iconsviewsettingspage.cpp b/src/iconsviewsettingspage.cpp index c4d07f53b..8273234eb 100644 --- a/src/iconsviewsettingspage.cpp +++ b/src/iconsviewsettingspage.cpp @@ -19,33 +19,31 @@ #include "iconsviewsettingspage.h" +#include "dolphinfontrequester.h" #include "dolphinsettings.h" -#include "iconsizedialog.h" +#include "iconsizegroupbox.h" +#include "zoomlevelinfo.h" #include "dolphin_iconsmodesettings.h" #include -#include #include #include #include - -#include -#include -#include -#include -#include -#include -#include -#include - -IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, - QWidget* parent) : - KVBox(parent), - m_mainWindow(mainWindow), - m_iconSize(0), - m_previewSize(0), - m_iconSizeButton(0), +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : + ViewSettingsPageBase(parent), + m_iconSizeGroupBox(0), m_textWidthBox(0), m_fontRequester(0), m_textlinesCountBox(0), @@ -59,54 +57,73 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - m_iconSizeButton = new QPushButton(i18n("Change Icon && Preview Size..."), this); - connect(m_iconSizeButton, SIGNAL(clicked()), - this, SLOT(openIconSizeDialog())); - + // Create "Icon" properties + m_iconSizeGroupBox = new IconSizeGroupBox(this); + m_iconSizeGroupBox->setSizePolicy(sizePolicy); + + const int min = ZoomLevelInfo::minimumLevel(); + const int max = ZoomLevelInfo::maximumLevel(); + m_iconSizeGroupBox->setDefaultSizeRange(min, max); + m_iconSizeGroupBox->setPreviewSizeRange(min, max); + + connect(m_iconSizeGroupBox, SIGNAL(defaultSizeChanged(int)), + this, SIGNAL(changed())); + connect(m_iconSizeGroupBox, SIGNAL(previewSizeChanged(int)), + this, SIGNAL(changed())); + // create 'Text' group for selecting the font, the number of lines // and the text width - QGroupBox* textGroup = new QGroupBox(i18n("Text"), this); + QGroupBox* textGroup = new QGroupBox(i18nc("@title:group", "Text"), this); textGroup->setSizePolicy(sizePolicy); - QLabel* fontLabel = new QLabel(i18n("Font:"), textGroup); - m_fontRequester = new KFontRequester(textGroup); + QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); + m_fontRequester = new DolphinFontRequester(textGroup); + connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); - QLabel* textlinesCountLabel = new QLabel(i18n("Number of lines:"), textGroup); - m_textlinesCountBox = new QSpinBox(1, 5, 1, textGroup); + QLabel* textlinesCountLabel = new QLabel(i18nc("@label:textbox", "Number of lines:"), textGroup); + m_textlinesCountBox = new QSpinBox(textGroup); + m_textlinesCountBox->setMinimum(1); + m_textlinesCountBox->setMaximum(5); + connect(m_textlinesCountBox, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); - QLabel* textWidthLabel = new QLabel(i18n("Text width:"), textGroup); - m_textWidthBox = new QComboBox(textGroup); - m_textWidthBox->addItem(i18nc("Text width", "Small")); - m_textWidthBox->addItem(i18nc("Text width", "Medium")); - m_textWidthBox->addItem(i18nc("Text width", "Large")); + QLabel* textWidthLabel = new QLabel(i18nc("@label:listbox", "Text width:"), textGroup); + m_textWidthBox = new KComboBox(textGroup); + m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Small")); + m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Medium")); + m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Large")); + m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Huge")); + connect(m_textWidthBox, SIGNAL(activated(int)), this, SIGNAL(changed())); QGridLayout* textGroupLayout = new QGridLayout(textGroup); - textGroupLayout->addWidget(fontLabel, 0, 0); + textGroupLayout->addWidget(fontLabel, 0, 0, Qt::AlignRight); textGroupLayout->addWidget(m_fontRequester, 0, 1); - textGroupLayout->addWidget(textlinesCountLabel, 1, 0); + textGroupLayout->addWidget(textlinesCountLabel, 1, 0, Qt::AlignRight); textGroupLayout->addWidget(m_textlinesCountBox, 1, 1); - textGroupLayout->addWidget(textWidthLabel, 2, 0); + textGroupLayout->addWidget(textWidthLabel, 2, 0, Qt::AlignRight); textGroupLayout->addWidget(m_textWidthBox, 2, 1); // create the 'Grid' group for selecting the arrangement and the grid spacing - QGroupBox* gridGroup = new QGroupBox(i18n("Grid"), this); + QGroupBox* gridGroup = new QGroupBox(i18nc("@title:group", "Grid"), this); gridGroup->setSizePolicy(sizePolicy); - QLabel* arrangementLabel = new QLabel(i18n("Arrangement:"), gridGroup); - m_arrangementBox = new QComboBox(gridGroup); - m_arrangementBox->addItem(i18n("Left to Right")); - m_arrangementBox->addItem(i18n("Top to Bottom")); + QLabel* arrangementLabel = new QLabel(i18nc("@label:listbox", "Arrangement:"), gridGroup); + m_arrangementBox = new KComboBox(gridGroup); + m_arrangementBox->addItem(i18nc("@item:inlistbox Arrangement", "Columns")); + m_arrangementBox->addItem(i18nc("@item:inlistbox Arrangement", "Rows")); + connect(m_arrangementBox, SIGNAL(activated(int)), this, SIGNAL(changed())); - QLabel* gridSpacingLabel = new QLabel(i18n("Grid spacing:"), gridGroup); - m_gridSpacingBox = new QComboBox(gridGroup); - m_gridSpacingBox->addItem(i18nc("Grid spacing", "Small")); - m_gridSpacingBox->addItem(i18nc("Grid spacing", "Medium")); - m_gridSpacingBox->addItem(i18nc("Grid spacing", "Large")); + QLabel* gridSpacingLabel = new QLabel(i18nc("@label:listbox", "Grid spacing:"), gridGroup); + m_gridSpacingBox = new KComboBox(gridGroup); + m_gridSpacingBox->addItem(i18nc("@item:inlistbox Grid spacing", "None")); + m_gridSpacingBox->addItem(i18nc("@item:inlistbox Grid spacing", "Small")); + m_gridSpacingBox->addItem(i18nc("@item:inlistbox Grid spacing", "Medium")); + m_gridSpacingBox->addItem(i18nc("@item:inlistbox Grid spacing", "Large")); + connect(m_gridSpacingBox, SIGNAL(activated(int)), this, SIGNAL(changed())); QGridLayout* gridGroupLayout = new QGridLayout(gridGroup); - gridGroupLayout->addWidget(arrangementLabel, 0, 0); + gridGroupLayout->addWidget(arrangementLabel, 0, 0, Qt::AlignRight); gridGroupLayout->addWidget(m_arrangementBox, 0, 1); - gridGroupLayout->addWidget(gridSpacingLabel, 1, 0); + gridGroupLayout->addWidget(gridSpacingLabel, 1, 0, Qt::AlignRight); gridGroupLayout->addWidget(m_gridSpacingBox, 1, 1); // Add a dummy widget with no restriction regarding @@ -118,14 +135,17 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, } IconsViewSettingsPage::~IconsViewSettingsPage() -{} +{ +} void IconsViewSettingsPage::applySettings() { IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - settings->setIconSize(m_iconSize); - settings->setPreviewSize(m_previewSize); + const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->defaultSizeValue()); + const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->previewSizeValue()); + settings->setIconSize(iconSize); + settings->setPreviewSize(previewSize); const QFont font = m_fontRequester->font(); const int fontHeight = QFontMetrics(font).height(); @@ -143,7 +163,7 @@ void IconsViewSettingsPage::applySettings() const int textSizeIndex = m_textWidthBox->currentIndex(); if (arrangement == QListView::TopToBottom) { itemWidth += TopToBottomBase + textSizeIndex * TopToBottomInc; - itemHeight += fontHeight * numberOfTextlines + 16; + itemHeight += fontHeight * numberOfTextlines + 10; } else { itemWidth += LeftToRightBase + textSizeIndex * LeftToRightInc; } @@ -151,15 +171,21 @@ 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()); - settings->setBoldFont(font.bold()); + settings->setFontWeight(font.weight()); settings->setNumberOfTextlines(numberOfTextlines); - settings->setGridSpacing(GridSpacingBase + - m_gridSpacingBox->currentIndex() * GridSpacingInc); + const int index = m_gridSpacingBox->currentIndex(); + if (index == 0) { + // No grid spacing + settings->setGridSpacing(0); + } else { + settings->setGridSpacing(GridSpacingBase + (index - 1) * GridSpacingInc); + } } void IconsViewSettingsPage::restoreDefaults() @@ -169,27 +195,28 @@ void IconsViewSettingsPage::restoreDefaults() loadSettings(); } -void IconsViewSettingsPage::openIconSizeDialog() -{ - IconSizeDialog dialog(this); - if (dialog.exec() == QDialog::Accepted) { - m_iconSize = dialog.iconSize(); - m_previewSize = dialog.previewSize(); - } -} - void IconsViewSettingsPage::loadSettings() { IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - m_iconSize = settings->iconSize(); - m_previewSize = settings->previewSize(); + const QSize iconSize(settings->iconSize(), settings->iconSize()); + const int iconSizeValue = ZoomLevelInfo::zoomLevelForIconSize(iconSize); + m_iconSizeGroupBox->setDefaultSizeValue(iconSizeValue); + + const QSize previewSize(settings->previewSize(), settings->previewSize()); + const int previewSizeValue = ZoomLevelInfo::zoomLevelForIconSize(previewSize); + m_iconSizeGroupBox->setPreviewSizeValue(previewSizeValue); - 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.setWeight(settings->fontWeight()); + m_fontRequester->setMode(DolphinFontRequester::CustomFont); + m_fontRequester->setCustomFont(font); + } m_textlinesCountBox->setValue(settings->numberOfTextlines()); @@ -207,7 +234,10 @@ void IconsViewSettingsPage::loadSettings() m_textWidthBox->setCurrentIndex(textWidthIndex); m_arrangementBox->setCurrentIndex(leftToRightArrangement ? 0 : 1); - m_gridSpacingBox->setCurrentIndex((settings->gridSpacing() - GridSpacingBase) / GridSpacingInc); + + const int spacing = settings->gridSpacing(); + const int index = (spacing <= 0) ? 0 : 1 + (spacing - GridSpacingBase) / GridSpacingInc; + m_gridSpacingBox->setCurrentIndex(index); } #include "iconsviewsettingspage.moc"