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

List:       kde-commits
Subject:    [muon/USCResource] libmuon/backends/ApplicationBackend: Reload the sources list after adding a debli
From:       Jonathan Thomas <echidnaman () kubuntu ! org>
Date:       2013-06-17 13:34:04
Message-ID: 20130617133404.AD6BDA605A () git ! kde ! org
[Download RAW message or body]

Git commit 7361ce1e80458d886f13bc50fb8e933382365352 by Jonathan Thomas.
Committed on 17/06/2013 at 15:33.
Pushed by jmthomas into branch 'USCResource'.

Reload the sources list after adding a debline for the newly-purchased app.
(Still todo: only reload for the single repository)

M  +21   -9    libmuon/backends/ApplicationBackend/ApplicationBackend.cpp
M  +5    -2    libmuon/backends/ApplicationBackend/ApplicationBackend.h
M  +1    -1    libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.cpp
M  +1    -1    libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.h

http://commits.kde.org/muon/7361ce1e80458d886f13bc50fb8e933382365352

diff --git a/libmuon/backends/ApplicationBackend/ApplicationBackend.cpp \
b/libmuon/backends/ApplicationBackend/ApplicationBackend.cpp index 3776d38..17b0c70 \
                100644
--- a/libmuon/backends/ApplicationBackend/ApplicationBackend.cpp
+++ b/libmuon/backends/ApplicationBackend/ApplicationBackend.cpp
@@ -517,8 +517,8 @@ void ApplicationBackend::purchaseApplication(AbstractResource \
*res)  this, SIGNAL(purchaseFailed()));
     connect(d, SIGNAL(purchaseSucceeded(QMap<QString, QVariant>)),
             this, SIGNAL(purchaseSucceeded()));
-    connect(d, SIGNAL(purchaseSucceeded(QMap<QString,QVariant>)),
-            this, SLOT(onPurchaseSucceeded(QMap<QString,QVariant>)));
+    connect(d, SIGNAL(purchaseSucceeded(USCResource*,QMap<QString,QVariant>)),
+            this, SLOT(onPurchaseSucceeded(USCResource*,QMap<QString,QVariant>)));
     // We can use the SSO session from the purchase dialog in the app
     connect(d, SIGNAL(receivedOAuthToken(QMap<QString,QVariant>)),
             OAuthSession::global(), \
SLOT(updateCredentials(QMap<QString,QVariant>))); @@ -529,7 +529,7 @@ void \
ApplicationBackend::purchaseApplication(AbstractResource *res)  d->show();
 }
 
-void ApplicationBackend::onPurchaseSucceeded(const QMap<QString, QVariant> &details)
+void ApplicationBackend::onPurchaseSucceeded(USCResource *resource, const \
QMap<QString, QVariant> &details)  {
     QString debLine = details.value("deb_line").toString();
     QString signingKeyId = details.value("signing_key_id").toString();
@@ -551,20 +551,33 @@ void ApplicationBackend::onPurchaseSucceeded(const \
QMap<QString, QVariant> &deta  // Add vendor signing key
 
     // Reload sources list
+    connect(this, SIGNAL(reloadForCommercialRepoFinished(USCResource*)),
+            this, SLOT(onReloadForCommercialRepoFinished(USCResource*)));
+    reloadForCommercialRepo(resource);
+}
 
-    // Connect reload finish to onReloadForCommercialRepo
+void ApplicationBackend::reloadForCommercialRepo(USCResource *resource)
+{
+    m_purchasedResource = resource;
+    // FIXME: support single-source updating in worker.
+    QApt::Transaction* transaction = backend()->updateCache();
+    m_backendUpdater->setupTransaction(transaction);
+    transaction->run();
+
+    connect(transaction, SIGNAL(finished(QApt::ExitStatus)),
+            this, SLOT(onReloadForCommercialRepoFinished()));
 }
 
-void ApplicationBackend::reloadForCommercialRepoFinished(USCResource *resource)
+void ApplicationBackend::onReloadForCommercialRepoFinished()
 {
-    QApt::Package *package = resource->package();
+    QApt::Package *package = m_purchasedResource->package();
 
     if (!package) {
-        qWarning() << "Tried to install unavailable USCResource " << \
resource->name(); +        qWarning() << "Tried to install unavailable USCResource " \
<< m_purchasedResource->name();  return;
     }
 
-    installApplication(resource);
+    installApplication(m_purchasedResource);
 }
 
 void ApplicationBackend::addLicenseKey(const QString &license, const QString \
&licensePath) @@ -758,7 +771,6 @@ void ApplicationBackend::checkForUpdates()
     QApt::Transaction* transaction = backend()->updateCache();
     m_backendUpdater->setupTransaction(transaction);
     transaction->run();
-
 }
 
 void ApplicationBackend::fetchUSCResourceList()
diff --git a/libmuon/backends/ApplicationBackend/ApplicationBackend.h \
b/libmuon/backends/ApplicationBackend/ApplicationBackend.h index badeae6..93f4f21 \
                100644
--- a/libmuon/backends/ApplicationBackend/ApplicationBackend.h
+++ b/libmuon/backends/ApplicationBackend/ApplicationBackend.h
@@ -88,6 +88,7 @@ private:
 
     QFutureWatcher<QVector<QAptResource *>> *m_watcher;
     QVector<QAptResource *> m_appList;
+    USCResource *m_purchasedResource;
 
     // Transactions
     QHash<Transaction *, QApt::Transaction *> m_transQueue;
@@ -122,17 +123,19 @@ private Q_SLOTS:
     void checkForUpdates();
     void fetchUSCResourceList();
     void initUSCResources(KJob *j);
-    void onPurchaseSucceeded(const QMap<QString, QVariant> &details);
+    void onPurchaseSucceeded(USCResource *resource, const QMap<QString, QVariant> \
&details);  void fetchMySubscriptions(bool completeOnly = true);
     void onMySubsriptionsFetched(KJob *j);
     void addLicenseKey(const QString &license, const QString &licensePath);
-    void reloadForCommercialRepoFinished(USCResource *resource);
+    void reloadForCommercialRepo(USCResource *resource);
+    void onReloadForCommercialRepoFinished();
 
 Q_SIGNALS:
 	void startingFirstTransaction();
     void sourcesEditorFinished();
     void aptBackendInitialized(QApt::Backend* backend);
     void mySubscriptionsFetched(const QString &json);
+    void reloadForCommercialRepoFinished(USCResource *resource);
 };
 
 #endif
diff --git a/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.cpp \
b/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.cpp index b9f11ed..6d1d4cb \
                100644
--- a/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.cpp
+++ b/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.cpp
@@ -194,7 +194,7 @@ void UbuntuPurchaseDialog::parseJson(const QString &json)
     }
 
     // Purchase successful
-    emit purchaseSucceeded(res);
+    emit purchaseSucceeded(m_resource, res);
 }
 
 void UbuntuPurchaseDialog::onReceivedOAuthToken(const QString &json)
diff --git a/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.h \
b/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.h index 402cceb..531b6bd \
                100644
--- a/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.h
+++ b/libmuon/backends/ApplicationBackend/UbuntuPurchaseDialog.h
@@ -52,7 +52,7 @@ private:
 signals:
     void purchaseCancelledByUser();
     void purchaseFailed();
-    void purchaseSucceeded(const QMap<QString, QVariant> &details);
+    void purchaseSucceeded(USCResource *resource, const QMap<QString, QVariant> \
&details);  void termsOfServiceDeclined();
     void receivedOAuthToken(const QMap<QString, QVariant> &token);
 


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

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