From 3515582495f9aa02369a342d73c11079fcdcd654 Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Tue, 3 Feb 2015 09:25:33 +0100 Subject: [PATCH] Ported Dolphin from KDialog to QDialog and save/restoreDialogSize to KWindowConfig::save/restoreWindowSize with the help of the porting scripts. REVIEW: 122305 --- src/dolphinmainwindow.cpp | 10 +-- .../information/informationpanelcontent.cpp | 5 +- src/panels/information/phononwidget.cpp | 5 +- src/settings/additionalinfodialog.cpp | 44 ++++++----- src/settings/additionalinfodialog.h | 8 +- .../general/configurepreviewplugindialog.cpp | 32 +++++--- .../general/configurepreviewplugindialog.h | 4 +- .../general/confirmationssettingspage.cpp | 5 -- src/settings/general/generalsettingspage.cpp | 2 - src/settings/general/previewssettingspage.cpp | 2 - .../general/statusbarsettingspage.cpp | 2 - src/settings/kcm/kcmdolphingeneral.cpp | 2 - src/settings/kcm/kcmdolphinnavigation.cpp | 2 - src/settings/kcm/kcmdolphinservices.cpp | 2 - src/settings/kcm/kcmdolphinviewmodes.cpp | 2 - .../navigation/navigationsettingspage.cpp | 4 - src/settings/startup/startupsettingspage.cpp | 6 -- src/settings/trash/trashsettingspage.cpp | 5 -- src/settings/viewmodes/viewsettingspage.cpp | 2 - src/settings/viewpropertiesdialog.cpp | 76 +++++++++++-------- src/settings/viewpropertiesdialog.h | 11 ++- src/settings/viewpropsprogressinfo.cpp | 62 ++++++++------- src/settings/viewpropsprogressinfo.h | 8 +- 23 files changed, 153 insertions(+), 148 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 1360a42e5..218698bef 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include @@ -78,6 +77,7 @@ #include #include #include +#include namespace { // Used for GeneralSettings::version() to determine whether @@ -361,9 +361,9 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event) if (m_tabWidget->count() > 1 && GeneralSettings::confirmClosingMultipleTabs() && closedByUser) { // Ask the user if he really wants to quit and close all tabs. // Open a confirmation dialog with 3 buttons: - // KDialog::Yes -> Quit - // KDialog::No -> Close only the current tab - // KDialog::Cancel -> do nothing + // QDialogButtonBox::Yes -> Quit + // QDialogButtonBox::No -> Close only the current tab + // QDialogButtonBox::Cancel -> do nothing QDialog *dialog = new QDialog(this, Qt::Dialog); dialog->setWindowTitle(i18nc("@title:window", "Confirmation")); dialog->setModal(true); @@ -969,7 +969,7 @@ void DolphinMainWindow::setUrlAsCaption(const QUrl& url) caption.append(fileName); - setCaption(caption); + setWindowTitle(caption); } void DolphinMainWindow::setupActions() diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index e85813d44..d87f47b45 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -19,7 +19,6 @@ #include "informationpanelcontent.h" -#include #include #include #include @@ -56,6 +55,7 @@ #include #include #include +#include #include "dolphin_informationpanelsettings.h" #include "filemetadataconfigurationdialog.h" @@ -86,7 +86,6 @@ InformationPanelContent::InformationPanelContent(QWidget* parent) : this, &InformationPanelContent::markOutdatedPreview); QVBoxLayout* layout = new QVBoxLayout(this); - layout->setSpacing(KDialog::spacingHint()); // preview const int minPreviewWidth = KIconLoader::SizeEnormous + KIconLoader::SizeMedium; @@ -423,7 +422,7 @@ void InformationPanelContent::adjustWidgetSizes(int width) // so that the width of the information panel gets increased. // To prevent this, the maximum width is adjusted to // the current width of the panel. - const int maxWidth = width - KDialog::spacingHint() * 4; + const int maxWidth = width - style()->layoutSpacing(QSizePolicy::DefaultType, QSizePolicy::DefaultType, Qt::Horizontal) * 4; m_nameLabel->setMaximumWidth(maxWidth); // The metadata widget also contains a text widget which may return diff --git a/src/panels/information/phononwidget.cpp b/src/panels/information/phononwidget.cpp index 215be200a..1d6361f19 100644 --- a/src/panels/information/phononwidget.cpp +++ b/src/panels/information/phononwidget.cpp @@ -30,8 +30,7 @@ #include #include #include - -#include +#include #include #include #include @@ -109,7 +108,7 @@ void PhononWidget::showEvent(QShowEvent *event) if (!m_topLayout) { m_topLayout = new QVBoxLayout(this); m_topLayout->setMargin(0); - m_topLayout->setSpacing(KDialog::spacingHint()); + QHBoxLayout *controlsLayout = new QHBoxLayout(this); controlsLayout->setMargin(0); controlsLayout->setSpacing(0); diff --git a/src/settings/additionalinfodialog.cpp b/src/settings/additionalinfodialog.cpp index 4d1b69c83..783f5685e 100644 --- a/src/settings/additionalinfodialog.cpp +++ b/src/settings/additionalinfodialog.cpp @@ -24,9 +24,14 @@ #include #include #include "kitemviews/kfileitemmodel.h" +#include +#include + #include #include #include +#include +#include #ifdef HAVE_BALOO #include @@ -34,21 +39,21 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, const QList& visibleRoles) : - KDialog(parent), + QDialog(parent), m_visibleRoles(visibleRoles), m_listWidget(0) { - setCaption(i18nc("@title:window", "Additional Information")); - setButtons(Ok | Cancel); - setDefaultButton(Ok); + setWindowTitle(i18nc("@title:window", "Additional Information")); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - QWidget* mainWidget = new QWidget(this); - mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); + auto layout = new QVBoxLayout(this); + setLayout(layout); // Add header - QLabel* header = new QLabel(mainWidget); + auto header = new QLabel(this); header->setText(i18nc("@label", "Select which additional information should be shown:")); header->setWordWrap(true); + layout->addWidget(header); // Add checkboxes bool indexingEnabled = false; @@ -57,7 +62,7 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, indexingEnabled = config.fileIndexingEnabled(); #endif - m_listWidget = new QListWidget(mainWidget); + m_listWidget = new QListWidget(this); m_listWidget->setSelectionMode(QAbstractItemView::NoSelection); const QList rolesInfo = KFileItemModel::rolesInformation(); foreach (const KFileItemModel::RoleInfo& info, rolesInfo) { @@ -72,23 +77,25 @@ AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent, item->setFlags(item->flags() & ~Qt::ItemIsEnabled); } } - - QVBoxLayout* layout = new QVBoxLayout(mainWidget); - layout->addWidget(header); layout->addWidget(m_listWidget); - setMainWidget(mainWidget); + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); + connect(buttonBox, &QDialogButtonBox::accepted, this, &AdditionalInfoDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &AdditionalInfoDialog::reject); + layout->addWidget(buttonBox); + + auto okButton = buttonBox->button(QDialogButtonBox::Ok); + okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + okButton->setDefault(true); const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog"); - restoreDialogSize(dialogConfig); - - connect(this, &AdditionalInfoDialog::okClicked, this, &AdditionalInfoDialog::slotOk); + KWindowConfig::restoreWindowSize(windowHandle(), dialogConfig); } AdditionalInfoDialog::~AdditionalInfoDialog() { KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog"); - saveDialogSize(dialogConfig, KConfigBase::Persistent); + KWindowConfig::saveWindowSize(windowHandle(), dialogConfig); } QList AdditionalInfoDialog::visibleRoles() const @@ -96,7 +103,7 @@ QList AdditionalInfoDialog::visibleRoles() const return m_visibleRoles; } -void AdditionalInfoDialog::slotOk() +void AdditionalInfoDialog::accept() { m_visibleRoles.clear(); @@ -109,5 +116,6 @@ void AdditionalInfoDialog::slotOk() } ++index; } -} + QDialog::accept(); +} diff --git a/src/settings/additionalinfodialog.h b/src/settings/additionalinfodialog.h index 4197d4794..fd72a7ce1 100644 --- a/src/settings/additionalinfodialog.h +++ b/src/settings/additionalinfodialog.h @@ -20,7 +20,7 @@ #ifndef ADDITIONALINFODIALOG_H #define ADDITIONALINFODIALOG_H -#include +#include #include #include @@ -28,7 +28,7 @@ /** * @brief Dialog for changing the additional information shown in the view. */ -class AdditionalInfoDialog : public KDialog +class AdditionalInfoDialog : public QDialog { Q_OBJECT @@ -37,8 +37,8 @@ public: virtual ~AdditionalInfoDialog(); QList visibleRoles() const; -private slots: - void slotOk(); +public slots: + void accept() Q_DECL_OVERRIDE; private: QList m_visibleRoles; diff --git a/src/settings/general/configurepreviewplugindialog.cpp b/src/settings/general/configurepreviewplugindialog.cpp index eb9ad010c..15cd92667 100644 --- a/src/settings/general/configurepreviewplugindialog.cpp +++ b/src/settings/general/configurepreviewplugindialog.cpp @@ -30,11 +30,13 @@ #include #include #include +#include +#include ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& pluginName, const QString& desktopEntryName, QWidget* parent) : - KDialog(parent) + QDialog(parent) { QSharedPointer previewPlugin; const QString pluginPath = KPluginLoader::findPlugin(desktopEntryName); @@ -45,24 +47,21 @@ ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& plugin } } - setCaption(i18nc("@title:window", "Configure Preview for %1", pluginName)); + setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName)); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); setMinimumWidth(400); - setButtons(Ok | Cancel); - setDefaultButton(Ok); + + auto layout = new QVBoxLayout(this); + setLayout(layout); if (previewPlugin) { - auto mainWidget = new QWidget(this); - mainWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - setMainWidget(mainWidget); - auto configurationWidget = previewPlugin->createConfigurationWidget(); - configurationWidget->setParent(mainWidget); - - auto layout = new QVBoxLayout(mainWidget); + configurationWidget->setParent(this); layout->addWidget(configurationWidget); + layout->addStretch(); - connect(this, &ConfigurePreviewPluginDialog::okClicked, this, [=] { + connect(this, &ConfigurePreviewPluginDialog::accepted, this, [=] { // TODO: It would be great having a mechanism to tell PreviewJob that only previews // for a specific MIME-type should be regenerated. As this is not available yet we // delete the whole thumbnails directory. @@ -73,4 +72,13 @@ ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString& plugin KIO::del(QUrl::fromLocalFile(thumbnailsPath), KIO::HideProgressInfo); }); } + + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); + connect(buttonBox, &QDialogButtonBox::accepted, this, &ConfigurePreviewPluginDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &ConfigurePreviewPluginDialog::reject); + layout->addWidget(buttonBox); + + auto okButton = buttonBox->button(QDialogButtonBox::Ok); + okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + okButton->setDefault(true); } \ No newline at end of file diff --git a/src/settings/general/configurepreviewplugindialog.h b/src/settings/general/configurepreviewplugindialog.h index 02a0cde34..620caeb51 100644 --- a/src/settings/general/configurepreviewplugindialog.h +++ b/src/settings/general/configurepreviewplugindialog.h @@ -20,12 +20,12 @@ #ifndef CONFIGUREPREVIEWPLUGINDIALOG_H #define CONFIGUREPREVIEWPLUGINDIALOG_H -#include +#include /** * @brief Dialog for configuring preview-plugins. */ -class ConfigurePreviewPluginDialog : public KDialog +class ConfigurePreviewPluginDialog : public QDialog { Q_OBJECT diff --git a/src/settings/general/confirmationssettingspage.cpp b/src/settings/general/confirmationssettingspage.cpp index 617d31c7d..264024abd 100644 --- a/src/settings/general/confirmationssettingspage.cpp +++ b/src/settings/general/confirmationssettingspage.cpp @@ -21,7 +21,6 @@ #include -#include #include #include @@ -58,15 +57,11 @@ ConfirmationsSettingsPage::ConfirmationsSettingsPage(QWidget* parent) : m_confirmClosingMultipleTabs = new QCheckBox(i18nc("@option:check Ask for confirmation when", "Closing Dolphin windows with multiple tabs"), this); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(confirmLabelKde); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(m_confirmMoveToTrash); topLayout->addWidget(m_confirmDelete); topLayout->addWidget(m_confirmScriptExecution); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(confirmLabelDolphin); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(m_confirmClosingMultipleTabs); topLayout->addStretch(); diff --git a/src/settings/general/generalsettingspage.cpp b/src/settings/general/generalsettingspage.cpp index f32cb9c92..d8f61ef90 100644 --- a/src/settings/general/generalsettingspage.cpp +++ b/src/settings/general/generalsettingspage.cpp @@ -26,7 +26,6 @@ #include #include "statusbarsettingspage.h" -#include #include #include @@ -38,7 +37,6 @@ GeneralSettingsPage::GeneralSettingsPage(const QUrl& url, QWidget* parent) : { QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); QTabWidget* tabWidget = new QTabWidget(this); diff --git a/src/settings/general/previewssettingspage.cpp b/src/settings/general/previewssettingspage.cpp index 835af9dbe..9e5f18cc7 100644 --- a/src/settings/general/previewssettingspage.cpp +++ b/src/settings/general/previewssettingspage.cpp @@ -23,7 +23,6 @@ #include "configurepreviewplugindialog.h" #include -#include #include #include #include @@ -88,7 +87,6 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget* parent) : fileSizeBoxLayout->addWidget(remoteFileSizeLabel, 0, Qt::AlignRight); fileSizeBoxLayout->addWidget(m_remoteFileSizeBox); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(showPreviewsLabel); topLayout->addWidget(m_listView); topLayout->addLayout(fileSizeBoxLayout); diff --git a/src/settings/general/statusbarsettingspage.cpp b/src/settings/general/statusbarsettingspage.cpp index d12a0c1fc..03846253b 100644 --- a/src/settings/general/statusbarsettingspage.cpp +++ b/src/settings/general/statusbarsettingspage.cpp @@ -21,7 +21,6 @@ #include -#include #include #include @@ -36,7 +35,6 @@ StatusBarSettingsPage::StatusBarSettingsPage(QWidget* parent) : m_showSpaceInfo = new QCheckBox(i18nc("@option:check", "Show space information"), this); QVBoxLayout* topLayout = new QVBoxLayout(this); - topLayout->addSpacing(KDialog::spacingHint()); topLayout->addWidget(m_showZoomSlider); topLayout->addWidget(m_showSpaceInfo); topLayout->addStretch(); diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp index 285633658..64e96f127 100644 --- a/src/settings/kcm/kcmdolphingeneral.cpp +++ b/src/settings/kcm/kcmdolphingeneral.cpp @@ -19,7 +19,6 @@ #include "kcmdolphingeneral.h" -#include #include #include #include @@ -48,7 +47,6 @@ DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget* parent, const QV QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); QTabWidget* tabWidget = new QTabWidget(this); diff --git a/src/settings/kcm/kcmdolphinnavigation.cpp b/src/settings/kcm/kcmdolphinnavigation.cpp index 5a0be61be..b56ce40c1 100644 --- a/src/settings/kcm/kcmdolphinnavigation.cpp +++ b/src/settings/kcm/kcmdolphinnavigation.cpp @@ -19,7 +19,6 @@ #include "kcmdolphinnavigation.h" -#include #include #include @@ -43,7 +42,6 @@ DolphinNavigationConfigModule::DolphinNavigationConfigModule(QWidget* parent, co QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); m_navigation = new NavigationSettingsPage(this); connect(m_navigation, &NavigationSettingsPage::changed, this, static_cast(&DolphinNavigationConfigModule::changed)); diff --git a/src/settings/kcm/kcmdolphinservices.cpp b/src/settings/kcm/kcmdolphinservices.cpp index b00f58abc..619e44cc5 100644 --- a/src/settings/kcm/kcmdolphinservices.cpp +++ b/src/settings/kcm/kcmdolphinservices.cpp @@ -19,7 +19,6 @@ #include "kcmdolphinservices.h" -#include #include #include @@ -43,7 +42,6 @@ DolphinServicesConfigModule::DolphinServicesConfigModule(QWidget* parent, const QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); m_services = new ServicesSettingsPage(this); connect(m_services, &ServicesSettingsPage::changed, this, static_cast(&DolphinServicesConfigModule::changed)); diff --git a/src/settings/kcm/kcmdolphinviewmodes.cpp b/src/settings/kcm/kcmdolphinviewmodes.cpp index d9c8a1a43..f013180ad 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.cpp +++ b/src/settings/kcm/kcmdolphinviewmodes.cpp @@ -19,7 +19,6 @@ #include "kcmdolphinviewmodes.h" -#include #include #include #include @@ -49,7 +48,6 @@ DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget* parent, cons QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); QTabWidget* tabWidget = new QTabWidget(this); diff --git a/src/settings/navigation/navigationsettingspage.cpp b/src/settings/navigation/navigationsettingspage.cpp index 81ea3bc82..f9c7a4dfc 100644 --- a/src/settings/navigation/navigationsettingspage.cpp +++ b/src/settings/navigation/navigationsettingspage.cpp @@ -21,7 +21,6 @@ #include "dolphin_generalsettings.h" -#include #include #include @@ -32,13 +31,10 @@ NavigationSettingsPage::NavigationSettingsPage(QWidget* parent) : m_openArchivesAsFolder(0), m_autoExpandFolders(0) { - const int spacing = KDialog::spacingHint(); - QVBoxLayout* topLayout = new QVBoxLayout(this); QWidget* vBox = new QWidget(this); QVBoxLayout *vBoxLayout = new QVBoxLayout(vBox); vBoxLayout->setMargin(0); - vBoxLayout->setSpacing(spacing); vBoxLayout->setAlignment(Qt::AlignTop); m_openArchivesAsFolder = new QCheckBox(i18nc("@option:check", "Open archives as folder"), vBox); diff --git a/src/settings/startup/startupsettingspage.cpp b/src/settings/startup/startupsettingspage.cpp index 11adb869b..baba7f8a1 100644 --- a/src/settings/startup/startupsettingspage.cpp +++ b/src/settings/startup/startupsettingspage.cpp @@ -24,7 +24,6 @@ #include "dolphin_generalsettings.h" -#include #include #include #include @@ -49,13 +48,10 @@ StartupSettingsPage::StartupSettingsPage(const QUrl& url, QWidget* parent) : m_showFullPath(0), m_filterBar(0) { - const int spacing = KDialog::spacingHint(); - QVBoxLayout* topLayout = new QVBoxLayout(this); QWidget* vBox = new QWidget(this); QVBoxLayout *vBoxLayout = new QVBoxLayout(vBox); vBoxLayout->setMargin(0); - vBoxLayout->setSpacing(spacing); vBoxLayout->setAlignment(Qt::AlignTop); // create 'Home URL' editor @@ -65,7 +61,6 @@ StartupSettingsPage::StartupSettingsPage(const QUrl& url, QWidget* parent) : QWidget* homeUrlBox = new QWidget(homeBox); QHBoxLayout *homeUrlBoxLayout = new QHBoxLayout(homeUrlBox); homeUrlBoxLayout->setMargin(0); - homeUrlBoxLayout->setSpacing(spacing); QLabel* homeUrlLabel = new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox); homeUrlBoxLayout->addWidget(homeUrlLabel); @@ -86,7 +81,6 @@ StartupSettingsPage::StartupSettingsPage(const QUrl& url, QWidget* parent) : QWidget* buttonBox = new QWidget(homeBox); QHBoxLayout *buttonBoxLayout = new QHBoxLayout(buttonBox); buttonBoxLayout->setMargin(0); - buttonBoxLayout->setSpacing(spacing); QPushButton* useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"), buttonBox); buttonBoxLayout->addWidget(useCurrentButton); diff --git a/src/settings/trash/trashsettingspage.cpp b/src/settings/trash/trashsettingspage.cpp index aa4b5a22a..237a17987 100644 --- a/src/settings/trash/trashsettingspage.cpp +++ b/src/settings/trash/trashsettingspage.cpp @@ -20,21 +20,16 @@ #include "trashsettingspage.h" #include -#include -#include #include TrashSettingsPage::TrashSettingsPage(QWidget* parent) : SettingsPageBase(parent) { - const int spacing = KDialog::spacingHint(); - QVBoxLayout* topLayout = new QVBoxLayout(this); QWidget* vBox = new QWidget(this); QVBoxLayout *vBoxVBoxLayout = new QVBoxLayout(vBox); vBoxVBoxLayout->setMargin(0); - vBoxVBoxLayout->setSpacing(spacing); m_proxy = new KCModuleProxy("kcmtrash"); topLayout->addWidget(m_proxy); diff --git a/src/settings/viewmodes/viewsettingspage.cpp b/src/settings/viewmodes/viewsettingspage.cpp index 12d4ce0e1..21bb1e178 100644 --- a/src/settings/viewmodes/viewsettingspage.cpp +++ b/src/settings/viewmodes/viewsettingspage.cpp @@ -26,7 +26,6 @@ #include #include -#include #include ViewSettingsPage::ViewSettingsPage(QWidget* parent) : @@ -35,7 +34,6 @@ ViewSettingsPage::ViewSettingsPage(QWidget* parent) : { QVBoxLayout* topLayout = new QVBoxLayout(this); topLayout->setMargin(0); - topLayout->setSpacing(KDialog::spacingHint()); QTabWidget* tabWidget = new QTabWidget(this); diff --git a/src/settings/viewpropertiesdialog.cpp b/src/settings/viewpropertiesdialog.cpp index 2e503bbe1..aa7e4b4a0 100644 --- a/src/settings/viewpropertiesdialog.cpp +++ b/src/settings/viewpropertiesdialog.cpp @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include #include @@ -42,11 +44,13 @@ #include #include #include +#include +#include #include ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : - KDialog(dolphinView), + QDialog(dolphinView), m_isDirty(false), m_dolphinView(dolphinView), m_viewProps(0), @@ -66,24 +70,26 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : Q_ASSERT(dolphinView); const bool useGlobalViewProps = GeneralSettings::globalViewProps(); - setCaption(i18nc("@title:window", "View Properties")); - setButtons(KDialog::Ok | KDialog::Cancel | KDialog::Apply); + setWindowTitle(i18nc("@title:window", "View Properties")); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); const QUrl& url = dolphinView->url(); m_viewProps = new ViewProperties(url); m_viewProps->setAutoSaveEnabled(false); - QWidget* main = new QWidget(); - QVBoxLayout* topLayout = new QVBoxLayout(); + auto layout = new QVBoxLayout(this); + setLayout(layout); + + auto propsGrid = new QWidget(this); + layout->addWidget(propsGrid); // create 'Properties' group containing view mode, sorting, sort order and show hidden files - QWidget* propsBox = main; + QWidget* propsBox = this; if (!useGlobalViewProps) { - propsBox = new QGroupBox(i18nc("@title:group", "Properties"), main); + propsBox = new QGroupBox(i18nc("@title:group", "Properties"), this); + layout->addWidget(propsBox); } - QWidget* propsGrid = new QWidget(); - QLabel* viewModeLabel = new QLabel(i18nc("@label:listbox", "View mode:"), propsGrid); m_viewMode = new KComboBox(propsGrid); m_viewMode->addItem(QIcon::fromTheme("view-list-icons"), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView); @@ -130,8 +136,6 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : propsBoxLayout->addWidget(m_showHiddenFiles); propsBoxLayout->addWidget(m_additionalInfo); - topLayout->addWidget(propsBox); - connect(m_viewMode, static_cast(&KComboBox::currentIndexChanged), this, &ViewPropertiesDialog::slotViewModeChanged); connect(m_sorting, static_cast(&KComboBox::currentIndexChanged), @@ -149,14 +153,12 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : connect(m_showHiddenFiles, &QCheckBox::clicked, this, &ViewPropertiesDialog::slotShowHiddenFilesChanged); - connect(this, &ViewPropertiesDialog::okClicked, this, &ViewPropertiesDialog::slotOk); - connect(this, &ViewPropertiesDialog::applyClicked, this, &ViewPropertiesDialog::slotApply); - // Only show the following settings if the view properties are remembered // for each directory: if (!useGlobalViewProps) { // create 'Apply View Properties To' group - QGroupBox* applyBox = new QGroupBox(i18nc("@title:group", "Apply View Properties To"), main); + QGroupBox* applyBox = new QGroupBox(i18nc("@title:group", "Apply View Properties To"), this); + layout->addWidget(applyBox); m_applyToCurrentFolder = new QRadioButton(i18nc("@option:radio Apply View Properties To", "Current folder"), applyBox); @@ -176,10 +178,8 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : applyBoxLayout->addWidget(m_applyToSubFolders); applyBoxLayout->addWidget(m_applyToAllFolders); - m_useAsDefault = new QCheckBox(i18nc("@option:check", "Use these view properties as default"), main); - - topLayout->addWidget(applyBox); - topLayout->addWidget(m_useAsDefault); + m_useAsDefault = new QCheckBox(i18nc("@option:check", "Use these view properties as default"), this); + layout->addWidget(m_useAsDefault); connect(m_applyToCurrentFolder, &QRadioButton::clicked, this, &ViewPropertiesDialog::markAsDirty); @@ -191,12 +191,25 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) : this, &ViewPropertiesDialog::markAsDirty); } - main->setLayout(topLayout); - setMainWidget(main); + layout->addStretch(); - const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), - "ViewPropertiesDialog"); - restoreDialogSize(dialogConfig); + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::Apply, this); + connect(buttonBox, &QDialogButtonBox::accepted, this, &ViewPropertiesDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &ViewPropertiesDialog::reject); + layout->addWidget(buttonBox); + + auto okButton = buttonBox->button(QDialogButtonBox::Ok); + okButton->setShortcut(Qt::CTRL | Qt::Key_Return); + okButton->setDefault(true); + + auto applyButton = buttonBox->button(QDialogButtonBox::Apply); + connect(applyButton, &QPushButton::clicked, this, &ViewPropertiesDialog::slotApply); + connect(this, &ViewPropertiesDialog::isDirtyChanged, applyButton, [applyButton](bool isDirty) { + applyButton->setEnabled(isDirty); + }); + + const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "ViewPropertiesDialog"); + KWindowConfig::restoreWindowSize(windowHandle(), dialogConfig); loadSettings(); } @@ -207,15 +220,14 @@ ViewPropertiesDialog::~ViewPropertiesDialog() delete m_viewProps; m_viewProps = 0; - KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), - "ViewPropertiesDialog"); - saveDialogSize(dialogConfig, KConfigBase::Persistent); + KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "ViewPropertiesDialog"); + KWindowConfig::saveWindowSize(windowHandle(), dialogConfig); } -void ViewPropertiesDialog::slotOk() +void ViewPropertiesDialog::accept() { applyViewProperties(); - accept(); + QDialog::accept(); } void ViewPropertiesDialog::slotApply() @@ -275,8 +287,10 @@ void ViewPropertiesDialog::slotShowHiddenFilesChanged() void ViewPropertiesDialog::markAsDirty(bool isDirty) { - m_isDirty = isDirty; - enableButtonApply(isDirty); + if (m_isDirty != isDirty) { + m_isDirty = isDirty; + emit isDirtyChanged(isDirty); + } } void ViewPropertiesDialog::configureAdditionalInfo() diff --git a/src/settings/viewpropertiesdialog.h b/src/settings/viewpropertiesdialog.h index 6b0e9ff48..63c534b30 100644 --- a/src/settings/viewpropertiesdialog.h +++ b/src/settings/viewpropertiesdialog.h @@ -23,7 +23,7 @@ #include "libdolphin_export.h" -#include +#include class QCheckBox; class KComboBox; @@ -39,7 +39,7 @@ class DolphinView; * and previews should be shown. The properties can be assigned to the current folder, * or recursively to all sub folders. */ -class LIBDOLPHINPRIVATE_EXPORT ViewPropertiesDialog : public KDialog +class LIBDOLPHINPRIVATE_EXPORT ViewPropertiesDialog : public QDialog { Q_OBJECT @@ -47,8 +47,10 @@ public: explicit ViewPropertiesDialog(DolphinView* dolphinView); virtual ~ViewPropertiesDialog(); +public slots: + void accept() Q_DECL_OVERRIDE; + private slots: - void slotOk(); void slotApply(); void slotViewModeChanged(int index); void slotSortingChanged(int index); @@ -60,6 +62,9 @@ private slots: void markAsDirty(bool isDirty); void configureAdditionalInfo(); +signals: + void isDirtyChanged(bool isDirty); + private: void applyViewProperties(); void loadSettings(); diff --git a/src/settings/viewpropsprogressinfo.cpp b/src/settings/viewpropsprogressinfo.cpp index 9ce3d2de4..489cc1d8c 100644 --- a/src/settings/viewpropsprogressinfo.cpp +++ b/src/settings/viewpropsprogressinfo.cpp @@ -25,7 +25,10 @@ #include #include #include +#include +#include +#include #include #include @@ -34,7 +37,7 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent, const QUrl& dir, const ViewProperties& viewProps) : - KDialog(parent), + QDialog(parent), m_dir(dir), m_viewProps(0), m_label(0), @@ -45,9 +48,8 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent, { const QSize minSize = minimumSize(); setMinimumSize(QSize(320, minSize.height())); - - setCaption(i18nc("@title:window", "Applying View Properties")); - setButtons(KDialog::Cancel); + setWindowTitle(i18nc("@title:window", "Applying View Properties")); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); m_viewProps = new ViewProperties(dir); m_viewProps->setDirProperties(viewProps); @@ -56,20 +58,24 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent, // that the view properties are saved twice: m_viewProps->setAutoSaveEnabled(false); - QWidget* main = new QWidget(); - QVBoxLayout* topLayout = new QVBoxLayout(); + auto layout = new QVBoxLayout(this); + setLayout(layout); - m_label = new QLabel(i18nc("@info:progress", "Counting folders: %1", 0), main); - m_progressBar = new QProgressBar(main); + m_label = new QLabel(i18nc("@info:progress", "Counting folders: %1", 0), this); + layout->addWidget(m_label); + + m_progressBar = new QProgressBar(this); m_progressBar->setMinimum(0); m_progressBar->setMaximum(0); m_progressBar->setValue(0); + layout->addWidget(m_progressBar); - topLayout->addWidget(m_label); - topLayout->addWidget(m_progressBar); + layout->addStretch(); - main->setLayout(topLayout); - setMainWidget(main); + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel, this); + connect(buttonBox, &QDialogButtonBox::accepted, this, &ViewPropsProgressInfo::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &ViewPropsProgressInfo::reject); + layout->addWidget(buttonBox); // Use the directory size job to count the number of directories first. This // allows to give a progress indication for the user when applying the view @@ -85,8 +91,6 @@ ViewPropsProgressInfo::ViewPropsProgressInfo(QWidget* parent, connect(m_timer, &QTimer::timeout, this, &ViewPropsProgressInfo::updateProgress); m_timer->start(300); - - connect(this, &ViewPropsProgressInfo::cancelClicked, this, &ViewPropsProgressInfo::cancelApplying); } ViewPropsProgressInfo::~ViewPropsProgressInfo() @@ -99,7 +103,22 @@ void ViewPropsProgressInfo::closeEvent(QCloseEvent* event) { m_timer->stop(); m_applyViewPropsJob = 0; - KDialog::closeEvent(event); + QDialog::closeEvent(event); +} + +void ViewPropsProgressInfo::reject() +{ + if (m_dirSizeJob) { + m_dirSizeJob->kill(); + m_dirSizeJob = 0; + } + + if (m_applyViewPropsJob) { + m_applyViewPropsJob->kill(); + m_applyViewPropsJob = 0; + } + + QDialog::reject(); } void ViewPropsProgressInfo::updateProgress() @@ -132,16 +151,3 @@ void ViewPropsProgressInfo::applyViewProperties() this, &ViewPropsProgressInfo::close); } -void ViewPropsProgressInfo::cancelApplying() -{ - if (m_dirSizeJob) { - m_dirSizeJob->kill(); - m_dirSizeJob = 0; - } - - if (m_applyViewPropsJob) { - m_applyViewPropsJob->kill(); - m_applyViewPropsJob = 0; - } -} - diff --git a/src/settings/viewpropsprogressinfo.h b/src/settings/viewpropsprogressinfo.h index 13089b79f..cd7aa50ce 100644 --- a/src/settings/viewpropsprogressinfo.h +++ b/src/settings/viewpropsprogressinfo.h @@ -20,7 +20,7 @@ #ifndef VIEWPROPSPROGRESSINFO_H #define VIEWPROPSPROGRESSINFO_H -#include +#include #include #include @@ -37,7 +37,7 @@ class ViewProperties; * It is possible to cancel the applying. In this case the already applied * view properties won't get reverted. */ -class ViewPropsProgressInfo : public KDialog +class ViewPropsProgressInfo : public QDialog { Q_OBJECT @@ -58,10 +58,12 @@ public: protected: virtual void closeEvent(QCloseEvent* event) Q_DECL_OVERRIDE; +public slots: + void reject() Q_DECL_OVERRIDE; + private slots: void updateProgress(); void applyViewProperties(); - void cancelApplying(); private: QUrl m_dir;