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

List:       kde-commits
Subject:    =?utf-8?q?=5Bmuon=5D_installer=3A_Add_support_for_displaying_app?=
From:       Jonathan Thomas <echidnaman () kubuntu ! org>
Date:       2011-02-02 3:04:11
Message-ID: 20110202030411.703BFA609B () git ! kde ! org
[Download RAW message or body]

Git commit e7651175f4d5971df4d09adf7332a7c21bf4a6ca by Jonathan Thomas.
Committed on 02/02/11 at 04:03.
Pushed by jmthomas into branch 'master'.

Add support for displaying applications from extras.ubuntu.com, which extend the \
package control records to provide app information in leiu of .desktop files in \
app-install-data

M  +46   -4    installer/Application.cpp     
M  +2    -1    installer/Application.h     
M  +1    -1    installer/ApplicationDetailsView/ApplicationDetailsWidget.cpp     
M  +6    -6    installer/ApplicationModel/ApplicationProxyModel.cpp     
M  +15   -4    installer/ApplicationWindow.cpp     

http://commits.kde.org/muon/e7651175f4d5971df4d09adf7332a7c21bf4a6ca

diff --git a/installer/Application.cpp b/installer/Application.cpp
index 9a1ef93..4fb7692 100644
--- a/installer/Application.cpp
+++ b/installer/Application.cpp
@@ -62,8 +62,15 @@ QString Application::name()
 {
     QString name = QString::fromUtf8(getField("Name")).trimmed();
     if (name.isEmpty()) {
-        // kDebug() << m_fileName;
-        return package()->name();
+        // extras.ubuntu.com packages can have this
+        name = package()->controlField("Appname");
+
+        if (!name.isEmpty()) {
+            // Graduate to non-technical, since it has Appname
+            m_isTechnical = false;
+        } else {
+            return package()->name();
+        }
     }
 
     return i18n(name.toUtf8());
@@ -202,9 +209,44 @@ QVector<QPair<QString, QString> > \
Application::locateApplication(const QString &  return ret;
 }
 
-QString Application::categories() const
+QString Application::categories()
 {
-    return getField("Categories");
+    QString categories = getField("Categories");
+
+    if (categories.isEmpty()) {
+        // extras.ubuntu.com packages can have this field
+        categories = package()->controlField("Category");
+
+        if (!categories.isEmpty()) {
+            // Graduate to non-technical, since it has Appname
+            m_isTechnical = false;
+        }
+    }
+    return categories;
+}
+
+QUrl Application::screenshotUrl(QApt::ScreenshotType type)
+{
+    QString appUrl;
+    switch (type) {
+    case QApt::Thumbnail:
+        appUrl = package()->controlField("Thumbnail-Url");
+        break;
+    case QApt::Screenshot:
+        appUrl = package()->controlField("Screenshot-Url");
+        break;
+    default:
+        break;
+    }
+
+    QUrl url;
+    if (appUrl.isEmpty()) {
+        url = package()->screenshotUrl(type);
+    } else {
+        url = QUrl(appUrl);
+    }
+
+    return url;
 }
 
 QApt::PackageList Application::addons()
diff --git a/installer/Application.h b/installer/Application.h
index c0559f5..3206c3f 100644
--- a/installer/Application.h
+++ b/installer/Application.h
@@ -43,7 +43,8 @@ public:
     QApt::Package *package();
     QString icon() const;
     QString menuPath();
-    QString categories() const;
+    QString categories();
+    QUrl screenshotUrl(QApt::ScreenshotType type);
     QApt::PackageList addons();
     int popconScore() const;
     bool isValid() const;
diff --git a/installer/ApplicationDetailsView/ApplicationDetailsWidget.cpp \
b/installer/ApplicationDetailsView/ApplicationDetailsWidget.cpp index \
                8609738..5d7aae3 100644
--- a/installer/ApplicationDetailsView/ApplicationDetailsWidget.cpp
+++ b/installer/ApplicationDetailsView/ApplicationDetailsWidget.cpp
@@ -580,7 +580,7 @@ void \
ApplicationDetailsWidget::fetchScreenshot(QApt::ScreenshotType screenshotTy  \
m_screenshotFile->setSuffix(".png");  m_screenshotFile->open();
 
-    KIO::FileCopyJob *getJob = \
KIO::file_copy(m_app->package()->screenshotUrl(screenshotType), +    KIO::FileCopyJob \
                *getJob = KIO::file_copy(m_app->screenshotUrl(screenshotType),
                                m_screenshotFile->fileName(), -1, KIO::Overwrite | \
KIO::HideProgressInfo);  
     switch (screenshotType) {
diff --git a/installer/ApplicationModel/ApplicationProxyModel.cpp \
b/installer/ApplicationModel/ApplicationProxyModel.cpp index d120285..3d7d73a 100644
--- a/installer/ApplicationModel/ApplicationProxyModel.cpp
+++ b/installer/ApplicationModel/ApplicationProxyModel.cpp
@@ -109,12 +109,6 @@ bool ApplicationProxyModel::filterAcceptsRow(int sourceRow, \
const QModelIndex &s  }
     }
 
-    if (!m_showTechnical) {
-        if (application->isTechnical()) {
-            return false;
-        }
-    }
-
     if (!m_orFilters.isEmpty()) {
         // Set a boolean value to true when any of the conditions are found.
         // It is set to false by default so that if none are found, we return false
@@ -231,6 +225,12 @@ bool ApplicationProxyModel::filterAcceptsRow(int sourceRow, \
const QModelIndex &s  }
     }
 
+    if (!m_showTechnical) {
+        if (application->isTechnical()) {
+            return false;
+        }
+    }
+
     if(m_sortByRelevancy) {
         return m_packages.contains(application->package());
     }
diff --git a/installer/ApplicationWindow.cpp b/installer/ApplicationWindow.cpp
index 67a200e..6b81b69 100644
--- a/installer/ApplicationWindow.cpp
+++ b/installer/ApplicationWindow.cpp
@@ -204,6 +204,11 @@ void ApplicationWindow::populateViews()
         originNames.move(index, 1); // Move to 2nd spot
     }
 
+    if (originNames.contains("LP-PPA-app-review-board")) {
+        int index = originNames.indexOf("LP-PPA-app-review-board");
+        originNames.move(index, 2); // Move to third spot
+    }
+
     QStandardItem *parentItem = m_viewModel->invisibleRootItem();
 
     QStandardItem *availableItem = new QStandardItem;
@@ -238,11 +243,15 @@ void ApplicationWindow::populateViews()
         }
 
         if (originName == "Canonical") {
-            viewItem->setText(i18nc("@item:inlistbox","Canonical Partners"));
+            viewItem->setText(i18nc("@item:inlistbox ","Canonical Partners"));
             viewItem->setIcon(KIcon("partner"));
         }
 
         if (originName.startsWith(QLatin1String("LP-PPA"))) {
+            if (originName == QLatin1String("LP-PPA-app-review-board")) {
+                viewItem->setText(i18nc("@item:inlistbox An independent software \
source", +                                        "Independent"));
+            }
             viewItem->setIcon(KIcon("user-identity"));
         }
 
@@ -265,22 +274,24 @@ void ApplicationWindow::populateViews()
         viewItem->setText(originLabel);
         viewItem->setData(QApt::Package::Installed, StateFilterRole);
         viewItem->setData(originName, OriginFilterRole);
+        viewItem->setData(AppView, ViewTypeRole);
 
         if (originName == "Ubuntu") {
             viewItem->setText(i18nc("@item:inlistbox", "Provided by Kubuntu"));
             viewItem->setIcon(KIcon("ubuntu-logo"));
-            viewItem->setData(AppView, ViewTypeRole);
         }
 
         if (originName == "Canonical") {
             viewItem->setText(i18nc("@item:inlistbox", "Canonical Partners"));
             viewItem->setIcon(KIcon("partner"));
-            viewItem->setData(AppView, ViewTypeRole);
         }
 
         if (originName.startsWith(QLatin1String("LP-PPA"))) {
+            if (originName == QLatin1String("LP-PPA-app-review-board")) {
+                viewItem->setText(i18nc("@item:inlistbox An independent software \
source", +                                        "Independent"));
+            }
             viewItem->setIcon(KIcon("user-identity"));
-            viewItem->setData(AppView, ViewTypeRole);
         }
 
         installedItem->appendRow(viewItem);


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

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