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
This commit is contained in:
Peter Penz 2008-01-21 16:51:31 +00:00
parent 8ba61eb0c7
commit f3c83ec89f
7 changed files with 244 additions and 104 deletions

View file

@ -101,6 +101,7 @@ set(dolphin_SRCS
pixmapviewer.cpp
settingspagebase.cpp
sidebarpage.cpp
startupsettingspage.cpp
statusbarspaceinfo.cpp
statusbarmessagelabel.cpp
terminalsidebarpage.cpp

View file

@ -23,6 +23,7 @@
#include "dolphinapplication.h"
#include "dolphinmainwindow.h"
#include "generalsettingspage.h"
#include "startupsettingspage.h"
#include "viewsettingspage.h"
#include <klocale.h>
@ -30,7 +31,11 @@
#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();

View file

@ -22,14 +22,16 @@
#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;
};

View file

@ -21,31 +21,20 @@
#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());
}

View 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;

159
src/startupsettingspage.cpp Normal file
View file

@ -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"

65
src/startupsettingspage.h Normal file
View file

@ -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