X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e283a9f7d9cd0e77c159316e4f98108b28f917ce..5f57256a2f293622c7a10844adae29190907b9eb:/src/settings/viewmodes/viewsettingstab.cpp diff --git a/src/settings/viewmodes/viewsettingstab.cpp b/src/settings/viewmodes/viewsettingstab.cpp index 47aad7dd2..98f818c96 100644 --- a/src/settings/viewmodes/viewsettingstab.cpp +++ b/src/settings/viewmodes/viewsettingstab.cpp @@ -25,22 +25,27 @@ #include "dolphin_iconsmodesettings.h" #include -#include +#include +#include #include #include #include #include +#include +#include #include ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) : QWidget(parent), m_mode(mode), - m_defaultSizeSlider(0), - m_previewSizeSlider(0), - m_fontRequester(0), - m_textWidthBox(0) + m_defaultSizeSlider(nullptr), + m_previewSizeSlider(nullptr), + m_fontRequester(nullptr), + m_widthBox(nullptr), + m_maxLinesBox(nullptr), + m_expandableFolders(nullptr) { QVBoxLayout* topLayout = new QVBoxLayout(this); @@ -56,12 +61,16 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) : m_defaultSizeSlider->setPageStep(1); m_defaultSizeSlider->setTickPosition(QSlider::TicksBelow); m_defaultSizeSlider->setRange(minRange, maxRange); + connect(m_defaultSizeSlider, &QSlider::valueChanged, + this, &ViewSettingsTab::slotDefaultSliderMoved); QLabel* previewLabel = new QLabel(i18nc("@label:listbox", "Preview:"), this); m_previewSizeSlider = new QSlider(Qt::Horizontal, this); m_previewSizeSlider->setPageStep(1); m_previewSizeSlider->setTickPosition(QSlider::TicksBelow); m_previewSizeSlider->setRange(minRange, maxRange); + connect(m_previewSizeSlider, &QSlider::valueChanged, + this, &ViewSettingsTab::slotPreviewSliderMoved); QGridLayout* layout = new QGridLayout(iconSizeGroup); layout->addWidget(defaultLabel, 0, 0, Qt::AlignRight); @@ -79,29 +88,75 @@ ViewSettingsTab::ViewSettingsTab(Mode mode, QWidget* parent) : textGroupLayout->addWidget(fontLabel, 0, 0, Qt::AlignRight); textGroupLayout->addWidget(m_fontRequester, 0, 1); - if (m_mode == IconsMode) { - 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")); - - textGroupLayout->addWidget(textWidthLabel, 2, 0, Qt::AlignRight); - textGroupLayout->addWidget(m_textWidthBox, 2, 1); + switch (m_mode) { + case IconsMode: { + QLabel* widthLabel = new QLabel(i18nc("@label:listbox", "Width:"), textGroup); + m_widthBox = new KComboBox(textGroup); + m_widthBox->addItem(i18nc("@item:inlistbox Text width", "Small")); + m_widthBox->addItem(i18nc("@item:inlistbox Text width", "Medium")); + m_widthBox->addItem(i18nc("@item:inlistbox Text width", "Large")); + m_widthBox->addItem(i18nc("@item:inlistbox Text width", "Huge")); + + QLabel* maxLinesLabel = new QLabel(i18nc("@label:listbox", "Maximum lines:"), textGroup); + m_maxLinesBox = new KComboBox(textGroup); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "Unlimited")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "1")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "2")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "3")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "4")); + m_maxLinesBox->addItem(i18nc("@item:inlistbox Maximum lines", "5")); + + textGroupLayout->addWidget(widthLabel, 2, 0, Qt::AlignRight); + textGroupLayout->addWidget(m_widthBox, 2, 1); + textGroupLayout->addWidget(maxLinesLabel, 3, 0, Qt::AlignRight); + textGroupLayout->addWidget(m_maxLinesBox, 3, 1); + break; + } + case CompactMode: { + QLabel* maxWidthLabel = new QLabel(i18nc("@label:listbox", "Maximum width:"), textGroup); + m_widthBox = new KComboBox(textGroup); + m_widthBox->addItem(i18nc("@item:inlistbox Maximum width", "Unlimited")); + m_widthBox->addItem(i18nc("@item:inlistbox Maximum width", "Small")); + m_widthBox->addItem(i18nc("@item:inlistbox Maximum width", "Medium")); + m_widthBox->addItem(i18nc("@item:inlistbox Maximum width", "Large")); + + textGroupLayout->addWidget(maxWidthLabel, 2, 0, Qt::AlignRight); + textGroupLayout->addWidget(m_widthBox, 2, 1); + break; + } + case DetailsMode: + m_expandableFolders = new QCheckBox(i18nc("@option:check", "Expandable folders"), this); + break; + default: + break; } topLayout->addWidget(iconSizeGroup); topLayout->addWidget(textGroup); + if (m_expandableFolders) { + topLayout->addWidget(m_expandableFolders); + } topLayout->addStretch(1); loadSettings(); - connect(m_defaultSizeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); - connect(m_previewSizeSlider, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); - connect(m_fontRequester, SIGNAL(changed()), this, SIGNAL(changed())); - if (m_mode == IconsMode) { - connect(m_textWidthBox, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed())); + connect(m_defaultSizeSlider, &QSlider::valueChanged, this, &ViewSettingsTab::changed); + connect(m_previewSizeSlider, &QSlider::valueChanged, this, &ViewSettingsTab::changed); + connect(m_fontRequester, &DolphinFontRequester::changed, this, &ViewSettingsTab::changed); + + switch (m_mode) { + case IconsMode: + connect(m_widthBox, static_cast(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); + connect(m_maxLinesBox, static_cast(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); + break; + case CompactMode: + connect(m_widthBox, static_cast(&KComboBox::currentIndexChanged), this, &ViewSettingsTab::changed); + break; + case DetailsMode: + connect(m_expandableFolders, &QCheckBox::toggled, this, &ViewSettingsTab::changed); + break; + default: + break; } } @@ -114,8 +169,19 @@ void ViewSettingsTab::applySettings() const QFont font = m_fontRequester->currentFont(); const bool useSystemFont = (m_fontRequester->mode() == DolphinFontRequester::SystemFont); - if (m_mode == IconsMode) { - IconsModeSettings::setTextWidthIndex(m_textWidthBox->currentIndex()); + switch (m_mode) { + case IconsMode: + IconsModeSettings::setTextWidthIndex(m_widthBox->currentIndex()); + IconsModeSettings::setMaximumTextLines(m_maxLinesBox->currentIndex()); + break; + case CompactMode: + CompactModeSettings::setMaximumTextWidthIndex(m_widthBox->currentIndex()); + break; + case DetailsMode: + DetailsModeSettings::setExpandableFolders(m_expandableFolders->isChecked()); + break; + default: + break; } ViewModeSettings settings(viewMode()); @@ -131,12 +197,12 @@ void ViewSettingsTab::applySettings() settings.setItalicFont(font.italic()); settings.setFontWeight(font.weight()); - settings.writeConfig(); + settings.save(); } void ViewSettingsTab::restoreDefaultSettings() { - KConfigSkeleton* settings = 0; + KConfigSkeleton* settings = nullptr; switch (m_mode) { case IconsMode: settings = IconsModeSettings::self(); break; case CompactMode: settings = CompactModeSettings::self(); break; @@ -151,13 +217,23 @@ void ViewSettingsTab::restoreDefaultSettings() void ViewSettingsTab::loadSettings() { - if (m_mode == IconsMode) { - m_textWidthBox->setCurrentIndex(IconsModeSettings::textWidthIndex()); + switch (m_mode) { + case IconsMode: + m_widthBox->setCurrentIndex(IconsModeSettings::textWidthIndex()); + m_maxLinesBox->setCurrentIndex(IconsModeSettings::maximumTextLines()); + break; + case CompactMode: + m_widthBox->setCurrentIndex(CompactModeSettings::maximumTextWidthIndex()); + break; + case DetailsMode: + m_expandableFolders->setChecked(DetailsModeSettings::expandableFolders()); + break; + default: + break; } - ViewModeSettings settings(viewMode()); - settings.readConfig(); - + const ViewModeSettings settings(viewMode()); + const QSize iconSize(settings.iconSize(), settings.iconSize()); m_defaultSizeSlider->setValue(ZoomLevelInfo::zoomLevelForIconSize(iconSize)); @@ -192,4 +268,26 @@ ViewModeSettings::ViewMode ViewSettingsTab::viewMode() const } -#include "viewsettingstab.moc" +void ViewSettingsTab::slotDefaultSliderMoved(int value) +{ + showToolTip(m_defaultSizeSlider, value); +} + +void ViewSettingsTab::slotPreviewSliderMoved(int value) +{ + showToolTip(m_previewSizeSlider, value); +} + +void ViewSettingsTab::showToolTip(QSlider* slider, int value) +{ + const int size = ZoomLevelInfo::iconSizeForZoomLevel(value); + slider->setToolTip(i18ncp("@info:tooltip", "Size: 1 pixel", "Size: %1 pixels", size)); + if (!slider->isVisible()) { + return; + } + QPoint global = slider->rect().topLeft(); + global.ry() += slider->height() / 2; + QHelpEvent toolTipEvent(QEvent::ToolTip, QPoint(0, 0), slider->mapToGlobal(global)); + QApplication::sendEvent(slider, &toolTipEvent); +} +