diff options
| author | Peter Penz <[email protected]> | 2011-07-30 20:13:09 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-07-30 20:13:41 +0200 |
| commit | f23e9496f303995557b744c03178f5dbd9b35016 (patch) | |
| tree | 1139c4340ac173718d1fa847e0124d6175781fd9 /src/settings/viewmodes/iconsviewsettingspage.cpp | |
| parent | 69e4007e5e330f2ca87c0176a186967b5ca156e8 (diff) | |
Merged very early alpha-version of Dolphin 2.0
Dolphin 2.0 will get a new view-engine with the
following improvements:
- Better performance
- Animated transitions
- No clipped filenames due to dynamic item-sizes
- Grouping support for all view-modes
- Non-rectangular selection areas
- Simplified code for better maintenance
More details will be provided in a blog-entry during
the next days.
Please note that the code is in a very
early alpha-stage and although the most tricky parts
have been implemented already very basic things like
drag and drop or selections have not been pushed yet.
Those things are rather trivial to implement but this
still will take some time.
Diffstat (limited to 'src/settings/viewmodes/iconsviewsettingspage.cpp')
| -rw-r--r-- | src/settings/viewmodes/iconsviewsettingspage.cpp | 137 |
1 files changed, 22 insertions, 115 deletions
diff --git a/src/settings/viewmodes/iconsviewsettingspage.cpp b/src/settings/viewmodes/iconsviewsettingspage.cpp index 91ca738a1..41438fb22 100644 --- a/src/settings/viewmodes/iconsviewsettingspage.cpp +++ b/src/settings/viewmodes/iconsviewsettingspage.cpp @@ -20,7 +20,6 @@ #include "iconsviewsettingspage.h" #include "dolphinfontrequester.h" -#include "settings/dolphinsettings.h" #include "iconsizegroupbox.h" #include "dolphin_iconsmodesettings.h" @@ -35,10 +34,8 @@ #include <QCheckBox> #include <QGroupBox> #include <QLabel> -#include <QListView> #include <QPushButton> #include <QGridLayout> -#include <QVBoxLayout> #include <views/zoomlevelinfo.h> @@ -46,10 +43,7 @@ IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : ViewSettingsPageBase(parent), m_iconSizeGroupBox(0), m_textWidthBox(0), - m_fontRequester(0), - m_textlinesCountBox(0), - m_arrangementBox(0), - m_gridSpacingBox(0) + m_fontRequester(0) { const int spacing = KDialog::spacingHint(); const int margin = KDialog::marginHint(); @@ -67,7 +61,7 @@ IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : m_iconSizeGroupBox->setDefaultSizeRange(min, max); m_iconSizeGroupBox->setPreviewSizeRange(min, max); - // create 'Text' group for selecting the font, the number of lines + // Create 'Text' group for selecting the font, the number of lines // and the text width QGroupBox* textGroup = new QGroupBox(i18nc("@title:group", "Text"), this); textGroup->setSizePolicy(sizePolicy); @@ -75,11 +69,6 @@ IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); m_fontRequester = new DolphinFontRequester(textGroup); - QLabel* textlinesCountLabel = new QLabel(i18nc("@label:textbox", "Number of lines:"), textGroup); - m_textlinesCountBox = new KIntSpinBox(textGroup); - m_textlinesCountBox->setMinimum(1); - m_textlinesCountBox->setMaximum(5); - QLabel* textWidthLabel = new QLabel(i18nc("@label:listbox", "Text width:"), textGroup); m_textWidthBox = new KComboBox(textGroup); m_textWidthBox->addItem(i18nc("@item:inlistbox Text width", "Small")); @@ -90,33 +79,9 @@ IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : QGridLayout* textGroupLayout = new QGridLayout(textGroup); textGroupLayout->addWidget(fontLabel, 0, 0, Qt::AlignRight); textGroupLayout->addWidget(m_fontRequester, 0, 1); - textGroupLayout->addWidget(textlinesCountLabel, 1, 0, Qt::AlignRight); - textGroupLayout->addWidget(m_textlinesCountBox, 1, 1); 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(i18nc("@title:group", "Grid"), this); - gridGroup->setSizePolicy(sizePolicy); - - 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")); - - 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")); - - QGridLayout* gridGroupLayout = new QGridLayout(gridGroup); - gridGroupLayout->addWidget(arrangementLabel, 0, 0, Qt::AlignRight); - gridGroupLayout->addWidget(m_arrangementBox, 0, 1); - gridGroupLayout->addWidget(gridSpacingLabel, 1, 0, Qt::AlignRight); - gridGroupLayout->addWidget(m_gridSpacingBox, 1, 1); - // Add a dummy widget with no restriction regarding // a vertical resizing. This assures that the dialog layout // is not stretched vertically. @@ -127,10 +92,7 @@ IconsViewSettingsPage::IconsViewSettingsPage(QWidget* parent) : connect(m_iconSizeGroupBox, SIGNAL(defaultSizeChanged(int)), this, SIGNAL(changed())); connect(m_iconSizeGroupBox, SIGNAL(previewSizeChanged(int)), this, SIGNAL(changed())); connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); - connect(m_textlinesCountBox, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); connect(m_textWidthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); - connect(m_arrangementBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); - connect(m_gridSpacingBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); } IconsViewSettingsPage::~IconsViewSettingsPage() @@ -139,108 +101,53 @@ IconsViewSettingsPage::~IconsViewSettingsPage() void IconsViewSettingsPage::applySettings() { - IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - const int iconSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->defaultSizeValue()); const int previewSize = ZoomLevelInfo::iconSizeForZoomLevel(m_iconSizeGroupBox->previewSizeValue()); - settings->setIconSize(iconSize); - settings->setPreviewSize(previewSize); + IconsModeSettings::setIconSize(iconSize); + IconsModeSettings::setPreviewSize(previewSize); const QFont font = m_fontRequester->font(); - const int fontHeight = QFontMetrics(font).height(); - - const int arrangement = (m_arrangementBox->currentIndex() == 0) ? - QListView::LeftToRight : - QListView::TopToBottom; - settings->setArrangement(arrangement); - - const int numberOfTextlines = m_textlinesCountBox->value(); - - const int defaultSize = settings->iconSize(); - int itemWidth = defaultSize; - int itemHeight = defaultSize; - const int textSizeIndex = m_textWidthBox->currentIndex(); - if (arrangement == QListView::TopToBottom) { - itemWidth += TopToBottomBase + textSizeIndex * TopToBottomInc; - itemHeight += fontHeight * numberOfTextlines + 10; - } else { - itemWidth += LeftToRightBase + textSizeIndex * LeftToRightInc; - } + IconsModeSettings::setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); + IconsModeSettings::setFontFamily(font.family()); + IconsModeSettings::setFontSize(font.pointSizeF()); + IconsModeSettings::setItalicFont(font.italic()); + IconsModeSettings::setFontWeight(font.weight()); - settings->setItemWidth(itemWidth); - settings->setItemHeight(itemHeight); + IconsModeSettings::setTextWidthIndex(m_textWidthBox->currentIndex()); - settings->setUseSystemFont(m_fontRequester->mode() == DolphinFontRequester::SystemFont); - settings->setFontFamily(font.family()); - settings->setFontSize(font.pointSizeF()); - settings->setItalicFont(font.italic()); - settings->setFontWeight(font.weight()); - - settings->setNumberOfTextlines(numberOfTextlines); - - const int index = m_gridSpacingBox->currentIndex(); - if (index == 0) { - // No grid spacing - settings->setGridSpacing(0); - } else { - settings->setGridSpacing(GridSpacingBase + (index - 1) * GridSpacingInc); - } - - settings->writeConfig(); + IconsModeSettings::self()->writeConfig(); } void IconsViewSettingsPage::restoreDefaults() { - IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - settings->useDefaults(true); + IconsModeSettings::self()->useDefaults(true); loadSettings(); - settings->useDefaults(false); + IconsModeSettings::self()->useDefaults(false); } void IconsViewSettingsPage::loadSettings() { - IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - - const QSize iconSize(settings->iconSize(), settings->iconSize()); + const QSize iconSize(IconsModeSettings::iconSize(), IconsModeSettings::iconSize()); const int iconSizeValue = ZoomLevelInfo::zoomLevelForIconSize(iconSize); m_iconSizeGroupBox->setDefaultSizeValue(iconSizeValue); - const QSize previewSize(settings->previewSize(), settings->previewSize()); + const QSize previewSize(IconsModeSettings::previewSize(), IconsModeSettings::previewSize()); const int previewSizeValue = ZoomLevelInfo::zoomLevelForIconSize(previewSize); m_iconSizeGroupBox->setPreviewSizeValue(previewSizeValue); - if (settings->useSystemFont()) { + if (IconsModeSettings::useSystemFont()) { m_fontRequester->setMode(DolphinFontRequester::SystemFont); } else { - QFont font(settings->fontFamily(), - qRound(settings->fontSize())); - font.setItalic(settings->italicFont()); - font.setWeight(settings->fontWeight()); - font.setPointSizeF(settings->fontSize()); + QFont font(IconsModeSettings::fontFamily(), + qRound(IconsModeSettings::fontSize())); + font.setItalic(IconsModeSettings::italicFont()); + font.setWeight(IconsModeSettings::fontWeight()); + font.setPointSizeF(IconsModeSettings::fontSize()); m_fontRequester->setMode(DolphinFontRequester::CustomFont); m_fontRequester->setCustomFont(font); } - m_textlinesCountBox->setValue(settings->numberOfTextlines()); - - const bool leftToRightArrangement = (settings->arrangement() == QListView::LeftToRight); - int textWidthIndex = 0; - const int remainingWidth = settings->itemWidth() - settings->iconSize(); - if (leftToRightArrangement) { - textWidthIndex = (remainingWidth - LeftToRightBase) / LeftToRightInc; - } else { - textWidthIndex = (remainingWidth - TopToBottomBase) / TopToBottomInc; - } - // ensure that chosen index is always valid - textWidthIndex = qMax(textWidthIndex, 0); - textWidthIndex = qMin(textWidthIndex, m_textWidthBox->count() - 1); - - m_textWidthBox->setCurrentIndex(textWidthIndex); - m_arrangementBox->setCurrentIndex(leftToRightArrangement ? 0 : 1); - - const int spacing = settings->gridSpacing(); - const int index = (spacing <= 0) ? 0 : 1 + (spacing - GridSpacingBase) / GridSpacingInc; - m_gridSpacingBox->setCurrentIndex(index); + m_textWidthBox->setCurrentIndex(IconsModeSettings::textWidthIndex()); } #include "iconsviewsettingspage.moc" |
