]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/behaviorsettingspage.cpp
Fix temporary regression of sorting introduced by SVN commit 1126410
[dolphin.git] / src / settings / behaviorsettingspage.cpp
index 144cc3f2f01d24e5ca317510739e5abb961c9045..f4133994d96ea7452e6240a5632e7f063dca1c55 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "dolphinsettings.h"
 #include "dolphin_generalsettings.h"
+#include "filemetadataconfigurationdialog.h"
 
 #include <viewproperties.h>
 
@@ -31,6 +32,7 @@
 
 #include <QCheckBox>
 #include <QGroupBox>
+#include <QHBoxLayout>
 #include <QLabel>
 #include <QRadioButton>
 #include <QVBoxLayout>
@@ -47,7 +49,9 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
     m_confirmDelete(0),
     m_renameInline(0),
     m_showToolTips(0),
-    m_showSelectionToggle(0)
+    m_configureToolTips(0),
+    m_showSelectionToggle(0),
+    m_naturalSorting(0)
 {
     const int spacing = KDialog::spacingHint();
 
@@ -87,15 +91,33 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
     confirmBoxLayout->addWidget(m_confirmDelete);
     confirmBoxLayout->addWidget(m_confirmClosingMultipleTabs);
 
+    // 'Rename inline'
     m_renameInline = new QCheckBox(i18nc("@option:check", "Rename inline"), vBox);
     connect(m_renameInline, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 
-    m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"), vBox);
+    // 'Show tooltips'
+    QWidget* toolTipContainer = new QWidget(vBox);
+    QHBoxLayout* toolTipsLayout = new QHBoxLayout(toolTipContainer);
+    toolTipsLayout->setMargin(0);
+    m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"), toolTipContainer);
     connect(m_showToolTips, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_showToolTips, SIGNAL(toggled(bool)), this, SLOT(updateConfigureButton()));
 
+    m_configureToolTips = new QLabel(toolTipContainer);
+    connect(m_configureToolTips, SIGNAL(linkActivated(const QString&)),
+            this, SLOT(configureToolTips()));
+
+    toolTipsLayout->addWidget(m_showToolTips);
+    toolTipsLayout->addWidget(m_configureToolTips, 1, Qt::AlignLeft);
+
+    // 'Show selection marker'
     m_showSelectionToggle = new QCheckBox(i18nc("@option:check", "Show selection marker"), vBox);
     connect(m_showSelectionToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 
+    // 'Natural sorting of items'
+    m_naturalSorting = new QCheckBox(i18nc("option:check", "Natural sorting of items"), vBox);
+    connect(m_naturalSorting, 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.
@@ -139,6 +161,13 @@ void BehaviorSettingsPage::applySettings()
     settings->setShowToolTips(m_showToolTips->isChecked());
     settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
     settings->writeConfig();
+
+    const bool naturalSorting = m_naturalSorting->isChecked();
+    if (KGlobalSettings::naturalSorting() != naturalSorting) {
+        KConfigGroup group(KGlobal::config(), "KDE");
+        group.writeEntry("NaturalSorting", naturalSorting, KConfig::Persistent | KConfig::Global);
+        KGlobalSettings::emitChange(KGlobalSettings::NaturalSortingChanged);
+    }
 }
 
 void BehaviorSettingsPage::restoreDefaults()
@@ -151,6 +180,28 @@ void BehaviorSettingsPage::restoreDefaults()
     m_confirmDelete->setChecked(CONFIRM_DELETE);
 }
 
+void BehaviorSettingsPage::updateConfigureButton()
+{
+    if (m_showToolTips->isChecked()) {
+        m_configureToolTips->setText("<a href=\"configure\">" +
+                                     i18nc("@action:button", "Configure...") +
+                                     "</a>");
+    } else {
+        m_configureToolTips->setText(QString());
+    }
+}
+
+void BehaviorSettingsPage::configureToolTips()
+{
+    FileMetaDataConfigurationDialog* dialog = new FileMetaDataConfigurationDialog();
+    dialog->setDescription(i18nc("@label::textbox",
+                                 "Configure which data should be shown in the tooltip."));
+    dialog->setAttribute(Qt::WA_DeleteOnClose);
+    dialog->show();
+    dialog->raise();
+    dialog->activateWindow();
+}
+
 void BehaviorSettingsPage::loadSettings()
 {
     GeneralSettings* settings = DolphinSettings::instance().generalSettings();
@@ -169,6 +220,9 @@ void BehaviorSettingsPage::loadSettings()
     m_renameInline->setChecked(settings->renameInline());
     m_showToolTips->setChecked(settings->showToolTips());
     m_showSelectionToggle->setChecked(settings->showSelectionToggle());
+    m_naturalSorting->setChecked(KGlobalSettings::naturalSorting());
+
+    updateConfigureButton();
 }
 
 #include "behaviorsettingspage.moc"