X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/687f40b54564a99b734dac4a5328b848c4795206..02c94b228a3ad9a5d39e850b9708f1c52c713c57:/src/settings/startup/startupsettingspage.cpp diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp index c3fdbc656..f8b7daa79 100644 --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Peter Penz * + * 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 * @@ -19,90 +19,97 @@ #include "startupsettingspage.h" -#include "settings/dolphinsettings.h" +#include "dolphin_generalsettings.h" #include "dolphinmainwindow.h" #include "dolphinviewcontainer.h" +#include "global.h" -#include "dolphin_generalsettings.h" - -#include -#include -#include -#include -#include -#include +#include +#include #include -#include -#include +#include +#include #include -#include +#include +#include +#include -#include "views/dolphinview.h" - -StartupSettingsPage::StartupSettingsPage(const KUrl& url, QWidget* parent) : +StartupSettingsPage::StartupSettingsPage(const QUrl& url, QWidget* parent) : SettingsPageBase(parent), m_url(url), - m_homeUrl(0), - m_splitView(0), - m_editableUrl(0), - m_showFullPath(0), - m_filterBar(0) + m_homeUrl(nullptr), + m_splitView(nullptr), + m_editableUrl(nullptr), + m_showFullPath(nullptr), + m_filterBar(nullptr), + m_showFullPathInTitlebar(nullptr) { - const int spacing = KDialog::spacingHint(); + QFormLayout* topLayout = new QFormLayout(this); - 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); + QHBoxLayout* homeUrlBoxLayout = new QHBoxLayout(); + homeUrlBoxLayout->setMargin(0); - KHBox* homeUrlBox = new KHBox(homeBox); - homeUrlBox->setSpacing(spacing); + m_homeUrl = new QLineEdit(); + m_homeUrl->setClearButtonEnabled(true); + homeUrlBoxLayout->addWidget(m_homeUrl); - new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox); - m_homeUrl = new KLineEdit(homeUrlBox); - m_homeUrl->setClearButtonShown(true); + QPushButton* selectHomeUrlButton = new QPushButton(QIcon::fromTheme(QStringLiteral("folder-open")), QString()); + homeUrlBoxLayout->addWidget(selectHomeUrlButton); - QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox); - connect(selectHomeUrlButton, SIGNAL(clicked()), - this, SLOT(selectHomeUrl())); +#ifndef QT_NO_ACCESSIBILITY + selectHomeUrlButton->setAccessibleName(i18nc("@action:button", "Select Home Location")); +#endif - KHBox* buttonBox = new KHBox(homeBox); - buttonBox->setSpacing(spacing); + connect(selectHomeUrlButton, &QPushButton::clicked, + this, &StartupSettingsPage::selectHomeUrl); - 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())); + QHBoxLayout* buttonBoxLayout = new QHBoxLayout(); + buttonBoxLayout->setMargin(0); - QVBoxLayout* homeBoxLayout = new QVBoxLayout(homeBox); - homeBoxLayout->addWidget(homeUrlBox); - homeBoxLayout->addWidget(buttonBox); + QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location")); + buttonBoxLayout->addWidget(useCurrentButton); + connect(useCurrentButton, &QPushButton::clicked, + this, &StartupSettingsPage::useCurrentLocation); + QPushButton* useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location")); + buttonBoxLayout->addWidget(useDefaultButton); + connect(useDefaultButton, &QPushButton::clicked, + this, &StartupSettingsPage::useDefaultLocation); - // create 'Split view', 'Show full path', '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); + QVBoxLayout* homeBoxLayout = new QVBoxLayout(); + homeBoxLayout->setMargin(0); + homeBoxLayout->addLayout(homeUrlBoxLayout); + homeBoxLayout->addLayout(buttonBoxLayout); + + topLayout->addRow(i18nc("@label:textbox", "Start in:"), homeBoxLayout); - // 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); + topLayout->addItem(new QSpacerItem(0, Dolphin::VERTICAL_SPACER_HEIGHT, QSizePolicy::Fixed, QSizePolicy::Fixed)); + + + // create 'Split view', 'Show full path', 'Editable location' and 'Filter bar' checkboxes + m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode")); + topLayout->addRow(i18nc("@label:checkbox", "Window options:"), m_splitView); + m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar")); + topLayout->addRow(QString(), m_editableUrl); + m_showFullPath = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path inside location bar")); + topLayout->addRow(QString(), m_showFullPath); + m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar")); + topLayout->addRow(QString(), m_filterBar); + m_showFullPathInTitlebar = new QCheckBox(i18nc("@option:check Startup Settings", "Show full path in title bar")); + topLayout->addRow(QString(), m_showFullPathInTitlebar); + loadSettings(); - connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SLOT(slotSettingsChanged())); - connect(m_splitView, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_editableUrl, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_showFullPath, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); - connect(m_filterBar, SIGNAL(toggled(bool)), this, SLOT(slotSettingsChanged())); + connect(m_homeUrl, &QLineEdit::textChanged, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_splitView, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_editableUrl, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_showFullPath, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_filterBar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); + connect(m_showFullPathInTitlebar, &QCheckBox::toggled, this, &StartupSettingsPage::slotSettingsChanged); } StartupSettingsPage::~StartupSettingsPage() @@ -111,12 +118,12 @@ StartupSettingsPage::~StartupSettingsPage() void StartupSettingsPage::applySettings() { - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + GeneralSettings* settings = GeneralSettings::self(); - const KUrl url(m_homeUrl->text()); - KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, url); - if (url.isValid() && fileItem.isDir()) { - settings->setHomeUrl(url.prettyUrl()); + const QUrl url(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile)); + KFileItem fileItem(url); + if ((url.isValid() && fileItem.isDir()) || (url.scheme() == QLatin1String("timeline"))) { + settings->setHomeUrl(url.toDisplayString(QUrl::PreferLocalFile)); } else { KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid or does not exist, it will not be applied.")); } @@ -125,13 +132,14 @@ void StartupSettingsPage::applySettings() settings->setEditableUrl(m_editableUrl->isChecked()); settings->setShowFullPath(m_showFullPath->isChecked()); settings->setFilterBar(m_filterBar->isChecked()); + settings->setShowFullPathInTitlebar(m_showFullPathInTitlebar->isChecked()); - settings->writeConfig(); + settings->save(); } void StartupSettingsPage::restoreDefaults() { - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + GeneralSettings* settings = GeneralSettings::self(); settings->useDefaults(true); loadSettings(); settings->useDefaults(false); @@ -142,42 +150,37 @@ void StartupSettingsPage::slotSettingsChanged() // Provide a hint that the startup settings have been changed. This allows the views // to apply the startup settings only if they have been explicitly changed by the user // (see bug #254947). - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); - settings->setModifiedStartupSettings(true); - + GeneralSettings::setModifiedStartupSettings(true); emit changed(); } void StartupSettingsPage::selectHomeUrl() { - const QString homeUrl = m_homeUrl->text(); - KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl, this); + const QUrl homeUrl(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile)); + QUrl url = QFileDialog::getExistingDirectoryUrl(this, QString(), homeUrl); if (!url.isEmpty()) { - m_homeUrl->setText(url.prettyUrl()); + m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile)); slotSettingsChanged(); } } void StartupSettingsPage::useCurrentLocation() { - m_homeUrl->setText(m_url.prettyUrl()); + m_homeUrl->setText(m_url.toDisplayString(QUrl::PreferLocalFile)); } void StartupSettingsPage::useDefaultLocation() { - KUrl url(QDir::homePath()); - m_homeUrl->setText(url.prettyUrl()); + m_homeUrl->setText(QDir::homePath()); } void StartupSettingsPage::loadSettings() { - GeneralSettings* settings = DolphinSettings::instance().generalSettings(); - KUrl url(settings->homeUrl()); - m_homeUrl->setText(url.prettyUrl()); - m_splitView->setChecked(settings->splitView()); - m_editableUrl->setChecked(settings->editableUrl()); - m_showFullPath->setChecked(settings->showFullPath()); - m_filterBar->setChecked(settings->filterBar()); + const QUrl url(Dolphin::homeUrl()); + m_homeUrl->setText(url.toDisplayString(QUrl::PreferLocalFile)); + m_splitView->setChecked(GeneralSettings::splitView()); + m_editableUrl->setChecked(GeneralSettings::editableUrl()); + m_showFullPath->setChecked(GeneralSettings::showFullPath()); + m_filterBar->setChecked(GeneralSettings::filterBar()); + m_showFullPathInTitlebar->setChecked(GeneralSettings::showFullPathInTitlebar()); } - -#include "startupsettingspage.moc"