┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/settings/startupsettingspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/startupsettingspage.cpp')
-rw-r--r--src/settings/startupsettingspage.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/settings/startupsettingspage.cpp b/src/settings/startupsettingspage.cpp
new file mode 100644
index 000000000..767fcab66
--- /dev/null
+++ b/src/settings/startupsettingspage.cpp
@@ -0,0 +1,169 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Peter Penz <[email protected]> *
+ * *
+ * 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 "settings/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 <klineedit.h>
+#include <kmessagebox.h>
+#include <kvbox.h>
+
+#include <QCheckBox>
+#include <QGroupBox>
+#include <QLabel>
+#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_showFullPath(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 KLineEdit(homeUrlBox);
+ m_homeUrl->setClearButtonShown(true);
+
+ 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);
+
+ // create 'Split view', 'Editable location' and 'Filter bar' checkboxes
+ m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), vBox);
+ m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox);
+ m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar"), vBox);
+ m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox);
+ connect(m_splitView, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ connect(m_editableUrl, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ connect(m_showFullPath, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+ connect(m_filterBar, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+
+ // 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();
+
+ // it's important connecting 'textChanged' after loadSettings(), as loadSettings()
+ // invokes m_homeUrl->setText()
+ connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed()));
+}
+
+StartupSettingsPage::~StartupSettingsPage()
+{
+}
+
+void StartupSettingsPage::applySettings()
+{
+ GeneralSettings* settings = DolphinSettings::instance().generalSettings();
+
+ const KUrl url(m_homeUrl->text());
+ KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, url);
+ if (url.isValid() && fileItem.isDir()) {
+ settings->setHomeUrl(url.prettyUrl());
+ } else {
+ KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid and will not be applied."));
+ }
+
+ settings->setSplitView(m_splitView->isChecked());
+ settings->setEditableUrl(m_editableUrl->isChecked());
+ settings->setShowFullPath(m_showFullPath->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, this);
+ if (!url.isEmpty()) {
+ m_homeUrl->setText(url.prettyUrl());
+ emit changed();
+ }
+}
+
+void StartupSettingsPage::useCurrentLocation()
+{
+ const DolphinView* view = m_mainWindow->activeViewContainer()->view();
+ m_homeUrl->setText(view->url().prettyUrl());
+}
+
+void StartupSettingsPage::useDefaultLocation()
+{
+ m_homeUrl->setText(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_showFullPath->setChecked(settings->showFullPath());
+ m_filterBar->setChecked(settings->filterBar());
+}
+
+#include "startupsettingspage.moc"