X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/bf50ced73473a225d681de6b62bc05571d969664..86d9c40ab71df5b8bd5063251337d5ca0c22380a:/src/detailsviewsettingspage.cpp diff --git a/src/detailsviewsettingspage.cpp b/src/detailsviewsettingspage.cpp index 7b0265d26..4a439ab1d 100644 --- a/src/detailsviewsettingspage.cpp +++ b/src/detailsviewsettingspage.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz * - * peter.penz@gmx.at * + * Copyright (C) 2006 by Peter Penz * * * * 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 * @@ -19,35 +18,30 @@ ***************************************************************************/ #include "detailsviewsettingspage.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include "iconsizegroupbox.h" #include "dolphinsettings.h" #include "dolphin_detailsmodesettings.h" -#include "dolphindetailsview.h" - -DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, - QWidget* parent) : - KVBox(parent), - m_mainWindow(mainWindow), - m_dateBox(0), - m_permissionsBox(0), - m_ownerBox(0), - m_groupBox(0), - m_smallIconSize(0), - m_mediumIconSize(0), - m_largeIconSize(0) +#include "zoomlevelinfo.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +DetailsViewSettingsPage::DetailsViewSettingsPage(QWidget* parent) : + ViewSettingsPageBase(parent), + m_iconSizeGroupBox(0), + m_fontRequester(0), + m_expandableFolders(0) { const int spacing = KDialog::spacingHint(); const int margin = KDialog::marginHint(); @@ -56,73 +50,43 @@ DetailsViewSettingsPage::DetailsViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - assert(settings != 0); - - // create "Columns" properties - Q3GroupBox* columnsGroup = new Q3GroupBox(4, Qt::Vertical, i18n("Columns"), this); - columnsGroup->setSizePolicy(sizePolicy); - columnsGroup->setMargin(margin); - - KHBox* visibleColumnsLayout = new KHBox(columnsGroup); - m_dateBox = new QCheckBox(i18n("Date"), visibleColumnsLayout); - m_dateBox->setChecked(settings->showDate()); - - m_permissionsBox = new QCheckBox(i18n("Permissions"), visibleColumnsLayout); - m_permissionsBox->setChecked(settings->showPermissions()); - - m_ownerBox = new QCheckBox(i18n("Owner"), visibleColumnsLayout); - m_ownerBox->setChecked(settings->showOwner()); - - m_groupBox = new QCheckBox(i18n("Group"), visibleColumnsLayout); - m_groupBox->setChecked(settings->showGroup()); - // Create "Icon" properties - Q3ButtonGroup* iconSizeGroup = new Q3ButtonGroup(3, Qt::Horizontal, i18n("Icon Size"), this); - iconSizeGroup->setSizePolicy(sizePolicy); - iconSizeGroup->setMargin(margin); - m_smallIconSize = new QRadioButton(i18n("Small"), iconSizeGroup); - m_mediumIconSize = new QRadioButton(i18n("Medium"), iconSizeGroup); - m_largeIconSize = new QRadioButton(i18n("Large"), iconSizeGroup); - switch (settings->iconSize()) { - case K3Icon::SizeLarge: - m_largeIconSize->setChecked(true); - break; - - case K3Icon::SizeMedium: - m_mediumIconSize->setChecked(true); - break; - - case K3Icon::SizeSmall: - default: - m_smallIconSize->setChecked(true); - } + 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); - //new QLabel(i18n("Icon size:"), iconGroup); - //m_iconSizeBox = new QComboBox(iconGroup); - //m_iconSizeBox->insertItem(i18n("Small")); - //m_iconSizeBox->insertItem(i18n("Medium")); - //m_iconSizeBox->insertItem(i18n("Large")); + connect(m_iconSizeGroupBox, SIGNAL(defaultSizeChanged(int)), + this, SIGNAL(changed())); + connect(m_iconSizeGroupBox, SIGNAL(previewSizeChanged(int)), + this, SIGNAL(changed())); // create "Text" properties - Q3GroupBox* textGroup = new Q3GroupBox(2, Qt::Horizontal, i18n("Text"), this); + QWidget* textGroup = new QGroupBox(i18nc("@title:group", "Text"), this); textGroup->setSizePolicy(sizePolicy); - textGroup->setMargin(margin); - new QLabel(i18n("Font family:"), textGroup); - m_fontFamilyBox = new QFontComboBox(textGroup); - m_fontFamilyBox->setCurrentFont(settings->fontFamily()); + QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); + m_fontRequester = new DolphinFontRequester(textGroup); + connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); - new QLabel(i18n("Font size:"), textGroup); - m_fontSizeBox = new QSpinBox(6, 99, 1, textGroup); - m_fontSizeBox->setValue(settings->fontSize()); + QHBoxLayout* textLayout = new QHBoxLayout(textGroup); + textLayout->addWidget(fontLabel, 0, Qt::AlignRight); + textLayout->addWidget(m_fontRequester); + + // create "Expandable Folders" checkbox + m_expandableFolders = new QCheckBox(i18nc("@option:check", "Expandable folders"), this); + connect(m_expandableFolders, SIGNAL(toggled(bool)), this, SIGNAL(changed())); // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); -} + loadSettings(); +} DetailsViewSettingsPage::~DetailsViewSettingsPage() { @@ -131,24 +95,53 @@ DetailsViewSettingsPage::~DetailsViewSettingsPage() void DetailsViewSettingsPage::applySettings() { DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); - assert(settings != 0); - settings->setShowDate(m_dateBox->isChecked()); - settings->setShowPermissions(m_permissionsBox->isChecked()); - settings->setShowOwner(m_ownerBox->isChecked()); - settings->setShowGroup(m_groupBox->isChecked()); + 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(); + settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); + settings->setFontFamily(font.family()); + settings->setFontSize(font.pointSize()); + settings->setItalicFont(font.italic()); + settings->setFontWeight(font.weight()); - int iconSize = K3Icon::SizeSmall; - if (m_mediumIconSize->isChecked()) { - iconSize = K3Icon::SizeMedium; - } - else if (m_largeIconSize->isChecked()) { - iconSize = K3Icon::SizeLarge; + settings->setExpandableFolders(m_expandableFolders->isChecked()); +} + +void DetailsViewSettingsPage::restoreDefaults() +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + settings->setDefaults(); + loadSettings(); +} + +void DetailsViewSettingsPage::loadSettings() +{ + DetailsModeSettings* settings = DolphinSettings::instance().detailsModeSettings(); + + 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); + + 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); } - settings->setIconSize(iconSize); - settings->setFontFamily(m_fontFamilyBox->currentFont().family()); - settings->setFontSize(m_fontSizeBox->value()); + m_expandableFolders->setChecked(settings->expandableFolders()); } #include "detailsviewsettingspage.moc"