[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [juk/frameworks] /: Port DirectoryList away from KDialog.
From:       Michael Pyne <null () kde ! org>
Date:       2017-09-30 21:33:47
Message-ID: E1dyPON-0007iK-Oa () code ! kde ! org
[Download RAW message or body]

Git commit 9844462a5b17119deaf4cf141c66ba70011fdfa5 by Michael Pyne.
Committed on 30/09/2017 at 17:58.
Pushed by mpyne into branch 'frameworks'.

Port DirectoryList away from KDialog.

M  +29   -43   directorylist.cpp
M  +12   -9    directorylist.h
M  +7    -0    directorylistbase.ui

https://commits.kde.org/juk/9844462a5b17119deaf4cf141c66ba70011fdfa5

diff --git a/directorylist.cpp b/directorylist.cpp
index bc4cd1c..c0f9ce4 100644
--- a/directorylist.cpp
+++ b/directorylist.cpp
@@ -19,40 +19,47 @@
 
 #include <QCheckBox>
 #include <QStringListModel>
-#include <QtCore/QVariant>
+#include <QVariant>
 #include <QPushButton>
+#include <QFileDialog>
+#include <QStandardPaths>
 
-#include <kfiledialog.h>
 #include <klocale.h>
 #include "juk_debug.h"
 
+////////////////////////////////////////////////////////////////////////////////
+// static helpers
+////////////////////////////////////////////////////////////////////////////////
+
+static QStringList defaultFolders()
+{
+    return QStandardPaths::standardLocations(QStandardPaths::MusicLocation);
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // public methods
 ////////////////////////////////////////////////////////////////////////////////
 
-DirectoryList::DirectoryList(QStringList directories,
-                             QStringList excludedDirectories,
+DirectoryList::DirectoryList(const QStringList &directories,
+                             const QStringList &excludedDirectories,
                              bool importPlaylists,
-                             QWidget *parent) :
-    KDialog(parent),
-    m_dirListModel(0)
+                             QWidget *parent)
+  : QDialog(parent)
+  , m_dirListModel(new QStringListModel(directories, this))
+  , m_excludedDirListModel(new QStringListModel(excludedDirectories, this))
 {
     if(directories.isEmpty()) {
-        directories = defaultFolders();
-        m_result.addedDirs = directories;
+        const auto defaultDirs = defaultFolders();
+        m_dirListModel->setStringList(defaultDirs);
+        m_result.addedDirs = defaultDirs;
     }
 
-    m_dirListModel = new QStringListModel(directories, this);
-    m_excludedDirListModel = new QStringListModel(excludedDirectories, this);
-
-    setCaption(i18n("Folder List"));
+    setWindowTitle(i18n("Folder List"));
     setModal(true);
-    showButtonSeparator(true);
-    setButtons(KDialog::Ok | KDialog::Cancel);
 
     m_base = new DirectoryListBase(this);
-
-    setMainWidget(m_base);
+    auto layout = new QVBoxLayout(this);
+    layout->addWidget(m_base);
 
     connect(m_base->addDirectoryButton, SIGNAL(clicked()),
         SLOT(slotAddDirectory()));
@@ -62,6 +69,8 @@ DirectoryList::DirectoryList(QStringList directories,
         SLOT(slotAddExcludeDirectory()));
     connect(m_base->removeExcludeDirectoryButton, SIGNAL(clicked()),
         SLOT(slotRemoveExcludeDirectory()));
+    connect(m_base->dlgButtonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
+    connect(m_base->dlgButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
 
     m_base->directoryListView->setModel(m_dirListModel);
     m_base->excludeDirectoryListView->setModel(m_excludedDirListModel);
@@ -70,18 +79,13 @@ DirectoryList::DirectoryList(QStringList directories,
     resize(QSize(440, 280).expandedTo(minimumSizeHint()));
 }
 
-DirectoryList::~DirectoryList()
-{
-
-}
-
 ////////////////////////////////////////////////////////////////////////////////
 // public slots
 ////////////////////////////////////////////////////////////////////////////////
 
 int DirectoryList::exec()
 {
-    m_result.status = static_cast<DialogCode>(KDialog::exec());
+    m_result.status = static_cast<QDialog::DialogCode>(QDialog::exec());
     m_result.addPlaylists = m_base->importPlaylistsCheckBox->isChecked();
     return m_result.status;
 }
@@ -92,8 +96,7 @@ int DirectoryList::exec()
 
 void DirectoryList::slotAddDirectory()
 {
-    QString dir = KFileDialog::getExistingDirectory();
-
+    QString dir = QFileDialog::getExistingDirectory();
     if(dir.isEmpty())
         return;
 
@@ -139,8 +142,7 @@ void DirectoryList::slotRemoveDirectory()
 
 void DirectoryList::slotAddExcludeDirectory()
 {
-    QString dir = KFileDialog::getExistingDirectory();
-
+    QString dir = QFileDialog::getExistingDirectory();
     if(dir.isEmpty())
         return;
 
@@ -175,20 +177,4 @@ void DirectoryList::slotRemoveExcludeDirectory()
     m_result.excludedDirs = m_excludedDirListModel->stringList();
 }
 
-////////////////////////////////////////////////////////////////////////////////
-// private methods
-////////////////////////////////////////////////////////////////////////////////
-
-QStringList DirectoryList::defaultFolders()
-{
-    QDir home = QDir::home();
-    if(home.cd("Music"))
-        return QStringList(home.path());
-    if(home.cd("music"))
-        return QStringList(home.path());
-    if(home.cd(i18n("Music")))
-        return QStringList(home.path());
-    return QStringList();
-}
-
 // vim: set et sw=4 tw=0 sta:
diff --git a/directorylist.h b/directorylist.h
index 69970c3..5af745e 100644
--- a/directorylist.h
+++ b/directorylist.h
@@ -14,16 +14,19 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef DIRECTORYLIST_H
-#define DIRECTORYLIST_H
+#ifndef JUK_DIRECTORYLIST_H
+#define JUK_DIRECTORYLIST_H
+
+#include <QDialog>
 
-#include <kdialog.h>
 #include "ui_directorylistbase.h"
 
 class QStringListModel;
 
 class DirectoryListBase : public QWidget, public Ui::DirectoryListBase
 {
+    Q_OBJECT
+
 public:
     DirectoryListBase(QWidget *parent) : QWidget(parent)
     {
@@ -31,7 +34,7 @@ public:
     }
 };
 
-class DirectoryList : public KDialog
+class DirectoryList : public QDialog
 {
     Q_OBJECT
 
@@ -45,9 +48,11 @@ public:
         bool addPlaylists;
     };
 
-    DirectoryList(QStringList directories, QStringList excludeDirectories, bool importPlaylists,
-                  QWidget *parent = 0);
-    virtual ~DirectoryList();
+    DirectoryList(
+        const QStringList &directories,
+        const QStringList &excludeDirectories,
+        bool importPlaylists,
+        QWidget *parent = nullptr);
 
     Result dialogResult() const { return m_result; }
 
@@ -67,8 +72,6 @@ private slots:
     void slotRemoveExcludeDirectory();
 
 private:
-    static QStringList defaultFolders();
-
     QStringListModel *m_dirListModel;
     QStringListModel *m_excludedDirListModel;
     DirectoryListBase *m_base;
diff --git a/directorylistbase.ui b/directorylistbase.ui
index dea4761..d9e9f9f 100644
--- a/directorylistbase.ui
+++ b/directorylistbase.ui
@@ -187,6 +187,13 @@
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="QDialogButtonBox" name="dlgButtonBox">
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <resources/>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic