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

List:       kde-commits
Subject:    [ark] /: Simplify helper functions for mimetypes support
From:       Elvis Angelaccio <elvis.angelaccio () kdemail ! net>
Date:       2015-10-31 17:01:09
Message-ID: E1ZsZWf-0002a7-PG () scm ! kde ! org
[Download RAW message or body]

Git commit 7257b0bbdefaf7dd96a27a89f80d17766f798251 by Elvis Angelaccio.
Committed on 31/10/2015 at 16:59.
Pushed by elvisangelaccio into branch 'master'.

Simplify helper functions for mimetypes support

Now all the supportedXXXMimeTypes() static functions behave consistently.
A set of mimetypes is always returned, and it's converted to a list only when
(and if) needed.

M  +1    -1    app/mainwindow.cpp
M  +16   -30   kerfuffle/archive_kerfuffle.cpp
M  +2    -3    kerfuffle/archive_kerfuffle.h
M  +1    -1    kerfuffle/createdialog.cpp

http://commits.kde.org/ark/7257b0bbdefaf7dd96a27a89f80d17766f798251

diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp
index 988b295..6fc1226 100644
--- a/app/mainwindow.cpp
+++ b/app/mainwindow.cpp
@@ -222,7 +222,7 @@ void MainWindow::openArchive()
     Q_UNUSED(iface);
 
     QPointer<QFileDialog> dlg = new QFileDialog(this, i18nc("to open an archive", \
                "Open Archive"));
-    dlg->setMimeTypeFilters(Kerfuffle::supportedMimeTypes());
+    dlg->setMimeTypeFilters(Kerfuffle::supportedMimeTypes().toList());
 
     QStringList filters = dlg->nameFilters();
     filters.removeDuplicates();
diff --git a/kerfuffle/archive_kerfuffle.cpp b/kerfuffle/archive_kerfuffle.cpp
index 29b36f6..0be4490 100644
--- a/kerfuffle/archive_kerfuffle.cpp
+++ b/kerfuffle/archive_kerfuffle.cpp
@@ -373,24 +373,17 @@ void Archive::enableHeaderEncryption(bool enable)
     m_iface->setHeaderEncryptionEnabled(enable);
 }
 
-QStringList supportedMimeTypes()
+QSet<QString> supportedMimeTypes()
 {
-    const QLatin1String constraint("(exist Library)");
     const QLatin1String basePartService("Kerfuffle/Plugin");
+    const KService::List offers = KServiceTypeTrader::self()->query(basePartService,
+                                                                    \
QStringLiteral("(exist Library)")); +    QSet<QString> supported;
 
-    const KService::List offers = KServiceTypeTrader::self()->query(basePartService, \
                constraint);
-    KService::List::ConstIterator it = offers.constBegin();
-    KService::List::ConstIterator itEnd = offers.constEnd();
-
-    QStringList supported;
-
-    for (; it != itEnd; ++it) {
-        KService::Ptr service = *it;
-        QStringList mimeTypes = service->serviceTypes();
-
-        foreach (const QString& mimeType, mimeTypes) {
-            if (mimeType != basePartService && !supported.contains(mimeType)) {
-                supported.append(mimeType);
+    foreach (const KService::Ptr& service, offers) {
+        foreach (const QString& mimeType, service->serviceTypes()) {
+            if (mimeType != basePartService) {
+                supported.insert(mimeType);
             }
         }
     }
@@ -400,24 +393,17 @@ QStringList supportedMimeTypes()
     return supported;
 }
 
-QStringList supportedWriteMimeTypes()
+QSet<QString> supportedWriteMimeTypes()
 {
-    const QLatin1String constraint("(exist Library) and ([X-KDE-Kerfuffle-ReadWrite] \
== true)");  const QLatin1String basePartService("Kerfuffle/Plugin");
+    const KService::List offers = KServiceTypeTrader::self()->query(basePartService,
+                                                                    \
QStringLiteral("(exist Library) and ([X-KDE-Kerfuffle-ReadWrite] == true)")); +    \
QSet<QString> supported;  
-    const KService::List offers = KServiceTypeTrader::self()->query(basePartService, \
                constraint);
-    KService::List::ConstIterator it = offers.constBegin();
-    KService::List::ConstIterator itEnd = offers.constEnd();
-
-    QStringList supported;
-
-    for (; it != itEnd; ++it) {
-        KService::Ptr service = *it;
-        QStringList mimeTypes = service->serviceTypes();
-
-        foreach (const QString& mimeType, mimeTypes) {
-            if (mimeType != basePartService && !supported.contains(mimeType)) {
-                supported.append(mimeType);
+    foreach (const KService::Ptr& service, offers) {
+        foreach (const QString& mimeType, service->serviceTypes()) {
+            if (mimeType != basePartService) {
+                supported.insert(mimeType);
             }
         }
     }
diff --git a/kerfuffle/archive_kerfuffle.h b/kerfuffle/archive_kerfuffle.h
index 0b939a4..6cef453 100644
--- a/kerfuffle/archive_kerfuffle.h
+++ b/kerfuffle/archive_kerfuffle.h
@@ -31,7 +31,6 @@
 #include "kerfuffle_export.h"
 
 #include <QString>
-#include <QStringList>
 #include <QHash>
 #include <QObject>
 #include <QVariant>
@@ -202,8 +201,8 @@ private:
     ArchiveError m_error;
 };
 
-KERFUFFLE_EXPORT QStringList supportedMimeTypes();
-KERFUFFLE_EXPORT QStringList supportedWriteMimeTypes();
+KERFUFFLE_EXPORT QSet<QString> supportedMimeTypes();
+KERFUFFLE_EXPORT QSet<QString> supportedWriteMimeTypes();
 KERFUFFLE_EXPORT QSet<QString> supportedEncryptEntriesMimeTypes();
 KERFUFFLE_EXPORT QSet<QString> supportedEncryptHeaderMimeTypes();
 } // namespace Kerfuffle
diff --git a/kerfuffle/createdialog.cpp b/kerfuffle/createdialog.cpp
index 9fe82be..726afd6 100644
--- a/kerfuffle/createdialog.cpp
+++ b/kerfuffle/createdialog.cpp
@@ -221,7 +221,7 @@ void CreateDialog::loadConfiguration()
 
     const QString defaultMimeType = QStringLiteral("application/x-compressed-tar");
     const QString lastMimeType = m_config.readEntry("LastMimeType", \
                defaultMimeType);
-    QStringList writeMimeTypes = Kerfuffle::supportedWriteMimeTypes();
+    QStringList writeMimeTypes = Kerfuffle::supportedWriteMimeTypes().toList();
 
     // The filters need to be sorted by comment, so create a QMap with
     // comment as key (QMaps are always sorted by key) and QMimeType


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

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