From: Peter Penz Date: Mon, 21 Jan 2008 16:51:31 +0000 (+0000) Subject: Split the "General Settings" into "Startup Settings" and "General Settings" for havin... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/f3c83ec89f7a50381f86faff5a00781cf1613a6a Split the "General Settings" into "Startup Settings" and "General Settings" for having a cleaner layout. Still some fine tuning and code cleanups have to be done... svn path=/trunk/KDE/kdebase/apps/; revision=764389 --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bd2d37812..f11b62817 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -101,6 +101,7 @@ set(dolphin_SRCS pixmapviewer.cpp settingspagebase.cpp sidebarpage.cpp + startupsettingspage.cpp statusbarspaceinfo.cpp statusbarmessagelabel.cpp terminalsidebarpage.cpp diff --git a/src/dolphinsettingsdialog.cpp b/src/dolphinsettingsdialog.cpp index 1bbbbde55..2e1b69275 100644 --- a/src/dolphinsettingsdialog.cpp +++ b/src/dolphinsettingsdialog.cpp @@ -23,6 +23,7 @@ #include "dolphinapplication.h" #include "dolphinmainwindow.h" #include "generalsettingspage.h" +#include "startupsettingspage.h" #include "viewsettingspage.h" #include @@ -30,7 +31,11 @@ #include 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(); diff --git a/src/dolphinsettingsdialog.h b/src/dolphinsettingsdialog.h index e68d82798..2cb7fc78e 100644 --- a/src/dolphinsettingsdialog.h +++ b/src/dolphinsettingsdialog.h @@ -22,14 +22,16 @@ #define DOLPHINSETTINGSDIALOG_H #include + 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 */ @@ -50,6 +52,7 @@ private: void restoreDefaults(); private: + StartupSettingsPage* m_startupSettingsPage; GeneralSettingsPage* m_generalSettingsPage; ViewSettingsPage* m_viewSettingsPage; }; diff --git a/src/generalsettingspage.cpp b/src/generalsettingspage.cpp index ac24f2a57..ae2d4a9c9 100644 --- a/src/generalsettingspage.cpp +++ b/src/generalsettingspage.cpp @@ -21,31 +21,20 @@ #include "generalsettingspage.h" #include "dolphinsettings.h" -#include "dolphinmainwindow.h" -#include "dolphinview.h" -#include "dolphinviewcontainer.h" #include "dolphin_generalsettings.h" #include -#include #include #include #include #include #include -#include -#include -#include +#include 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()); } diff --git a/src/generalsettingspage.h b/src/generalsettingspage.h index 824cfa9b7..df713ad47 100644 --- a/src/generalsettingspage.h +++ b/src/generalsettingspage.h @@ -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 index 000000000..a56aa285e --- /dev/null +++ b/src/startupsettingspage.cpp @@ -0,0 +1,159 @@ +/*************************************************************************** + * Copyright (C) 2008 by Peter Penz * + * * + * 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 +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +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 index 000000000..14314c6c2 --- /dev/null +++ b/src/startupsettingspage.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (C) 2008 by Peter Penz * + * * + * 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 + +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