X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c209c33cdd3624ca3cf6e9daadad3d7938c8f37b..d34f1d1b466a8163a2274fa6763e1049233f00bb:/src/iconsviewsettingspage.cpp diff --git a/src/iconsviewsettingspage.cpp b/src/iconsviewsettingspage.cpp index 3492b3a65..6bcc78ae8 100644 --- a/src/iconsviewsettingspage.cpp +++ b/src/iconsviewsettingspage.cpp @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -37,7 +38,7 @@ #include #include #include -#include +#include IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, QWidget* parent) : @@ -59,52 +60,28 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, setSpacing(spacing); setMargin(margin); - IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - Q_ASSERT(settings != 0); - m_iconSize = settings->iconSize(); - m_previewSize = settings->previewSize(); - - m_iconSizeButton = new QPushButton(i18n("Change Icon && Preview Size..."), this); + m_iconSizeButton = new QPushButton(i18nc("@action:button", "Change Icon && Preview Size..."), this); connect(m_iconSizeButton, SIGNAL(clicked()), this, SLOT(openIconSizeDialog())); // 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); + QLabel* fontLabel = new QLabel(i18nc("@label:listbox", "Font:"), textGroup); m_fontRequester = new KFontRequester(textGroup); - QFont font(settings->fontFamily(), - settings->fontSize()); - font.setItalic(settings->italicFont()); - font.setBold(settings->boldFont()); - m_fontRequester->setFont(font); - QLabel* textlinesCountLabel = new QLabel(i18n("Number of lines:"), textGroup); - m_textlinesCountBox = new QSpinBox(1, 5, 1, textGroup); - m_textlinesCountBox->setValue(settings->numberOfTextlines()); + QLabel* textlinesCountLabel = new QLabel(i18nc("@label:textbox", "Number of lines:"), textGroup); + m_textlinesCountBox = new QSpinBox(textGroup); + m_textlinesCountBox->setMinimum(1); + m_textlinesCountBox->setMaximum(5); - QLabel* textWidthLabel = new QLabel(i18n("Text width:"), textGroup); + QLabel* textWidthLabel = new QLabel(i18nc("@label:listbox", "Text width:"), textGroup); m_textWidthBox = new QComboBox(textGroup); - m_textWidthBox->addItem(i18n("Small")); - m_textWidthBox->addItem(i18n("Medium")); - m_textWidthBox->addItem(i18n("Large")); - - const bool leftToRightArrangement = (settings->arrangement() == QListView::LeftToRight); - int textWidthIndex = 0; - const int remainingWidth = settings->gridWidth() - 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_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")); QGridLayout* textGroupLayout = new QGridLayout(textGroup); textGroupLayout->addWidget(fontLabel, 0, 0); @@ -115,21 +92,19 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, 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); + QLabel* arrangementLabel = new QLabel(i18nc("@label:listbox", "Arrangement:"), gridGroup); m_arrangementBox = new QComboBox(gridGroup); - m_arrangementBox->addItem(i18n("Left to Right")); - m_arrangementBox->addItem(i18n("Top to Bottom")); - m_arrangementBox->setCurrentIndex(leftToRightArrangement ? 0 : 1); + m_arrangementBox->addItem(i18nc("@item:inlistbox Arrangement", "Left to Right")); + m_arrangementBox->addItem(i18nc("@item:inlistbox Arrangement", "Top to Bottom")); - QLabel* gridSpacingLabel = new QLabel(i18n("Grid spacing:"), gridGroup); + QLabel* gridSpacingLabel = new QLabel(i18nc("@label:listbox", "Grid spacing:"), gridGroup); m_gridSpacingBox = new QComboBox(gridGroup); - m_gridSpacingBox->addItem(i18n("Small")); - m_gridSpacingBox->addItem(i18n("Medium")); - m_gridSpacingBox->addItem(i18n("Large")); - m_gridSpacingBox->setCurrentIndex((settings->gridSpacing() - GridSpacingBase) / GridSpacingInc); + 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); @@ -141,6 +116,8 @@ IconsViewSettingsPage::IconsViewSettingsPage(DolphinMainWindow* mainWindow, // a vertical resizing. This assures that the dialog layout // is not stretched vertically. new QWidget(this); + + loadSettings(); } IconsViewSettingsPage::~IconsViewSettingsPage() @@ -150,45 +127,52 @@ IconsViewSettingsPage::~IconsViewSettingsPage() void IconsViewSettingsPage::applySettings() { IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); - Q_ASSERT(settings != 0); settings->setIconSize(m_iconSize); settings->setPreviewSize(m_previewSize); const QFont font = m_fontRequester->font(); - const int fontSize = font.pointSize(); + 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 gridWidth = defaultSize; - int gridHeight = defaultSize; + int itemWidth = defaultSize; + int itemHeight = defaultSize; const int textSizeIndex = m_textWidthBox->currentIndex(); if (arrangement == QListView::TopToBottom) { - gridWidth += TopToBottomBase + textSizeIndex * TopToBottomInc; - gridHeight += fontSize * 6; - } - else { - gridWidth += LeftToRightBase + textSizeIndex * LeftToRightInc; + itemWidth += TopToBottomBase + textSizeIndex * TopToBottomInc; + itemHeight += fontHeight * numberOfTextlines + 10; + } else { + itemWidth += LeftToRightBase + textSizeIndex * LeftToRightInc; } - settings->setGridWidth(gridWidth); - settings->setGridHeight(gridHeight); + settings->setItemWidth(itemWidth); + settings->setItemHeight(itemHeight); settings->setFontFamily(font.family()); - settings->setFontSize(fontSize); + settings->setFontSize(font.pointSize()); settings->setItalicFont(font.italic()); settings->setBoldFont(font.bold()); - settings->setNumberOfTextlines(m_textlinesCountBox->value()); + settings->setNumberOfTextlines(numberOfTextlines); settings->setGridSpacing(GridSpacingBase + m_gridSpacingBox->currentIndex() * GridSpacingInc); } +void IconsViewSettingsPage::restoreDefaults() +{ + IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); + settings->setDefaults(); + loadSettings(); +} + void IconsViewSettingsPage::openIconSizeDialog() { IconSizeDialog dialog(this); @@ -198,4 +182,36 @@ void IconsViewSettingsPage::openIconSizeDialog() } } +void IconsViewSettingsPage::loadSettings() +{ + IconsModeSettings* settings = DolphinSettings::instance().iconsModeSettings(); + + m_iconSize = settings->iconSize(); + m_previewSize = settings->previewSize(); + + QFont font(settings->fontFamily(), + settings->fontSize()); + font.setItalic(settings->italicFont()); + font.setBold(settings->boldFont()); + m_fontRequester->setFont(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); + m_gridSpacingBox->setCurrentIndex((settings->gridSpacing() - GridSpacingBase) / GridSpacingInc); +} + #include "iconsviewsettingspage.moc"