mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 00:11:21 +00:00
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:
parent
8ba61eb0c7
commit
f3c83ec89f
|
@ -101,6 +101,7 @@ set(dolphin_SRCS
|
|||
pixmapviewer.cpp
|
||||
settingspagebase.cpp
|
||||
sidebarpage.cpp
|
||||
startupsettingspage.cpp
|
||||
statusbarspaceinfo.cpp
|
||||
statusbarmessagelabel.cpp
|
||||
terminalsidebarpage.cpp
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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
159
src/startupsettingspage.cpp
Normal 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
65
src/startupsettingspage.h
Normal 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
|
Loading…
Reference in a new issue