]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Split the "General Settings" into "Startup Settings" and "General Settings" for havin...
authorPeter Penz <peter.penz19@gmail.com>
Mon, 21 Jan 2008 16:51:31 +0000 (16:51 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 21 Jan 2008 16:51:31 +0000 (16:51 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=764389

src/CMakeLists.txt
src/dolphinsettingsdialog.cpp
src/dolphinsettingsdialog.h
src/generalsettingspage.cpp
src/generalsettingspage.h
src/startupsettingspage.cpp [new file with mode: 0644]
src/startupsettingspage.h [new file with mode: 0644]

index bd2d37812f10ed264c1c162a4ac8d3cb98ec3a47..f11b62817760e589138357a2337350151ce55114 100644 (file)
@@ -101,6 +101,7 @@ set(dolphin_SRCS
    pixmapviewer.cpp
    settingspagebase.cpp
    sidebarpage.cpp
+   startupsettingspage.cpp
    statusbarspaceinfo.cpp
    statusbarmessagelabel.cpp
    terminalsidebarpage.cpp
index 1bbbbde55064de520d9c95f1f3b22662c7c7b313..2e1b6927555b795e0b0b77769ec39128664adae2 100644 (file)
@@ -23,6 +23,7 @@
 #include "dolphinapplication.h"
 #include "dolphinmainwindow.h"
 #include "generalsettingspage.h"
+#include "startupsettingspage.h"
 #include "viewsettingspage.h"
 
 #include <klocale.h>
 #include <kicon.h>
 
 DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) :
-    KPageDialog(mainWindow)
+    KPageDialog(mainWindow),
+    m_startupSettingsPage(0),
+    m_generalSettingsPage(0),
+    m_viewSettingsPage(0)
+
 {
     const QSize minSize = minimumSize();
     setMinimumSize(QSize(512, minSize.height()));
@@ -40,6 +45,11 @@ DolphinSettingsDialog::DolphinSettingsDialog(DolphinMainWindow* mainWindow) :
     setButtons(Ok | Apply | Cancel | Default);
     setDefaultButton(Ok);
 
+    m_startupSettingsPage = new StartupSettingsPage(mainWindow, this);
+    KPageWidgetItem* startupSettingsFrame = addPage(m_startupSettingsPage,
+                                                    i18nc("@title:group", "Startup"));
+    startupSettingsFrame->setIcon(KIcon("go-home"));
+
     m_generalSettingsPage = new GeneralSettingsPage(mainWindow, this);
     KPageWidgetItem* generalSettingsFrame = addPage(m_generalSettingsPage,
                                                     i18nc("@title:group", "General"));
@@ -76,6 +86,7 @@ void DolphinSettingsDialog::slotButtonClicked(int button)
 
 void DolphinSettingsDialog::applySettings()
 {
+    m_startupSettingsPage->applySettings();
     m_generalSettingsPage->applySettings();
     m_viewSettingsPage->applySettings();
     DolphinApplication::app()->refreshMainWindows();
@@ -83,6 +94,7 @@ void DolphinSettingsDialog::applySettings()
 
 void DolphinSettingsDialog::restoreDefaults()
 {
+    m_startupSettingsPage->restoreDefaults();
     m_generalSettingsPage->restoreDefaults();
     m_viewSettingsPage->restoreDefaults();
     DolphinApplication::app()->refreshMainWindows();
index e68d8279892e20362b60ed84602f02548a26014c..2cb7fc78ebdbe34a97a19e706fdf5bea37898054 100644 (file)
 #define DOLPHINSETTINGSDIALOG_H
 
 #include <kpagedialog.h>
+
 class GeneralSettingsPage;
+class StartupSettingsPage;
 class ViewSettingsPage;
 class DolphinMainWindow;
 
 /**
  * @brief Settings dialog for Dolphin.
  *
- * Contains the pages for general settings and view settings.
+ * Contains the pages for startup settings, general settings and view settings.
  *
  * @author Peter Penz <peter.penz@gmx.at>
  */
@@ -50,6 +52,7 @@ private:
     void restoreDefaults();
 
 private:
+    StartupSettingsPage* m_startupSettingsPage;
     GeneralSettingsPage* m_generalSettingsPage;
     ViewSettingsPage* m_viewSettingsPage;
 };
index ac24f2a574ff0605d7d692ddee9dcd60416a3ff0..ae2d4a9c96db0aaa1f6a353c478f37e9b3ba9ffd 100644 (file)
 #include "generalsettingspage.h"
 
 #include "dolphinsettings.h"
-#include "dolphinmainwindow.h"
-#include "dolphinview.h"
-#include "dolphinviewcontainer.h"
 
 #include "dolphin_generalsettings.h"
 
 #include <kdialog.h>
-#include <kfiledialog.h>
 #include <klocale.h>
 #include <kvbox.h>
 
 #include <QCheckBox>
 #include <QGroupBox>
 #include <QLabel>
-#include <QLineEdit>
-#include <QPushButton>
-#include <QRadioButton>
+#include <QVBoxLayout>
 
 GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* parent) :
     SettingsPageBase(parent),
-    m_mainWindow(mainWin),
-    m_homeUrl(0),
-    m_splitView(0),
-    m_editableUrl(0),
-    m_filterBar(0),
     m_showDeleteCommand(0),
     m_confirmMoveToTrash(0),
     m_confirmDelete(0),
@@ -57,45 +46,6 @@ GeneralSettingsPage::GeneralSettingsPage(DolphinMainWindow* mainWin, QWidget* pa
     KVBox* vBox = new KVBox(this);
     vBox->setSpacing(spacing);
 
-    // create 'Home URL' editor
-    QGroupBox* homeBox = new QGroupBox(i18nc("@title:group", "Home Folder"), vBox);
-
-    KHBox* homeUrlBox = new KHBox(homeBox);
-    homeUrlBox->setSpacing(spacing);
-
-    new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox);
-    m_homeUrl = new QLineEdit(homeUrlBox);
-
-    QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox);
-    connect(selectHomeUrlButton, SIGNAL(clicked()),
-            this, SLOT(selectHomeUrl()));
-
-    KHBox* buttonBox = new KHBox(homeBox);
-    buttonBox->setSpacing(spacing);
-
-    QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"), buttonBox);
-    connect(useCurrentButton, SIGNAL(clicked()),
-            this, SLOT(useCurrentLocation()));
-    QPushButton* useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"), buttonBox);
-    connect(useDefaultButton, SIGNAL(clicked()),
-            this, SLOT(useDefaultLocation()));
-
-    QVBoxLayout* homeBoxLayout = new QVBoxLayout(homeBox);
-    homeBoxLayout->addWidget(homeUrlBox);
-    homeBoxLayout->addWidget(buttonBox);
-
-    QGroupBox* startBox = new QGroupBox(i18nc("@title:group", "Startup Settings"), vBox);
-
-    // create 'Split view', 'Editable location' and 'Filter bar' checkboxes
-    m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), startBox);
-    m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), startBox);
-    m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"),startBox);
-
-    QVBoxLayout* startBoxLayout = new QVBoxLayout(startBox);
-    startBoxLayout->addWidget(m_splitView);
-    startBoxLayout->addWidget(m_editableUrl);
-    startBoxLayout->addWidget(m_filterBar);
-
     // create 'Ask Confirmation For' group
     QGroupBox* confirmBox = new QGroupBox(i18nc("@title:group", "Ask For Confirmation When"), vBox);
     m_confirmMoveToTrash = new QCheckBox(i18nc("@option:check Ask for Confirmation When",
@@ -130,16 +80,6 @@ void GeneralSettingsPage::applySettings()
 {
     GeneralSettings* settings = DolphinSettings::instance().generalSettings();
 
-    const KUrl url(m_homeUrl->text());
-    KFileItem fileItem(S_IFDIR, KFileItem::Unknown, url);
-    if (url.isValid() && fileItem.isDir()) {
-        settings->setHomeUrl(url.prettyUrl());
-    }
-
-    settings->setSplitView(m_splitView->isChecked());
-    settings->setEditableUrl(m_editableUrl->isChecked());
-    settings->setFilterBar(m_filterBar->isChecked());
-
     KSharedConfig::Ptr konqConfig = KSharedConfig::openConfig("konquerorrc", KConfig::IncludeGlobals);
     KConfigGroup trashConfig(konqConfig, "Trash");
     trashConfig.writeEntry("ConfirmTrash", m_confirmMoveToTrash->isChecked());
@@ -163,34 +103,8 @@ void GeneralSettingsPage::restoreDefaults()
     loadSettings();
 }
 
-void GeneralSettingsPage::selectHomeUrl()
-{
-    const QString homeUrl(m_homeUrl->text());
-    KUrl url(KFileDialog::getExistingDirectoryUrl(homeUrl));
-    if (!url.isEmpty()) {
-        m_homeUrl->setText(url.prettyUrl());
-    }
-}
-
-void GeneralSettingsPage::useCurrentLocation()
-{
-    const DolphinView* view = m_mainWindow->activeViewContainer()->view();
-    m_homeUrl->setText(view->url().prettyUrl());
-}
-
-void GeneralSettingsPage::useDefaultLocation()
-{
-    m_homeUrl->setText("file://" + QDir::homePath());
-}
-
 void GeneralSettingsPage::loadSettings()
 {
-    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
-    m_homeUrl->setText(settings->homeUrl());
-    m_splitView->setChecked(settings->splitView());
-    m_editableUrl->setChecked(settings->editableUrl());
-    m_filterBar->setChecked(settings->filterBar());
-
     KSharedConfig::Ptr konqConfig = KSharedConfig::openConfig("konquerorrc", KConfig::IncludeGlobals);
     const KConfigGroup trashConfig(konqConfig, "Trash");
     m_confirmMoveToTrash->setChecked(trashConfig.readEntry("ConfirmTrash", false));
@@ -199,6 +113,7 @@ void GeneralSettingsPage::loadSettings()
     const KConfigGroup kdeConfig(KGlobal::config(), "KDE");
     m_showDeleteCommand->setChecked(kdeConfig.readEntry("ShowDeleteCommand", false));
 
+    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
     m_browseThroughArchives->setChecked(settings->browseThroughArchives());
 }
 
index 824cfa9b7ececb811822160fe5e3c00449432dc5..df713ad477ec6f8c446b1aaa3a13a09bf26915a9 100644 (file)
@@ -28,9 +28,6 @@ class QCheckBox;
 
 /**
  * @brief Page for the 'General' settings of the Dolphin settings dialog.
- *
- * The general settings allow to set the home URL and to configure the
- * state of the view mode, split mode and the filter bar when starting Dolphin.
  */
 class GeneralSettingsPage : public SettingsPageBase
 {
@@ -46,22 +43,10 @@ public:
     /** @see SettingsPageBase::restoreDefaults() */
     virtual void restoreDefaults();
 
-private slots:
-    void selectHomeUrl();
-    void useCurrentLocation();
-    void useDefaultLocation();
-
 private:
     void loadSettings();
 
 private:
-    DolphinMainWindow* m_mainWindow;
-    QLineEdit* m_homeUrl;
-
-    QCheckBox* m_splitView;
-    QCheckBox* m_editableUrl;
-    QCheckBox* m_filterBar;
-
     QCheckBox* m_showDeleteCommand;
     QCheckBox* m_confirmMoveToTrash;
     QCheckBox* m_confirmDelete;
diff --git a/src/startupsettingspage.cpp b/src/startupsettingspage.cpp
new file mode 100644 (file)
index 0000000..a56aa28
--- /dev/null
@@ -0,0 +1,159 @@
+/***************************************************************************
+ *   Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at>                  *
+ *                                                                         *
+ *   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 "startupsettingspage.h"
+
+#include "dolphinsettings.h"
+#include "dolphinmainwindow.h"
+#include "dolphinview.h"
+#include "dolphinviewcontainer.h"
+
+#include "dolphin_generalsettings.h"
+
+#include <kdialog.h>
+#include <kfiledialog.h>
+#include <klocale.h>
+#include <kvbox.h>
+
+#include <QCheckBox>
+#include <QGroupBox>
+#include <QLabel>
+#include <QLineEdit>
+#include <QPushButton>
+#include <QRadioButton>
+
+StartupSettingsPage::StartupSettingsPage(DolphinMainWindow* mainWin, QWidget* parent) :
+    SettingsPageBase(parent),
+    m_mainWindow(mainWin),
+    m_homeUrl(0),
+    m_splitView(0),
+    m_editableUrl(0),
+    m_filterBar(0)
+{
+    const int spacing = KDialog::spacingHint();
+
+    QVBoxLayout* topLayout = new QVBoxLayout(this);
+    KVBox* vBox = new KVBox(this);
+    vBox->setSpacing(spacing);
+
+    // create 'Home URL' editor
+    QGroupBox* homeBox = new QGroupBox(i18nc("@title:group", "Home Folder"), vBox);
+
+    KHBox* homeUrlBox = new KHBox(homeBox);
+    homeUrlBox->setSpacing(spacing);
+
+    new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox);
+    m_homeUrl = new QLineEdit(homeUrlBox);
+
+    QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox);
+    connect(selectHomeUrlButton, SIGNAL(clicked()),
+            this, SLOT(selectHomeUrl()));
+
+    KHBox* buttonBox = new KHBox(homeBox);
+    buttonBox->setSpacing(spacing);
+
+    QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"), buttonBox);
+    connect(useCurrentButton, SIGNAL(clicked()),
+            this, SLOT(useCurrentLocation()));
+    QPushButton* useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"), buttonBox);
+    connect(useDefaultButton, SIGNAL(clicked()),
+            this, SLOT(useDefaultLocation()));
+
+    QVBoxLayout* homeBoxLayout = new QVBoxLayout(homeBox);
+    homeBoxLayout->addWidget(homeUrlBox);
+    homeBoxLayout->addWidget(buttonBox);
+
+    QGroupBox* startBox = new QGroupBox(i18nc("@title:group", "Settings"), vBox);
+
+    // create 'Split view', 'Editable location' and 'Filter bar' checkboxes
+    m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), startBox);
+    m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), startBox);
+    m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"),startBox);
+
+    QVBoxLayout* startBoxLayout = new QVBoxLayout(startBox);
+    startBoxLayout->addWidget(m_splitView);
+    startBoxLayout->addWidget(m_editableUrl);
+    startBoxLayout->addWidget(m_filterBar);
+
+    // 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();
+}
+
+StartupSettingsPage::~StartupSettingsPage()
+{
+}
+
+void StartupSettingsPage::applySettings()
+{
+    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+
+    const KUrl url(m_homeUrl->text());
+    KFileItem fileItem(S_IFDIR, KFileItem::Unknown, url);
+    if (url.isValid() && fileItem.isDir()) {
+        settings->setHomeUrl(url.prettyUrl());
+    }
+
+    settings->setSplitView(m_splitView->isChecked());
+    settings->setEditableUrl(m_editableUrl->isChecked());
+    settings->setFilterBar(m_filterBar->isChecked());
+}
+
+void StartupSettingsPage::restoreDefaults()
+{
+    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+    settings->setDefaults();
+    loadSettings();
+}
+
+void StartupSettingsPage::selectHomeUrl()
+{
+    const QString homeUrl = m_homeUrl->text();
+    KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl);
+    if (!url.isEmpty()) {
+        m_homeUrl->setText(url.prettyUrl());
+    }
+}
+
+void StartupSettingsPage::useCurrentLocation()
+{
+    const DolphinView* view = m_mainWindow->activeViewContainer()->view();
+    m_homeUrl->setText(view->url().prettyUrl());
+}
+
+void StartupSettingsPage::useDefaultLocation()
+{
+    m_homeUrl->setText("file://" + QDir::homePath());
+}
+
+void StartupSettingsPage::loadSettings()
+{
+    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+    m_homeUrl->setText(settings->homeUrl());
+    m_splitView->setChecked(settings->splitView());
+    m_editableUrl->setChecked(settings->editableUrl());
+    m_filterBar->setChecked(settings->filterBar());
+}
+
+#include "startupsettingspage.moc"
diff --git a/src/startupsettingspage.h b/src/startupsettingspage.h
new file mode 100644 (file)
index 0000000..14314c6
--- /dev/null
@@ -0,0 +1,65 @@
+/***************************************************************************
+ *   Copyright (C) 2008 by Peter Penz <peter.penz@gmx.at>                  *
+ *                                                                         *
+ *   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            *
+ ***************************************************************************/
+#ifndef STARTUPSETTINGSPAGE_H
+#define STARTUPSETTINGSPAGE_H
+
+#include <settingspagebase.h>
+
+class DolphinMainWindow;
+class QLineEdit;
+class QCheckBox;
+
+/**
+ * @brief Page for the 'Startup' settings of the Dolphin settings dialog.
+ *
+ * The startup settings allow to set the home URL and to configure the
+ * state of the view mode, split mode and the filter bar when starting Dolphin.
+ */
+class StartupSettingsPage : public SettingsPageBase
+{
+    Q_OBJECT
+
+public:
+    StartupSettingsPage(DolphinMainWindow* mainWindow, QWidget* parent);
+    virtual ~StartupSettingsPage();
+
+    /** @see SettingsPageBase::applySettings() */
+    virtual void applySettings();
+
+    /** @see SettingsPageBase::restoreDefaults() */
+    virtual void restoreDefaults();
+
+private slots:
+    void selectHomeUrl();
+    void useCurrentLocation();
+    void useDefaultLocation();
+
+private:
+    void loadSettings();
+
+private:
+    DolphinMainWindow* m_mainWindow;
+    QLineEdit* m_homeUrl;
+
+    QCheckBox* m_splitView;
+    QCheckBox* m_editableUrl;
+    QCheckBox* m_filterBar;
+};
+
+#endif