[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