]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Layout improvements for settings
authorPeter Penz <peter.penz19@gmail.com>
Sun, 8 Apr 2012 21:15:32 +0000 (23:15 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 8 Apr 2012 21:18:20 +0000 (23:18 +0200)
- Handle 'Context Menu' settings as part of the services
- Handle 'Version Control' settings as part of the services
- Move the confirmations-settings into own tab
- Use combobox for view-property settings
- A lot of minor spacing cleanups

14 files changed:
src/CMakeLists.txt
src/settings/general/behaviorsettingspage.cpp
src/settings/general/behaviorsettingspage.h
src/settings/general/confirmationssettingspage.cpp [new file with mode: 0644]
src/settings/general/confirmationssettingspage.h [moved from src/settings/general/contextmenusettingspage.h with 77% similarity]
src/settings/general/contextmenusettingspage.cpp [deleted file]
src/settings/general/generalsettingspage.cpp
src/settings/general/previewssettingspage.cpp
src/settings/general/statusbarsettingspage.cpp
src/settings/kcm/kcmdolphingeneral.cpp
src/settings/services/servicessettingspage.cpp
src/settings/services/servicessettingspage.h
src/settings/viewmodes/dolphinfontrequester.cpp
src/settings/viewmodes/dolphinfontrequester.h

index 55c657dceb2baeecd25acce943226ad75b41feb4..6ac4464e869dfa173c68ffa004fc09bcfa675ec7 100644 (file)
@@ -145,7 +145,7 @@ set(dolphin_SRCS
     search/dolphinsearchinformation.cpp
     settings/general/behaviorsettingspage.cpp
     settings/general/configurepreviewplugindialog.cpp
-    settings/general/contextmenusettingspage.cpp
+    settings/general/confirmationssettingspage.cpp
     settings/general/generalsettingspage.cpp
     settings/general/previewssettingspage.cpp
     settings/general/statusbarsettingspage.cpp
@@ -239,7 +239,7 @@ set(kcm_dolphingeneral_PART_SRCS
     settings/general/behaviorsettingspage.cpp
     settings/general/previewssettingspage.cpp
     settings/general/configurepreviewplugindialog.cpp
-    settings/general/contextmenusettingspage.cpp
+    settings/general/confirmationssettingspage.cpp
     settings/settingspagebase.cpp
     settings/serviceitemdelegate.cpp
     settings/servicemodel.cpp)
index 4ed98e5d7319f4bcdbfd4c9305d6937d24b14b4b..57ff601461961cdc35c9a14159b9cd3c08671ada 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "dolphin_generalsettings.h"
 
+#include <KComboBox>
 #include <KDialog>
 #include <KLocale>
 
 
 #include <views/viewproperties.h>
 
-const bool CONFIRM_TRASH = false;
-const bool CONFIRM_DELETE = true;
-
 BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
     SettingsPageBase(parent),
     m_url(url),
-    m_localProps(0),
-    m_globalProps(0),
-    m_confirmMoveToTrash(0),
-    m_confirmDelete(0),
+    m_viewProps(0),
     m_showToolTips(0),
     m_showSelectionToggle(0),
     m_naturalSorting(0)
 {
     QVBoxLayout* topLayout = new QVBoxLayout(this);
 
-    // 'View Properties' box
-    QGroupBox* propsBox = new QGroupBox(i18nc("@title:group", "View Properties"), this);
-    propsBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
-
-    m_localProps = new QRadioButton(i18nc("@option:radio", "Remember view properties for each folder"), propsBox);
-
-    m_globalProps = new QRadioButton(i18nc("@option:radio", "Use common view properties for all folders"), propsBox);
+    // View properties
+    QLabel* viewPropsLabel = new QLabel(i18nc("@label", "View properties:"), this);
 
-    QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox);
-    propsBoxLayout->addWidget(m_localProps);
-    propsBoxLayout->addWidget(m_globalProps);
+    m_viewProps = new KComboBox(this);
+    const bool useGlobalProps = true;
+    m_viewProps->addItem(i18nc("@option:radio", "Remember view properties for each folder"), !useGlobalProps);
+    m_viewProps->addItem(i18nc("@option:radio", "Use common view properties for all folders"), useGlobalProps);
 
-    // 'Ask Confirmation For' box
-    QGroupBox* confirmBox = new QGroupBox(i18nc("@title:group", "Ask For Confirmation When"), this);
-    confirmBox->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
-    m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
-                                               "Moving files or folders to trash"), confirmBox);
-    m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
-                                          "Deleting files or folders"), confirmBox);
-    m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
-                                                       "Closing windows with multiple tabs"), confirmBox);
-
-    QVBoxLayout* confirmBoxLayout = new QVBoxLayout(confirmBox);
-    confirmBoxLayout->addWidget(m_confirmMoveToTrash);
-    confirmBoxLayout->addWidget(m_confirmDelete);
-    confirmBoxLayout->addWidget(m_confirmClosingMultipleTabs);
+    QHBoxLayout* viewPropsLayout = new QHBoxLayout(this);
+    viewPropsLayout->addWidget(viewPropsLabel, 0, Qt::AlignRight);
+    viewPropsLayout->addWidget(m_viewProps);
 
     // 'Show tooltips'
     m_showToolTips = new QCheckBox(i18nc("@option:check", "Show tooltips"), this);
@@ -86,8 +66,9 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
     // 'Natural sorting of items'
     m_naturalSorting = new QCheckBox(i18nc("option:check", "Natural sorting of items"), this);
 
-    topLayout->addWidget(propsBox);
-    topLayout->addWidget(confirmBox);
+    topLayout->addSpacing(KDialog::spacingHint());
+    topLayout->addLayout(viewPropsLayout);
+    topLayout->addSpacing(KDialog::spacingHint());
     topLayout->addWidget(m_showToolTips);
     topLayout->addWidget(m_showSelectionToggle);
     topLayout->addWidget(m_naturalSorting);
@@ -95,11 +76,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const KUrl& url, QWidget* parent) :
 
     loadSettings();
 
-    connect(m_localProps, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-    connect(m_globalProps, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-    connect(m_confirmMoveToTrash, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-    connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-    connect(m_confirmClosingMultipleTabs, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_viewProps, SIGNAL(currentIndexChanged(int)), this, SIGNAL(changed()));
     connect(m_showToolTips, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
     connect(m_showSelectionToggle, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
     connect(m_naturalSorting, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
@@ -111,13 +88,17 @@ BehaviorSettingsPage::~BehaviorSettingsPage()
 
 void BehaviorSettingsPage::applySettings()
 {
+    GeneralSettings* settings = GeneralSettings::self();
     ViewProperties props(m_url);  // read current view properties
 
-    const bool useGlobalProps = m_globalProps->isChecked();
-
-    GeneralSettings* settings = GeneralSettings::self();
+    const int index = m_viewProps->currentIndex();
+    const bool useGlobalProps = m_viewProps->itemData(index).toBool();
     settings->setGlobalViewProps(useGlobalProps);
 
+    settings->setShowToolTips(m_showToolTips->isChecked());
+    settings->setShowSelectionToggle(m_showSelectionToggle->isChecked());
+    settings->writeConfig();
+
     if (useGlobalProps) {
         // Remember the global view properties by applying the current view properties.
         // It is important that GeneralSettings::globalViewProps() is set before
@@ -127,17 +108,6 @@ void BehaviorSettingsPage::applySettings()
         globalProps.setDirProperties(props);
     }
 
-    KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::NoGlobals);
-    KConfigGroup confirmationGroup(kioConfig, "Confirmations");
-    confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked());
-    confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked());
-    confirmationGroup.sync();
-
-    settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked());
-    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");
@@ -152,24 +122,13 @@ void BehaviorSettingsPage::restoreDefaults()
     settings->useDefaults(true);
     loadSettings();
     settings->useDefaults(false);
-    m_confirmMoveToTrash->setChecked(CONFIRM_TRASH);
-    m_confirmDelete->setChecked(CONFIRM_DELETE);
 }
 
 void BehaviorSettingsPage::loadSettings()
 {
-    if (GeneralSettings::globalViewProps()) {
-        m_globalProps->setChecked(true);
-    } else {
-        m_localProps->setChecked(true);
-    }
-
-    KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::IncludeGlobals);
-    const KConfigGroup confirmationGroup(kioConfig, "Confirmations");
-    m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", CONFIRM_TRASH));
-    m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", CONFIRM_DELETE));
+    const int index = (m_viewProps->itemData(0).toBool() == GeneralSettings::globalViewProps()) ? 0 : 1;
+    m_viewProps->setCurrentIndex(index);
 
-    m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs());
     m_showToolTips->setChecked(GeneralSettings::showToolTips());
     m_showSelectionToggle->setChecked(GeneralSettings::showSelectionToggle());
     m_naturalSorting->setChecked(KGlobalSettings::naturalSorting());
index 7d48b0c161ef184840b493646227fa250f358705..f1e49ef6852f9b8cee23196f7427f91f8a3b238c 100644 (file)
@@ -23,6 +23,7 @@
 #include <settings/settingspagebase.h>
 #include <KUrl>
 
+class KComboBox;
 class QCheckBox;
 class QLabel;
 class QRadioButton;
@@ -50,12 +51,7 @@ private:
 private:
     KUrl m_url;
 
-    QRadioButton* m_localProps;
-    QRadioButton* m_globalProps;
-
-    QCheckBox* m_confirmMoveToTrash;
-    QCheckBox* m_confirmDelete;
-    QCheckBox* m_confirmClosingMultipleTabs;
+    KComboBox* m_viewProps;
 
     QCheckBox* m_showToolTips;
     QLabel* m_configureToolTips;
diff --git a/src/settings/general/confirmationssettingspage.cpp b/src/settings/general/confirmationssettingspage.cpp
new file mode 100644 (file)
index 0000000..07ca523
--- /dev/null
@@ -0,0 +1,106 @@
+/***************************************************************************
+ *   Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com>             *
+ *                                                                         *
+ *   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  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
+ ***************************************************************************/
+
+#include "confirmationssettingspage.h"
+
+#include <dolphin_generalsettings.h>
+
+#include <KDialog>
+#include <KLocale>
+
+#include <QCheckBox>
+#include <QLabel>
+#include <QVBoxLayout>
+
+namespace {
+    const bool ConfirmTrash = false;
+    const bool ConfirmDelete = true;
+}
+
+ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) :
+    SettingsPageBase(parent),
+    m_confirmMoveToTrash(0),
+    m_confirmDelete(0),
+    m_confirmClosingMultipleTabs(0)
+{
+    QVBoxLayout* topLayout = new QVBoxLayout(this);
+
+    QLabel* confirmLabel = new QLabel(i18nc("@title:group", "Ask for confirmation when:"), this);
+
+    m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for confirmation when",
+                                               "Moving files or folders to trash"), this);
+    m_confirmDelete = new QCheckBox(i18nc("@option:check Ask for confirmation when",
+                                          "Deleting files or folders"), this);
+    m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for confirmation when",
+                                                       "Closing windows with multiple tabs"), this);
+
+    topLayout->addSpacing(KDialog::spacingHint());
+    topLayout->addWidget(confirmLabel);
+    topLayout->addSpacing(KDialog::spacingHint());
+    topLayout->addWidget(m_confirmMoveToTrash);
+    topLayout->addWidget(m_confirmDelete);
+    topLayout->addWidget(m_confirmClosingMultipleTabs);
+    topLayout->addStretch();
+
+    loadSettings();
+
+    connect(m_confirmMoveToTrash, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_confirmDelete, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_confirmClosingMultipleTabs, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+}
+
+ConfirmationsSettingsPage::~ConfirmationsSettingsPage()
+{
+}
+
+void ConfirmationsSettingsPage::applySettings()
+{
+    KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::NoGlobals);
+    KConfigGroup confirmationGroup(kioConfig, "Confirmations");
+    confirmationGroup.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked());
+    confirmationGroup.writeEntry("ConfirmDelete", m_confirmDelete->isChecked());
+    confirmationGroup.sync();
+
+    GeneralSettings* settings = GeneralSettings::self();
+    settings->setConfirmClosingMultipleTabs(m_confirmClosingMultipleTabs->isChecked());
+    settings->writeConfig();
+}
+
+void ConfirmationsSettingsPage::restoreDefaults()
+{
+    GeneralSettings* settings = GeneralSettings::self();
+    settings->useDefaults(true);
+    loadSettings();
+    settings->useDefaults(false);
+
+    m_confirmMoveToTrash->setChecked(ConfirmTrash);
+    m_confirmDelete->setChecked(ConfirmDelete);
+}
+
+void ConfirmationsSettingsPage::loadSettings()
+{
+    KSharedConfig::Ptr kioConfig = KSharedConfig::openConfig("kiorc", KConfig::IncludeGlobals);
+    const KConfigGroup confirmationGroup(kioConfig, "Confirmations");
+    m_confirmMoveToTrash->setChecked(confirmationGroup.readEntry("ConfirmTrash", ConfirmTrash));
+    m_confirmDelete->setChecked(confirmationGroup.readEntry("ConfirmDelete", ConfirmDelete));
+
+    m_confirmClosingMultipleTabs->setChecked(GeneralSettings::confirmClosingMultipleTabs());
+}
+
+#include "confirmationssettingspage.moc"
similarity index 77%
rename from src/settings/general/contextmenusettingspage.h
rename to src/settings/general/confirmationssettingspage.h
index 77699625b020abe4f425c8997ad872cd77365bfe..45f0be1fc1f68939a37eedb80aae8e67d51d8809 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009 by Peter Penz <peter.penz19@gmail.com>             *
+ *   Copyright (C) 2012 by Peter Penz <peter.penz19@gmail.com>             *
  *                                                                         *
  *   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  *
  *   Free Software Foundation, Inc.,                                       *
  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
  ***************************************************************************/
-#ifndef CONTEXTMENUSETTINGSPAGE_H
-#define CONTEXTMENUSETTINGSPAGE_H
+#ifndef CONFIRMATIONSSETTINGSPAGE_H
+#define CONFIRMATIONSSETTINGSPAGE_H
 
 #include <settings/settingspagebase.h>
 
 class QCheckBox;
 
 /**
- * @brief Page for the 'Context Menu' settings of the Dolphin settings dialog.
+ * @brief Page for the enabling or disabling confirmation dialogs.
  */
-class ContextMenuSettingsPage : public SettingsPageBase
+class ConfirmationsSettingsPage : public SettingsPageBase
 {
     Q_OBJECT
 
 public:
-    ContextMenuSettingsPage(QWidget* parent);
-    virtual ~ContextMenuSettingsPage();
+    ConfirmationsSettingsPage(QWidget* parent);
+    virtual ~ConfirmationsSettingsPage();
 
     /** @see SettingsPageBase::applySettings() */
     virtual void applySettings();
@@ -44,8 +44,9 @@ private:
     void loadSettings();
 
 private:
-    QCheckBox* m_showDeleteCommand;
-    QCheckBox* m_showCopyMoveMenu;
+    QCheckBox* m_confirmMoveToTrash;
+    QCheckBox* m_confirmDelete;
+    QCheckBox* m_confirmClosingMultipleTabs;
 };
 
 #endif
diff --git a/src/settings/general/contextmenusettingspage.cpp b/src/settings/general/contextmenusettingspage.cpp
deleted file mode 100644 (file)
index 142a942..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2009 by Peter Penz <peter.penz19@gmail.com>             *
- *                                                                         *
- *   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  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
-
-#include "contextmenusettingspage.h"
-
-#include <dolphin_generalsettings.h>
-
-#include <KDialog>
-#include <KLocale>
-#include <KVBox>
-
-#include <QCheckBox>
-#include <QVBoxLayout>
-
-const bool SHOW_DELETE = false;
-
-ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget* parent) :
-    SettingsPageBase(parent),
-    m_showDeleteCommand(0),
-    m_showCopyMoveMenu(0)
-{
-    QVBoxLayout* topLayout = new QVBoxLayout(this);
-    KVBox* vBox = new KVBox(this);
-    vBox->setSpacing(KDialog::spacingHint());
-
-    m_showDeleteCommand = new QCheckBox(i18nc("@option:check", "Show 'Delete' command"), vBox);
-
-    m_showCopyMoveMenu = new QCheckBox(i18nc("@option:check", "Show 'Copy To' and 'Move To' commands"), vBox);
-
-    // Add a dummy widget with no restriction regarding
-    // a vertical resizing. This assures that the dialog layout
-    // is not stretched vertically.
-    new QWidget(vBox);
-
-    topLayout->addWidget(vBox);
-
-    loadSettings();
-
-    connect(m_showDeleteCommand, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-    connect(m_showCopyMoveMenu, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
-}
-
-ContextMenuSettingsPage::~ContextMenuSettingsPage()
-{
-}
-
-void ContextMenuSettingsPage::applySettings()
-{
-    KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals);
-    KConfigGroup configGroup(globalConfig, "KDE");
-    configGroup.writeEntry("ShowDeleteCommand", m_showDeleteCommand->isChecked());
-    configGroup.sync();
-
-    GeneralSettings::setShowCopyMoveMenu(m_showCopyMoveMenu->isChecked());
-    GeneralSettings::self()->writeConfig();
-}
-
-void ContextMenuSettingsPage::restoreDefaults()
-{
-    GeneralSettings* settings = GeneralSettings::self();
-    settings->useDefaults(true);
-    loadSettings();
-    settings->useDefaults(false);
-    m_showDeleteCommand->setChecked(SHOW_DELETE);
-}
-
-void ContextMenuSettingsPage::loadSettings()
-{
-    KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals);
-    KConfigGroup configGroup(globalConfig, "KDE");
-    m_showDeleteCommand->setChecked(configGroup.readEntry("ShowDeleteCommand", SHOW_DELETE));
-
-    m_showCopyMoveMenu->setChecked(GeneralSettings::showCopyMoveMenu());
-}
-
-#include "contextmenusettingspage.moc"
index dddefdd5c2d8301ee23ab05d4fcf4feb2077c9e8..18e152880a2188e45f7942d477de3468d9f7b38f 100644 (file)
@@ -21,7 +21,7 @@
 #include "generalsettingspage.h"
 
 #include "behaviorsettingspage.h"
-#include "contextmenusettingspage.h"
+#include "confirmationssettingspage.h"
 #include "previewssettingspage.h"
 #include <settings/settingspagebase.h>
 #include "statusbarsettingspage.h"
@@ -54,9 +54,9 @@ GeneralSettingsPage::GeneralSettingsPage(const KUrl& url, QWidget* parent) :
     connect(previewsPage, SIGNAL(changed()), this, SIGNAL(changed()));
 
     // initialize 'Context Menu' tab
-    ContextMenuSettingsPage* contextMenuPage = new ContextMenuSettingsPage(tabWidget);
-    tabWidget->addTab(contextMenuPage, i18nc("@title:tab Context Menu settings", "Context Menu"));
-    connect(contextMenuPage, SIGNAL(changed()), this, SIGNAL(changed()));
+    ConfirmationsSettingsPage* confirmationsPage = new ConfirmationsSettingsPage(tabWidget);
+    tabWidget->addTab(confirmationsPage, i18nc("@title:tab Confirmations settings", "Confirmations"));
+    connect(confirmationsPage, SIGNAL(changed()), this, SIGNAL(changed()));
 
     // initialize 'Status Bar' tab
     StatusBarSettingsPage* statusBarPage = new StatusBarSettingsPage(tabWidget);
@@ -65,7 +65,7 @@ GeneralSettingsPage::GeneralSettingsPage(const KUrl& url, QWidget* parent) :
 
     m_pages.append(behaviorPage);
     m_pages.append(previewsPage);
-    m_pages.append(contextMenuPage);
+    m_pages.append(confirmationsPage);
     m_pages.append(statusBarPage);
 
     topLayout->addWidget(tabWidget, 0, 0);
index 4df3fc3783530d39ecc48943331a0e93190c0cfc..c76f4ca24fe323f28d4e5ed4e4edd3d70facc8b7 100644 (file)
@@ -59,11 +59,8 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) :
     m_remoteFileSizeBox(0)
 {
     QVBoxLayout* topLayout = new QVBoxLayout(this);
-    topLayout->setSpacing(KDialog::spacingHint());
-    topLayout->setMargin(KDialog::marginHint());
 
-    // Create group box "Show previews for:"
-    QGroupBox* listBox = new QGroupBox(i18nc("@title:group", "Show previews for"), this);
+    QLabel* showPreviewsLabel = new QLabel(i18nc("@title:group", "Show previews for:"), this);
 
     m_listView = new QListView(this);
 
@@ -80,11 +77,6 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) :
     m_listView->setItemDelegate(delegate);
     m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
 
-    QVBoxLayout* listBoxLayout = new QVBoxLayout(listBox);
-    listBoxLayout->setSpacing(KDialog::spacingHint());
-    listBoxLayout->setMargin(KDialog::marginHint());
-    listBoxLayout->addWidget(m_listView);
-
     QLabel* remoteFileSizeLabel = new QLabel(i18nc("@label", "Skip previews for remote files above:"), this);
 
     m_remoteFileSizeBox = new KIntSpinBox(this);
@@ -96,7 +88,9 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) :
     fileSizeBoxLayout->addWidget(remoteFileSizeLabel, 0, Qt::AlignRight);
     fileSizeBoxLayout->addWidget(m_remoteFileSizeBox);
 
-    topLayout->addWidget(listBox);
+    topLayout->addSpacing(KDialog::spacingHint());
+    topLayout->addWidget(showPreviewsLabel);
+    topLayout->addWidget(m_listView);
     topLayout->addLayout(fileSizeBoxLayout);
 
     loadSettings();
index 8ba0d733775b0491fad3add7591eb86d4b9373ce..48622ac4ca9ef945446d985d7c6369f8442f434b 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <KDialog>
 #include <KLocale>
-#include <KVBox>
 
 #include <QCheckBox>
 #include <QVBoxLayout>
@@ -33,20 +32,14 @@ StatusBarSettingsPage::StatusBarSettingsPage(QWidget* parent) :
     m_showZoomSlider(0),
     m_showSpaceInfo(0)
 {
-    QVBoxLayout* topLayout = new QVBoxLayout(this);
-    KVBox* vBox = new KVBox(this);
-    vBox->setSpacing(KDialog::spacingHint());
-
-    m_showZoomSlider = new QCheckBox(i18nc("@option:check", "Show zoom slider"), vBox);
-
-    m_showSpaceInfo = new QCheckBox(i18nc("@option:check", "Show space information"), vBox);
+    m_showZoomSlider = new QCheckBox(i18nc("@option:check", "Show zoom slider"), this);
+    m_showSpaceInfo = new QCheckBox(i18nc("@option:check", "Show space information"), this);
 
-    // Add a dummy widget with no restriction regarding
-    // a vertical resizing. This assures that the dialog layout
-    // is not stretched vertically.
-    new QWidget(vBox);
-
-    topLayout->addWidget(vBox);
+    QVBoxLayout* topLayout = new QVBoxLayout(this);
+    topLayout->addSpacing(KDialog::spacingHint());
+    topLayout->addWidget(m_showZoomSlider);
+    topLayout->addWidget(m_showSpaceInfo);
+    topLayout->addStretch();
 
     loadSettings();
 
index b803c98cfeb7b6903b72e1100ca9273b315d9526..26cb580f026e5a51ef17b0a2ec863b7c32bab0e6 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <settings/general/behaviorsettingspage.h>
 #include <settings/general/previewssettingspage.h>
-#include <settings/general/contextmenusettingspage.h>
+#include <settings/general/confirmationssettingspage.h>
 
 #include <QDir>
 #include <QVBoxLayout>
@@ -61,14 +61,14 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget* parent, const QV
     tabWidget->addTab(previewsPage, i18nc("@title:tab Previews settings", "Previews"));
     connect(previewsPage, SIGNAL(changed()), this, SLOT(changed()));
 
-    // initialize 'Context Menu' tab
-    ContextMenuSettingsPage *contextMenuPage = new ContextMenuSettingsPage(tabWidget);
-    tabWidget->addTab(contextMenuPage,  i18nc("@title:tab Context Menu settings", "Context Menu"));
-    connect(contextMenuPage, SIGNAL(changed()), this, SLOT(changed()));
+    // initialize 'Confirmations' tab
+    ConfirmationsSettingsPage* confirmationsPage = new ConfirmationsSettingsPage(tabWidget);
+    tabWidget->addTab(confirmationsPage,  i18nc("@title:tab Confirmations settings", "Confirmations"));
+    connect(confirmationsPage, SIGNAL(changed()), this, SLOT(changed()));
 
     m_pages.append(behaviorPage);
     m_pages.append(previewsPage);
-    m_pages.append(contextMenuPage);
+    m_pages.append(confirmationsPage);
 
     topLayout->addWidget(tabWidget, 0, 0);
 }
index fbddbbfa7d3916f307c18c81ba796a5a43a68f6c..48e816be7dd4476082df52dd6e730b32575d48db 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "servicessettingspage.h"
 
+#include "dolphin_generalsettings.h"
 #include "dolphin_versioncontrolsettings.h"
 
 #include <KConfig>
 #include <QSortFilterProxyModel>
 #include <QShowEvent>
 
+namespace
+{
+    const bool ShowDeleteDefault = false;
+    const char* VersionControlServicePrefix = "_version_control_";
+    const char* DeleteService = "_delete";
+    const char* CopyToMoveToService ="_copy_to_move_to";
+}
+
 ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
     SettingsPageBase(parent),
     m_initialized(false),
+    m_serviceModel(0),
+    m_sortModel(0),
     m_listView(0),
-    m_vcsGroupBox(0),
-    m_vcsPluginsMap(),
     m_enabledVcsPlugins()
 {
     QVBoxLayout* topLayout = new QVBoxLayout(this);
@@ -62,11 +71,11 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
 
     m_listView = new QListView(this);
     ServiceItemDelegate* delegate = new ServiceItemDelegate(m_listView, m_listView);
-    ServiceModel* serviceModel = new ServiceModel(this);
-    QSortFilterProxyModel* proxyModel = new QSortFilterProxyModel(this);
-    proxyModel->setSourceModel(serviceModel);
-    proxyModel->setSortRole(Qt::DisplayRole);
-    m_listView->setModel(proxyModel);
+    m_serviceModel = new ServiceModel(this);
+    m_sortModel = new QSortFilterProxyModel(this);
+    m_sortModel->setSourceModel(m_serviceModel);
+    m_sortModel->setSortRole(Qt::DisplayRole);
+    m_listView->setModel(m_sortModel);
     m_listView->setItemDelegate(delegate);
     m_listView->setVerticalScrollMode(QListView::ScrollPerPixel);
     connect(m_listView, SIGNAL(clicked(QModelIndex)), this, SIGNAL(changed()));
@@ -76,17 +85,12 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
                                                     this);
     connect(downloadButton, SIGNAL(dialogFinished(KNS3::Entry::List)), this, SLOT(loadServices()));
 
-    m_vcsGroupBox = new QGroupBox(i18nc("@title:group", "Version Control Systems"), this);
-    // Only show the version control group box, if a version
-    // control system could be found (see loadVersionControlSystems())
-    m_vcsGroupBox->hide();
-
     topLayout->addWidget(label);
     topLayout->addWidget(m_listView);
     topLayout->addWidget(downloadButton);
-    topLayout->addWidget(m_vcsGroupBox);
 
     m_enabledVcsPlugins = VersionControlSettings::enabledPlugins();
+    qSort(m_enabledVcsPlugins);
 }
 
 ServicesSettingsPage::~ServicesSettingsPage()
@@ -99,30 +103,36 @@ void ServicesSettingsPage::applySettings()
         return;
     }
 
-    // Apply service menu settingsentries
     KConfig config("kservicemenurc", KConfig::NoGlobals);
     KConfigGroup showGroup = config.group("Show");
 
+    QStringList enabledPlugins;
+
     const QAbstractItemModel* model = m_listView->model();
     for (int i = 0; i < model->rowCount(); ++i) {
         const QModelIndex index = model->index(i, 0);
-        const bool show = model->data(index, Qt::CheckStateRole).toBool();
         const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
-        showGroup.writeEntry(service, show);
-    }
-
-    showGroup.sync();
+        const bool checked = model->data(index, Qt::CheckStateRole).toBool();
 
-    // Apply version control settings
-    QStringList enabledPlugins;
-    QMap<QString, QCheckBox*>::const_iterator it = m_vcsPluginsMap.constBegin();
-    while (it != m_vcsPluginsMap.constEnd()) {
-        if (it.value()->isChecked()) {
-            enabledPlugins.append(it.key());
+        if (service.startsWith(VersionControlServicePrefix)) {
+            if (checked) {
+                enabledPlugins.append(model->data(index, Qt::DisplayRole).toString());
+            }
+        } else if (service == QLatin1String(DeleteService)) {
+            KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals);
+            KConfigGroup configGroup(globalConfig, "KDE");
+            configGroup.writeEntry("ShowDeleteCommand", checked);
+            configGroup.sync();
+        } else if (service == QLatin1String(CopyToMoveToService)) {
+            GeneralSettings::setShowCopyMoveMenu(checked);
+            GeneralSettings::self()->writeConfig();
+        } else {
+            showGroup.writeEntry(service, checked);
         }
-        ++it;
     }
 
+    showGroup.sync();
+
     if (m_enabledVcsPlugins != enabledPlugins) {
         VersionControlSettings::setEnabledPlugins(enabledPlugins);
         VersionControlSettings::self()->writeConfig();
@@ -140,7 +150,12 @@ void ServicesSettingsPage::restoreDefaults()
     QAbstractItemModel* model = m_listView->model();
     for (int i = 0; i < model->rowCount(); ++i) {
         const QModelIndex index = model->index(i, 0);
-        model->setData(index, true, Qt::CheckStateRole);
+        const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
+
+        const bool checked = !service.startsWith(VersionControlServicePrefix)
+                             && service != QLatin1String(DeleteService)
+                             && service != QLatin1String(CopyToMoveToService);
+        model->setData(index, checked, Qt::CheckStateRole);
     }
 }
 
@@ -148,7 +163,25 @@ void ServicesSettingsPage::showEvent(QShowEvent* event)
 {
     if (!event->spontaneous() && !m_initialized) {
         loadServices();
+
         loadVersionControlSystems();
+
+        // Add "Show 'Delete' command" as service
+        KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals);
+        KConfigGroup configGroup(globalConfig, "KDE");
+        addRow("edit-delete",
+               i18nc("@option:check", "Delete"),
+               DeleteService,
+               configGroup.readEntry("ShowDeleteCommand", ShowDeleteDefault));
+
+        // Add "Show 'Copy To' and 'Move To' commands" as service
+        addRow("edit-copy",
+               i18nc("@option:check", "'Copy To' and 'Move To' commands"),
+               CopyToMoveToService,
+               GeneralSettings::showCopyMoveMenu());
+
+        m_sortModel->sort(Qt::DisplayRole);
+
         m_initialized = true;
     }
     SettingsPageBase::showEvent(event);
@@ -156,8 +189,6 @@ void ServicesSettingsPage::showEvent(QShowEvent* event)
 
 void ServicesSettingsPage::loadServices()
 {
-    QAbstractItemModel* model = m_listView->model();
-
     const KConfig config("kservicemenurc", KConfig::NoGlobals);
     const KConfigGroup showGroup = config.group("Show");
 
@@ -181,14 +212,8 @@ void ServicesSettingsPage::loadServices()
                 const QString itemName = subMenuName.isEmpty()
                                          ? action.text()
                                          : i18nc("@item:inmenu", "%1: %2", subMenuName, action.text());
-                const bool show = showGroup.readEntry(serviceName, true);
-
-                model->insertRow(0);
-                const QModelIndex index = model->index(0, 0);
-                model->setData(index, action.icon(), Qt::DecorationRole);
-                model->setData(index, show, Qt::CheckStateRole);
-                model->setData(index, itemName, Qt::DisplayRole);
-                model->setData(index, serviceName, ServiceModel::DesktopEntryNameRole);
+                const bool checked = showGroup.readEntry(serviceName, true);
+                addRow(action.icon(), itemName, serviceName, checked);
             }
         }
     }
@@ -198,18 +223,12 @@ void ServicesSettingsPage::loadServices()
     foreach (const KSharedPtr<KService>& service, pluginServices) {
         const QString desktopEntryName = service->desktopEntryName();
         if (!isInServicesList(desktopEntryName)) {
-            const bool show = showGroup.readEntry(desktopEntryName, true);
-
-            model->insertRow(0);
-            const QModelIndex index = model->index(0, 0);
-            model->setData(index, service->icon(), Qt::DecorationRole);
-            model->setData(index, show, Qt::CheckStateRole);
-            model->setData(index, service->name(), Qt::DisplayRole);
-            model->setData(index, desktopEntryName, ServiceModel::DesktopEntryNameRole);
+            const bool checked = showGroup.readEntry(desktopEntryName, true);
+            addRow(service->icon(), service->name(), desktopEntryName, checked);
         }
     }
 
-    model->sort(Qt::DisplayRole);
+    m_sortModel->sort(Qt::DisplayRole);
 }
 
 void ServicesSettingsPage::loadVersionControlSystems()
@@ -220,39 +239,38 @@ void ServicesSettingsPage::loadVersionControlSystems()
     const KService::List pluginServices = KServiceTypeTrader::self()->query("FileViewVersionControlPlugin");
     for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) {
         const QString pluginName = (*it)->name();
-        QCheckBox* checkBox = new QCheckBox(pluginName, m_vcsGroupBox);
-        checkBox->setChecked(enabledPlugins.contains(pluginName));
-        connect(checkBox, SIGNAL(clicked()), this, SIGNAL(changed()));
-        m_vcsPluginsMap.insert(pluginName, checkBox);
-    }
-
-    // Add the checkboxes into a grid layout of 2 columns
-    QGridLayout* layout = new QGridLayout(m_vcsGroupBox);
-    const int maxRows = (m_vcsPluginsMap.count() + 1) / 2;
-
-    int index = 0;
-    QMap<QString, QCheckBox*>::const_iterator it = m_vcsPluginsMap.constBegin();
-    while (it != m_vcsPluginsMap.constEnd()) {
-        const int column = index / maxRows;
-        const int row = index % maxRows;
-        layout->addWidget(it.value(), row, column);
-        ++it;
-        ++index;
+        addRow("code-class",
+               pluginName,
+               VersionControlServicePrefix + pluginName,
+               enabledPlugins.contains(pluginName));
     }
 
-    m_vcsGroupBox->setVisible(!m_vcsPluginsMap.isEmpty());
+    m_sortModel->sort(Qt::DisplayRole);
 }
 
 bool ServicesSettingsPage::isInServicesList(const QString& service) const
 {
-    QAbstractItemModel* model = m_listView->model();
-    for (int i = 0; i < model->rowCount(); ++i) {
-        const QModelIndex index = model->index(i, 0);
-        if (model->data(index, ServiceModel::DesktopEntryNameRole).toString() == service) {
+    for (int i = 0; i < m_serviceModel->rowCount(); ++i) {
+        const QModelIndex index = m_serviceModel->index(i, 0);
+        if (m_serviceModel->data(index, ServiceModel::DesktopEntryNameRole).toString() == service) {
             return true;
         }
     }
     return false;
 }
 
+void ServicesSettingsPage::addRow(const QString& icon,
+                                  const QString& text,
+                                  const QString& value,
+                                  bool checked)
+{
+    m_serviceModel->insertRow(0);
+
+    const QModelIndex index = m_serviceModel->index(0, 0);
+    m_serviceModel->setData(index, icon, Qt::DecorationRole);
+    m_serviceModel->setData(index, text, Qt::DisplayRole);
+    m_serviceModel->setData(index, value, ServiceModel::DesktopEntryNameRole);
+    m_serviceModel->setData(index, checked, Qt::CheckStateRole);
+}
+
 #include "servicessettingspage.moc"
index d2eecaefebc61df1fdfa4d5486965b959ddb2a36..80af42f88084c3660a21c2dd852d02f97ffb23d1 100644 (file)
@@ -27,6 +27,8 @@
 class QCheckBox;
 class QGroupBox;
 class QListView;
+class QSortFilterProxyModel;
+class ServiceModel;
 
 /**
  * @brief Page for the 'Services' settings of the Dolphin settings dialog.
@@ -62,11 +64,19 @@ private:
 
     bool isInServicesList(const QString& service) const;
 
+    /**
+     * Adds a row to the model of m_listView.
+     */
+    void addRow(const QString& icon,
+                const QString& text,
+                const QString& value,
+                bool checked);
+
 private:
     bool m_initialized;
-    QListView *m_listView;
-    QGroupBox* m_vcsGroupBox;
-    QMap<QString, QCheckBox*> m_vcsPluginsMap;
+    ServiceModel* m_serviceModel;
+    QSortFilterProxyModel* m_sortModel;
+    QListView* m_listView;
     QStringList m_enabledVcsPlugins;
 };
 
index 32e3ce65ed96e7c0ccfc4f05cf9fa7d0abc71898..6cb7b992981042cf0e176589c36852586b3e0896 100644 (file)
@@ -62,7 +62,6 @@ void DolphinFontRequester::setMode(Mode mode)
 {
     m_mode = mode;
     m_modeCombo->setCurrentIndex(m_mode);
-    m_modeCombo->setFont(customFont());
     m_chooseFontButton->setEnabled(m_mode == CustomFont);
 }
 
@@ -86,14 +85,6 @@ QFont DolphinFontRequester::customFont() const
     return m_customFont;
 }
 
-bool DolphinFontRequester::event(QEvent* event)
-{
-    if (event->type() == QEvent::Polish) {
-        m_modeCombo->setFont(customFont());
-    }
-    return QWidget::event(event);
-}
-
 void DolphinFontRequester::openFontDialog()
 {
     QFont font = m_customFont;
index 57cddc5cd46f727aa904e6d0ecb32672cd8b528e..6ef6e3e72ad3a6bb18f4ec9536742fbabcec03f1 100644 (file)
@@ -60,9 +60,6 @@ signals:
     /** Is emitted, if the font has been changed. */
     void changed();
 
-protected:
-    bool event(QEvent* event);
-
 private slots:
     void openFontDialog();
     void changeMode(int index);