]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/additionalinfodialog.cpp
Add 'Sort By' and 'View Mode' into Dolphin file context menus
[dolphin.git] / src / settings / additionalinfodialog.cpp
index db9258ae8a9bf0baefa429708ea870a98d2f2798..535aa944b9f346778b02ffc46ada1837970729d1 100644 (file)
 
 #include "additionalinfodialog.h"
 
+#include "kitemviews/kfileitemmodel.h"
+
+#include <KConfigGroup>
+#include <KLocalizedString>
+#include <KSharedConfig>
+#include <KWindowConfig>
 #include <config-baloo.h>
 
-#include <KLocale>
-#include "kitemviews/kfileitemmodel.h"
 #include <QCheckBox>
+#include <QDialogButtonBox>
 #include <QLabel>
+#include <QPushButton>
 #include <QVBoxLayout>
 
 #ifdef HAVE_BALOO
-    #include <baloo/indexerconfig.h>
+    #include <Baloo/IndexerConfig>
 #endif
 
 AdditionalInfoDialog::AdditionalInfoDialog(QWidget* parent,
                                            const QList<QByteArray>& visibleRoles) :
-    KDialog(parent),
+    QDialog(parent),
     m_visibleRoles(visibleRoles),
-    m_listWidget(0)
+    m_listWidget(nullptr)
 {
-    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;
@@ -56,38 +62,40 @@ 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<KFileItemModel::RoleInfo> rolesInfo = KFileItemModel::rolesInformation();
     foreach (const KFileItemModel::RoleInfo& info, rolesInfo) {
         QListWidgetItem* item = new QListWidgetItem(info.translation, m_listWidget);
         item->setCheckState(visibleRoles.contains(info.role) ? Qt::Checked : Qt::Unchecked);
 
-        const bool enable = (!info.requiresBaloo && !info.requiresIndexer) ||
+        const bool enable = ((!info.requiresBaloo && !info.requiresIndexer) ||
                             (info.requiresBaloo) ||
-                            (info.requiresIndexer && indexingEnabled);
+                            (info.requiresIndexer && indexingEnabled)) && info.role != "text";
 
         if (!enable) {
             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);
 
-    const KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog");
-    restoreDialogSize(dialogConfig);
+    auto okButton = buttonBox->button(QDialogButtonBox::Ok);
+    okButton->setShortcut(Qt::CTRL + Qt::Key_Return);
+    okButton->setDefault(true);
 
-    connect(this, &AdditionalInfoDialog::okClicked, this, &AdditionalInfoDialog::slotOk);
+    const KConfigGroup dialogConfig(KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "AdditionalInfoDialog");
+    KWindowConfig::restoreWindowSize(windowHandle(), dialogConfig);
 }
 
 AdditionalInfoDialog::~AdditionalInfoDialog()
 {
-    KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), "AdditionalInfoDialog");
-    saveDialogSize(dialogConfig, KConfigBase::Persistent);
+    KConfigGroup dialogConfig(KSharedConfig::openConfig(QStringLiteral("dolphinrc")), "AdditionalInfoDialog");
+    KWindowConfig::saveWindowSize(windowHandle(), dialogConfig);
 }
 
 QList<QByteArray> AdditionalInfoDialog::visibleRoles() const
@@ -95,7 +103,7 @@ QList<QByteArray> AdditionalInfoDialog::visibleRoles() const
     return m_visibleRoles;
 }
 
-void AdditionalInfoDialog::slotOk()
+void AdditionalInfoDialog::accept()
 {
     m_visibleRoles.clear();
 
@@ -108,6 +116,6 @@ void AdditionalInfoDialog::slotOk()
         }
         ++index;
     }
-}
 
-#include "additionalinfodialog.moc"
+    QDialog::accept();
+}