diff --git a/discover/qml/ApplicationPage.qml b/discover/qml/ApplicationPage.qml --- a/discover/qml/ApplicationPage.qml +++ b/discover/qml/ApplicationPage.qml @@ -254,17 +254,25 @@ // Version row QQC2.Label { - readonly property string version: appInfo.application.isInstalled ? appInfo.application.installedVersion : appInfo.application.availableVersion - visible: version.length > 0 Layout.alignment: Qt.AlignRight text: i18n("Version:") } + // Show a regular label when there's only one version available QQC2.Label { - readonly property string version: appInfo.application.isInstalled ? appInfo.application.installedVersion : appInfo.application.availableVersion - visible: version.length > 0 + visible: alternativeResourcesView.count == 1 + horizontalAlignment: Text.AlignLeft + Layout.fillWidth: true + elide: Text.ElideRight + text: appInfo.application.displayOrigin + } + // Show a link when there are multiple versions + LinkButton { + visible: alternativeResourcesView.count > 1 + horizontalAlignment: Text.AlignLeft Layout.fillWidth: true elide: Text.ElideRight - text: version ? version : "" + text: appInfo.application.displayOrigin + onClicked: originsOverlay.open() } // Size row @@ -278,20 +286,6 @@ text: i18n("%1", appInfo.application.sizeDescription) } - // Source row - QQC2.Label { - Layout.alignment: Qt.AlignRight - text: i18n("Source:") - } - LinkButton { - Layout.fillWidth: true - horizontalAlignment: Text.AlignLeft - enabled: alternativeResourcesView.count > 1 - text: appInfo.application.displayOrigin - elide: Text.ElideRight - onClicked: originsOverlay.open() - } - // License row QQC2.Label { Layout.alignment: Qt.AlignRight diff --git a/libdiscover/backends/FlatpakBackend/FlatpakResource.h b/libdiscover/backends/FlatpakBackend/FlatpakResource.h --- a/libdiscover/backends/FlatpakBackend/FlatpakResource.h +++ b/libdiscover/backends/FlatpakBackend/FlatpakResource.h @@ -97,7 +97,7 @@ QString section() override; int size() override; QString sizeDescription() override; - AbstractResource::State state() override; + AbstractResource::State state() const override; ResourceType type() const; QString typeAsString() const; QString uniqueId() const; diff --git a/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp b/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp --- a/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp +++ b/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp @@ -344,7 +344,7 @@ } } -AbstractResource::State FlatpakResource::state() +AbstractResource::State FlatpakResource::state() const { return m_state; } diff --git a/libdiscover/backends/KNSBackend/KNSResource.h b/libdiscover/backends/KNSBackend/KNSResource.h --- a/libdiscover/backends/KNSBackend/KNSResource.h +++ b/libdiscover/backends/KNSBackend/KNSResource.h @@ -35,7 +35,7 @@ explicit KNSResource(const KNSCore::EntryInternal & c, QStringList categories, KNSBackend* parent); ~KNSResource() override; - AbstractResource::State state() override; + AbstractResource::State state() const override; QVariant icon() const override; QString comment() override; QString name() override; diff --git a/libdiscover/backends/KNSBackend/KNSResource.cpp b/libdiscover/backends/KNSBackend/KNSResource.cpp --- a/libdiscover/backends/KNSBackend/KNSResource.cpp +++ b/libdiscover/backends/KNSBackend/KNSResource.cpp @@ -37,7 +37,7 @@ KNSResource::~KNSResource() = default; -AbstractResource::State KNSResource::state() +AbstractResource::State KNSResource::state() const { switch(m_entry.status()) { case KNS3::Entry::Invalid: diff --git a/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h --- a/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h +++ b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h @@ -32,7 +32,7 @@ QString name() override; QString comment() override; - AbstractResource::State state() override { return m_state; } + AbstractResource::State state() const override { return m_state; } int size() override; void markInstalled(); diff --git a/libdiscover/backends/PackageKitBackend/PackageKitResource.h b/libdiscover/backends/PackageKitBackend/PackageKitResource.h --- a/libdiscover/backends/PackageKitBackend/PackageKitResource.h +++ b/libdiscover/backends/PackageKitBackend/PackageKitResource.h @@ -47,7 +47,7 @@ void fetchChangelog() override; QList addonsInformation() override; - State state() override; + State state() const override; QString installedVersion() const override; QString availableVersion() const override; diff --git a/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp b/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp --- a/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp +++ b/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp @@ -122,15 +122,17 @@ QString PackageKitResource::origin() const { auto pkgid = availablePackageId(); - return PackageKit::Daemon::packageData(pkgid); + // PackageKit folks expect us to format this string, so this is okay + QString pkOrigin = PackageKit::Daemon::packageData(pkgid); + return pkOrigin.remove(QStringLiteral("installed:")); } QString PackageKitResource::section() { return QString(); } -AbstractResource::State PackageKitResource::state() +AbstractResource::State PackageKitResource::state() const { if (backend()->isPackageNameUpgradeable(this)) return Upgradeable; diff --git a/libdiscover/backends/SnapBackend/SnapResource.h b/libdiscover/backends/SnapBackend/SnapResource.h --- a/libdiscover/backends/SnapBackend/SnapResource.h +++ b/libdiscover/backends/SnapBackend/SnapResource.h @@ -44,7 +44,7 @@ int size() override; QUrl homepage() override; QStringList categories() override; - AbstractResource::State state() override; + AbstractResource::State state() const override; QVariant icon() const override; QString comment() override; QString name() override; diff --git a/libdiscover/backends/SnapBackend/SnapResource.cpp b/libdiscover/backends/SnapBackend/SnapResource.cpp --- a/libdiscover/backends/SnapBackend/SnapResource.cpp +++ b/libdiscover/backends/SnapBackend/SnapResource.cpp @@ -136,7 +136,7 @@ return QStringLiteral("snap"); } -AbstractResource::State SnapResource::state() +AbstractResource::State SnapResource::state() const { return m_state; } diff --git a/libdiscover/resources/AbstractResource.h b/libdiscover/resources/AbstractResource.h --- a/libdiscover/resources/AbstractResource.h +++ b/libdiscover/resources/AbstractResource.h @@ -122,7 +122,7 @@ ///executes the resource, if applies. Q_SCRIPTABLE virtual void invokeApplication() const = 0; - virtual State state() = 0; + virtual State state() const = 0; virtual QStringList categories() = 0; ///@returns a URL that points to the content diff --git a/libdiscover/resources/AbstractResource.cpp b/libdiscover/resources/AbstractResource.cpp --- a/libdiscover/resources/AbstractResource.cpp +++ b/libdiscover/resources/AbstractResource.cpp @@ -223,5 +223,6 @@ QString AbstractResource::displayOrigin() const { - return i18nc("origin (backend name)", "%1 (%2)", origin(), backend()->displayName()); + const QString version = state() >= Installed ? installedVersion() : availableVersion(); + return i18nc("version from source (backend)", "%1 from %2 (%3)", version, origin(), backend()->displayName()); }