]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/viewpropertiesdialog.cpp
Modernize: Use nullptr everywhere
[dolphin.git] / src / settings / viewpropertiesdialog.cpp
index 2e0b172b934803b301b8b9191b760dd02b572504..980ab0bba465d73e92f09fcfce5726d81334a75b 100644 (file)
 #include <config-baloo.h>
 
 #include <KLocalizedString>
-#include <KIO/NetAccess>
 #include <KMessageBox>
-#include <KUrl>
+#include <QUrl>
 #include <KComboBox>
+#include <KConfigGroup>
+#include <KWindowConfig>
 
 #include <QButtonGroup>
 #include <QCheckBox>
 #include <QLabel>
 #include <QPushButton>
 #include <QRadioButton>
+#include <QDialogButtonBox>
+#include <QVBoxLayout>
 
 #include <views/viewproperties.h>
 
 ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
-    KDialog(dolphinView),
+    QDialog(dolphinView),
     m_isDirty(false),
     m_dolphinView(dolphinView),
-    m_viewProps(0),
-    m_viewMode(0),
-    m_sortOrder(0),
-    m_sorting(0),
-    m_sortFoldersFirst(0),
-    m_previewsShown(0),
-    m_showInGroups(0),
-    m_showHiddenFiles(0),
-    m_additionalInfo(0),
-    m_applyToCurrentFolder(0),
-    m_applyToSubFolders(0),
-    m_applyToAllFolders(0),
-    m_useAsDefault(0)
+    m_viewProps(nullptr),
+    m_viewMode(nullptr),
+    m_sortOrder(nullptr),
+    m_sorting(nullptr),
+    m_sortFoldersFirst(nullptr),
+    m_previewsShown(nullptr),
+    m_showInGroups(nullptr),
+    m_showHiddenFiles(nullptr),
+    m_additionalInfo(nullptr),
+    m_applyToCurrentFolder(nullptr),
+    m_applyToSubFolders(nullptr),
+    m_applyToAllFolders(nullptr),
+    m_useAsDefault(nullptr)
 {
     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 KUrl& url = dolphinView->url();
+    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);
-    m_viewMode->addItem(QIcon::fromTheme("view-list-details"), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView);
-    m_viewMode->addItem(QIcon::fromTheme("view-list-tree"), i18nc("@item:inlistbox", "Details"), DolphinView::DetailsView);
+    m_viewMode->addItem(QIcon::fromTheme(QStringLiteral("view-list-icons")), i18nc("@item:inlistbox", "Icons"), DolphinView::IconsView);
+    m_viewMode->addItem(QIcon::fromTheme(QStringLiteral("view-list-details")), i18nc("@item:inlistbox", "Compact"), DolphinView::CompactView);
+    m_viewMode->addItem(QIcon::fromTheme(QStringLiteral("view-list-tree")), i18nc("@item:inlistbox", "Details"), DolphinView::DetailsView);
 
     QLabel* sortingLabel = new QLabel(i18nc("@label:listbox", "Sorting:"), propsGrid);
     QWidget* sortingBox = new QWidget(propsGrid);
@@ -122,7 +127,7 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
     propsGridLayout->addWidget(sortingLabel, 1, 0, Qt::AlignRight);
     propsGridLayout->addWidget(sortingBox, 1, 1);
 
-    QVBoxLayout* propsBoxLayout = new QVBoxLayout(propsBox);
+    QVBoxLayout* propsBoxLayout = propsBox == this ? layout : new QVBoxLayout(propsBox);
     propsBoxLayout->addWidget(propsGrid);
     propsBoxLayout->addWidget(m_sortFoldersFirst);
     propsBoxLayout->addWidget(m_previewsShown);
@@ -130,8 +135,6 @@ ViewPropertiesDialog::ViewPropertiesDialog(DolphinView* dolphinView) :
     propsBoxLayout->addWidget(m_showHiddenFiles);
     propsBoxLayout->addWidget(m_additionalInfo);
 
-    topLayout->addWidget(propsBox);
-
     connect(m_viewMode, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged),
             this, &ViewPropertiesDialog::slotViewModeChanged);
     connect(m_sorting, static_cast<void(KComboBox::*)(int)>(&KComboBox::currentIndexChanged),
@@ -149,14 +152,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 +177,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 +190,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(QStringLiteral("dolphinrc")), "ViewPropertiesDialog");
+    KWindowConfig::restoreWindowSize(windowHandle(), dialogConfig);
 
     loadSettings();
 }
@@ -205,17 +217,16 @@ ViewPropertiesDialog::~ViewPropertiesDialog()
 {
     m_isDirty = false;
     delete m_viewProps;
-    m_viewProps = 0;
+    m_viewProps = nullptr;
 
-    KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"),
-                              "ViewPropertiesDialog");
-    saveDialogSize(dialogConfig, KConfigBase::Persistent);
+    KConfigGroup dialogConfig(KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "ViewPropertiesDialog");
+    KWindowConfig::saveWindowSize(windowHandle(), dialogConfig);
 }
 
-void ViewPropertiesDialog::slotOk()
+void ViewPropertiesDialog::accept()
 {
     applyViewProperties();
-    accept();
+    QDialog::accept();
 }
 
 void ViewPropertiesDialog::slotApply()
@@ -275,8 +286,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()
@@ -290,7 +303,7 @@ void ViewPropertiesDialog::configureAdditionalInfo()
         visibleRoles.clear();
         visibleRoles.append("text");
         visibleRoles.append("size");
-        visibleRoles.append("date");
+        visibleRoles.append("modificationtime");
         m_viewProps->setVisibleRoles(visibleRoles);
     }
 
@@ -352,7 +365,7 @@ void ViewPropertiesDialog::applyViewProperties()
         // all existing viewproperties invalid, as they have a smaller time stamp.
         GeneralSettings* settings = GeneralSettings::self();
         settings->setViewPropsTimestamp(QDateTime::currentDateTime());
-        settings->writeConfig();
+        settings->save();
     }
 
     m_dolphinView->setMode(m_viewProps->viewMode());