File 0020-Allow-PackageDetails-to-show-screenshots-from-softwa.patch of Package apper

From 784f6d1b31a95a995ebe6b18fb06549ebf627ac5 Mon Sep 17 00:00:00 2001
From: Daniel Nicoletti <dantti12@gmail.com>
Date: Fri, 18 Jan 2013 01:39:49 -0200
Subject: [PATCH 20/20] Allow PackageDetails to show screenshots from
 software.openSUSE.org too

---
 ApperKCM/PackageDetails.cpp        | 44 ++++++++++++++++++++++----------------
 ApperKCM/PackageDetails.h          |  2 ++
 ApperKCM/Updater/DistroUpgrade.cpp |  9 ++++----
 CMakeLists.txt                     |  9 +++++++-
 config.h.cmake                     |  3 +++
 5 files changed, 43 insertions(+), 24 deletions(-)

diff --git a/ApperKCM/PackageDetails.cpp b/ApperKCM/PackageDetails.cpp
index 30763f6..8b06944 100644
--- a/ApperKCM/PackageDetails.cpp
+++ b/ApperKCM/PackageDetails.cpp
@@ -269,11 +269,9 @@ void PackageDetails::setPackage(const QModelIndex &index)
     m_currentIcon       = PkIcons::getIcon(pkgIconPath, QString()).pixmap(64, 64);
     m_appName           = index.data(PackageModel::NameRole).toString();
 
-#ifdef HAVE_APPSTREAM
-    m_currentScreenshot = AppStreamDb::instance()->thumbnail(Transaction::packageName(m_packageID));
+    m_currentScreenshot = thumbnail(Transaction::packageName(m_packageID));
     kDebug() << "current screenshot" << m_currentScreenshot;
-#endif
-    if (!m_currentScreenshot.isEmpty()) {
+    if (!m_currentScreenshot.isNull()) {
         if (m_screenshotPath.contains(m_currentScreenshot)) {
             display();
         } else {
@@ -297,21 +295,13 @@ void PackageDetails::setPackage(const QModelIndex &index)
 
 void PackageDetails::on_screenshotL_clicked()
 {
-    kDebug();
-#ifndef HAVE_APPSTREAM
-    return;
-#else
-    QString screenshot;
-
-    screenshot = AppStreamDb::instance()->screenshot(Transaction::packageName(m_packageID));
-    if (screenshot.isEmpty()) {
-        return;
+    QString url;
+    url = screenshot(Transaction::packageName(m_packageID));
+    if (!url.isNull()) {
+        ScreenShotViewer *view = new ScreenShotViewer(url);
+        view->setWindowTitle(m_appName);
+        view->show();
     }
-
-    ScreenShotViewer *view = new ScreenShotViewer(screenshot);
-    view->setWindowTitle(m_appName);
-    view->show();
-#endif
 }
 
 void PackageDetails::hidePackageVersion(bool hide)
@@ -717,6 +707,24 @@ QVector<QPair<QString, QString> > PackageDetails::locateApplication(const QStrin
     return ret;
 }
 
+QString PackageDetails::thumbnail(const QString &pkgName) const
+{
+    if (QLatin1String(SCREENSHOT_PROVIDER) == QLatin1String("openSUSE")) {
+        return QLatin1String("http://software.opensuse.org/package/thumbnail/") % pkgName % QLatin1String(".png");;
+    } else {
+        return QLatin1String("http://screenshots.debian.net/thumbnail/") % pkgName;
+    }
+}
+
+QString PackageDetails::screenshot(const QString &pkgName) const
+{
+    if (QLatin1String(SCREENSHOT_PROVIDER) == QLatin1String("openSUSE")) {
+        return QLatin1String("http://software.opensuse.org/package/screenshot/") % pkgName % QLatin1String(".png");
+    } else {
+        return QLatin1String("http://screenshots.debian.net/screenshot/") % pkgName;
+    }
+}
+
 void PackageDetails::description(const QString &packageID,
                                  const QString &license,
                                  PackageKit::Transaction::Group group,
diff --git a/ApperKCM/PackageDetails.h b/ApperKCM/PackageDetails.h
index 087c954..c7555c8 100644
--- a/ApperKCM/PackageDetails.h
+++ b/ApperKCM/PackageDetails.h
@@ -81,6 +81,8 @@ private:
     void fadeOut(FadeWidgets widgets);
     void setupDescription();
     QVector<QPair<QString, QString> > locateApplication(const QString &_relPath, const QString &menuId) const;
+    QString thumbnail(const QString &pkgName) const;
+    QString screenshot(const QString &pkgName) const;
 
     Ui::PackageDetails *ui;
     QActionGroup *m_actionGroup;
diff --git a/ApperKCM/Updater/DistroUpgrade.cpp b/ApperKCM/Updater/DistroUpgrade.cpp
index 183204e..4987c03 100644
--- a/ApperKCM/Updater/DistroUpgrade.cpp
+++ b/ApperKCM/Updater/DistroUpgrade.cpp
@@ -42,6 +42,10 @@ DistroUpgrade::DistroUpgrade(QWidget *parent) :
     addAction(action);
 }
 
+DistroUpgrade::~DistroUpgrade()
+{
+}
+
 void DistroUpgrade::setName(const QString &name)
 {
     setText(i18n("Distribution upgrade available: %1", name));
@@ -111,9 +115,4 @@ void DistroUpgrade::distroUpgradeError(QProcess::ProcessError error)
     }
 }
 
-DistroUpgrade::~DistroUpgrade()
-{
-    kDebug() << "~DistroUpgrade()";
-}
-
 #include "DistroUpgrade.moc"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5aca9ff..3215cea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,6 +33,13 @@ if (HAVE_APPSTREAM)
     message(STATUS "AppStream categories path: " ${AS_CATEGORIES_PATH})
 endif (HAVE_APPSTREAM)
 
+# command to edit the packages origins
+set(SCREENSHOT_PROVIDER "debian" CACHE STRING "Screen shots provider")
+if (SCREENSHOT_PROVIDER)
+    message(STATUS "Screen shots provider: " ${SCREENSHOT_PROVIDER})
+    message(STATUS "Screen shots provider possibilities are: debian, openSUSE")
+endif (SCREENSHOT_PROVIDER)
+
 if (DEBCONF_SUPPORT)
     # Tries to find the package, when it finds it HAVE_DEBCONFKDE is set in config.h
     find_package(DebconfKDE REQUIRED)
@@ -41,7 +48,7 @@ if (DEBCONF_SUPPORT)
     message(STATUS "Building with Debconf support")
 endif (DEBCONF_SUPPORT)
 
-set(APP_VERSION 0.8.0)
+set(APP_VERSION 0.8.1)
 
 # command to edit the packages origins
 set(EDIT_ORIGNS_DESKTOP_NAME "" CACHE STRING "Edit origins desktop name")
diff --git a/config.h.cmake b/config.h.cmake
index 4e3caba..176a30b 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -10,6 +10,9 @@
 // Define if AppStream data is available.
 #cmakedefine HAVE_APPSTREAM
 
+// Define if screenshot provider
+#cmakedefine SCREENSHOT_PROVIDER "@SCREENSHOT_PROVIDER@"
+
 // Define the AppStream categories path.
 #cmakedefine AS_CATEGORIES_PATH "@AS_CATEGORIES_PATH@"
 
-- 
1.8.1

openSUSE Build Service is sponsored by