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

List:       kde-i18n-doc
Subject:    [discover/Plasma/5.10] libdiscover: Centralize reload actions into a generic one that will call the 
From:       Aleix Pol <null () kde ! org>
Date:       2017-06-08 13:32:48
Message-ID: E1dIxYO-0007L5-UC () code ! kde ! org
[Download RAW message or body]

Git commit a38129b2c41ac42f0bca4c729d823dcd332869fb by Aleix Pol.
Committed on 08/06/2017 at 13:30.
Pushed by apol into branch 'Plasma/5.10'.

Centralize reload actions into a generic one that will call the backends

Both packagekit and flatpak back-ends had an action for refreshing the db
that would collide on Ctrl+R. Now we have 1 action that will call all the
backends to refresh.
Translators: Note this moves around the i18n() call

CCMAIL: kde-i18n-doc@kde.org

M  +1    -7    libdiscover/backends/DummyBackend/DummyBackend.cpp
M  +1    -1    libdiscover/backends/DummyBackend/DummyBackend.h
M  +0    -8    libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp
M  +2    -4    libdiscover/backends/FlatpakBackend/FlatpakBackend.h
M  +2    -0    libdiscover/backends/KNSBackend/KNSBackend.h
M  +5    -10   libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
M  +2    -1    libdiscover/backends/PackageKitBackend/PackageKitBackend.h
M  +5    -0    libdiscover/resources/AbstractResourcesBackend.h
M  +20   -1    libdiscover/resources/ResourcesModel.cpp
M  +2    -2    libdiscover/resources/ResourcesModel.h

https://commits.kde.org/discover/a38129b2c41ac42f0bca4c729d823dcd332869fb

diff --git a/libdiscover/backends/DummyBackend/DummyBackend.cpp \
b/libdiscover/backends/DummyBackend/DummyBackend.cpp index 214354c2..950cfc34 100644
--- a/libdiscover/backends/DummyBackend/DummyBackend.cpp
+++ b/libdiscover/backends/DummyBackend/DummyBackend.cpp
@@ -55,12 +55,6 @@ DummyBackend::DummyBackend(QObject* parent)
     if (!m_fetching)
         m_reviews->initialize();
 
-    QAction* updateAction = new QAction(this);
-    updateAction->setIcon(QIcon::fromTheme(QStringLiteral("system-software-update")));
                
-    updateAction->setText(i18nc("@action Checks the Internet for updates", "Check \
                for Updates"));
-    updateAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
-    connect(updateAction, &QAction::triggered, this, \
                &DummyBackend::checkForUpdates);
-
     QAction* randomAction = new QAction(this);
     randomAction->setIcon(QIcon::fromTheme(QStringLiteral("kalarm")));
     randomAction->setText(QStringLiteral("test bla bla"));
@@ -78,7 +72,7 @@ DummyBackend::DummyBackend(QObject* parent)
 //         qDebug() << "important action triggered";
 //     });
 
-    m_messageActions = QList<QAction*>() << updateAction << randomAction /*<< \
importantAction*/; +    m_messageActions = QList<QAction*>() << randomAction /*<< \
importantAction*/;  
     SourcesModel::global()->addSourcesBackend(new DummySourcesBackend(this));
 }
diff --git a/libdiscover/backends/DummyBackend/DummyBackend.h \
b/libdiscover/backends/DummyBackend/DummyBackend.h index 2f21f602..54a86146 100644
--- a/libdiscover/backends/DummyBackend/DummyBackend.h
+++ b/libdiscover/backends/DummyBackend/DummyBackend.h
@@ -49,9 +49,9 @@ public:
     void removeApplication(AbstractResource* app) override;
     bool isFetching() const override { return m_fetching; }
     AbstractResource * resourceForFile(const QUrl & ) override;
+    void checkForUpdates() override;
 
 public Q_SLOTS:
-    void checkForUpdates();
     void toggleFetching();
 
 private:
diff --git a/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp \
b/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp index 76a5247b..e2d4b7b5 \
                100644
--- a/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp
+++ b/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp
@@ -82,14 +82,6 @@ FlatpakBackend::FlatpakBackend(QObject* parent)
         SourcesModel::global()->addSourcesBackend(m_sources);
     }
 
-    QAction* updateAction = new QAction(this);
-    updateAction->setIcon(QIcon::fromTheme(QStringLiteral("system-software-update")));
                
-    updateAction->setText(i18nc("@action Checks the Internet for updates", "Check \
                for Updates"));
-    updateAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
-    connect(updateAction, &QAction::triggered, this, \
                &FlatpakBackend::checkForUpdates);
-
-    m_messageActions = { updateAction };
-
     connect(m_reviews.data(), &OdrsReviewsBackend::ratingsReady, this, \
&FlatpakBackend::announceRatingsReady);  }
 
diff --git a/libdiscover/backends/FlatpakBackend/FlatpakBackend.h \
b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h index 0bcce81e..b2e32a43 \
                100644
--- a/libdiscover/backends/FlatpakBackend/FlatpakBackend.h
+++ b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h
@@ -52,16 +52,15 @@ public:
     ResultsStream * findResourceByPackageName(const QUrl &search) override;
     QList<FlatpakResource*> resources() const { return m_resources.values(); }
     bool isValid() const override;
-    QList<QAction*> messageActions() const override { return m_messageActions; }
+    QList<QAction*> messageActions() const override { return {}; }
 
     void installApplication(AbstractResource* app) override;
     void installApplication(AbstractResource* app, const AddonList& addons) \
override;  void removeApplication(AbstractResource* app) override;
     bool isFetching() const override { return m_fetching; }
     AbstractResource * resourceForFile(const QUrl & ) override;
+    void checkForUpdates() override;
 
-public Q_SLOTS:
-    void checkForUpdates();
 private Q_SLOTS:
     void onFetchMetadataFinished(FlatpakInstallation *flatpakInstallation, \
                FlatpakResource *resource, const QByteArray &metadata);
     void onFetchSizeFinished(FlatpakResource *resource, guint64 downloadSize, \
guint64 installedSize); @@ -102,7 +101,6 @@ private:
     FlatpakSourcesBackend *m_sources = nullptr;
     QSharedPointer<OdrsReviewsBackend> m_reviews;
     bool m_fetching;
-    QList<QAction*> m_messageActions;
 
     GCancellable *m_cancellable;
     QVector<FlatpakInstallation *> m_installations;
diff --git a/libdiscover/backends/KNSBackend/KNSBackend.h \
b/libdiscover/backends/KNSBackend/KNSBackend.h index cd4b39bb..610c3e10 100644
--- a/libdiscover/backends/KNSBackend/KNSBackend.h
+++ b/libdiscover/backends/KNSBackend/KNSBackend.h
@@ -62,6 +62,8 @@ public:
 
     KNSCore::Engine* engine() const { return m_engine; }
 
+    void checkForUpdates() override {}
+
 Q_SIGNALS:
     void receivedResources(const QVector<AbstractResource*> &resources);
     void searchFinished();
diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp \
b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp index \
                3c4442dd..9ad1e3d5 100644
--- a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
+++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
@@ -86,16 +86,6 @@ PackageKitBackend::PackageKitBackend(QObject* parent)
     m_delayedDetailsFetch.setInterval(0);
     connect(&m_delayedDetailsFetch, &QTimer::timeout, this, \
&PackageKitBackend::performDetailsFetch);  
-    QAction* updateAction = new QAction(this);
-    updateAction->setIcon(QIcon::fromTheme(QStringLiteral("system-software-update")));
                
-    updateAction->setText(i18nc("@action Checks the Internet for updates", "Check \
                for Updates"));
-    updateAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
-    connect(this, &PackageKitBackend::fetchingChanged, updateAction, [updateAction, \
                this](){
-        updateAction->setEnabled(!isFetching());
-    });
-    connect(updateAction, &QAction::triggered, this, \
                &PackageKitBackend::refreshDatabase);
-    m_messageActions += updateAction;
-
     // Kubuntu-based
     auto service = locateService(QStringLiteral("software-properties-kde.desktop"));
     if (!service.isEmpty())
@@ -377,6 +367,11 @@ T PackageKitBackend::resourcesByPackageNames(const QStringList \
&pkgnames) const  return ret;
 }
 
+void PackageKitBackend::checkForUpdates()
+{
+    refreshDatabase();
+}
+
 void PackageKitBackend::refreshDatabase()
 {
     if (!m_refresher) {
diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.h \
b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h index aa10f3de..123f5a23 \
                100644
--- a/libdiscover/backends/PackageKitBackend/PackageKitBackend.h
+++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h
@@ -62,13 +62,13 @@ class DISCOVERCOMMON_EXPORT PackageKitBackend : public \
                AbstractResourcesBackend
         bool isPackageNameUpgradeable(const PackageKitResource* res) const;
         QString upgradeablePackageId(const PackageKitResource* res) const;
         QVector<AppPackageKitResource*> extendedBy(const QString& id) const;
-        void fetchUpdates();
 
         void clearPackages(const QStringList &packageNames);
         void resolvePackages(const QStringList &packageNames);
         void fetchDetails(const QString& pkgid);
 
         AbstractResource * resourceForFile(const QUrl & ) override;
+        void checkForUpdates() override;
 
     public Q_SLOTS:
         void reloadPackageList();
@@ -88,6 +88,7 @@ class DISCOVERCOMMON_EXPORT PackageKitBackend : public \
AbstractResourcesBackend  private:
         template <typename T>
         T resourcesByPackageNames(const QStringList& names) const;
+        void fetchUpdates();
 
         void checkDaemonRunning();
         void acquireFetching(bool f);
diff --git a/libdiscover/resources/AbstractResourcesBackend.h \
b/libdiscover/resources/AbstractResourcesBackend.h index 42151c06..467fad2d 100644
--- a/libdiscover/resources/AbstractResourcesBackend.h
+++ b/libdiscover/resources/AbstractResourcesBackend.h
@@ -199,6 +199,11 @@ class DISCOVERCOMMON_EXPORT AbstractResourcesBackend : public \
                QObject
          */
         virtual void removeApplication(AbstractResource *app) = 0;
 
+        /**
+         * Notifies the backend that the user wants the information to be up to date
+         */
+        virtual void checkForUpdates() = 0;
+
     Q_SIGNALS:
         /**
          * Notify of a change in the backend
diff --git a/libdiscover/resources/ResourcesModel.cpp \
b/libdiscover/resources/ResourcesModel.cpp index 691f3fcd..74a56c52 100644
--- a/libdiscover/resources/ResourcesModel.cpp
+++ b/libdiscover/resources/ResourcesModel.cpp
@@ -35,6 +35,7 @@
 #include <QThread>
 #include <QAction>
 #include <QMetaProperty>
+#include <KLocalizedString>
 
 ResourcesModel *ResourcesModel::s_self = nullptr;
 
@@ -61,6 +62,18 @@ void ResourcesModel::init(bool load)
 
     if(load)
         QMetaObject::invokeMethod(this, "registerAllBackends", \
Qt::QueuedConnection); +
+
+    QAction* updateAction = new QAction(this);
+    updateAction->setIcon(QIcon::fromTheme(QStringLiteral("system-software-update")));
 +    updateAction->setText(i18nc("@action Checks the Internet for updates", "Check \
for Updates")); +    updateAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
+    connect(this, &ResourcesModel::fetchingChanged, updateAction, [updateAction, \
this](){ +        updateAction->setEnabled(!isFetching());
+    });
+    connect(updateAction, &QAction::triggered, this, \
&ResourcesModel::checkForUpdates); +
+    m_ownActions += updateAction;
 }
 
 ResourcesModel::ResourcesModel(const QString& backendName, QObject* parent)
@@ -223,7 +236,7 @@ bool ResourcesModel::isFetching() const
 
 QList<QAction*> ResourcesModel::messageActions() const
 {
-    QList<QAction*> ret;
+    QList<QAction*> ret = m_ownActions;
     foreach(AbstractResourcesBackend* b, m_backends) {
         ret += b->messageActions();
     }
@@ -321,3 +334,9 @@ AbstractResource* ResourcesModel::resourceForFile(const QUrl& \
file)  }
     return ret;
 }
+
+void ResourcesModel::checkForUpdates()
+{
+    for(auto backend: qAsConst(m_backends))
+        backend->checkForUpdates();
+}
diff --git a/libdiscover/resources/ResourcesModel.h \
b/libdiscover/resources/ResourcesModel.h index b5cf10b3..9dfcda10 100644
--- a/libdiscover/resources/ResourcesModel.h
+++ b/libdiscover/resources/ResourcesModel.h
@@ -74,6 +74,7 @@ class DISCOVERCOMMON_EXPORT ResourcesModel : public QObject
         AggregatedResultsStream* findResourceByPackageName(const QUrl& search);
         AggregatedResultsStream* search(const AbstractResourcesBackend::Filters \
&search);  AbstractResource* resourceForFile(const QUrl &/*url*/);
+        void checkForUpdates();
 
     public Q_SLOTS:
         void installApplication(AbstractResource* app, const AddonList& addons);
@@ -96,8 +97,6 @@ class DISCOVERCOMMON_EXPORT ResourcesModel : public QObject
         void registerAllBackends();
 
     private:
-        QVector<int> propertiesToRoles(const QVector<QByteArray>& propertyNames) \
                const;
-
         ///@p initialize tells if all backends load will be triggered on \
                construction
         explicit ResourcesModel(QObject* parent=nullptr, bool load = true);
         void init(bool load);
@@ -107,6 +106,7 @@ class DISCOVERCOMMON_EXPORT ResourcesModel : public QObject
         QVector< AbstractResourcesBackend* > m_backends;
         int m_initializingBackends;
         KActionCollection* m_actionCollection;
+        QList<QAction*> m_ownActions;
 
         static ResourcesModel* s_self;
 };


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

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