From 6d8cf66f99992b216d1103515658eb117975aae7 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 27 Sep 2015 19:33:38 +0200 Subject: [PATCH] use PackageInfoLookup --- network/connection.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/network/connection.cpp b/network/connection.cpp index 549c745..915f8b1 100644 --- a/network/connection.cpp +++ b/network/connection.cpp @@ -3,6 +3,7 @@ #include "../alpm/manager.h" #include "../alpm/upgradelookup.h" #include "../alpm/suggestionslookup.h" +#include "../alpm/packageinfolookup.h" #include "../alpm/config.h" #include @@ -77,13 +78,17 @@ void Connection::handleQuery(const QJsonObject &obj) if(what == QLatin1String("basicrepoinfo")) { m_repoInfoUpdatesRequested = obj.value(QStringLiteral("updates")).toBool(m_repoInfoUpdatesRequested); sendResult(what, id, m_manager.basicRepoInfo()); - } else if(what == QLatin1String("basicpkginfo")) { - sendResults(what, id, m_manager.packageInfo(obj.value("sel").toObject(), Manager::Basics)); - } else if(what == QLatin1String("pkgdetails")) { - sendResults(what, id, m_manager.packageInfo(obj.value("sel").toObject(), Manager::Details)); - } else if(what == QLatin1String("fullpkginfo")) { - // TODO: figure out why QFlags doesn't work, in the mean time, use static_cast workaround - sendResults(what, id, m_manager.packageInfo(obj.value("sel").toObject(), static_cast(static_cast(Manager::Basics) | static_cast(Manager::Details)))); + } else if(what == QLatin1String("basicpkginfo") || what == QLatin1String("pkgdetails") || what == QLatin1String("fullpkginfo")) { + auto *packageInfoLookup = new PackageInfoLookup(m_manager, obj); + if(packageInfoLookup->finished()) { + sendResult(what, id, packageInfoLookup->results()); + } else if(!packageInfoLookup->errors().isEmpty()) { + QJsonObject results; + results.insert(QStringLiteral("errors"), packageInfoLookup->errors()); + sendResult(what, id, results); + } else { + connect(packageInfoLookup, &SuggestionsLookup::resultsAvailable, this, &Connection::sendResult); + } } else if(what == QLatin1String("groupinfo")) { m_groupInfoUpdatesRequested = obj.value(QStringLiteral("updates")).toBool(m_groupInfoUpdatesRequested); sendResults(what, id, m_manager.groupInfo());