From eaca0fa83e7d7eac1b06302e205f0f925771f104 Mon Sep 17 00:00:00 2001 From: Maximiliano Curia Date: Wed, 13 Feb 2019 17:39:04 +0000 Subject: [PATCH] Import plasma-discover_5.14.5.1.orig.tar.xz [dgit import orig plasma-discover_5.14.5.1.orig.tar.xz] --- .arcconfig | 4 + CMakeLists.txt | 96 + COPYING | 676 ++++ COPYING.GFDL | 397 +++ COPYING.LIB | 502 +++ DiscoverVersion.h.in | 27 + Messages.sh | 8 + cmake/FindGLib.cmake | 83 + cmake/FindGObject.cmake | 81 + cmake/FindPackageKitQt2.cmake | 57 + cmake/FindQtOAuth.cmake | 58 + discover.categories | 2 + discover/CMakeLists.txt | 81 + discover/DiscoverDeclarativePlugin.cpp | 80 + discover/DiscoverDeclarativePlugin.h | 34 + discover/DiscoverObject.cpp | 471 +++ discover/DiscoverObject.h | 100 + discover/FeaturedModel.cpp | 160 + discover/FeaturedModel.h | 49 + discover/PaginateModel.cpp | 394 +++ discover/PaginateModel.h | 120 + discover/ReadFile.cpp | 112 + discover/ReadFile.h | 68 + discover/UnityLauncher.cpp | 84 + discover/UnityLauncher.h | 56 + discover/assets.qrc | 7 + discover/autotests/CMakeLists.txt | 22 + discover/autotests/DiscoverTest.qml | 113 + discover/autotests/PaginateModelTest.cpp | 146 + discover/autotests/appstreamUrl.qml | 11 + discover/autotests/categoryArg.qml | 12 + discover/autotests/install.qml | 41 + discover/autotests/missingResource.qml | 9 + discover/autotests/packageArgument.qml | 13 + discover/autotests/toplevels.qml | 127 + discover/autotests/updateandinstall.qml | 45 + discover/autotests/wrongInput.qml | 8 + discover/banners/banner.svg | 194 ++ discover/banners/coffee.jpg | Bin 0 -> 693875 bytes discover/banners/installedcrop.jpg | Bin 0 -> 448647 bytes discover/banners/syssettingscrop.jpg | Bin 0 -> 515325 bytes discover/banners/updatescrop.jpg | Bin 0 -> 271389 bytes discover/icons/128-apps-plasmadiscover.png | Bin 0 -> 18930 bytes discover/icons/16-apps-plasmadiscover.png | Bin 0 -> 798 bytes discover/icons/22-apps-plasmadiscover.png | Bin 0 -> 1221 bytes discover/icons/32-apps-plasmadiscover.png | Bin 0 -> 2045 bytes discover/icons/48-apps-plasmadiscover.png | Bin 0 -> 3466 bytes discover/icons/CMakeLists.txt | 11 + discover/icons/sc-apps-plasmadiscover.svgz | Bin 0 -> 240726 bytes discover/main.cpp | 157 + discover/org.kde.discover.appdata.xml | 194 ++ discover/org.kde.discover.desktop.cmake | 174 ++ discover/plasmadiscoverui.rc | 10 + discover/qml/ActionBridge.qml | 38 + discover/qml/ActionListItem.qml | 47 + discover/qml/AddSourceDialog.qml | 92 + discover/qml/AddonsView.qml | 97 + discover/qml/ApplicationDelegate.qml | 117 + discover/qml/ApplicationPage.qml | 431 +++ discover/qml/ApplicationScreenshots.qml | 181 ++ discover/qml/ApplicationsListPage.qml | 210 ++ discover/qml/BrowsingPage.qml | 59 + discover/qml/ConditionalLoader.qml | 35 + discover/qml/ConditionalObject.qml | 40 + discover/qml/DiscoverDrawer.qml | 184 ++ discover/qml/DiscoverPage.qml | 67 + discover/qml/DiscoverPopup.qml | 34 + discover/qml/DiscoverWindow.qml | 238 ++ discover/qml/InstallApplicationButton.qml | 65 + discover/qml/InstalledPage.qml | 21 + discover/qml/KirigamiActionBridge.qml | 39 + discover/qml/LabelBackground.qml | 56 + discover/qml/LinkButton.qml | 33 + discover/qml/LoadingPage.qml | 12 + discover/qml/ProgressView.qml | 104 + discover/qml/Rating.qml | 65 + discover/qml/ReviewDelegate.qml | 89 + discover/qml/ReviewDialog.qml | 63 + discover/qml/ReviewsPage.qml | 81 + discover/qml/SearchField.qml | 81 + discover/qml/SearchPage.qml | 55 + discover/qml/Shadow.qml | 48 + discover/qml/SourcesPage.qml | 262 ++ discover/qml/TopLevelPageData.qml | 30 + discover/qml/UpdatesPage.qml | 312 ++ discover/qml/UrlButton.qml | 27 + discover/qml/navigation.js | 65 + discover/resources.qrc | 40 + exporter/CMakeLists.txt | 3 + exporter/MuonExporter.cpp | 100 + exporter/MuonExporter.h | 50 + exporter/main.cpp | 60 + libdiscover/ActionsModel.cpp | 93 + libdiscover/ActionsModel.h | 59 + libdiscover/ApplicationAddonsModel.cpp | 158 + libdiscover/ApplicationAddonsModel.h | 73 + libdiscover/CMakeLists.txt | 69 + libdiscover/CachedNetworkAccessManager.cpp | 51 + libdiscover/CachedNetworkAccessManager.h | 44 + libdiscover/Category/CategoriesReader.cpp | 75 + libdiscover/Category/CategoriesReader.h | 36 + libdiscover/Category/Category.cpp | 279 ++ libdiscover/Category/Category.h | 96 + libdiscover/Category/CategoryModel.cpp | 106 + libdiscover/Category/CategoryModel.h | 52 + libdiscover/DiscoverBackendsFactory.cpp | 126 + libdiscover/DiscoverBackendsFactory.h | 50 + .../ReviewsBackend/AbstractReviewsBackend.cpp | 35 + .../ReviewsBackend/AbstractReviewsBackend.h | 65 + libdiscover/ReviewsBackend/Rating.cpp | 150 + libdiscover/ReviewsBackend/Rating.h | 56 + libdiscover/ReviewsBackend/Review.cpp | 138 + libdiscover/ReviewsBackend/Review.h | 80 + libdiscover/ReviewsBackend/ReviewsModel.cpp | 181 ++ libdiscover/ReviewsBackend/ReviewsModel.h | 91 + libdiscover/ScreenshotsModel.cpp | 101 + libdiscover/ScreenshotsModel.h | 63 + libdiscover/Transaction/AddonList.cpp | 83 + libdiscover/Transaction/AddonList.h | 56 + libdiscover/Transaction/Transaction.cpp | 149 + libdiscover/Transaction/Transaction.h | 198 ++ .../Transaction/TransactionListener.cpp | 159 + libdiscover/Transaction/TransactionListener.h | 76 + libdiscover/Transaction/TransactionModel.cpp | 211 ++ libdiscover/Transaction/TransactionModel.h | 81 + libdiscover/UpdateModel/UpdateItem.cpp | 93 + libdiscover/UpdateModel/UpdateItem.h | 71 + libdiscover/UpdateModel/UpdateModel.cpp | 333 ++ libdiscover/UpdateModel/UpdateModel.h | 103 + .../appstream/AppStreamIntegration.cpp | 43 + libdiscover/appstream/AppStreamIntegration.h | 42 + libdiscover/appstream/AppStreamUtils.h | 78 + libdiscover/appstream/OdrsReviewsBackend.cpp | 371 +++ libdiscover/appstream/OdrsReviewsBackend.h | 75 + libdiscover/backends/CMakeLists.txt | 48 + .../backends/DummyBackend/CMakeLists.txt | 21 + .../backends/DummyBackend/DummyBackend.cpp | 179 ++ .../backends/DummyBackend/DummyBackend.h | 68 + .../backends/DummyBackend/DummyNotifier.cpp | 46 + .../backends/DummyBackend/DummyNotifier.h | 40 + .../backends/DummyBackend/DummyResource.cpp | 195 ++ .../backends/DummyBackend/DummyResource.h | 76 + .../DummyBackend/DummyReviewsBackend.cpp | 82 + .../DummyBackend/DummyReviewsBackend.h | 59 + .../DummyBackend/DummySourcesBackend.cpp | 94 + .../DummyBackend/DummySourcesBackend.h | 49 + .../DummyBackend/DummyTransaction.cpp | 88 + .../backends/DummyBackend/DummyTransaction.h | 46 + .../DummyBackend/dummy-backend-categories.xml | 86 + .../DummyBackend/tests/CMakeLists.txt | 4 + .../backends/DummyBackend/tests/DummyTest.cpp | 298 ++ .../backends/DummyBackend/tests/DummyTest.h | 53 + .../DummyBackend/tests/UpdateDummyTest.cpp | 171 ++ .../backends/FlatpakBackend/CMakeLists.txt | 31 + .../FlatpakBackend/FlatpakBackend.cpp | 1298 ++++++++ .../backends/FlatpakBackend/FlatpakBackend.h | 120 + .../FlatpakBackend/FlatpakFetchDataJob.cpp | 97 + .../FlatpakBackend/FlatpakFetchDataJob.h | 47 + .../FlatpakBackend/FlatpakJobTransaction.cpp | 213 ++ .../FlatpakBackend/FlatpakJobTransaction.h | 64 + .../FlatpakBackend/FlatpakNotifier.cpp | 185 ++ .../backends/FlatpakBackend/FlatpakNotifier.h | 61 + .../FlatpakBackend/FlatpakResource.cpp | 545 ++++ .../backends/FlatpakBackend/FlatpakResource.h | 187 ++ .../FlatpakBackend/FlatpakSourcesBackend.cpp | 308 ++ .../FlatpakBackend/FlatpakSourcesBackend.h | 65 + .../FlatpakTransactionThread.cpp | 179 ++ .../FlatpakBackend/FlatpakTransactionThread.h | 69 + .../flatpak-backend-categories.xml | 551 ++++ .../org.kde.discover-flatpak.desktop | 49 + .../org.kde.discover.flatpak.appdata.xml | 96 + .../sc-apps-flatpak-discover.svg | 73 + .../FlatpakBackend/tests/CMakeLists.txt | 1 + .../FlatpakBackend/tests/FlatpakTest.cpp | 163 + .../backends/FwupdBackend/CMakeLists.txt | 14 + .../backends/FwupdBackend/FwupdBackend.cpp | 566 ++++ .../backends/FwupdBackend/FwupdBackend.h | 110 + .../backends/FwupdBackend/FwupdResource.cpp | 208 ++ .../backends/FwupdBackend/FwupdResource.h | 112 + .../FwupdBackend/FwupdSourcesBackend.cpp | 146 + .../FwupdBackend/FwupdSourcesBackend.h | 56 + .../FwupdBackend/FwupdTransaction.cpp | 133 + .../backends/FwupdBackend/FwupdTransaction.h | 52 + .../backends/KNSBackend/CMakeLists.txt | 11 + .../backends/KNSBackend/KNSBackend.cpp | 475 +++ libdiscover/backends/KNSBackend/KNSBackend.h | 103 + .../backends/KNSBackend/KNSResource.cpp | 268 ++ libdiscover/backends/KNSBackend/KNSResource.h | 83 + .../backends/KNSBackend/KNSReviews.cpp | 183 ++ libdiscover/backends/KNSBackend/KNSReviews.h | 67 + ...scover_ktexteditor_codesnippets_core.knsrc | 66 + .../backends/KNSBackend/tests/CMakeLists.txt | 11 + .../KNSBackend/tests/KNSBackendTest.cpp | 166 + .../KNSBackend/tests/KNSBackendTest.h | 56 + .../KNSBackend/tests/testplasmoids.knsrc | 6 + .../AppPackageKitResource.cpp | 240 ++ .../PackageKitBackend/AppPackageKitResource.h | 62 + .../backends/PackageKitBackend/CMakeLists.txt | 38 + .../PackageKitBackend/LocalFilePKResource.cpp | 57 + .../PackageKitBackend/LocalFilePKResource.h | 45 + .../PackageKitBackend/PKTransaction.cpp | 294 ++ .../PackageKitBackend/PKTransaction.h | 73 + .../PackageKitBackend/PackageKitBackend.cpp | 668 ++++ .../PackageKitBackend/PackageKitBackend.h | 126 + .../PackageKitBackend/PackageKitMessages.cpp | 333 ++ .../PackageKitBackend/PackageKitMessages.h | 36 + .../PackageKitBackend/PackageKitNotifier.cpp | 318 ++ .../PackageKitBackend/PackageKitNotifier.h | 71 + .../PackageKitBackend/PackageKitResource.cpp | 309 ++ .../PackageKitBackend/PackageKitResource.h | 116 + .../PackageKitSourcesBackend.cpp | 175 ++ .../PackageKitSourcesBackend.h | 56 + .../PackageKitBackend/PackageKitUpdater.cpp | 413 +++ .../PackageKitBackend/PackageKitUpdater.h | 102 + .../PackageKitBackend/TransactionSet.cpp | 45 + .../PackageKitBackend/TransactionSet.h | 44 + .../categoryimages/CMakeLists.txt | 18 + .../categoryimages/accesscropped.jpg | Bin 0 -> 804054 bytes .../categoryimages/accessoriescrop.jpg | Bin 0 -> 624453 bytes .../categoryimages/applicationcrop.jpg | Bin 0 -> 632885 bytes .../categoryimages/educationcrop.jpg | Bin 0 -> 508333 bytes .../categoryimages/fontcrop.jpg | Bin 0 -> 585769 bytes .../categoryimages/gamecrop.jpg | Bin 0 -> 346065 bytes .../categoryimages/graphiccrop.jpg | Bin 0 -> 539565 bytes .../categoryimages/internetcrop.jpg | Bin 0 -> 683718 bytes .../categoryimages/multimediacrop.jpg | Bin 0 -> 537927 bytes .../categoryimages/musiccrop.jpg | Bin 0 -> 512699 bytes .../categoryimages/officecrop.jpg | Bin 0 -> 448787 bytes .../categoryimages/sciencecrop.jpg | Bin 0 -> 722011 bytes .../categoryimages/settingscrop.jpg | Bin 0 -> 494345 bytes .../categoryimages/toolcrop.jpg | Bin 0 -> 438013 bytes .../PackageKitBackend/config-paths.h.cmake | 1 + .../org.kde.discover.packagekit.appdata.xml | 97 + .../packagekit-backend-categories.xml | 587 ++++ .../PackageKitBackend/pk-offline-private.h | 49 + .../backends/PackageKitBackend/pkui.qrc | 6 + .../qml/DependenciesButton.qml | 60 + .../runservice/CMakeLists.txt | 3 + .../PackageKitBackend/runservice/main.cpp | 45 + .../backends/SnapBackend/CMakeLists.txt | 12 + .../backends/SnapBackend/SnapBackend.cpp | 216 ++ .../backends/SnapBackend/SnapBackend.h | 71 + .../backends/SnapBackend/SnapResource.cpp | 447 +++ .../backends/SnapBackend/SnapResource.h | 93 + .../SnapBackend/SnapReviewsBackend.cpp | 54 + .../backends/SnapBackend/SnapReviewsBackend.h | 54 + .../backends/SnapBackend/SnapTransaction.cpp | 130 + .../backends/SnapBackend/SnapTransaction.h | 54 + .../SnapBackend/libsnapclient/CMakeLists.txt | 13 + .../libsnapclient/SnapAuthHelper.cpp | 82 + .../libsnapclient/SnapMacaroonDialog.cpp | 104 + .../libsnapclient/SnapMacaroonDialog.ui | 146 + .../libsnapclient/config-paths.h.cmake | 1 + .../org.kde.discover.libsnapclient.actions | 73 + .../org.kde.discover.snap.appdata.xml | 96 + .../SnapBackend/qml/ChannelsButton.qml | 58 + .../SnapBackend/qml/PermissionsButton.qml | 53 + .../SnapBackend/snap-backend-categories.xml | 15 + libdiscover/backends/SnapBackend/snapui.qrc | 7 + .../notifiers/BackendNotifierModule.cpp | 27 + libdiscover/notifiers/BackendNotifierModule.h | 58 + libdiscover/notifiers/CMakeLists.txt | 12 + .../resources/AbstractBackendUpdater.cpp | 39 + .../resources/AbstractBackendUpdater.h | 207 ++ libdiscover/resources/AbstractKDEDModule.cpp | 0 libdiscover/resources/AbstractKDEDModule.h | 0 libdiscover/resources/AbstractResource.cpp | 253 ++ libdiscover/resources/AbstractResource.h | 238 ++ .../resources/AbstractResourcesBackend.cpp | 136 + .../resources/AbstractResourcesBackend.h | 257 ++ .../resources/AbstractSourcesBackend.cpp | 54 + .../resources/AbstractSourcesBackend.h | 83 + libdiscover/resources/PackageState.cpp | 68 + libdiscover/resources/PackageState.h | 54 + libdiscover/resources/ResourcesModel.cpp | 399 +++ libdiscover/resources/ResourcesModel.h | 130 + libdiscover/resources/ResourcesProxyModel.cpp | 588 ++++ libdiscover/resources/ResourcesProxyModel.h | 177 ++ .../resources/ResourcesUpdatesModel.cpp | 284 ++ libdiscover/resources/ResourcesUpdatesModel.h | 85 + libdiscover/resources/SourcesModel.cpp | 98 + libdiscover/resources/SourcesModel.h | 57 + .../resources/StandardBackendUpdater.cpp | 253 ++ .../resources/StandardBackendUpdater.h | 83 + libdiscover/resources/StoredResultsStream.cpp | 42 + libdiscover/resources/StoredResultsStream.h | 41 + .../discoverabstractnotifier.notifyrc | 126 + libdiscover/tests/CMakeLists.txt | 1 + libdiscover/tests/CategoriesTest.cpp | 69 + libdiscover/tests/modeltest.cpp | 552 ++++ libdiscover/tests/modeltest.h | 94 + libdiscover/utils.h | 120 + notifier/BackendNotifierFactory.cpp | 51 + notifier/BackendNotifierFactory.h | 37 + notifier/CMakeLists.txt | 22 + notifier/DiscoverNotifier.cpp | 217 ++ notifier/DiscoverNotifier.h | 87 + .../DiscoverNotifierDeclarativePlugin.cpp | 28 + notifier/DiscoverNotifierDeclarativePlugin.h | 33 + notifier/plasmoid/Messages.sh | 2 + notifier/plasmoid/contents/ui/Full.qml | 56 + notifier/plasmoid/contents/ui/main.qml | 52 + notifier/plasmoid/metadata.desktop | 103 + notifier/qmldir | 3 + po/ar/libdiscover.po | 2726 +++++++++++++++++ po/ar/plasma-discover-notifier.po | 112 + po/ar/plasma-discover.po | 753 +++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/ast/libdiscover.po | 1546 ++++++++++ po/ast/plasma-discover-notifier.po | 95 + po/ast/plasma-discover.po | 645 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/bg/libdiscover.po | 1678 ++++++++++ po/bs/libdiscover.po | 1609 ++++++++++ po/bs/plasma-discover.po | 683 +++++ .../plasma_applet_org.kde.discovernotifier.po | 43 + po/ca/libdiscover.po | 1586 ++++++++++ po/ca/plasma-discover-notifier.po | 99 + po/ca/plasma-discover.po | 652 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/ca@valencia/libdiscover.po | 1586 ++++++++++ po/ca@valencia/plasma-discover-notifier.po | 99 + po/ca@valencia/plasma-discover.po | 652 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/cs/libdiscover.po | 1560 ++++++++++ po/cs/plasma-discover-notifier.po | 101 + po/cs/plasma-discover.po | 647 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/da/libdiscover.po | 1571 ++++++++++ po/da/plasma-discover-notifier.po | 95 + po/da/plasma-discover.po | 648 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/de/libdiscover.po | 1582 ++++++++++ po/de/plasma-discover-notifier.po | 95 + po/de/plasma-discover.po | 656 ++++ .../plasma_applet_org.kde.discovernotifier.po | 35 + po/el/libdiscover.po | 1600 ++++++++++ po/el/plasma-discover-notifier.po | 95 + po/el/plasma-discover.po | 679 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/en_GB/libdiscover.po | 1577 ++++++++++ po/en_GB/plasma-discover-notifier.po | 95 + po/en_GB/plasma-discover.po | 645 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/es/libdiscover.po | 1586 ++++++++++ po/es/plasma-discover-notifier.po | 98 + po/es/plasma-discover.po | 652 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/et/libdiscover.po | 1613 ++++++++++ po/et/plasma-discover-notifier.po | 95 + po/et/plasma-discover.po | 685 +++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/eu/libdiscover.po | 1582 ++++++++++ po/eu/plasma-discover-notifier.po | 98 + po/eu/plasma-discover.po | 654 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/fi/libdiscover.po | 2724 ++++++++++++++++ po/fi/plasma-discover-notifier.po | 97 + po/fi/plasma-discover.po | 853 ++++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/fr/libdiscover.po | 1587 ++++++++++ po/fr/plasma-discover-notifier.po | 102 + po/fr/plasma-discover.po | 662 ++++ .../plasma_applet_org.kde.discovernotifier.po | 42 + po/ga/libdiscover.po | 1650 ++++++++++ po/ga/plasma-discover.po | 676 ++++ po/gl/libdiscover.po | 1582 ++++++++++ po/gl/plasma-discover-notifier.po | 96 + po/gl/plasma-discover.po | 658 ++++ .../plasma_applet_org.kde.discovernotifier.po | 39 + po/he/libdiscover.po | 1566 ++++++++++ po/he/plasma-discover-notifier.po | 96 + po/he/plasma-discover.po | 652 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/hu/libdiscover.po | 1612 ++++++++++ po/hu/plasma-discover-notifier.po | 95 + po/hu/plasma-discover.po | 679 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/ia/libdiscover.po | 1556 ++++++++++ po/ia/plasma-discover-notifier.po | 95 + po/ia/plasma-discover.po | 661 ++++ .../plasma_applet_org.kde.discovernotifier.po | 39 + po/id/libdiscover.po | 1578 ++++++++++ po/id/plasma-discover-notifier.po | 91 + po/id/plasma-discover.po | 650 ++++ .../plasma_applet_org.kde.discovernotifier.po | 39 + po/it/libdiscover.po | 1577 ++++++++++ po/it/plasma-discover-notifier.po | 97 + po/it/plasma-discover.po | 650 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/ja/libdiscover.po | 1541 ++++++++++ po/ja/plasma-discover-notifier.po | 92 + po/ja/plasma-discover.po | 640 ++++ .../plasma_applet_org.kde.discovernotifier.po | 35 + po/kk/libdiscover.po | 1675 ++++++++++ po/kk/plasma-discover.po | 682 +++++ po/ko/libdiscover.po | 1567 ++++++++++ po/ko/plasma-discover-notifier.po | 91 + po/ko/plasma-discover.po | 648 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/lt/libdiscover.po | 1603 ++++++++++ po/lt/plasma-discover-notifier.po | 107 + po/lt/plasma-discover.po | 681 ++++ .../plasma_applet_org.kde.discovernotifier.po | 43 + po/mr/libdiscover.po | 1628 ++++++++++ po/mr/plasma-discover.po | 685 +++++ po/nb/libdiscover.po | 1554 ++++++++++ po/nb/plasma-discover-notifier.po | 97 + po/nb/plasma-discover.po | 645 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/nds/libdiscover.po | 1738 +++++++++++ po/nds/plasma-discover.po | 688 +++++ po/nl/libdiscover.po | 1582 ++++++++++ po/nl/plasma-discover-notifier.po | 97 + po/nl/plasma-discover.po | 651 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/nn/libdiscover.po | 1577 ++++++++++ po/nn/plasma-discover-notifier.po | 99 + po/nn/plasma-discover.po | 650 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/pa/libdiscover.po | 1673 ++++++++++ po/pa/plasma-discover-notifier.po | 95 + po/pa/plasma-discover.po | 678 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/pl/libdiscover.po | 1580 ++++++++++ po/pl/plasma-discover-notifier.po | 100 + po/pl/plasma-discover.po | 653 ++++ .../plasma_applet_org.kde.discovernotifier.po | 39 + po/pt/libdiscover.po | 1582 ++++++++++ po/pt/plasma-discover-notifier.po | 95 + po/pt/plasma-discover.po | 654 ++++ .../plasma_applet_org.kde.discovernotifier.po | 34 + po/pt_BR/libdiscover.po | 1580 ++++++++++ po/pt_BR/plasma-discover-notifier.po | 97 + po/pt_BR/plasma-discover.po | 653 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/ro/libdiscover.po | 1669 ++++++++++ po/ro/plasma-discover-notifier.po | 104 + po/ro/plasma-discover.po | 687 +++++ .../plasma_applet_org.kde.discovernotifier.po | 42 + po/ru/libdiscover.po | 1597 ++++++++++ po/ru/plasma-discover-notifier.po | 104 + po/ru/plasma-discover.po | 822 +++++ .../plasma_applet_org.kde.discovernotifier.po | 43 + po/sk/libdiscover.po | 1576 ++++++++++ po/sk/plasma-discover-notifier.po | 98 + po/sk/plasma-discover.po | 652 ++++ .../plasma_applet_org.kde.discovernotifier.po | 37 + po/sl/libdiscover.po | 1598 ++++++++++ po/sl/plasma-discover-notifier.po | 104 + po/sl/plasma-discover.po | 664 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/sr/libdiscover.po | 1618 ++++++++++ po/sr/plasma-discover-notifier.po | 104 + po/sr/plasma-discover.po | 671 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/sr@ijekavian/libdiscover.po | 1618 ++++++++++ po/sr@ijekavian/plasma-discover-notifier.po | 104 + po/sr@ijekavian/plasma-discover.po | 671 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/sr@ijekavianlatin/libdiscover.po | 1619 ++++++++++ .../plasma-discover-notifier.po | 104 + po/sr@ijekavianlatin/plasma-discover.po | 671 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/sr@latin/libdiscover.po | 1619 ++++++++++ po/sr@latin/plasma-discover-notifier.po | 104 + po/sr@latin/plasma-discover.po | 671 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/sv/libdiscover.po | 1578 ++++++++++ po/sv/plasma-discover-notifier.po | 95 + po/sv/plasma-discover.po | 646 ++++ .../plasma_applet_org.kde.discovernotifier.po | 38 + po/tr/libdiscover.po | 1598 ++++++++++ po/tr/plasma-discover-notifier.po | 95 + po/tr/plasma-discover.po | 674 ++++ .../plasma_applet_org.kde.discovernotifier.po | 40 + po/ug/libdiscover.po | 1648 ++++++++++ po/ug/plasma-discover.po | 675 ++++ po/uk/libdiscover.po | 1590 ++++++++++ po/uk/plasma-discover-notifier.po | 106 + po/uk/plasma-discover.po | 658 ++++ .../plasma_applet_org.kde.discovernotifier.po | 41 + po/vi/libdiscover.po | 1679 ++++++++++ po/vi/plasma-discover.po | 674 ++++ po/zh_CN/libdiscover.po | 1571 ++++++++++ po/zh_CN/plasma-discover-notifier.po | 95 + po/zh_CN/plasma-discover.po | 649 ++++ .../plasma_applet_org.kde.discovernotifier.po | 43 + po/zh_TW/libdiscover.po | 1566 ++++++++++ po/zh_TW/plasma-discover-notifier.po | 93 + po/zh_TW/plasma-discover.po | 645 ++++ .../plasma_applet_org.kde.discovernotifier.po | 39 + 492 files changed, 157282 insertions(+) create mode 100644 .arcconfig create mode 100644 CMakeLists.txt create mode 100644 COPYING create mode 100644 COPYING.GFDL create mode 100644 COPYING.LIB create mode 100644 DiscoverVersion.h.in create mode 100644 Messages.sh create mode 100644 cmake/FindGLib.cmake create mode 100644 cmake/FindGObject.cmake create mode 100644 cmake/FindPackageKitQt2.cmake create mode 100644 cmake/FindQtOAuth.cmake create mode 100644 discover.categories create mode 100644 discover/CMakeLists.txt create mode 100644 discover/DiscoverDeclarativePlugin.cpp create mode 100644 discover/DiscoverDeclarativePlugin.h create mode 100644 discover/DiscoverObject.cpp create mode 100644 discover/DiscoverObject.h create mode 100644 discover/FeaturedModel.cpp create mode 100644 discover/FeaturedModel.h create mode 100644 discover/PaginateModel.cpp create mode 100644 discover/PaginateModel.h create mode 100644 discover/ReadFile.cpp create mode 100644 discover/ReadFile.h create mode 100644 discover/UnityLauncher.cpp create mode 100644 discover/UnityLauncher.h create mode 100644 discover/assets.qrc create mode 100644 discover/autotests/CMakeLists.txt create mode 100644 discover/autotests/DiscoverTest.qml create mode 100644 discover/autotests/PaginateModelTest.cpp create mode 100644 discover/autotests/appstreamUrl.qml create mode 100644 discover/autotests/categoryArg.qml create mode 100644 discover/autotests/install.qml create mode 100644 discover/autotests/missingResource.qml create mode 100644 discover/autotests/packageArgument.qml create mode 100644 discover/autotests/toplevels.qml create mode 100644 discover/autotests/updateandinstall.qml create mode 100644 discover/autotests/wrongInput.qml create mode 100644 discover/banners/banner.svg create mode 100644 discover/banners/coffee.jpg create mode 100644 discover/banners/installedcrop.jpg create mode 100644 discover/banners/syssettingscrop.jpg create mode 100644 discover/banners/updatescrop.jpg create mode 100644 discover/icons/128-apps-plasmadiscover.png create mode 100644 discover/icons/16-apps-plasmadiscover.png create mode 100644 discover/icons/22-apps-plasmadiscover.png create mode 100644 discover/icons/32-apps-plasmadiscover.png create mode 100644 discover/icons/48-apps-plasmadiscover.png create mode 100644 discover/icons/CMakeLists.txt create mode 100644 discover/icons/sc-apps-plasmadiscover.svgz create mode 100644 discover/main.cpp create mode 100644 discover/org.kde.discover.appdata.xml create mode 100644 discover/org.kde.discover.desktop.cmake create mode 100644 discover/plasmadiscoverui.rc create mode 100644 discover/qml/ActionBridge.qml create mode 100644 discover/qml/ActionListItem.qml create mode 100644 discover/qml/AddSourceDialog.qml create mode 100644 discover/qml/AddonsView.qml create mode 100644 discover/qml/ApplicationDelegate.qml create mode 100644 discover/qml/ApplicationPage.qml create mode 100644 discover/qml/ApplicationScreenshots.qml create mode 100644 discover/qml/ApplicationsListPage.qml create mode 100644 discover/qml/BrowsingPage.qml create mode 100644 discover/qml/ConditionalLoader.qml create mode 100644 discover/qml/ConditionalObject.qml create mode 100644 discover/qml/DiscoverDrawer.qml create mode 100644 discover/qml/DiscoverPage.qml create mode 100644 discover/qml/DiscoverPopup.qml create mode 100644 discover/qml/DiscoverWindow.qml create mode 100644 discover/qml/InstallApplicationButton.qml create mode 100644 discover/qml/InstalledPage.qml create mode 100644 discover/qml/KirigamiActionBridge.qml create mode 100644 discover/qml/LabelBackground.qml create mode 100644 discover/qml/LinkButton.qml create mode 100644 discover/qml/LoadingPage.qml create mode 100644 discover/qml/ProgressView.qml create mode 100644 discover/qml/Rating.qml create mode 100644 discover/qml/ReviewDelegate.qml create mode 100644 discover/qml/ReviewDialog.qml create mode 100644 discover/qml/ReviewsPage.qml create mode 100644 discover/qml/SearchField.qml create mode 100644 discover/qml/SearchPage.qml create mode 100644 discover/qml/Shadow.qml create mode 100644 discover/qml/SourcesPage.qml create mode 100644 discover/qml/TopLevelPageData.qml create mode 100644 discover/qml/UpdatesPage.qml create mode 100644 discover/qml/UrlButton.qml create mode 100644 discover/qml/navigation.js create mode 100644 discover/resources.qrc create mode 100644 exporter/CMakeLists.txt create mode 100644 exporter/MuonExporter.cpp create mode 100644 exporter/MuonExporter.h create mode 100644 exporter/main.cpp create mode 100644 libdiscover/ActionsModel.cpp create mode 100644 libdiscover/ActionsModel.h create mode 100644 libdiscover/ApplicationAddonsModel.cpp create mode 100644 libdiscover/ApplicationAddonsModel.h create mode 100644 libdiscover/CMakeLists.txt create mode 100644 libdiscover/CachedNetworkAccessManager.cpp create mode 100644 libdiscover/CachedNetworkAccessManager.h create mode 100644 libdiscover/Category/CategoriesReader.cpp create mode 100644 libdiscover/Category/CategoriesReader.h create mode 100644 libdiscover/Category/Category.cpp create mode 100644 libdiscover/Category/Category.h create mode 100644 libdiscover/Category/CategoryModel.cpp create mode 100644 libdiscover/Category/CategoryModel.h create mode 100644 libdiscover/DiscoverBackendsFactory.cpp create mode 100644 libdiscover/DiscoverBackendsFactory.h create mode 100644 libdiscover/ReviewsBackend/AbstractReviewsBackend.cpp create mode 100644 libdiscover/ReviewsBackend/AbstractReviewsBackend.h create mode 100644 libdiscover/ReviewsBackend/Rating.cpp create mode 100644 libdiscover/ReviewsBackend/Rating.h create mode 100644 libdiscover/ReviewsBackend/Review.cpp create mode 100644 libdiscover/ReviewsBackend/Review.h create mode 100644 libdiscover/ReviewsBackend/ReviewsModel.cpp create mode 100644 libdiscover/ReviewsBackend/ReviewsModel.h create mode 100644 libdiscover/ScreenshotsModel.cpp create mode 100644 libdiscover/ScreenshotsModel.h create mode 100644 libdiscover/Transaction/AddonList.cpp create mode 100644 libdiscover/Transaction/AddonList.h create mode 100644 libdiscover/Transaction/Transaction.cpp create mode 100644 libdiscover/Transaction/Transaction.h create mode 100644 libdiscover/Transaction/TransactionListener.cpp create mode 100644 libdiscover/Transaction/TransactionListener.h create mode 100644 libdiscover/Transaction/TransactionModel.cpp create mode 100644 libdiscover/Transaction/TransactionModel.h create mode 100644 libdiscover/UpdateModel/UpdateItem.cpp create mode 100644 libdiscover/UpdateModel/UpdateItem.h create mode 100644 libdiscover/UpdateModel/UpdateModel.cpp create mode 100644 libdiscover/UpdateModel/UpdateModel.h create mode 100644 libdiscover/appstream/AppStreamIntegration.cpp create mode 100644 libdiscover/appstream/AppStreamIntegration.h create mode 100644 libdiscover/appstream/AppStreamUtils.h create mode 100644 libdiscover/appstream/OdrsReviewsBackend.cpp create mode 100644 libdiscover/appstream/OdrsReviewsBackend.h create mode 100644 libdiscover/backends/CMakeLists.txt create mode 100644 libdiscover/backends/DummyBackend/CMakeLists.txt create mode 100644 libdiscover/backends/DummyBackend/DummyBackend.cpp create mode 100644 libdiscover/backends/DummyBackend/DummyBackend.h create mode 100644 libdiscover/backends/DummyBackend/DummyNotifier.cpp create mode 100644 libdiscover/backends/DummyBackend/DummyNotifier.h create mode 100644 libdiscover/backends/DummyBackend/DummyResource.cpp create mode 100644 libdiscover/backends/DummyBackend/DummyResource.h create mode 100644 libdiscover/backends/DummyBackend/DummyReviewsBackend.cpp create mode 100644 libdiscover/backends/DummyBackend/DummyReviewsBackend.h create mode 100644 libdiscover/backends/DummyBackend/DummySourcesBackend.cpp create mode 100644 libdiscover/backends/DummyBackend/DummySourcesBackend.h create mode 100644 libdiscover/backends/DummyBackend/DummyTransaction.cpp create mode 100644 libdiscover/backends/DummyBackend/DummyTransaction.h create mode 100644 libdiscover/backends/DummyBackend/dummy-backend-categories.xml create mode 100644 libdiscover/backends/DummyBackend/tests/CMakeLists.txt create mode 100644 libdiscover/backends/DummyBackend/tests/DummyTest.cpp create mode 100644 libdiscover/backends/DummyBackend/tests/DummyTest.h create mode 100644 libdiscover/backends/DummyBackend/tests/UpdateDummyTest.cpp create mode 100644 libdiscover/backends/FlatpakBackend/CMakeLists.txt create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakBackend.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakNotifier.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakResource.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakResource.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp create mode 100644 libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h create mode 100644 libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml create mode 100644 libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop create mode 100644 libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml create mode 100644 libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg create mode 100644 libdiscover/backends/FlatpakBackend/tests/CMakeLists.txt create mode 100644 libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp create mode 100644 libdiscover/backends/FwupdBackend/CMakeLists.txt create mode 100644 libdiscover/backends/FwupdBackend/FwupdBackend.cpp create mode 100644 libdiscover/backends/FwupdBackend/FwupdBackend.h create mode 100644 libdiscover/backends/FwupdBackend/FwupdResource.cpp create mode 100644 libdiscover/backends/FwupdBackend/FwupdResource.h create mode 100644 libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp create mode 100644 libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h create mode 100644 libdiscover/backends/FwupdBackend/FwupdTransaction.cpp create mode 100644 libdiscover/backends/FwupdBackend/FwupdTransaction.h create mode 100644 libdiscover/backends/KNSBackend/CMakeLists.txt create mode 100644 libdiscover/backends/KNSBackend/KNSBackend.cpp create mode 100644 libdiscover/backends/KNSBackend/KNSBackend.h create mode 100644 libdiscover/backends/KNSBackend/KNSResource.cpp create mode 100644 libdiscover/backends/KNSBackend/KNSResource.h create mode 100644 libdiscover/backends/KNSBackend/KNSReviews.cpp create mode 100644 libdiscover/backends/KNSBackend/KNSReviews.h create mode 100644 libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc create mode 100644 libdiscover/backends/KNSBackend/tests/CMakeLists.txt create mode 100644 libdiscover/backends/KNSBackend/tests/KNSBackendTest.cpp create mode 100644 libdiscover/backends/KNSBackend/tests/KNSBackendTest.h create mode 100644 libdiscover/backends/KNSBackend/tests/testplasmoids.knsrc create mode 100644 libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp create mode 100644 libdiscover/backends/PackageKitBackend/AppPackageKitResource.h create mode 100644 libdiscover/backends/PackageKitBackend/CMakeLists.txt create mode 100644 libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp create mode 100644 libdiscover/backends/PackageKitBackend/LocalFilePKResource.h create mode 100644 libdiscover/backends/PackageKitBackend/PKTransaction.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PKTransaction.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitBackend.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitMessages.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitMessages.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitNotifier.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitResource.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitResource.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp create mode 100644 libdiscover/backends/PackageKitBackend/PackageKitUpdater.h create mode 100644 libdiscover/backends/PackageKitBackend/TransactionSet.cpp create mode 100644 libdiscover/backends/PackageKitBackend/TransactionSet.h create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/CMakeLists.txt create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/accesscropped.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/accessoriescrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/applicationcrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/educationcrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/fontcrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/gamecrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/graphiccrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/internetcrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/multimediacrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/musiccrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/officecrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/sciencecrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/settingscrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/categoryimages/toolcrop.jpg create mode 100644 libdiscover/backends/PackageKitBackend/config-paths.h.cmake create mode 100644 libdiscover/backends/PackageKitBackend/org.kde.discover.packagekit.appdata.xml create mode 100644 libdiscover/backends/PackageKitBackend/packagekit-backend-categories.xml create mode 100644 libdiscover/backends/PackageKitBackend/pk-offline-private.h create mode 100644 libdiscover/backends/PackageKitBackend/pkui.qrc create mode 100644 libdiscover/backends/PackageKitBackend/qml/DependenciesButton.qml create mode 100644 libdiscover/backends/PackageKitBackend/runservice/CMakeLists.txt create mode 100644 libdiscover/backends/PackageKitBackend/runservice/main.cpp create mode 100644 libdiscover/backends/SnapBackend/CMakeLists.txt create mode 100644 libdiscover/backends/SnapBackend/SnapBackend.cpp create mode 100644 libdiscover/backends/SnapBackend/SnapBackend.h create mode 100644 libdiscover/backends/SnapBackend/SnapResource.cpp create mode 100644 libdiscover/backends/SnapBackend/SnapResource.h create mode 100644 libdiscover/backends/SnapBackend/SnapReviewsBackend.cpp create mode 100644 libdiscover/backends/SnapBackend/SnapReviewsBackend.h create mode 100644 libdiscover/backends/SnapBackend/SnapTransaction.cpp create mode 100644 libdiscover/backends/SnapBackend/SnapTransaction.h create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/CMakeLists.txt create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/SnapAuthHelper.cpp create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/SnapMacaroonDialog.cpp create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/SnapMacaroonDialog.ui create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/config-paths.h.cmake create mode 100644 libdiscover/backends/SnapBackend/libsnapclient/org.kde.discover.libsnapclient.actions create mode 100644 libdiscover/backends/SnapBackend/org.kde.discover.snap.appdata.xml create mode 100644 libdiscover/backends/SnapBackend/qml/ChannelsButton.qml create mode 100644 libdiscover/backends/SnapBackend/qml/PermissionsButton.qml create mode 100644 libdiscover/backends/SnapBackend/snap-backend-categories.xml create mode 100644 libdiscover/backends/SnapBackend/snapui.qrc create mode 100644 libdiscover/notifiers/BackendNotifierModule.cpp create mode 100644 libdiscover/notifiers/BackendNotifierModule.h create mode 100644 libdiscover/notifiers/CMakeLists.txt create mode 100644 libdiscover/resources/AbstractBackendUpdater.cpp create mode 100644 libdiscover/resources/AbstractBackendUpdater.h create mode 100644 libdiscover/resources/AbstractKDEDModule.cpp create mode 100644 libdiscover/resources/AbstractKDEDModule.h create mode 100644 libdiscover/resources/AbstractResource.cpp create mode 100644 libdiscover/resources/AbstractResource.h create mode 100644 libdiscover/resources/AbstractResourcesBackend.cpp create mode 100644 libdiscover/resources/AbstractResourcesBackend.h create mode 100644 libdiscover/resources/AbstractSourcesBackend.cpp create mode 100644 libdiscover/resources/AbstractSourcesBackend.h create mode 100644 libdiscover/resources/PackageState.cpp create mode 100644 libdiscover/resources/PackageState.h create mode 100644 libdiscover/resources/ResourcesModel.cpp create mode 100644 libdiscover/resources/ResourcesModel.h create mode 100644 libdiscover/resources/ResourcesProxyModel.cpp create mode 100644 libdiscover/resources/ResourcesProxyModel.h create mode 100644 libdiscover/resources/ResourcesUpdatesModel.cpp create mode 100644 libdiscover/resources/ResourcesUpdatesModel.h create mode 100644 libdiscover/resources/SourcesModel.cpp create mode 100644 libdiscover/resources/SourcesModel.h create mode 100644 libdiscover/resources/StandardBackendUpdater.cpp create mode 100644 libdiscover/resources/StandardBackendUpdater.h create mode 100644 libdiscover/resources/StoredResultsStream.cpp create mode 100644 libdiscover/resources/StoredResultsStream.h create mode 100644 libdiscover/resources/discoverabstractnotifier.notifyrc create mode 100644 libdiscover/tests/CMakeLists.txt create mode 100644 libdiscover/tests/CategoriesTest.cpp create mode 100644 libdiscover/tests/modeltest.cpp create mode 100644 libdiscover/tests/modeltest.h create mode 100644 libdiscover/utils.h create mode 100644 notifier/BackendNotifierFactory.cpp create mode 100644 notifier/BackendNotifierFactory.h create mode 100644 notifier/CMakeLists.txt create mode 100644 notifier/DiscoverNotifier.cpp create mode 100644 notifier/DiscoverNotifier.h create mode 100644 notifier/DiscoverNotifierDeclarativePlugin.cpp create mode 100644 notifier/DiscoverNotifierDeclarativePlugin.h create mode 100755 notifier/plasmoid/Messages.sh create mode 100644 notifier/plasmoid/contents/ui/Full.qml create mode 100644 notifier/plasmoid/contents/ui/main.qml create mode 100644 notifier/plasmoid/metadata.desktop create mode 100644 notifier/qmldir create mode 100644 po/ar/libdiscover.po create mode 100644 po/ar/plasma-discover-notifier.po create mode 100644 po/ar/plasma-discover.po create mode 100644 po/ar/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ast/libdiscover.po create mode 100644 po/ast/plasma-discover-notifier.po create mode 100644 po/ast/plasma-discover.po create mode 100644 po/ast/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/bg/libdiscover.po create mode 100644 po/bs/libdiscover.po create mode 100644 po/bs/plasma-discover.po create mode 100644 po/bs/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ca/libdiscover.po create mode 100644 po/ca/plasma-discover-notifier.po create mode 100644 po/ca/plasma-discover.po create mode 100644 po/ca/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ca@valencia/libdiscover.po create mode 100644 po/ca@valencia/plasma-discover-notifier.po create mode 100644 po/ca@valencia/plasma-discover.po create mode 100644 po/ca@valencia/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/cs/libdiscover.po create mode 100644 po/cs/plasma-discover-notifier.po create mode 100644 po/cs/plasma-discover.po create mode 100644 po/cs/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/da/libdiscover.po create mode 100644 po/da/plasma-discover-notifier.po create mode 100644 po/da/plasma-discover.po create mode 100644 po/da/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/de/libdiscover.po create mode 100644 po/de/plasma-discover-notifier.po create mode 100644 po/de/plasma-discover.po create mode 100644 po/de/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/el/libdiscover.po create mode 100644 po/el/plasma-discover-notifier.po create mode 100644 po/el/plasma-discover.po create mode 100644 po/el/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/en_GB/libdiscover.po create mode 100644 po/en_GB/plasma-discover-notifier.po create mode 100644 po/en_GB/plasma-discover.po create mode 100644 po/en_GB/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/es/libdiscover.po create mode 100644 po/es/plasma-discover-notifier.po create mode 100644 po/es/plasma-discover.po create mode 100644 po/es/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/et/libdiscover.po create mode 100644 po/et/plasma-discover-notifier.po create mode 100644 po/et/plasma-discover.po create mode 100644 po/et/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/eu/libdiscover.po create mode 100644 po/eu/plasma-discover-notifier.po create mode 100644 po/eu/plasma-discover.po create mode 100644 po/eu/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/fi/libdiscover.po create mode 100644 po/fi/plasma-discover-notifier.po create mode 100644 po/fi/plasma-discover.po create mode 100644 po/fi/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/fr/libdiscover.po create mode 100644 po/fr/plasma-discover-notifier.po create mode 100644 po/fr/plasma-discover.po create mode 100644 po/fr/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ga/libdiscover.po create mode 100644 po/ga/plasma-discover.po create mode 100644 po/gl/libdiscover.po create mode 100644 po/gl/plasma-discover-notifier.po create mode 100644 po/gl/plasma-discover.po create mode 100644 po/gl/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/he/libdiscover.po create mode 100644 po/he/plasma-discover-notifier.po create mode 100644 po/he/plasma-discover.po create mode 100644 po/he/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/hu/libdiscover.po create mode 100644 po/hu/plasma-discover-notifier.po create mode 100644 po/hu/plasma-discover.po create mode 100644 po/hu/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ia/libdiscover.po create mode 100644 po/ia/plasma-discover-notifier.po create mode 100644 po/ia/plasma-discover.po create mode 100644 po/ia/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/id/libdiscover.po create mode 100644 po/id/plasma-discover-notifier.po create mode 100644 po/id/plasma-discover.po create mode 100644 po/id/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/it/libdiscover.po create mode 100644 po/it/plasma-discover-notifier.po create mode 100644 po/it/plasma-discover.po create mode 100644 po/it/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ja/libdiscover.po create mode 100644 po/ja/plasma-discover-notifier.po create mode 100644 po/ja/plasma-discover.po create mode 100644 po/ja/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/kk/libdiscover.po create mode 100644 po/kk/plasma-discover.po create mode 100644 po/ko/libdiscover.po create mode 100644 po/ko/plasma-discover-notifier.po create mode 100644 po/ko/plasma-discover.po create mode 100644 po/ko/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/lt/libdiscover.po create mode 100644 po/lt/plasma-discover-notifier.po create mode 100644 po/lt/plasma-discover.po create mode 100644 po/lt/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/mr/libdiscover.po create mode 100644 po/mr/plasma-discover.po create mode 100644 po/nb/libdiscover.po create mode 100644 po/nb/plasma-discover-notifier.po create mode 100644 po/nb/plasma-discover.po create mode 100644 po/nb/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/nds/libdiscover.po create mode 100644 po/nds/plasma-discover.po create mode 100644 po/nl/libdiscover.po create mode 100644 po/nl/plasma-discover-notifier.po create mode 100644 po/nl/plasma-discover.po create mode 100644 po/nl/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/nn/libdiscover.po create mode 100644 po/nn/plasma-discover-notifier.po create mode 100644 po/nn/plasma-discover.po create mode 100644 po/nn/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/pa/libdiscover.po create mode 100644 po/pa/plasma-discover-notifier.po create mode 100644 po/pa/plasma-discover.po create mode 100644 po/pa/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/pl/libdiscover.po create mode 100644 po/pl/plasma-discover-notifier.po create mode 100644 po/pl/plasma-discover.po create mode 100644 po/pl/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/pt/libdiscover.po create mode 100644 po/pt/plasma-discover-notifier.po create mode 100644 po/pt/plasma-discover.po create mode 100644 po/pt/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/pt_BR/libdiscover.po create mode 100644 po/pt_BR/plasma-discover-notifier.po create mode 100644 po/pt_BR/plasma-discover.po create mode 100644 po/pt_BR/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ro/libdiscover.po create mode 100644 po/ro/plasma-discover-notifier.po create mode 100644 po/ro/plasma-discover.po create mode 100644 po/ro/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ru/libdiscover.po create mode 100644 po/ru/plasma-discover-notifier.po create mode 100644 po/ru/plasma-discover.po create mode 100644 po/ru/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sk/libdiscover.po create mode 100644 po/sk/plasma-discover-notifier.po create mode 100644 po/sk/plasma-discover.po create mode 100644 po/sk/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sl/libdiscover.po create mode 100644 po/sl/plasma-discover-notifier.po create mode 100644 po/sl/plasma-discover.po create mode 100644 po/sl/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sr/libdiscover.po create mode 100644 po/sr/plasma-discover-notifier.po create mode 100644 po/sr/plasma-discover.po create mode 100644 po/sr/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sr@ijekavian/libdiscover.po create mode 100644 po/sr@ijekavian/plasma-discover-notifier.po create mode 100644 po/sr@ijekavian/plasma-discover.po create mode 100644 po/sr@ijekavian/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sr@ijekavianlatin/libdiscover.po create mode 100644 po/sr@ijekavianlatin/plasma-discover-notifier.po create mode 100644 po/sr@ijekavianlatin/plasma-discover.po create mode 100644 po/sr@ijekavianlatin/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sr@latin/libdiscover.po create mode 100644 po/sr@latin/plasma-discover-notifier.po create mode 100644 po/sr@latin/plasma-discover.po create mode 100644 po/sr@latin/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/sv/libdiscover.po create mode 100644 po/sv/plasma-discover-notifier.po create mode 100644 po/sv/plasma-discover.po create mode 100644 po/sv/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/tr/libdiscover.po create mode 100644 po/tr/plasma-discover-notifier.po create mode 100644 po/tr/plasma-discover.po create mode 100644 po/tr/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/ug/libdiscover.po create mode 100644 po/ug/plasma-discover.po create mode 100644 po/uk/libdiscover.po create mode 100644 po/uk/plasma-discover-notifier.po create mode 100644 po/uk/plasma-discover.po create mode 100644 po/uk/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/vi/libdiscover.po create mode 100644 po/vi/plasma-discover.po create mode 100644 po/zh_CN/libdiscover.po create mode 100644 po/zh_CN/plasma-discover-notifier.po create mode 100644 po/zh_CN/plasma-discover.po create mode 100644 po/zh_CN/plasma_applet_org.kde.discovernotifier.po create mode 100644 po/zh_TW/libdiscover.po create mode 100644 po/zh_TW/plasma-discover-notifier.po create mode 100644 po/zh_TW/plasma-discover.po create mode 100644 po/zh_TW/plasma_applet_org.kde.discovernotifier.po diff --git a/.arcconfig b/.arcconfig new file mode 100644 index 0000000..bc0df43 --- /dev/null +++ b/.arcconfig @@ -0,0 +1,4 @@ +{ + "phabricator.uri" : "https://phabricator.kde.org/" +} + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d47c107 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,96 @@ +project(discover) +set(PROJECT_VERSION "5.14.5") +set(PROJECT_VERSION_MAJOR 5) + +cmake_minimum_required(VERSION 2.8.12) + +set(QT_MIN_VERSION "5.11.0") +set(KF5_MIN_VERSION "5.50.0") + +find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) + +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} "${CMAKE_SOURCE_DIR}/cmake") + +find_package(Qt5 ${QT_MIN_VERSION} REQUIRED CONFIG COMPONENTS Widgets Test Network Xml Concurrent DBus Quick) +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) +include(ECMInstallIcons) +include(ECMMarkAsTest) +include(ECMAddTests) +include(GenerateExportHeader) +include(ECMQtDeclareLoggingCategory) + +find_package(PkgConfig REQUIRED) + +find_package(KF5 ${KF5_MIN_VERSION} REQUIRED CoreAddons Config Crash DBusAddons I18n Archive XmlGui ItemModels KIO) +find_package(KF5Kirigami2 2.1.0) + +find_package(packagekitqt5 CONFIG) +find_package(AppStreamQt 0.11.1 CONFIG) +find_package(KF5Attica 5.23 CONFIG) +find_package(KF5NewStuff 5.23 CONFIG) + +set(CMAKE_AUTORCC ON) + +pkg_check_modules(Flatpak IMPORTED_TARGET flatpak>=0.6.12) +pkg_check_modules(Fwupd IMPORTED_TARGET fwupd>=1.0.6) + +if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") + # CMake 3.9+ warns about automoc on files without Q_OBJECT, and doesn't know about other macros. + # 3.10+ lets us provide more macro names that require automoc. + list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "DISCOVER_BACKEND_PLUGIN") +endif() + +configure_file(DiscoverVersion.h.in DiscoverVersion.h) + +add_subdirectory(libdiscover) +add_subdirectory(discover) +add_subdirectory(exporter) + +option(WITH_NOTIFIER "Build and install the notifier plasmoid" ON) +if(WITH_NOTIFIER) + find_package(KF5 REQUIRED Notifications KIO) + add_subdirectory(notifier) +endif() + +set_package_properties(KF5Attica PROPERTIES + DESCRIPTION "KDE Framework that implements the Open Collaboration Services API" + PURPOSE "Required to build the KNewStuff3 backend" + TYPE OPTIONAL) +set_package_properties(KF5Kirigami2 PROPERTIES + DESCRIPTION "KDE's lightweight user interface framework for mobile and convergent applications" + URL "https://techbase.kde.org/Kirigami" + PURPOSE "Required by discover qml components" + TYPE RUNTIME) +set_package_properties(KF5NewStuff PROPERTIES + DESCRIPTION "Qt library that allows to interact with KNewStuff implementations" + PURPOSE "Required to build the KNS backend" + TYPE OPTIONAL) +set_package_properties(packagekitqt5 PROPERTIES + DESCRIPTION "Library that exposes PackageKit resources" + URL "http://www.packagekit.org" + PURPOSE "Required to build the PackageKit backend" + TYPE OPTIONAL) +set_package_properties(AppStreamQt PROPERTIES + DESCRIPTION "Library that lists Appstream resources" + URL "http://www.freedesktop.org" + PURPOSE "Required to build the PackageKit backend" + TYPE OPTIONAL) +set_package_properties(FLATPAK PROPERTIES + DESCRIPTION "Library that exposes flatpak repositories" + URL "http://www.freedesktop.org" + PURPOSE "Required to build the Flatpak backend" + TYPE OPTIONAL) +set_package_properties(LIBFWUPD PROPERTIES + DESCRIPTION "Library that exposes fwupd" + URL "http://www.fwupd.org" + PURPOSE "Required to build the Fwupd backend" + TYPE OPTIONAL) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) + +install( FILES discover.categories DESTINATION ${KDE_INSTALL_CONFDIR} ) + +find_package(KF5I18n CONFIG REQUIRED) +ki18n_install(po) diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..4432540 --- /dev/null +++ b/COPYING @@ -0,0 +1,676 @@ + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/COPYING.GFDL b/COPYING.GFDL new file mode 100644 index 0000000..4a0fe1c --- /dev/null +++ b/COPYING.GFDL @@ -0,0 +1,397 @@ + GNU Free Documentation License + Version 1.2, November 2002 + + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/COPYING.LIB b/COPYING.LIB new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/COPYING.LIB @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/DiscoverVersion.h.in b/DiscoverVersion.h.in new file mode 100644 index 0000000..f9f74e3 --- /dev/null +++ b/DiscoverVersion.h.in @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2014 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef DISCOVERVERSION_H +#define DISCOVERVERSION_H + +#include + +static QLatin1String version("@PROJECT_VERSION@"); + +#endif diff --git a/Messages.sh b/Messages.sh new file mode 100644 index 0000000..1eb9549 --- /dev/null +++ b/Messages.sh @@ -0,0 +1,8 @@ +#! /usr/bin/env bash + +$EXTRACTRC --context="Category" --tag-group=none --tag=Name `find libdiscover -name "*-categories.xml"` >> categoriesxml.cpp +$XGETTEXT categoriesxml.cpp `find libdiscover -name \*.cpp` -o $podir/libdiscover.pot +$XGETTEXT `find discover -name \*.cpp -o -name \*.qml -o -name \*.js` -o $podir/plasma-discover.pot +$XGETTEXT `find notifier -name \*.cpp` -o $podir/plasma-discover-notifier.pot +rm -f muonrc.cpp +rm -f categoriesxml.cpp diff --git a/cmake/FindGLib.cmake b/cmake/FindGLib.cmake new file mode 100644 index 0000000..8939d85 --- /dev/null +++ b/cmake/FindGLib.cmake @@ -0,0 +1,83 @@ +# FindGLib.cmake +# +# +# CMake support for GLib/GObject/GIO. +# +# License: +# +# Copyright (c) 2016 Evan Nemerson +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +find_package(PkgConfig) + +if(PKG_CONFIG_FOUND) + pkg_search_module(GLib_PKG glib-2.0) +endif() + +find_library(GLib_LIBRARY glib-2.0 HINTS ${GLib_PKG_LIBRARY_DIRS}) +set(GLib glib-2.0) + +if(GLib_LIBRARY AND NOT GLib_FOUND) + add_library(${GLib} SHARED IMPORTED) + set_property(TARGET ${GLib} PROPERTY IMPORTED_LOCATION "${GLib_LIBRARY}") + set_property(TARGET ${GLib} PROPERTY INTERFACE_COMPILE_OPTIONS "${GLib_PKG_CFLAGS_OTHER}") + + find_path(GLib_INCLUDE_DIRS "glib.h" + HINTS ${GLib_PKG_INCLUDE_DIRS} + PATH_SUFFIXES "glib-2.0") + + get_filename_component(GLib_LIBDIR "${GLib}" DIRECTORY) + find_path(GLib_CONFIG_INCLUDE_DIR "glibconfig.h" + HINTS + ${GLib_LIBDIR} + ${GLib_PKG_INCLUDE_DIRS} + PATHS + "${CMAKE_LIBRARY_PATH}" + PATH_SUFFIXES + "glib-2.0/include" + "glib-2.0") + unset(GLib_LIBDIR) + + if(GLib_CONFIG_INCLUDE_DIR) + file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MAJOR_VERSION REGEX "^#define GLIB_MAJOR_VERSION +([0-9]+)") + string(REGEX REPLACE "^#define GLIB_MAJOR_VERSION ([0-9]+)$" "\\1" GLib_MAJOR_VERSION "${GLib_MAJOR_VERSION}") + file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MINOR_VERSION REGEX "^#define GLIB_MINOR_VERSION +([0-9]+)") + string(REGEX REPLACE "^#define GLIB_MINOR_VERSION ([0-9]+)$" "\\1" GLib_MINOR_VERSION "${GLib_MINOR_VERSION}") + file(STRINGS "${GLib_CONFIG_INCLUDE_DIR}/glibconfig.h" GLib_MICRO_VERSION REGEX "^#define GLIB_MICRO_VERSION +([0-9]+)") + string(REGEX REPLACE "^#define GLIB_MICRO_VERSION ([0-9]+)$" "\\1" GLib_MICRO_VERSION "${GLib_MICRO_VERSION}") + set(GLib_VERSION "${GLib_MAJOR_VERSION}.${GLib_MINOR_VERSION}.${GLib_MICRO_VERSION}") + unset(GLib_MAJOR_VERSION) + unset(GLib_MINOR_VERSION) + unset(GLib_MICRO_VERSION) + + list(APPEND GLib_INCLUDE_DIRS ${GLib_CONFIG_INCLUDE_DIR}) + set_property(TARGET ${GLib} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GLib_INCLUDE_DIRS}") + endif() +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GLib + REQUIRED_VARS + GLib_LIBRARY + GLib_INCLUDE_DIRS + VERSION_VAR + GLib_VERSION) diff --git a/cmake/FindGObject.cmake b/cmake/FindGObject.cmake new file mode 100644 index 0000000..7da3430 --- /dev/null +++ b/cmake/FindGObject.cmake @@ -0,0 +1,81 @@ +# FindGObject.cmake +# +# +# CMake support for GObject. +# +# License: +# +# Copyright (c) 2016 Evan Nemerson +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +find_package(PkgConfig) + +set(GObject_DEPS + GLib) + +if(PKG_CONFIG_FOUND) + pkg_search_module(GObject_PKG gobject-2.0) +endif() + +find_library(GObject_LIBRARY gobject-2.0 HINTS ${GObject_PKG_LIBRARY_DIRS}) +set(GObject gobject-2.0) + +if(GObject_LIBRARY AND NOT GObject_FOUND) + add_library(${GObject} SHARED IMPORTED) + set_property(TARGET ${GObject} PROPERTY IMPORTED_LOCATION "${GObject_LIBRARY}") + set_property(TARGET ${GObject} PROPERTY INTERFACE_COMPILE_OPTIONS "${GObject_PKG_CFLAGS_OTHER}") + + find_path(GObject_INCLUDE_DIR "gobject/gobject.h" + HINTS ${GObject_PKG_INCLUDE_DIRS}) + + find_package(GLib) + set(GObject_VERSION "${GLib_VERSION}") + + list(APPEND GObject_DEPS_FOUND_VARS "GLib_FOUND") + list(APPEND GObject_INCLUDE_DIRS ${GLib_INCLUDE_DIRS}) + set_property(TARGET ${GObject} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${GObject_INCLUDE_DIR}") + + set_property (TARGET "${GObject}" APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${GLib}") +endif() + +find_program(GLib_GENMARSHAL glib-genmarshal) +if(GLib_GENMARSHAL AND NOT GLib_FOUND) + add_executable(glib-genmarshal IMPORTED) + set_property(TARGET glib-genmarshal PROPERTY IMPORTED_LOCATION "${GLib_GENMARSHAL}") +endif() + +find_program(GLib_MKENUMS glib-mkenums) +if(GLib_MKENUMS AND NOT GLib_FOUND) + add_executable(glib-mkenums IMPORTED) + set_property(TARGET glib-mkenums PROPERTY IMPORTED_LOCATION "${GLib_MKENUMS}") +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(GObject + REQUIRED_VARS + GObject_LIBRARY + GObject_INCLUDE_DIRS + ${GObject_DEPS_FOUND_VARS} + VERSION_VAR + GObject_VERSION) + +unset(GObject_DEPS_FOUND_VARS) diff --git a/cmake/FindPackageKitQt2.cmake b/cmake/FindPackageKitQt2.cmake new file mode 100644 index 0000000..0887e8f --- /dev/null +++ b/cmake/FindPackageKitQt2.cmake @@ -0,0 +1,57 @@ +# - Try to find the PackageKitQt2 library +# Once done this will define +# +# PACKAGEKITQT2_FOUND - system has the PackageKitQt2 library +# PACKAGEKITQT2_INCLUDEDIR - the PackageKitQt2 include directory +# PACKAGEKITQT2_LIBRARY - Link this to use the PackageKitQt2 +# +# Copyright © 2010, Mehrdad Momeny +# Copyright © 2010, Harald Sitter +# Copyright © 2013, Lukas Appelhans +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +if (NOT WIN32) + find_package(PkgConfig) + pkg_check_modules(QPACKAGEKIT2 packagekit-qt2>=0.8) +endif() + +set(PackageKitQt2_FOUND FALSE) +if(QPACKAGEKIT2_FOUND) + find_library(PACKAGEKITQT2_LIBRARY NAMES packagekit-qt2 + HINTS ${QPACKAGEKIT2_LIBRARIES} + ) + + find_path(PACKAGEKITQT2_INCLUDEDIR PackageKit/packagekit-qt2/daemon.h + HINTS ${QPACKAGEKIT2_INCLUDEDIR} + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(PackageKitQt2 DEFAULT_MSG PACKAGEKITQT2_LIBRARY PACKAGEKITQT2_INCLUDEDIR) + if(PACKAGEKITQT2_LIBRARY AND PACKAGEKITQT2_INCLUDEDIR) + mark_as_advanced(PACKAGEKITQT2_INCLUDEDIR PACKAGEKITQT2_LIBRARY) + set(PackageKitQt2_FOUND TRUE) + endif() +endif() diff --git a/cmake/FindQtOAuth.cmake b/cmake/FindQtOAuth.cmake new file mode 100644 index 0000000..9bec3a5 --- /dev/null +++ b/cmake/FindQtOAuth.cmake @@ -0,0 +1,58 @@ +# - Try to find the QtOAuth library +# Once done this will define +# +# QTOAUTH_FOUND - system has the QtOAuth library +# QTOAUTH_INCLUDE_DIR - the QtOAuth include directory +# QTOAUTH_LIBRARY - Link this to use the QtOAuth +# QTOAUTH_DEFINITIONS - Compiler switches required for using QOAuth +# +# Copyright © 2010, Mehrdad Momeny +# Copyright © 2010, Harald Sitter +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +if (QTOAUTH_INCLUDE_DIR AND QTOAUTH_LIBRARY) + # in cache already + set(QTOAUTH_FOUND TRUE) +else (QTOAUTH_INCLUDE_DIR AND QTOAUTH_LIBRARY) + if (NOT WIN32) + find_package(PkgConfig) + pkg_check_modules(PC_QTOAUTH QUIET qoauth) + set(QTOAUTH_DEFINITIONS ${PC_QTOAUTH_CFLAGS_OTHER}) + endif(NOT WIN32) + + find_library(QTOAUTH_LIBRARY NAMES qoauth + HINTS ${PC_QTOAUTH_LIBDIR} ${PC_QTOAUTH_LIBRARY_DIRS} + ) + + find_path(QTOAUTH_INCLUDE_DIR QtOAuth/interface.h + HINTS ${PC_QTOAUTH_INCLUDEDIR} ${PC_QTOAUTH_INCLUDE_DIRS} + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(QtOAuth DEFAULT_MSG QTOAUTH_LIBRARY QTOAUTH_INCLUDE_DIR) + + mark_as_advanced(QTOAUTH_INCLUDE_DIR QTOAUTH_LIBRARY) +endif (QTOAUTH_INCLUDE_DIR AND QTOAUTH_LIBRARY) diff --git a/discover.categories b/discover.categories new file mode 100644 index 0000000..370988c --- /dev/null +++ b/discover.categories @@ -0,0 +1,2 @@ +org.kde.plasma.libdiscover libdiscover IDENTIFIER [LIBDISCOVER_LOG] +org.kde.plasma.discover discover IDENTIFIER [DISCOVER_LOG] diff --git a/discover/CMakeLists.txt b/discover/CMakeLists.txt new file mode 100644 index 0000000..8c68d2a --- /dev/null +++ b/discover/CMakeLists.txt @@ -0,0 +1,81 @@ +add_subdirectory(icons) +if(BUILD_TESTING) + add_subdirectory(autotests) +endif() + +include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/..) + +ecm_qt_declare_logging_category(plasma_discover_SRCS HEADER discover_debug.h IDENTIFIER DISCOVER_LOG CATEGORY_NAME org.kde.plasma.discover) + +add_executable(plasma-discover ${plasma_discover_SRCS} + main.cpp + DiscoverObject.cpp + DiscoverDeclarativePlugin.cpp + + FeaturedModel.cpp + PaginateModel.cpp + UnityLauncher.cpp + ReadFile.cpp + + resources.qrc + assets.qrc +) +add_executable(Plasma::Discover ALIAS plasma-discover) +set_target_properties(plasma-discover PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover) + +target_link_libraries(plasma-discover PUBLIC + KF5::Crash + KF5::DBusAddons + KF5::I18n + KF5::XmlGui + KF5::ItemModels + KF5::KIOWidgets + Qt5::Quick + Discover::Common +) + +install(TARGETS plasma-discover ${INSTALL_TARGETS_DEFAULT_ARGS} ) + +# if (BUILD_DummyBackend) +# target_compile_definitions(plasma-discover PRIVATE $<$:QT_QML_DEBUG=1>) +# endif() + +# Standard desktop file accepts local files as input. +set(DesktopNoDisplay "false") +find_program(DPKG dpkg) +find_program(RPM rpm) +set(DesktopMimeType "") +if(DPKG) + set(DesktopMimeType "${DesktopMimeType}application/vnd.debian.binary-package;") +endif() +if(RPM) + set(DesktopMimeType "${DesktopMimeType}application/x-rpm;") +endif() +set(DesktopExec "plasma-discover %F") +configure_file(org.kde.discover.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.desktop) +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) + +# Support appstream:// URI +set(DesktopNoDisplay "true") +set(DesktopMimeType "x-scheme-handler/appstream;") +set(DesktopExec "plasma-discover %U") +configure_file(org.kde.discover.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.urlhandler.desktop) +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.urlhandler.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) + +# support snap:/ URI +set(DesktopNoDisplay "true") +set(DesktopMimeType "x-scheme-handler/snap;") +set(DesktopExec "plasma-discover %U") +configure_file(org.kde.discover.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.snap.urlhandler.desktop) +install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.snap.urlhandler.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) + +if(EXISTS "/etc/debian_version") + set(DesktopNoDisplay "true") + set(DesktopMimeType "x-scheme-handler/apt") + set(DesktopExec "plasma-discover %U") + configure_file(org.kde.discover.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.apt.urlhandler.desktop) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/org.kde.discover.apt.urlhandler.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) +endif() + +install(FILES plasmadiscoverui.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/plasmadiscover) +install( FILES org.kde.discover.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} ) diff --git a/discover/DiscoverDeclarativePlugin.cpp b/discover/DiscoverDeclarativePlugin.cpp new file mode 100644 index 0000000..5cfa4ab --- /dev/null +++ b/discover/DiscoverDeclarativePlugin.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "DiscoverDeclarativePlugin.h" +#include "ReadFile.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void DiscoverDeclarativePlugin::initializeEngine(QQmlEngine* engine, const char* uri) +{ + engine->rootContext()->setContextProperty(QStringLiteral("ResourcesModel"), ResourcesModel::global()); + engine->rootContext()->setContextProperty(QStringLiteral("TransactionModel"), TransactionModel::global()); + engine->rootContext()->setContextProperty(QStringLiteral("SourcesModel"), SourcesModel::global()); + engine->rootContext()->setContextProperty(QStringLiteral("CategoryModel"), CategoryModel::global()); + QQmlExtensionPlugin::initializeEngine(engine, uri); +} + +void DiscoverDeclarativePlugin::registerTypes(const char* /*uri*/) +{ + qmlRegisterType("org.kde.discover", 2, 0, "TransactionListener"); + qmlRegisterType(); + qmlRegisterType("org.kde.discover", 2, 0, "ResourcesUpdatesModel"); + qmlRegisterType("org.kde.discover", 2, 0, "ResourcesProxyModel"); + + qmlRegisterType("org.kde.discover", 2, 0, "ReviewsModel"); + qmlRegisterType("org.kde.discover", 2, 0, "ApplicationAddonsModel"); + qmlRegisterType("org.kde.discover", 2, 0, "ScreenshotsModel"); + qmlRegisterType("org.kde.discover", 2, 0, "ActionsModel"); + qmlRegisterType("org.kde.discover", 2, 0, "UpdateModel"); + qmlRegisterType("org.kde.discover", 2, 0, "ReadFile"); + + qmlRegisterUncreatableType("org.kde.discover", 2, 0, "QAction", QStringLiteral("Use QQC Action")); + qmlRegisterUncreatableType("org.kde.discover", 2, 0, "AbstractResource", QStringLiteral("should come from the ResourcesModel")); + qmlRegisterUncreatableType("org.kde.discover", 2, 0, "AbstractSourcesBackend", QStringLiteral("should come from the SourcesModel")); + qmlRegisterUncreatableType("org.kde.discover", 2, 0, "Transaction", QStringLiteral("should come from the backends")); + qmlRegisterUncreatableType("org.kde.discover", 2, 0, "SourcesModelClass", QStringLiteral("should come from the backends")); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType(); + qmlProtectModule("org.kde.discover", 2); + qRegisterMetaType>(); +} diff --git a/discover/DiscoverDeclarativePlugin.h b/discover/DiscoverDeclarativePlugin.h new file mode 100644 index 0000000..501b3d7 --- /dev/null +++ b/discover/DiscoverDeclarativePlugin.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef DISCOVERDECLARATIVEPLUGIN_H +#define DISCOVERDECLARATIVEPLUGIN_H + +#include + +class DiscoverDeclarativePlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + public: + void initializeEngine(QQmlEngine* engine, const char* uri) override; + void registerTypes(const char* uri) override; +}; + +#endif diff --git a/discover/DiscoverObject.cpp b/discover/DiscoverObject.cpp new file mode 100644 index 0000000..a9f9063 --- /dev/null +++ b/discover/DiscoverObject.cpp @@ -0,0 +1,471 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "DiscoverObject.h" +#include "PaginateModel.h" +#include "UnityLauncher.h" +#include "FeaturedModel.h" +#include "CachedNetworkAccessManager.h" +#include "DiscoverDeclarativePlugin.h" +#include "DiscoverBackendsFactory.h" + +// Qt includes +#include +#include "discover_debug.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include + +// DiscoverCommon includes +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +class OurSortFilterProxyModel : public QSortFilterProxyModel, public QQmlParserStatus +{ + Q_OBJECT + Q_INTERFACES(QQmlParserStatus) +public: + void classBegin() override {} + void componentComplete() override { + if (dynamicSortFilter()) + sort(0); + } +}; + +class KIOAccessManagerFactory : public QQmlNetworkAccessManagerFactory +{ +public: + KIOAccessManagerFactory() = default; + ~KIOAccessManagerFactory() = default; + QNetworkAccessManager *create(QObject *parent) override + { + return new KIO::AccessManager(parent); + } +}; + +DiscoverObject::DiscoverObject(CompactMode mode) + : QObject() + , m_engine(new QQmlApplicationEngine) + , m_mode(mode) + , m_networkAccessManagerFactory(new CachedNetworkAccessManagerFactory) +{ + setObjectName(QStringLiteral("DiscoverMain")); + m_engine->rootContext()->setContextObject(new KLocalizedContext(m_engine)); + auto factory = m_engine->networkAccessManagerFactory(); + m_engine->setNetworkAccessManagerFactory(nullptr); + delete factory; + m_engine->setNetworkAccessManagerFactory(new KIOAccessManagerFactory()); + + qmlRegisterType("org.kde.discover.app", 1, 0, "UnityLauncher"); + qmlRegisterType("org.kde.discover.app", 1, 0, "PaginateModel"); + qmlRegisterType("org.kde.discover.app", 1, 0, "KConcatenateRowsProxyModel"); + qmlRegisterType("org.kde.discover.app", 1, 0, "FeaturedModel"); + qmlRegisterType("org.kde.discover.app", 1, 0, "QSortFilterProxyModel"); + + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterType(); + qmlRegisterUncreatableType("org.kde.discover.app", 1, 0, "DiscoverMainWindow", QStringLiteral("don't do that")); + setupActions(); + + auto uri = "org.kde.discover"; + DiscoverDeclarativePlugin* plugin = new DiscoverDeclarativePlugin; + plugin->setParent(this); + plugin->initializeEngine(m_engine, uri); + plugin->registerTypes(uri); + + //Here we set up a cache for the screenshots + delete m_engine->networkAccessManagerFactory(); + m_engine->setNetworkAccessManagerFactory(m_networkAccessManagerFactory.data()); + m_engine->rootContext()->setContextProperty(QStringLiteral("app"), this); + + connect(m_engine, &QQmlApplicationEngine::objectCreated, this, &DiscoverObject::integrateObject); + m_engine->load(QUrl(QStringLiteral("qrc:/qml/DiscoverWindow.qml"))); + + connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, [this](){ + const auto objs = m_engine->rootObjects(); + for(auto o: objs) + delete o; + }); +} + +DiscoverObject::~DiscoverObject() +{ + delete m_engine; +} + +bool DiscoverObject::isRoot() +{ + return ::getuid() == 0; +} + +QStringList DiscoverObject::modes() const +{ + QStringList ret; + QObject* obj = rootObject(); + for(int i = obj->metaObject()->propertyOffset(); imetaObject()->propertyCount(); i++) { + QMetaProperty p = obj->metaObject()->property(i); + QByteArray compName = p.name(); + if(compName.startsWith("top") && compName.endsWith("Comp")) { + ret += QString::fromLatin1(compName.mid(3, compName.length()-7)); + } + } + return ret; +} + +void DiscoverObject::openMode(const QString& _mode) +{ + QObject* obj = rootObject(); + if (!obj) { + qCWarning(DISCOVER_LOG) << "could not get the main object"; + return; + } + + if(!modes().contains(_mode, Qt::CaseInsensitive)) + qCWarning(DISCOVER_LOG) << "unknown mode" << _mode << modes(); + + QString mode = _mode; + mode[0] = mode[0].toUpper(); + + const QByteArray propertyName = "top"+mode.toLatin1()+"Comp"; + const QVariant modeComp = obj->property(propertyName.constData()); + if (!modeComp.isValid()) + qCWarning(DISCOVER_LOG) << "couldn't open mode" << _mode; + else + obj->setProperty("currentTopLevel", modeComp); +} + +void DiscoverObject::openMimeType(const QString& mime) +{ + emit listMimeInternal(mime); +} + +void DiscoverObject::openCategory(const QString& category) +{ + setRootObjectProperty("defaultStartup", false); + auto action = new OneTimeAction( + [this, category]() { + Category* cat = CategoryModel::global()->findCategoryByName(category); + if (cat) { + emit listCategoryInternal(cat); + } else { + showPassiveNotification(i18n("Could not find category '%1'", category)); + setRootObjectProperty("defaultStartup", false); + } + } + , this); + + if (ResourcesModel::global()->backends().isEmpty()) { + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, action, &OneTimeAction::trigger); + } else { + action->trigger(); + } +} + +void DiscoverObject::openLocalPackage(const QUrl& localfile) +{ + if (!QFile::exists(localfile.toLocalFile())) { +// showPassiveNotification(i18n("Trying to open unexisting file '%1'", localfile.toString())); + qCWarning(DISCOVER_LOG) << "Trying to open unexisting file" << localfile; + return; + } + setRootObjectProperty("defaultStartup", false); + auto action = new OneTimeAction( + [this, localfile]() { + auto res = ResourcesModel::global()->resourceForFile(localfile); + qCDebug(DISCOVER_LOG) << "all initialized..." << res; + if (res) { + emit openApplicationInternal(res); + } else { + QMimeDatabase db; + auto mime = db.mimeTypeForUrl(localfile); + auto fIsFlatpakBackend = [](AbstractResourcesBackend* backend) { return backend->metaObject()->className() == QByteArray("FlatpakBackend"); }; + if (mime.name().startsWith(QLatin1String("application/vnd.flatpak")) && !kContains(ResourcesModel::global()->backends(), fIsFlatpakBackend)) { + openApplication(QUrl(QLatin1String("appstream://org.kde.discover.flatpak"))); + showPassiveNotification(i18n("Cannot interact with flatpak resources without the flatpak backend %1. Please install it first.", localfile.toDisplayString())); + } else { + setRootObjectProperty("defaultStartup", true); + showPassiveNotification(i18n("Couldn't open %1", localfile.toDisplayString())); + } + } + } + , this); + + if (ResourcesModel::global()->backends().isEmpty()) { + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, action, &OneTimeAction::trigger); + } else { + action->trigger(); + } +} + +void DiscoverObject::openApplication(const QUrl& url) +{ + Q_ASSERT(!url.isEmpty()); + setRootObjectProperty("defaultStartup", false); + auto action = new OneTimeAction( + [this, url]() { + AbstractResourcesBackend::Filters f; + f.resourceUrl = url; + auto stream = new StoredResultsStream({ResourcesModel::global()->search(f)}); + connect(stream, &StoredResultsStream::finished, this, [this, url, stream]() { + const auto res = stream->resources(); + if (res.count() >= 1) { + emit openApplicationInternal(res.first()); + } else { + setRootObjectProperty("defaultStartup", true); + Q_EMIT openErrorPage(i18n("Couldn't open %1", url.toDisplayString())); + } + }); + } + , this); + + if (ResourcesModel::global()->backends().isEmpty()) { + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, action, &OneTimeAction::trigger); + } else { + action->trigger(); + } +} + +void DiscoverObject::integrateObject(QObject* object) +{ + if (!object) { + qCWarning(DISCOVER_LOG) << "Errors when loading the GUI"; + QTimer::singleShot(0, QCoreApplication::instance(), [](){ + QCoreApplication::instance()->exit(1); + }); + return; + } + + Q_ASSERT(object == rootObject()); + + KConfigGroup window(KSharedConfig::openConfig(), "Window"); + if (window.hasKey("geometry")) + rootObject()->setGeometry(window.readEntry("geometry", QRect())); + if (window.hasKey("visibility")) { + QWindow::Visibility visibility(QWindow::Visibility(window.readEntry("visibility", QWindow::Windowed))); + rootObject()->setVisibility(qMax(visibility, QQuickView::AutomaticVisibility)); + } + + object->installEventFilter(this); + connect(object, &QObject::destroyed, qGuiApp, &QCoreApplication::quit); + + object->setParent(m_engine); + connect(qGuiApp, &QGuiApplication::commitDataRequest, this, [this](QSessionManager &sessionManager) { + if (ResourcesModel::global()->isBusy()) { + Q_EMIT preventedClose(); + sessionManager.cancel(); + } + }); +} + +bool DiscoverObject::eventFilter(QObject * object, QEvent * event) +{ + if (object!=rootObject()) + return false; + + if (event->type() == QEvent::Close) { + if (ResourcesModel::global()->isBusy()) { + qCWarning(DISCOVER_LOG) << "not closing because there's still pending tasks"; + Q_EMIT preventedClose(); + return true; + } + + KConfigGroup window(KSharedConfig::openConfig(), "Window"); + window.writeEntry("geometry", rootObject()->geometry()); + window.writeEntry("visibility", rootObject()->visibility()); +// } else if (event->type() == QEvent::ShortcutOverride) { +// qCWarning(DISCOVER_LOG) << "Action conflict" << event; + } + return false; +} + +void DiscoverObject::setupActions() +{ + if (KAuthorized::authorizeAction(QStringLiteral("help_report_bug")) && !KAboutData::applicationData().bugAddress().isEmpty()) { + auto mReportBugAction = KStandardAction::reportBug(this, &DiscoverObject::reportBug, this); + m_collection[mReportBugAction->objectName()] = mReportBugAction; + } + + if (KAuthorized::authorizeAction(QStringLiteral("help_about_app"))) { + auto mAboutAppAction = KStandardAction::aboutApp(this, &DiscoverObject::aboutApplication, this); + m_collection[mAboutAppAction->objectName()] = mAboutAppAction; + } +} + +QAction * DiscoverObject::action(const QString& name) const +{ + return m_collection.value(name); +} + +QString DiscoverObject::iconName(const QIcon& icon) +{ + return icon.name(); +} + +void DiscoverObject::aboutApplication() +{ + static QPointer dialog; + if (!dialog) { + dialog = new KAboutApplicationDialog(KAboutData::applicationData(), nullptr); + dialog->setAttribute(Qt::WA_DeleteOnClose); + } + dialog->show(); +} + +void DiscoverObject::reportBug() +{ + static QPointer dialog; + if (!dialog) { + dialog = new KBugReport(KAboutData::applicationData(), nullptr); + dialog->setAttribute(Qt::WA_DeleteOnClose); + } + dialog->show(); +} + +void DiscoverObject::switchApplicationLanguage() +{ +// auto langDialog = new KSwitchLanguageDialog(nullptr); +// connect(langDialog, SIGNAL(finished(int)), this, SLOT(dialogFinished())); +// langDialog->show(); +} + +void DiscoverObject::setCompactMode(DiscoverObject::CompactMode mode) +{ + if (m_mode != mode) { + m_mode = mode; + Q_EMIT compactModeChanged(m_mode); + } +} + +class DiscoverTestExecutor : public QObject +{ +public: + DiscoverTestExecutor(QObject* rootObject, QQmlEngine* engine, const QUrl &url) + : QObject(engine) + { + connect(engine, &QQmlEngine::quit, this, &DiscoverTestExecutor::finish, Qt::QueuedConnection); + + QQmlComponent* component = new QQmlComponent(engine, url, engine); + m_testObject = component->create(engine->rootContext()); + + if (!m_testObject) { + qCWarning(DISCOVER_LOG) << "error loading test" << url << m_testObject << component->errors(); + Q_ASSERT(false); + } + + m_testObject->setProperty("appRoot", QVariant::fromValue(rootObject)); + connect(engine, &QQmlEngine::warnings, this, &DiscoverTestExecutor::processWarnings); + } + + void processWarnings(const QList &warnings) { + foreach(const QQmlError &warning, warnings) { + if (warning.url().path().endsWith(QLatin1String("DiscoverTest.qml"))) { + qCWarning(DISCOVER_LOG) << "Test failed!" << warnings; + qGuiApp->exit(1); + } + } + m_warnings << warnings; + } + + void finish() { + //The CI doesn't seem to have icons, remove when it's not an issue anymore + m_warnings.erase(std::remove_if(m_warnings.begin(), m_warnings.end(), [](const QQmlError& err) -> bool { + return err.description().contains(QLatin1String("QML Image: Failed to get image from provider: image://icon/")); + })); + + if (m_warnings.isEmpty()) + qCDebug(DISCOVER_LOG) << "cool no warnings!"; + else + qCDebug(DISCOVER_LOG) << "test finished succesfully despite" << m_warnings; + qGuiApp->exit(m_warnings.count()); + } + +private: + QObject* m_testObject; + QList m_warnings; +}; + +void DiscoverObject::loadTest(const QUrl& url) +{ + new DiscoverTestExecutor(rootObject(), engine(), url); +} + +QWindow* DiscoverObject::rootObject() const +{ + return qobject_cast(m_engine->rootObjects().at(0)); +} + +void DiscoverObject::setRootObjectProperty(const char* name, const QVariant& value) +{ + auto ro = rootObject(); + if (!ro) { + qCWarning(DISCOVER_LOG) << "please check your installation"; + return; + } + + rootObject()->setProperty(name, value); +} + +void DiscoverObject::showPassiveNotification(const QString& msg) +{ + QTimer::singleShot(100, this, [this, msg](){ + QMetaObject::invokeMethod(rootObject(), "showPassiveNotification", Qt::QueuedConnection, Q_ARG(QVariant, msg), Q_ARG(QVariant, {}), Q_ARG(QVariant, {}), Q_ARG(QVariant, {})); + }); +} + +void DiscoverObject::copyTextToClipboard(const QString& text) +{ + qGuiApp->clipboard()->setText(text); +} + + +#include "DiscoverObject.moc" diff --git a/discover/DiscoverObject.h b/discover/DiscoverObject.h new file mode 100644 index 0000000..83f5b3c --- /dev/null +++ b/discover/DiscoverObject.h @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef MUONDISCOVERMAINWINDOW_H +#define MUONDISCOVERMAINWINDOW_H + +#include + +#include + +class AbstractResource; +class Category; +class QWindow; +class QQmlApplicationEngine; +class CachedNetworkAccessManagerFactory; +class ResourcesProxyModel; + +class DiscoverObject : public QObject +{ + Q_OBJECT + Q_PROPERTY(CompactMode compactMode READ compactMode WRITE setCompactMode NOTIFY compactModeChanged) + Q_PROPERTY(bool isRoot READ isRoot CONSTANT) + public: + enum CompactMode { Auto, Compact, Full }; + Q_ENUM(CompactMode) + + explicit DiscoverObject(CompactMode mode); + ~DiscoverObject() override; + + QStringList modes() const; + void setupActions(); + + CompactMode compactMode() const { return m_mode; } + void setCompactMode(CompactMode mode); + + bool eventFilter(QObject * object, QEvent * event) override; + + Q_SCRIPTABLE QAction * action(const QString& name) const; + Q_SCRIPTABLE static QString iconName(const QIcon& icon); + + void loadTest(const QUrl& url); + + static bool isRoot(); + QWindow* rootObject() const; + void showPassiveNotification(const QString &msg); + + public Q_SLOTS: + void openApplication(const QUrl& app); + void openMimeType(const QString& mime); + void openCategory(const QString& category); + void openMode(const QString& mode); + void openLocalPackage(const QUrl &localfile); + + void copyTextToClipboard(const QString &text); + + private Q_SLOTS: + void reportBug(); + void switchApplicationLanguage(); + void aboutApplication(); + + Q_SIGNALS: + void openSearch(const QString &search); + void openApplicationInternal(AbstractResource* app); + void listMimeInternal(const QString& mime); + void listCategoryInternal(Category* cat); + + void compactModeChanged(DiscoverObject::CompactMode compactMode); + void preventedClose(); + void unableToFind(const QString &resid); + void openErrorPage(const QString &errorMessage); + + private: + void setRootObjectProperty(const char *name, const QVariant &value); + void integrateObject(QObject* object); + QQmlApplicationEngine* engine() const { return m_engine; } + + QMap m_collection; + QQmlApplicationEngine * const m_engine; + + CompactMode m_mode; + QScopedPointer m_networkAccessManagerFactory; +}; + +#endif // MUONINSTALLERDECLARATIVEVIEW_H diff --git a/discover/FeaturedModel.cpp b/discover/FeaturedModel.cpp new file mode 100644 index 0000000..8773727 --- /dev/null +++ b/discover/FeaturedModel.cpp @@ -0,0 +1,160 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FeaturedModel.h" + +#include "discover_debug.h" +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +Q_GLOBAL_STATIC(QString, featuredCache) + +FeaturedModel::FeaturedModel() +{ + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &FeaturedModel::refresh); + connect(ResourcesModel::global(), &ResourcesModel::currentApplicationBackendChanged, this, &FeaturedModel::refresh); + connect(ResourcesModel::global(), &ResourcesModel::fetchingChanged, this, &FeaturedModel::refresh); + connect(ResourcesModel::global(), &ResourcesModel::resourceRemoved, this, &FeaturedModel::removeResource); + + const QString dir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); + QDir().mkpath(dir); + *featuredCache = dir+QLatin1String("/featured-5.9.json"); + + const QUrl featuredUrl(QStringLiteral("https://autoconfig.kde.org/discover/featured-5.9.json")); + auto *getJob = KIO::storedGet(featuredUrl, KIO::NoReload, KIO::HideProgressInfo); + connect(getJob, &KIO::StoredTransferJob::result, this, [this, getJob](){ + QFile f(*featuredCache); + if (!f.open(QIODevice::WriteOnly)) + qCWarning(DISCOVER_LOG) << "could not open" << *featuredCache << f.errorString(); + f.write(getJob->data()); + f.close(); + refresh(); + }); + + if (!ResourcesModel::global()->backends().isEmpty() && QFile::exists(*featuredCache)) + refresh(); +} + +void FeaturedModel::refresh() +{ + QFile f(*featuredCache); + if (!f.open(QIODevice::ReadOnly)) { + qCWarning(DISCOVER_LOG) << "couldn't open file" << *featuredCache << f.errorString(); + return; + } + QJsonParseError error; + const auto array = QJsonDocument::fromJson(f.readAll(), &error).array(); + if (error.error) { + qCWarning(DISCOVER_LOG) << "couldn't parse" << *featuredCache << ". error:" << error.errorString(); + return; + } + + const auto uris = kTransform>(array, [](const QJsonValue& uri) { return QUrl(uri.toString()); }); + setUris(uris); +} + +void FeaturedModel::setUris(const QVector& uris) +{ + auto backend = ResourcesModel::global()->currentApplicationBackend(); + if (uris == m_uris || !backend) + return; + + QSet streams; + foreach(const auto &uri, uris) { + AbstractResourcesBackend::Filters filter; + filter.resourceUrl = uri; + streams << backend->search(filter); + } + auto stream = new StoredResultsStream(streams); + connect(stream, &StoredResultsStream::finishedResources, this, &FeaturedModel::setResources); +} + +static void filterDupes(QVector &resources) +{ + const auto appsBackend = ResourcesModel::global()->currentApplicationBackend(); + QHash resById; + for(auto it = resources.begin(); it!=resources.end(); ) { + auto id = (*it)->appstreamId(); + auto curr = resById.value(id); + if (curr && curr->backend() == appsBackend) { + it = resources.erase(it); + } else { + resources.removeAll(curr); + resById[id] = *it; + ++it; + } + } +} + +void FeaturedModel::setResources(const QVector& _resources) +{ + auto resources = _resources; + filterDupes(resources); + + if (m_resources == resources) + return; + + //TODO: sort like in the json files + + beginResetModel(); + m_resources = resources; + endResetModel(); +} + +void FeaturedModel::removeResource(AbstractResource* resource) +{ + int index = m_resources.indexOf(resource); + if (index<0) + return; + + beginRemoveRows({}, index, index); + m_resources.removeAt(index); + endRemoveRows(); +} + +QVariant FeaturedModel::data(const QModelIndex& index, int role) const +{ + if (!index.isValid() || role!=Qt::UserRole) + return {}; + + auto res = m_resources.value(index.row()); + if (!res) + return {}; + + return QVariant::fromValue(res); +} + +int FeaturedModel::rowCount(const QModelIndex& parent) const +{ + return parent.isValid() ? 0 : m_resources.count(); +} + +QHash FeaturedModel::roleNames() const +{ + return {{Qt::UserRole, "application"}}; +} diff --git a/discover/FeaturedModel.h b/discover/FeaturedModel.h new file mode 100644 index 0000000..d060716 --- /dev/null +++ b/discover/FeaturedModel.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FEATUREDMODEL_H +#define FEATUREDMODEL_H + +#include + +class AbstractResource; + +class FeaturedModel : public QAbstractListModel +{ + Q_OBJECT + public: + FeaturedModel(); + ~FeaturedModel() override {} + + void setResources(const QVector& resources); + QVariant data(const QModelIndex & index, int role) const override; + int rowCount(const QModelIndex & parent) const override; + QHash roleNames() const override; + + private: + void setUris(const QVector &uris); + void refresh(); + void removeResource(AbstractResource* resource); + + QVector m_uris; + QVector m_resources; +}; + +#endif // FEATUREDMODEL_H diff --git a/discover/PaginateModel.cpp b/discover/PaginateModel.cpp new file mode 100644 index 0000000..cf5117d --- /dev/null +++ b/discover/PaginateModel.cpp @@ -0,0 +1,394 @@ +/* + * Copyright (C) 2014 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "PaginateModel.h" +#include +#include "discover_debug.h" + +PaginateModel::PaginateModel(QObject* object) + : QAbstractListModel(object) + , m_firstItem(0) + , m_pageSize(10) + , m_sourceModel(nullptr) + , m_hasStaticRowCount(false) +{ +} + +PaginateModel::~PaginateModel() +{ +} + +int PaginateModel::firstItem() const +{ + return m_firstItem; +} + +void PaginateModel::setFirstItem(int row) +{ + Q_ASSERT(row>=0 && rowrowCount()); + if (row!=m_firstItem) { + beginResetModel(); + m_firstItem = row; + endResetModel(); + emit firstItemChanged(); + } +} + +int PaginateModel::pageSize() const +{ + return m_pageSize; +} + +void PaginateModel::setPageSize(int count) +{ + if (count != m_pageSize) { + const int oldSize = rowsByPageSize(m_pageSize); + const int newSize = rowsByPageSize(count); + const int difference = newSize - oldSize; + if (difference==0) { + m_pageSize = count; + } else if(difference>0) { + beginInsertRows(QModelIndex(), m_pageSize, m_pageSize+difference-1); + m_pageSize = count; + endInsertRows(); + } else { + beginRemoveRows(QModelIndex(), m_pageSize+difference, m_pageSize-1); + m_pageSize = count; + endRemoveRows(); + } + emit pageSizeChanged(); + } +} + +QAbstractItemModel* PaginateModel::sourceModel() const +{ + return m_sourceModel; +} + +void PaginateModel::setSourceModel(QAbstractItemModel* model) +{ + if(m_sourceModel) { + disconnect(m_sourceModel, nullptr, this, nullptr); + } + + if(model!=m_sourceModel) { + beginResetModel(); + m_sourceModel = model; + if(model) { + connect(m_sourceModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &PaginateModel::_k_sourceRowsAboutToBeInserted); + connect(m_sourceModel, &QAbstractItemModel::rowsInserted, this, &PaginateModel::_k_sourceRowsInserted); + connect(m_sourceModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &PaginateModel::_k_sourceRowsAboutToBeRemoved); + connect(m_sourceModel, &QAbstractItemModel::rowsRemoved, this, &PaginateModel::_k_sourceRowsRemoved); + connect(m_sourceModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &PaginateModel::_k_sourceRowsAboutToBeMoved); + connect(m_sourceModel, &QAbstractItemModel::rowsMoved, this, &PaginateModel::_k_sourceRowsMoved); + + connect(m_sourceModel, &QAbstractItemModel::columnsAboutToBeInserted, this, &PaginateModel::_k_sourceColumnsAboutToBeInserted); + connect(m_sourceModel, &QAbstractItemModel::columnsInserted, this, &PaginateModel::_k_sourceColumnsInserted); + connect(m_sourceModel, &QAbstractItemModel::columnsAboutToBeRemoved, this, &PaginateModel::_k_sourceColumnsAboutToBeRemoved); + connect(m_sourceModel, &QAbstractItemModel::columnsRemoved, this, &PaginateModel::_k_sourceColumnsRemoved); + connect(m_sourceModel, &QAbstractItemModel::columnsAboutToBeMoved, this, &PaginateModel::_k_sourceColumnsAboutToBeMoved); + connect(m_sourceModel, &QAbstractItemModel::columnsMoved, this, &PaginateModel::_k_sourceColumnsMoved); + + connect(m_sourceModel, &QAbstractItemModel::dataChanged, this, &PaginateModel::_k_sourceDataChanged); + connect(m_sourceModel, &QAbstractItemModel::headerDataChanged, this, &PaginateModel::_k_sourceHeaderDataChanged); + + connect(m_sourceModel, &QAbstractItemModel::modelAboutToBeReset, this, &PaginateModel::_k_sourceModelAboutToBeReset); + connect(m_sourceModel, &QAbstractItemModel::modelReset, this, &PaginateModel::_k_sourceModelReset); + + connect(m_sourceModel, &QAbstractItemModel::rowsInserted, this, &PaginateModel::pageCountChanged); + connect(m_sourceModel, &QAbstractItemModel::rowsRemoved, this, &PaginateModel::pageCountChanged); + connect(m_sourceModel, &QAbstractItemModel::modelReset, this, &PaginateModel::pageCountChanged); + } + endResetModel(); + emit sourceModelChanged(); + } +} + +QHash< int, QByteArray > PaginateModel::roleNames() const +{ + return m_sourceModel ? m_sourceModel->roleNames() : QAbstractItemModel::roleNames(); +} + +int PaginateModel::rowsByPageSize(int size) const +{ + return m_hasStaticRowCount ? size + : !m_sourceModel ? 0 + : qMin(m_sourceModel->rowCount()-m_firstItem, size); +} + +int PaginateModel::rowCount(const QModelIndex& parent) const +{ + return parent.isValid() ? 0 : rowsByPageSize(m_pageSize); +} + +QModelIndex PaginateModel::mapToSource(const QModelIndex& idx) const +{ + if(!m_sourceModel) + return QModelIndex(); + return m_sourceModel->index(idx.row()+m_firstItem, idx.column()); +} + +QModelIndex PaginateModel::mapFromSource(const QModelIndex& idx) const +{ + Q_ASSERT(idx.model() == m_sourceModel); + if(!m_sourceModel) + return QModelIndex(); + return index(idx.row()-m_firstItem, idx.column()); +} + +QVariant PaginateModel::data(const QModelIndex& index, int role) const +{ + if(!m_sourceModel) + return QVariant(); + QModelIndex idx = mapToSource(index); + return idx.data(role); +} + +void PaginateModel::firstPage() +{ + setFirstItem(0); +} + +void PaginateModel::lastPage() +{ + setFirstItem((pageCount() - 1)*m_pageSize); +} + +void PaginateModel::nextPage() +{ + setFirstItem(m_firstItem + m_pageSize); +} + +void PaginateModel::previousPage() +{ + setFirstItem(m_firstItem - m_pageSize); +} + +int PaginateModel::currentPage() const +{ + return m_firstItem/m_pageSize; +} + +int PaginateModel::pageCount() const +{ + if(!m_sourceModel) + return 0; + const int rc = m_sourceModel->rowCount(); + const int r = (rc%m_pageSize == 0) ? 1 : 0; + return qMax(qCeil(float(rc)/m_pageSize) - r, 1); +} + +bool PaginateModel::hasStaticRowCount() const +{ + return m_hasStaticRowCount; +} + +void PaginateModel::setStaticRowCount(bool src) +{ + if (src == m_hasStaticRowCount) { + return; + } + + beginResetModel(); + m_hasStaticRowCount = src; + endResetModel(); +} + +////////////////////////////// + +void PaginateModel::_k_sourceColumnsAboutToBeInserted(const QModelIndex& parent, int start, int end) +{ + Q_UNUSED(end) + if(parent.isValid() || start!=0) { + return; + } + beginResetModel(); +} + +void PaginateModel::_k_sourceColumnsAboutToBeMoved(const QModelIndex& sourceParent, int sourceStart, int sourceEnd, const QModelIndex& destParent, int dest) +{ + Q_UNUSED(sourceParent) + Q_UNUSED(sourceStart) + Q_UNUSED(sourceEnd) + Q_UNUSED(destParent) + Q_UNUSED(dest) + beginResetModel(); +} + +void PaginateModel::_k_sourceColumnsAboutToBeRemoved(const QModelIndex& parent, int start, int end) +{ + Q_UNUSED(end) + if(parent.isValid() || start!=0) { + return; + } + beginResetModel(); +} + +void PaginateModel::_k_sourceColumnsInserted(const QModelIndex& parent, int start, int end) +{ + Q_UNUSED(end) + if(parent.isValid() || start!=0) { + return; + } + endResetModel(); +} + +void PaginateModel::_k_sourceColumnsMoved(const QModelIndex& sourceParent, int sourceStart, int sourceEnd, const QModelIndex& destParent, int dest) +{ + Q_UNUSED(sourceParent) + Q_UNUSED(sourceStart) + Q_UNUSED(sourceEnd) + Q_UNUSED(destParent) + Q_UNUSED(dest) + endResetModel(); +} + +void PaginateModel::_k_sourceColumnsRemoved(const QModelIndex& parent, int start, int end) +{ + Q_UNUSED(end) + if(parent.isValid() || start!=0) { + return; + } + endResetModel(); +} + +void PaginateModel::_k_sourceDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight, const QVector &roles) +{ + if(topLeft.parent().isValid() || bottomRight.row()lastItem()) { + return; + } + + QModelIndex idxTop = mapFromSource(topLeft); + QModelIndex idxBottom = mapFromSource(bottomRight); + if(!idxTop.isValid()) + idxTop = index(0); + if(!idxBottom.isValid()) + idxBottom = index(rowCount()-1); + + emit dataChanged(idxTop, idxBottom, roles); +} + +void PaginateModel::_k_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last) +{ + Q_UNUSED(last) + if(first==0) + emit headerDataChanged(orientation, 0, 0); +} + +void PaginateModel::_k_sourceModelAboutToBeReset() +{ + beginResetModel(); +} + +void PaginateModel::_k_sourceModelReset() +{ + endResetModel(); +} + +bool PaginateModel::isIntervalValid(const QModelIndex& parent, int start, int /*end*/) const +{ + return !parent.isValid() && start<=lastItem(); +} + +bool PaginateModel::canSizeChange() const +{ + return !m_hasStaticRowCount && currentPage() == pageCount()-1; +} + +void PaginateModel::_k_sourceRowsAboutToBeInserted(const QModelIndex& parent, int start, int end) +{ + if(!isIntervalValid(parent, start, end)) { + return; + } + + if(canSizeChange()) { + const int newStart = qMax(start-m_firstItem, 0); + const int insertedCount = qMin(end-start, pageSize() - newStart -1); + beginInsertRows(QModelIndex(), newStart, newStart+insertedCount); + } else { + beginResetModel(); + } +} + +void PaginateModel::_k_sourceRowsInserted(const QModelIndex& parent, int start, int end) +{ + if(!isIntervalValid(parent, start, end)) { + return; + } + + if(canSizeChange()) { + endInsertRows(); + } else { + endResetModel(); + } +} + +void PaginateModel::_k_sourceRowsAboutToBeMoved(const QModelIndex& sourceParent, int sourceStart, int sourceEnd, const QModelIndex& destParent, int dest) +{ + Q_UNUSED(sourceParent) + Q_UNUSED(sourceStart) + Q_UNUSED(sourceEnd) + Q_UNUSED(destParent) + Q_UNUSED(dest) + //NOTE could optimize, unsure if it makes sense + beginResetModel(); +} + +void PaginateModel::_k_sourceRowsMoved(const QModelIndex& sourceParent, int sourceStart, int sourceEnd, const QModelIndex& destParent, int dest) +{ + Q_UNUSED(sourceParent) + Q_UNUSED(sourceStart) + Q_UNUSED(sourceEnd) + Q_UNUSED(destParent) + Q_UNUSED(dest) + endResetModel(); +} + +void PaginateModel::_k_sourceRowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) +{ + if(!isIntervalValid(parent, start, end)) { + return; + } + + if(canSizeChange()) { + const int removedCount = end-start; + const int newStart = qMax(start-m_firstItem, 0); + beginRemoveRows(QModelIndex(), newStart, newStart+removedCount); + } else { + beginResetModel(); + } +} + +void PaginateModel::_k_sourceRowsRemoved(const QModelIndex& parent, int start, int end) +{ + if(!isIntervalValid(parent, start, end)) { + return; + } + + if(canSizeChange()) { + endRemoveRows(); + } else { + beginResetModel(); + } +} + +int PaginateModel::lastItem() const +{ + return m_firstItem + rowCount(); +} diff --git a/discover/PaginateModel.h b/discover/PaginateModel.h new file mode 100644 index 0000000..a1b5643 --- /dev/null +++ b/discover/PaginateModel.h @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2014 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef PAGINATEMODEL_H +#define PAGINATEMODEL_H + +#include + +/** + * @class PaginateModel + * + * This class can be used to create representations of only a chunk of a model. + * + * With this component it will be possible to create views that only show a page + * of a model, instead of drawing all the elements in the model. + */ +class PaginateModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(int pageSize READ pageSize WRITE setPageSize NOTIFY pageSizeChanged) + Q_PROPERTY(int firstItem READ firstItem WRITE setFirstItem NOTIFY firstItemChanged) + Q_PROPERTY(QAbstractItemModel* sourceModel READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged) + Q_PROPERTY(int currentPage READ currentPage NOTIFY firstItemChanged) + Q_PROPERTY(int pageCount READ pageCount NOTIFY pageCountChanged) + + /** If enabled, ensures that pageCount and pageSize are the same. */ + Q_PROPERTY(bool staticRowCount READ hasStaticRowCount WRITE setStaticRowCount) + + public: + explicit PaginateModel(QObject* object = nullptr); + ~PaginateModel() override; + + int pageSize() const; + void setPageSize(int count); + + int firstItem() const; + void setFirstItem(int row); + + /** + * @returns Last visible item. + * + * Convenience function + */ + int lastItem() const; + + QAbstractItemModel* sourceModel() const; + void setSourceModel(QAbstractItemModel* model); + + QModelIndex mapToSource(const QModelIndex& idx) const; + QModelIndex mapFromSource(const QModelIndex& idx) const; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + + int currentPage() const; + int pageCount() const; + QHash roleNames() const override; + + void setStaticRowCount(bool src); + bool hasStaticRowCount() const; + + Q_SCRIPTABLE void firstPage(); + Q_SCRIPTABLE void nextPage(); + Q_SCRIPTABLE void previousPage(); + Q_SCRIPTABLE void lastPage(); + + private Q_SLOTS: + void _k_sourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end); + void _k_sourceRowsInserted(const QModelIndex &parent, int start, int end); + void _k_sourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + void _k_sourceRowsRemoved(const QModelIndex &parent, int start, int end); + void _k_sourceRowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest); + void _k_sourceRowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest); + + void _k_sourceColumnsAboutToBeInserted(const QModelIndex &parent, int start, int end); + void _k_sourceColumnsInserted(const QModelIndex &parent, int start, int end); + void _k_sourceColumnsAboutToBeRemoved(const QModelIndex &parent, int start, int end); + void _k_sourceColumnsRemoved(const QModelIndex &parent, int start, int end); + void _k_sourceColumnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest); + void _k_sourceColumnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest); + + void _k_sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles); + void _k_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last); + + void _k_sourceModelAboutToBeReset(); + void _k_sourceModelReset(); + + Q_SIGNALS: + void pageSizeChanged(); + void firstItemChanged(); + void sourceModelChanged(); + void pageCountChanged(); + + private: + bool canSizeChange() const; + bool isIntervalValid(const QModelIndex& parent, int start, int end) const; + + int rowsByPageSize(int size) const; + int m_firstItem; + int m_pageSize; + QAbstractItemModel* m_sourceModel; + bool m_hasStaticRowCount; +}; + +#endif diff --git a/discover/ReadFile.cpp b/discover/ReadFile.cpp new file mode 100644 index 0000000..ab94468 --- /dev/null +++ b/discover/ReadFile.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2018 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "ReadFile.h" +#include "discover_debug.h" + +ReadFile::ReadFile() +{ + connect(&m_watcher, &QFileSystemWatcher::fileChanged, this, &ReadFile::openNow); + connect(&m_file, &QFile::readyRead, this, &ReadFile::process); +} + +void ReadFile::componentComplete() +{ + completed = true; + openNow(); +} + +void ReadFile::setPath(QString path) +{ + processPath(path); + if (path == m_file.fileName()) + return; + + if (path.isEmpty()) + return; + + if (m_file.isOpen()) + m_watcher.removePath(m_file.fileName()); + + m_file.setFileName(path); + m_sizeOnSet = m_file.size() + 1; + openNow(); + + m_watcher.addPath(m_file.fileName()); +} + +void ReadFile::openNow() +{ + if (!completed) + return; + + if (!m_contents.isEmpty()) { + m_contents.clear(); + Q_EMIT contentsChanged(m_contents); + } + m_file.close(); + const auto open = m_file.open(QIODevice::ReadOnly | QIODevice::Text); + Q_EMIT pathChanged(path()); + if (!open) + return; + + m_stream.reset(new QTextStream(&m_file)); + m_stream->seek(m_sizeOnSet); + process(); +} + +void ReadFile::processPath(QString& path) +{ + const QRegularExpression envRx(QStringLiteral("\\$([A-Z_]+)")); + auto matchIt = envRx.globalMatch(path); + while(matchIt.hasNext()) { + auto match = matchIt.next(); + path.replace(match.capturedStart(), match.capturedLength(), QString::fromUtf8(qgetenv(match.capturedRef(1).toUtf8().constData()))); + } +} + +void ReadFile::process() +{ + const QString read = m_stream->readAll(); + + if (m_filter.isValid() && !m_filter.pattern().isEmpty()) { + auto it = m_filter.globalMatch(read); + while(it.hasNext()) { + const auto match = it.next(); + m_contents.append(match.capturedRef(match.lastCapturedIndex())); + m_contents.append(QLatin1Char('\n')); + } + } else + m_contents += read; + Q_EMIT contentsChanged(m_contents); +} + +void ReadFile::setFilter(const QString& filter) +{ + m_filter = QRegularExpression(filter); + if (!m_filter.isValid()) + qCDebug(DISCOVER_LOG) << "error" << m_filter.errorString(); + Q_ASSERT(filter.isEmpty() || m_filter.isValid()); +} + +QString ReadFile::filter() const +{ + return m_filter.pattern(); +} + diff --git a/discover/ReadFile.h b/discover/ReadFile.h new file mode 100644 index 0000000..a53732a --- /dev/null +++ b/discover/ReadFile.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2018 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef READFILE_H +#define READFILE_H + +#include +#include +#include +#include +#include +#include + +class ReadFile : public QObject, public QQmlParserStatus +{ +Q_OBJECT +Q_INTERFACES(QQmlParserStatus) +Q_PROPERTY(QString contents READ contents NOTIFY contentsChanged) +Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) +Q_PROPERTY(QString filter READ filter WRITE setFilter FINAL) +public: + ReadFile(); + + QString contents() const { return m_contents; } + QString path() const { return m_file.fileName(); } + void setPath(QString path); + + QString filter() const; + void setFilter(const QString &filter); + + void classBegin() override {} + void componentComplete() override; + +Q_SIGNALS: + void pathChanged(const QString &path); + void contentsChanged(const QString &contents); + +private: + void process(); + void openNow(); + void processPath(QString& path); + + bool completed = false; + QFile m_file; + QString m_contents; + QSharedPointer m_stream; + QFileSystemWatcher m_watcher; + QRegularExpression m_filter; + qint64 m_sizeOnSet = 0; +}; + +#endif // READFILE_H diff --git a/discover/UnityLauncher.cpp b/discover/UnityLauncher.cpp new file mode 100644 index 0000000..8ec9720 --- /dev/null +++ b/discover/UnityLauncher.cpp @@ -0,0 +1,84 @@ +/* + * Copyright 2016 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#include "UnityLauncher.h" + +#include +#include +#include + +UnityLauncher::UnityLauncher(QObject *parent) : QObject(parent) +{ + +} + +UnityLauncher::~UnityLauncher() = default; + +QString UnityLauncher::launcherId() const +{ + return m_launcherId; +} + +void UnityLauncher::setLauncherId(const QString &launcherId) +{ + m_launcherId = launcherId; +} + +bool UnityLauncher::progressVisible() const +{ + return m_progressVisible; +} + +void UnityLauncher::setProgressVisible(bool progressVisible) +{ + if (m_progressVisible != progressVisible) { + m_progressVisible = progressVisible; + + update({ {QStringLiteral("progress-visible"), progressVisible} }); + } +} + +int UnityLauncher::progress() const +{ + return m_progress; +} + +void UnityLauncher::setProgress(int progress) +{ + if (m_progress != progress) { + m_progress = progress; + + update({ {QStringLiteral("progress"), progress / 100.0} }); + } +} + +void UnityLauncher::update(const QVariantMap &properties) +{ + if (m_launcherId.isEmpty()) { + return; + } + + QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/org/discover/UnityLauncher"), + QStringLiteral("com.canonical.Unity.LauncherEntry"), + QStringLiteral("Update")); + message.setArguments({m_launcherId, properties}); + QDBusConnection::sessionBus().send(message); +} diff --git a/discover/UnityLauncher.h b/discover/UnityLauncher.h new file mode 100644 index 0000000..9f940c6 --- /dev/null +++ b/discover/UnityLauncher.h @@ -0,0 +1,56 @@ +/* + * Copyright 2016 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) version 3, or any + * later version accepted by the membership of KDE e.V. (or its + * successor approved by the membership of KDE e.V.), which shall + * act as a proxy defined in Section 6 of version 3 of the license. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#ifndef KDEVPLATFORM_UNITYLAUNCHER_H +#define KDEVPLATFORM_UNITYLAUNCHER_H + +#include + +class UnityLauncher : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString launcherId READ launcherId WRITE setLauncherId) + Q_PROPERTY(bool progressVisible READ progressVisible WRITE setProgressVisible) + Q_PROPERTY(int progress READ progress WRITE setProgress) + +public: + explicit UnityLauncher(QObject *parent = nullptr); + ~UnityLauncher() override; + + QString launcherId() const; + void setLauncherId(const QString &launcherId); + + bool progressVisible() const; + void setProgressVisible(bool progressVisible); + + int progress() const; + void setProgress(int progress); + +private: + void update(const QVariantMap &properties); + + QString m_launcherId; + bool m_progressVisible = false; + int m_progress = 0; + +}; + +#endif // KDEVPLATFORM_UNITYLAUNCHER_H diff --git a/discover/assets.qrc b/discover/assets.qrc new file mode 100644 index 0000000..bbeb540 --- /dev/null +++ b/discover/assets.qrc @@ -0,0 +1,7 @@ + + + + banners/banner.svg + banners/coffee.jpg + + diff --git a/discover/autotests/CMakeLists.txt b/discover/autotests/CMakeLists.txt new file mode 100644 index 0000000..8b7342a --- /dev/null +++ b/discover/autotests/CMakeLists.txt @@ -0,0 +1,22 @@ +set(plasma_discover_autotest_SRCS) +ecm_qt_declare_logging_category(plasma_discover_autotest_SRCS HEADER discover_debug.h IDENTIFIER DISCOVER_LOG CATEGORY_NAME org.kde.plasma.discover) +ecm_add_test(PaginateModelTest.cpp ../PaginateModel.cpp ${plasma_discover_autotest_SRCS} ${CMAKE_SOURCE_DIR}/libdiscover/tests/modeltest.cpp TEST_NAME PaginateModelTest LINK_LIBRARIES Qt5::Test Qt5::Gui) +target_include_directories(PaginateModelTest PUBLIC ${CMAKE_SOURCE_DIR}/libdiscover/) + +if(BUILD_DummyBackend) + add_test(NAME toplevels COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/toplevels.qml") + add_test(NAME install COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/install.qml") + + add_test(NAME appstreamUrl COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/appstreamUrl.qml" "dummy://techie1") + add_test(NAME missingResource COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/missingResource.qml" "dummy://caca") + add_test(NAME apparg COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/appstreamUrl.qml" --application "dummy://techie1") + add_test(NAME categoryarg COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/categoryArg.qml" --category "dummy 2.1") + add_test(NAME wrongInput COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/wrongInput.qml" "CMakeLists.txt") + add_test(NAME packageArgument COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/packageArgument.qml" + --local-filename "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt") + add_test(NAME updateandinstall COMMAND Plasma::Discover --test "${CMAKE_CURRENT_SOURCE_DIR}/updateandinstall.qml") + +# Just make sure they exit successfully + add_test(NAME listbackends COMMAND Plasma::Discover --listbackends) + add_test(NAME listmodes COMMAND Plasma::Discover --listmodes) +endif() diff --git a/discover/autotests/DiscoverTest.qml b/discover/autotests/DiscoverTest.qml new file mode 100644 index 0000000..3713f68 --- /dev/null +++ b/discover/autotests/DiscoverTest.qml @@ -0,0 +1,113 @@ +import QtQuick 2.1 +import QtTest 1.1 +import org.kde.discover.app 1.0 + +Item +{ + id: testRoot + + signal reset() + property QtObject appRoot + + function verify(condition, msg) { + if (!condition) { + console.trace(); + var e = new Error(condition + (msg ? (": " + msg) : "")) + e.object = testRoot; + throw e; + } + } + + function compare(valA, valB, msg) { + if (valA !== valB) { + console.trace(); + var e = new Error(valA + " !== " + valB + (msg ? (": " + msg) : "")) + e.object = testRoot; + throw e; + } + } + + function typeName(obj) { + var name = obj.toString(); + var idx = name.indexOf("_QMLTYPE_"); + return name.substring(0, idx); + } + + function isType(obj, typename) { + return obj && obj.toString().indexOf(typename+"_QMLTYPE_") == 0 + } + + function chooseChild(obj, validator) { + if (validator(obj)) + return true; + var children = obj.data ? obj.data : obj.contentData + for(var v in children) { + var stop = chooseChild(children[v], validator) + if (stop) + return true + } + return false + } + + function findChild(obj, typename) { + var ret = null; + chooseChild(obj, function(o) { + var found = isType(o, typename); + if (found) { + ret = o; + } + return found + }) + return ret; + } + + SignalSpy { + id: spy + } + + function waitForSignal(object, name, timeout) { + if (!timeout) timeout = 5000; + + spy.clear(); + spy.signalName = "" + spy.target = object; + spy.signalName = name; + verify(spy); + verify(spy.valid); + verify(spy.count == 0); + + try { + spy.wait(timeout); + } catch (e) { + console.warn("wait for signal '"+name+"' failed") + return false; + } + return spy.count>0; + } + + function waitForRendering() { + return waitForSignal(appRoot, "frameSwapped") + } + + property string currentTest: "" + onCurrentTestChanged: console.log("changed to test", currentTest) + + Connections { + target: ResourcesModel + property bool done: false + onIsFetchingChanged: { + if (ResourcesModel.isFetching || done) + return; + + done = true; + for(var v in testRoot) { + if (v.indexOf("test_") == 0) { + testRoot.currentTest = v; + testRoot.reset(); + testRoot[v](); + } + } + Qt.quit(); + } + } +} diff --git a/discover/autotests/PaginateModelTest.cpp b/discover/autotests/PaginateModelTest.cpp new file mode 100644 index 0000000..6096005 --- /dev/null +++ b/discover/autotests/PaginateModelTest.cpp @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2015 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include "../PaginateModel.h" +#include +#include + +class PaginateModelTest : public QObject +{ + Q_OBJECT +public: + PaginateModelTest() + : m_testModel(new QStandardItemModel) + { + for(int i=0; i<13; ++i) { + m_testModel->appendRow(new QStandardItem(QStringLiteral("figui%1").arg(i))); + } + } + +private Q_SLOTS: + void testPages() { + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(m_testModel); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 3); + QCOMPARE(pm.rowCount(), 5); + QCOMPARE(pm.firstItem(), 0); + QCOMPARE(pm.currentPage(), 0); + pm.nextPage(); + QCOMPARE(pm.rowCount(), 5); + QCOMPARE(pm.currentPage(), 1); + pm.nextPage(); + QCOMPARE(pm.rowCount(), 3); + QCOMPARE(pm.currentPage(), 2); + + pm.firstPage(); + QCOMPARE(pm.firstItem(), 0); + pm.setFirstItem(0); + QCOMPARE(pm.firstItem(), 0); + QCOMPARE(pm.currentPage(), 0); + pm.lastPage(); + QCOMPARE(pm.firstItem(), 10); + QCOMPARE(pm.currentPage(), 2); + } + + void testPageSize() { + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(m_testModel); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 3); + pm.setPageSize(10); + QCOMPARE(pm.pageCount(), 2); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 3); + } + + void testItemAdded() { + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(m_testModel); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 3); + QSignalSpy spy(&pm, &QAbstractItemModel::rowsAboutToBeInserted); + m_testModel->insertRow(3, new QStandardItem(QStringLiteral("mwahahaha"))); + m_testModel->insertRow(3, new QStandardItem(QStringLiteral("mwahahaha"))); + QCOMPARE(spy.count(), 0); + m_testModel->appendRow(new QStandardItem(QStringLiteral("mwahahaha"))); + + pm.lastPage(); + for (int i=0; i<7; ++i) + m_testModel->appendRow(new QStandardItem(QStringLiteral("mwahahaha%1").arg(i))); + QCOMPARE(spy.count(), 4); + pm.firstPage(); + + for (int i=0; i<7; ++i) + m_testModel->appendRow(new QStandardItem(QStringLiteral("faraway%1").arg(i))); + QCOMPARE(spy.count(), 4); + } + + void testItemAddBeginning() { + QStandardItemModel smallerModel; + + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(&smallerModel); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 1); + QCOMPARE(pm.rowCount(), 0); + smallerModel.insertRow(0, new QStandardItem(QStringLiteral("just one"))); + QCOMPARE(pm.pageCount(), 1); + QCOMPARE(pm.rowCount(), 1); + smallerModel.removeRow(0); + QCOMPARE(pm.pageCount(), 1); + QCOMPARE(pm.rowCount(), 0); + } + + void testItemRemoved() { + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(m_testModel); + pm.setPageSize(5); + QCOMPARE(pm.pageCount(), 5); + QSignalSpy spy(&pm, &QAbstractItemModel::rowsAboutToBeRemoved); + m_testModel->removeRow(3); + QCOMPARE(spy.count(), 0); + spy.clear(); + + pm.lastPage(); + m_testModel->removeRow(m_testModel->rowCount()-1); + QCOMPARE(spy.count(), 1); + } + + void testMove() { + PaginateModel pm; + new ModelTest(&pm, &pm); + pm.setSourceModel(m_testModel); + pm.setPageSize(5); + m_testModel->moveRow({}, 0, {}, 3); + } + +private: + QStandardItemModel* const m_testModel; +}; + +QTEST_MAIN( PaginateModelTest ) + +#include "PaginateModelTest.moc" diff --git a/discover/autotests/appstreamUrl.qml b/discover/autotests/appstreamUrl.qml new file mode 100644 index 0000000..e1d1dfa --- /dev/null +++ b/discover/autotests/appstreamUrl.qml @@ -0,0 +1,11 @@ +import QtQuick 2.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_open() { + verify(appRoot.stack.currentItem, "has a loading page"); + compare(appRoot.stack.currentItem.title, "", "same title"); + compare(appRoot.stack.currentItem.application.packageName, "techie1", "pkgname"); + } +} diff --git a/discover/autotests/categoryArg.qml b/discover/autotests/categoryArg.qml new file mode 100644 index 0000000..7a4a5a9 --- /dev/null +++ b/discover/autotests/categoryArg.qml @@ -0,0 +1,12 @@ +import QtQuick 2.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_openCategory() { + verify(appRoot.stack.currentItem, "has a page"); + while (appRoot.stack.currentItem.title === "") + verify(waitForRendering()); + compare(appRoot.stack.currentItem.title, "dummy 2.1", "same title"); + } +} diff --git a/discover/autotests/install.qml b/discover/autotests/install.qml new file mode 100644 index 0000000..9f361e9 --- /dev/null +++ b/discover/autotests/install.qml @@ -0,0 +1,41 @@ +import QtQuick 2.0 +import org.kde.discover.app 1.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_openResource() { + app.openApplication("dummy://dummy.1"); + verify(waitForSignal(appRoot.stack, "currentItemChanged")) + verify(appRoot.stack.currentItem, "has a page"); + + var button = findChild(appRoot.stack.currentItem, "InstallApplicationButton") + verify(!button.isActive) + button.click() + verify(button.isActive) + verify(waitForSignal(button, "isActiveChanged")) + verify(!button.isActive) + } + + SignalSpy { + id: cancelSpy + target: TransactionModel + signalName: "transactionRemoved" + } + function test_cancel() { + app.openApplication("dummy://dummy.2"); + verify(waitForSignal(appRoot.stack, "currentItemChanged")) + var button = findChild(appRoot.stack.currentItem, "InstallApplicationButton") + verify(!button.isActive) + + cancelSpy.clear() + var state = button.application.state; + + button.click() + verify(button.isActive) + button.listener.cancel() + verify(!button.isActive) + compare(cancelSpy.count, 1) + verify(state == button.application.state) + } +} diff --git a/discover/autotests/missingResource.qml b/discover/autotests/missingResource.qml new file mode 100644 index 0000000..0add2b1 --- /dev/null +++ b/discover/autotests/missingResource.qml @@ -0,0 +1,9 @@ +import QtQuick 2.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_open() { + compare(appRoot.stack.currentItem.title, "Sorry...") + } +} diff --git a/discover/autotests/packageArgument.qml b/discover/autotests/packageArgument.qml new file mode 100644 index 0000000..a121cc3 --- /dev/null +++ b/discover/autotests/packageArgument.qml @@ -0,0 +1,13 @@ +import QtQuick 2.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_open() { + verify(appRoot.stack.currentItem, "has a page"); + while (appRoot.stack.currentItem.title === "Loading...") + waitForRendering(); + compare(appRoot.stack.currentItem.title, "", "same title"); + compare(appRoot.stack.currentItem.application.packageName, "CMakeLists.txt", "pkgname"); + } +} diff --git a/discover/autotests/toplevels.qml b/discover/autotests/toplevels.qml new file mode 100644 index 0000000..ce1e823 --- /dev/null +++ b/discover/autotests/toplevels.qml @@ -0,0 +1,127 @@ +import QtQuick 2.0 +import org.kde.discover.app 1.0 +import QtTest 1.1 + +DiscoverTest +{ + onReset: { + appRoot.currentTopLevel = appRoot.topBrowsingComp + } + + function test_openCategory() { + var categoryName = "dummy 3"; + app.openCategory(categoryName); + verify(appRoot.stack.currentItem, "has a page"); + compare(appRoot.stack.currentItem.title, categoryName, "same title"); + verify(waitForRendering()) + + categoryName = "dummy 4"; + app.openCategory(categoryName); + verify(appRoot.stack.currentItem, "has a page"); + compare(appRoot.stack.currentItem.title, categoryName, "same title"); + verify(waitForRendering()) + } + + function test_openHome() { + var drawer = appRoot.globalDrawer; + var firstitem; + chooseChild(drawer, function(object) { + if (object.hasOwnProperty("label") && object.label.indexOf("ummy")>0) { + firstitem = object; + return true + } + return false; + }); + var categoryName = "dummy 3"; + firstitem.clicked() + + drawer.bannerClicked() + compare(appRoot.stack.currentItem.title, "Featured", "same title"); + compare(drawer.currentSubMenu, null) + } + + function test_navigateThenUpdate() { + var drawer = appRoot.globalDrawer; + var firstitem; + chooseChild(drawer, function(object) { + if (object.hasOwnProperty("label") && object.label.indexOf("ummy")>0) { + firstitem = object; + return true + } + return false; + }); + var updateButton; + chooseChild(drawer, function(object) { + if (object.objectName == "updateButton") { + updateButton = object; + return true + } + return false; + }); + + firstitem.clicked() + verify(updateButton.enabled) + updateButton.clicked() + + compare(appRoot.currentTopLevel, appRoot.topUpdateComp, "correct component, updates"); + } + + function test_update() { + app.openMode("Update"); + + var updatePage = appRoot.stack.currentItem; + compare(typeName(updatePage), "UpdatesPage") + compare(updatePage.state, "has-updates", "to update") + var action = updatePage.currentAction + verify(action); + action.triggered(updatePage); + compare(updatePage.state, "has-updates", "updating") + + //make sure the window doesn't close while updating + verify(appRoot.visible); + verify(waitForRendering()) + appRoot.close() + verify(appRoot.visible); + + while(updatePage.state !== "now-uptodate") + waitForSignal(updatePage, "stateChanged") + compare(ResourcesModel.updatesCount, 0, "should be up to date") + } + + function test_search() { + app.openMode("Browsing"); + var searchField = findChild(appRoot.globalDrawer.topContent[0], "SearchField"); + verify(searchField); + searchField.text = "cocacola" + searchField.accepted() + while(!isType(appRoot.stack.currentItem, "ApplicationsListPage")) + verify(waitForSignal(appRoot.stack, "currentItemChanged")) + var listPage = appRoot.stack.currentItem + while(listPage.count>0) + verify(waitForSignal(listPage, "countChanged")) + compare(listPage.count, 0) + compare(listPage.search, "cocacola") + searchField.text = "dummy" + searchField.accepted() + compare(listPage.search, searchField.text) +// compare(listPage.count, ResourcesModel.rowCount()/2) + } + + function test_modes() { + app.openMode("Browsing"); + compare(appRoot.currentTopLevel, appRoot.topBrowsingComp, "correct component, browsing"); + verify(waitForRendering()) + + app.openMode("Installed"); + compare(appRoot.currentTopLevel, appRoot.topInstalledComp, "correct component, installed"); + verify(waitForRendering()) + + app.openMode("Update"); + compare(appRoot.currentTopLevel, appRoot.topUpdateComp, "correct component, updates"); + verify(waitForRendering()) + + app.openMode("Sources"); + compare(appRoot.currentTopLevel, appRoot.topSourcesComp, "correct component, sources"); + verify(waitForRendering()) + } +} diff --git a/discover/autotests/updateandinstall.qml b/discover/autotests/updateandinstall.qml new file mode 100644 index 0000000..ca3bbed --- /dev/null +++ b/discover/autotests/updateandinstall.qml @@ -0,0 +1,45 @@ +import QtQuick 2.0 +import org.kde.discover.app 1.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_openResource() { + app.openMode("Update"); + + {// we start an upate + var updatePage = appRoot.stack.currentItem; + compare(typeName(updatePage), "UpdatesPage") + compare(updatePage.state, "has-updates", "to update") + var action = updatePage.currentAction + verify(action); + action.triggered(null); + compare(updatePage.state, "has-updates", "updating") + } + + {//we start installing a resource + app.openApplication("dummy://dummy.1"); + verify(waitForSignal(appRoot.stack, "currentItemChanged")) + + var button = findChild(appRoot.stack.currentItem, "InstallApplicationButton") + console.log("button", appRoot.stack.currentItem, button) + verify(button) + verify(!button.isActive) + button.click() + } + + app.openMode("Update"); + { + var updatePage = appRoot.stack.currentItem; + compare(typeName(updatePage), "UpdatesPage") + while(updatePage.state === "fetching") + waitForSignal(updatePage, "stateChanged") + compare(updatePage.state, "now-uptodate", "to update") + var action = updatePage.currentAction + verify(!action.visible) + } + + while(updatePage.state != "now-uptodate") + waitForSignal(updatePage, "stateChanged") + } +} diff --git a/discover/autotests/wrongInput.qml b/discover/autotests/wrongInput.qml new file mode 100644 index 0000000..2b5c55a --- /dev/null +++ b/discover/autotests/wrongInput.qml @@ -0,0 +1,8 @@ +import QtQuick 2.0 +import QtTest 1.1 + +DiscoverTest +{ + function test_open() { + } +} diff --git a/discover/banners/banner.svg b/discover/banners/banner.svg new file mode 100644 index 0000000..e8da332 --- /dev/null +++ b/discover/banners/banner.svg @@ -0,0 +1,194 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/discover/banners/coffee.jpg b/discover/banners/coffee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87c04292040b217fa7c9e3a09b8cff42027ac1ac GIT binary patch literal 693875 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�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%0A0_5l8Z_88>Q>_4?}%6UB?_eO@e(3U&D-?<0DK5X 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 Xw2 z6`&-sEv#$_I2I5|9TQNE0ky8=+%5Jtz#xIuB|go4I{yGcH@NeIivmLONlgSU{S@p$ z=y232in)$u5=S{$fwt}1-7vroQwvkd$s*|hD|r_2iDVd#XqEyL0tWGe`kT4M5CJ4b zB;w9w)NO8_F?K>Mk}AdM2I>nCY(TalR7N;U#2#4z)4JH~EsH9MRMn|f6%pK)B$XBy z>_?nYXH^kMjH^g5x~Q;Ut|+kW6DSTs-H*y2V51O%^(Iwg0CEPx{YCH6_?AG1NY0fM z<<)GYhQ9v*;}%mTB&7N^qHXC1s2}4KvcSZ`Wh#!$&)oF4d`c?p`fY0x#EcPJVgdDi z@hH0tf%$R9@i~c8sU((cN+sC}m8Ym=Bs@-l>_vsYzAlQfWQn=F^^k>8zOJ_IY!D$L zNecnU>(r}keennpSVkE^Wnyj(u6p$tgdoNWf*vMzaj=t3w()`?4PZ*Ti#D!@u=?T< z>dncs!pcFoByLGK5)lRW0uNaL?Y`IQZGn6QhN<3uK#65e_gesMd@h{q!-z!M z;{bBTqA%1Dh(oDbkxsI@NMlWc_P<`Z7s(IVpY(IabpnGi;o6C1Jff8ljUbH;^C<8! z-|<;@Luux`<_*zPKWFg#sZl~ji4_b$-qsfLj+D{nak@5{V$;Zx!x?uf1@7LJILAKD zrWUBYiH!VrBn`1jh*fGa}ql5DvyIJ*Nu}JDRC+H7sM_8(QDr&u{3P#EB91DVxpe9YE~ftgF&+*)R5Lt$9)mUw&dvO7 z49_i1e9KiEBArNv;P}UBMK~!**~XKp?L{VPa%V(98{6CvV!x@B9&oy)=qmw108g*C|EO+`0bm8LjN;}ZF>R~5F ze~Lc~;;F8t&FgY%iga>$Nb0OzPWqJf)!x{rms6yM*s{{amUh=dbC)kO0{TFFq* zfapY^jav=66Vn-XPf)Lp2k(qHJpz`Qk%M!iu^P02W?%<)J@>V-&Yix)D|o9g;Y`0K zZ1aiads4@AkZ&fYHVB}9Omuv944RC;7C&ZPMo8mZq-pAD_(oisgE`@@GRyONdi9JN zLm*ioa-fh__dN*q$6Lzyg`&c;DO)k=wV5*IaB<*rNvEWiAx{&_7;s(?ZE|{_u>P3y zkn6K#m6j~8A*GGxF+AjzAPWs!iws*xR%oz~Z^thF*Al-cjB+k1|mzA5CA zii3O&jW=drEaDuZETTzd%Bo?7Wf4fCJKgR;QhM6ow`?+4CBJU#Va2MyMr%L(L6a%s z5s-fbc_4AU2o$de|40ZH6DCNNN$@`%>Gq_~fk!Qq}nU-hxe^Z?05KT`} zJtxFdBy0-{>`vY7d}hHI!&ad_teNEACga^6W5VBvABgoFHABJKUVklAHFb*8<+8vF zLUrAl8>(yxIQBZ+nB#@Pq@!J&oH28pW$gCs&x!Kv3?U9Y!n zco^ZF6}7@U*B8NENx;S`${JOrg(;~j`Niqbyw+3lJ-Xaup!M>}4Y0dwqc6i4yL}_{ z2MgyBOAJ!kRz7?J~Y<&;I zYgC}Eo=0DUY`8R8eN=MC`BLgYwq1b-{v3MjSvM<38fv&KY2lGWq~ev552};>a&NJmlJ>0=*5dvFpAOn+nMqVZv@Ng8{}|DM?#RJI_qA9XChQ zs@C!2A3Xk`@Ue~Lf;~5j@)A#Endd0;{7jJ4d_&Vls}QnTkb~#GJQnHWp4NJXqd3|% zxepS552+TB-BqmGw%Bw8W4q(Ltn||CU7MH1x%EX%7@?71XgBkDsms=Zol{8(o5Wn9<@dBK~68K^G&&{jnoB$(OaHOl9%a zAre6wn-W5c3!mgpH7y)7M%oqg$`69CHsSV`c*Qd;V1SIJMYQ$lj#jV5IR5}@H(=L) z`7=AjJPk#eQS$ZjL474s(Vo5Zx;1trafdcNAU-j@cel#T}z>qnyFR87A+p4cUx|8Y7M3OE?F$5;~oOx z+~&F{vpD&a&v^ki4vl+~r?*Y;x4#p(F}U(3xgE;#W0U2L4p9<3R7^Sgb}4bS$De#V z7MmtWJg5w_O{lW+f}*BU%_CWk-nH-G+qdn7!fmlRAdviZDv%+ljKrwEr&Ya=)2<%m zBEE|_A~i56siGgm<&N=W3CD>98Pn`*aFe0zT#sf?0L^ZJZUJ4M9^=BBv_I=9?h6+JDFM~<4{ z=Ss$=PHbTm=nORK)3v>@>KAMSK%laTJxoDey*)7;5iIDVs65D{TitcoiDe4Ht{ArcAlhKLEXGCTPR+|e8 zVti31<`a=DR%m0pGVifEeXzxiBAkOPMi_Mxt9|ZA%fD!>x-SSto7# z;OwC4{{Ws+q<`BQhTk#qif+gbISo59r8r?Qy6?~&3*@^Y`KeOFLc6I3*6nTZEf$@T zmKa`A&v2|k7#b{^CFEilg;TQ*zd?$k?Cmu=YjH4EKsD-S-1{FGvh3_ZV+Ki8fla|1 zSYjtYgjN+3v#D~$cDUOOOcpUCDiRuUbXm%K_TRn-G0@Jf zBQor%Z|8_a9BEh%me%ClpY836FVVRs+T}3!f+77^mc5<86EHSWnCtIY2vh(i!dvFl;ie0hmZbLE}fc;bd>Yw7}+ z9+AXIni@0dYyEIg$tdv3oD+N(R8%!paHx{UU7Je)ZQpP)vknR7d~{^Xk~q<$%Q9#w zVrqsSfZAkLQDAME}W6>b^pUrIrje`xx z+Z!Va=u>3T91n$RmQGu00lay`QUUfbk_L^X(h4c`Kl|XxWaN#S6FVRUj_rP<5S7J+ zL~}@q8xVYb+X*9Xyqtz%%yAJumLc#Mnatjr>Lh%lw%DR72JF+vrd24nBR5&c#U~hTiyvB#64x#O)+b89}kXVdn~)pyG;L!lq4N zPR>I%+C|2nCmb&!tXNeWwD?@vkj=P(M2wRV+OE3DxVK^ZNib`-bg!GRqY<)vZr;aG3j~kaGo3>e+beQYCnGLq`eB)q} zKub?os!2!Z1mqIZ+!9-(jN;}Dr zY8#pZDvPOJ$Ire5D&$|DuewOUwyOiRh&WuCVl@t>)tEGf*K#@&++!Yj?L(m(W><)+ zUK!DvT@Y*ZYBy20TzD@xsdq`9i^t)#dG359) zfi#A)c8t@A;e}O2him@;rxhD&(Ag?{ot^2Xt6D)$k1SHVt)e=w-2VX0v8x^_XZ&KV zi<9`)=2lilD;{X-Y0+F23{+W#uWRELc)U{D{TeY!(dCeSHt}x@asFWqK0!~KQc@{~ zijkP32`mfBPeN^vU;RI;{v1^P`#IiIM71kwHas)`08pch_|38$!!C}739{dck~(%Q zu}ZDEZzrcrbUeqLc`@#cX<5F5$8fg}tslz2yV{Juzbq4tG z^Ub?0#O!0kvOJz+C*pQtl4cZnRJ>10xt&r;e~*)w3^eF1vp-T#e>n7dKjirrv2>8E z*s)=b?`+m^Z{n>6XKc}3cB^5{H0yn%x6OYT^?H9lf#bP$dECAyF8&3i{87l_rKyshNRv>|i_HPI*xLQ^ zGWqyzdr1!wlXv7*=XvEX5E^koMgcH4G3IUMw$@whZI2t|e5CcigFD(SAMyD-pE}^$ z`nidwrJua7BcU2s+qJ#%=CbJXC%rBX_AO2{slG(03sO}>Nl_a*%nI2>izx1V8-Dh{ z^B%%=E>U$H(`NN)OG%eYB=B9dnC*4y2)5e|@XT>@bcIc*u1i>QypBB9EZ6u%Pnts= zmZ78O5aa+&#=zSfpp*Pt;LDM+^Dg3g2qYP7RS8j59n6QB>DAZ%TOAqX#fk|;#<9vy z*v)bH_>fCS9D3C2btLF-smC)sqa}1d8feeZP|@Yn*G)%E#%h6nVv*WVbeq4b+4 zNuK6uP=cxh7486g0BklG80V6e1w2ZN?3Ge_u_Z)p9Cy@O_fxk|+~cE#{Ew3!MYEz5 zv^80_X;fs(o|$8DqGAD8@u%&-*Bc|JTne659)sod5@q!ng;Gh&MmjmNj^nNT;g1|~ za}jQP_+yYr5}|6^RJ$W;(3VE9^MyNnlk`#7!hLI@2Q&!*VQ>YvC&9)ny&7@$W4N%* zT508sMjKk$f!nC>j#j0kr-taMtEirelQEVh6T1KtmvS{VfnodOJb98{hNZ}-;Z-$G zYoC7;i4Z|eRM43ugIcYDuwMOk+a2#0fzLc*b9}CKj|)Ft@ZA&BWvI;}taB#oM2lrh4q!qM}FB zc?c#--H7wwB^p~`5fW08y{ z;*_>q5Mu;-X38j#ZWQ4k?8c|6D$--s9sxHvW z#6||yW+YItge=xI7$Rdv#GfUVdN3#4T}*t(Onuyg#KcxFd@MgVTYz= znyx{~TB`h#$)Y1-O6-1^G{iJ5GD^hB8b*

ZfaX7`r7CkrqgF$pCBEwX8aOVp$Sr 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%0D&&T5Kvjiez_NF7MrG3YOjW?5}~ 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 `H5qMwxXL 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

OHY6ffhulLbAxnI%+Mp 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%0D+1#zssWE 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 R1zUk(Zs*1U-B3!8|Je?jE?WQq literal 0 HcmV?d00001 diff --git a/discover/banners/installedcrop.jpg b/discover/banners/installedcrop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1933504cc32ee45ada0ffc38c7a58faafd8a416 GIT binary patch literal 448647 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 T(n5X{j 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≦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

pURA8L@ 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


|K*Pi9*VS^C$WC~R~n9o*nJ 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

LNKG5N||ci@Dkwr#!C}SlZ6e@n20Q8 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 literal 0 HcmV?d00001 diff --git a/discover/banners/syssettingscrop.jpg b/discover/banners/syssettingscrop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1c81f693c12ebdbd45fe5c4812107bd0d227a55 GIT binary patch literal 515325 zcmeFZcT`hL_b_}C0uls`6vZeS5D<`(KtdG^RZ2n!0Rd@|1f+$Ihyf8Pq7*5HBE1&{ zL_tJU6anc?%GGP3+b9;edha*Ea=p)U-{1P)wZ669_m6K}hcoBQ-h1ZE-m}|G{OieI zze6ZPJp(-m27@3N_y_&<96qQULOTvY1_n|PCj>!U&{h~6+5~Db;6j1=R&c)nE?yWL z3uWU%!`L_Ox!`%%_j(DaOMHicgE|i2a)Wyfxa2{dAKaV4l^F$x48Xk?T(onD4LX7> z!k}n7d;56*xMOrpEHFw~9q{}fTr7|u_rnHcQ;fWndRI!SxSS1WjQB__^ zRRIg>(J2&+gqsg0nCcur38K(3p+13_U}x_DNeq?dPL-ik{C!RY2GD%GF}_rv03Ux@ zOrW>F?+Isrs;sMzm)r@OE5+NN0zqhq8TIX3t-(j-e6Kr#x=8G|`CtR%+W)=o2I^4K zCI|s;Sb2FYTM`@+0QKVl9`U^%4(hNJu8r?W0d;uFH~LH#%=h;Npw9mNeFdm*O8M3o zJD`R9UPpmC*LRpY0Fw-evHHc~ASmURI+XW)JUA>CmiLX$Uw?sq^S;gfF~DH9@AV6S zz?On<<7oyow|=kR19eov-`@)_`c?`Vu1Pne*f!FNXEoBfaXOD zqqt#QLNSJ>x`(}J-ZYGYEKWgIK~~;U3xf@z;Bbm~H=OHV&-whQ0Rg_Ma&q4Ovd(Tk zE|d)k2yyn6!^vXhpo51(e4SlADFGN4iaX6)egC^#clKjwZtDAw5Xe}vuQr8B(+{Il zEW(T}UBf(GRowO;(%?E6q8j4m>qQB0#)NpC@b*^?QQyBoTou$=ujTdwAiCReRdXG^ z?;zkwegF5d1P2Gp1}n(=(B0*5Dk>^+Sa~^lc^Lp9;~(lB;2a|3?Y|FD;KFRs(4qLd z(rMtMfjocj&dc{Ft$+P4fQ-Q$1Y=Ys`?%4Lhw6ZZq5=3rkiimU3R#Bd%2XOLOCHz6T|7!k$Ljuai!27t522NQH zhfyGaKUg^|>-vWDv;9{D04$?G@bdZ_LS~OQ;`Y z^jP{>+sDfnOph~5xHYhHxNo@s-SiWQM)wMKrh~p@!N2d&Ki>TS`p3up|4jP7jY+_ra28!d~SLx5@jivf+nf`pIN}{+syM`K=T59Xi+$sJ68VV|Ucokg*J)AO5K^Los z)lpK`l~=@T5mYqw@QMn$2j%_;WR`UO-K+y7-;3fMpa}%uKfs6X&su-q^tA=WZ{y+H z(+Qde(5|v>G&faw6`Z0gLEc%$jey6=;9V7!WnA#eDl#~{3jVkPfuN|UsQhhm01}Jb ze^F4N$h*qBDJaMscgDKN;1zH<8D|wGf(%6&tAKSmj(3sADg1-Nw}icCnegXgIMExIPf|j%Uzfa-+F(!N;(LZMGUxes?XLSI< zB9s4pW&H4Pyu7|!uMJpL6FLpJInF13upihB0$xj3S4AEy4NVnoyowT@fKyPxD-j4f zK)$rJ6gO-%nf!04EKYx;YvBFO1^{|2X{P~cS0vyxRWy|}^>jcDr;AsX$EhgeRJ4@{ z^2*A1#cy5*p!*Bz-}L?-ABJVjSsr~L-Ib!gpGBRumcCQh`d?AskC9{X|NHR%Z~yH7 z9j3E9lYi&=PoL$RB4ju(Dhy1naC%ldM&mc@g9uJtk(cQ0ae}dZnE9kFpe}euEY2{4|&@k|J zrGBUUA1yyIEPRd!Y&Z;mN0mUwZVcvU(@$WQvuR25+HjSDd#s|01)&T<6%U+bmG4MD zL4G1>`}l@}RYeWZ`2Q*}#YmX4{AG8#voDoGm&C|mjvD)TQyef7x^6UJYk=Fl@d1DL z{Btn6A-+ETf%I=*fs@0@6EOZ1SK03f|7iV*qxaqAJ1&Qp{=ujp?|uUPKsBYa#^t4< z=}VypfQ~S}bea#H77+R$UHpLiNx;Cu#KMe+a>U1OKG+gGb+J z0On#hXl(HL2l_u@exm+hw-(LW{~J2?8~V>V{3d6AxBo;XJBR#}C{9{Y{(HwbY2_as z{}4Wm=#U^0{WANw$BM4AWF_4J~QxUO{Mb* z424ejp<^Thy*<5sg1s?8EE&Tn5(o-}AKdu`>n9~ZopQoP2YkQx#`027Q6PNp{Xd)j ziDUaW4#>*@hhk&OHgJAv`iZl_7Sj{X-jrX>g*=`hFO9<~EB@&7-@*Qc%CDB>f1vU! z*uPNu4+EnOtRa{QFrhyfz!Ij7QU3?zPg+0L)P`JZ1_t+ zSgBxDtp2ylU-zJGoQMlskFmi-Aow;I+cwx=?a(fe)P%7LE9LmDz~F2Mc8*P;QE;Q> zmnM*v1dV@9K-_FF2##U{d0E(d)8h>zQG%He$WscUGC{JH0WOFKOESc8ok-_%%t}I-0U6C()JF8ITel5>aL?RFO=}nCmZsoy}+4#7u zWbEx}enkzU3{?9t6%A|9F6ScY3^g{+&UZC*+fUG|X8DGb6C7HP6(@{`Pjp{*`k?Uq z^>jvtY*qEk+}u;7%SWVY_0_p=xf&%Lp8d2I+WwmFnOMZ{r zqC~L^t=jAH;XL1)L#UeC^0hlf(_!HkkIkyOK1jbogs9M-rbX$VSAi$5sD<8k^tbC4 z5ISbD@)u;#;b_vgo@@O(M|U{>V$r+huNstAA-j7sqms*kqk-v5eY-+4{U^R2gVhdS zQJ?f5FUi^2(mXSmYK?WfdMz#rowc$$id1&lW-j$^TbQNii8OYua`^deMVHm<;&xIz zx5KyhhL_ypAL*1n_>67t&(mt%!^^i1z8jtt^6%}exeTu$?n)LsdxM=*_zl`TQNgCX zfx=<d!VBpcL)I7vV z<={j^sJn*k`^ctP<+LH!bN)^^Ref`-LHuo6{f`f8v4ZINkm z7u*#NS)cdi6nu39GnHJ^+;i8tT5GH2KV1oK4EWzA!iyHVgC@Ep1t?b z;^)x0Tj75`{QC5QSJO+f!eoiW^+vsTc|vTOKBO}wN2-{Ng1^*?j*i){$-Eh@FgIgb9Wz=z-0cBQj5r3&{Ze z;)!e|5-1;JI3dwwx$PdeuqWK6CKlE17KvqFyW3oE@`YlyMB|86I)% zYz%VG9iKf?G4bw7#^4JR1)29xcNve>giW7RUus(ZdT0AA{F(hsxrkF`_(|VSf2^(h zhqNA^k8m#$73!a~VP>W3m!CW(r&M{-Cx=K3>I*-3ID_N$L?#@+88|bXLc;nn1 z)laI*>rJl4=auGjP@jkrOp*Oo;+t(_ofyKgdoJ5e7{>RRr&<BKl^5=fFeu&E8f-xWjusIN{ zf^F&>VNE<8ynQvrm=)oZNTw`>9WtDaP?;#OaGRg=?$no|=)~Z>1O*C%a(H)-+@^3wyFdur`7f%~s z`0{7w9nCAL&$3GP#0-9UCU@;+V0U@N$J@1Ar)K6mA{;1$$mx)=v?2B~cD};Ple9gG`RdUj@>2dP7EZY$oC5PR&cdxc3(RlKTSbCN#6EjE{y1cM@Q1OTiMqJYk zW1z9Oc*VkgoG|#Td?sw_!-8kuK;MoUrKW-KPbCFmSbpg8psVD~$J+W354-SI`dTX=6Q$v{)!a{27VbTgt<2JBc|9!~EHK+()mzudVfvz5ROXQdd6PtiPJ^hq zlRZ9I%u2VjCfUd$bZ1i&88_h&<~u)Z*77!_b^q{}k3Qm;pE4I?nns^^b%;4SSbG-t z2G7v8hRk7l>(&olSr5%AGpC*GL>kNV*;g(0aA;SY z`jum^nqPeB@w;~2di~E&=iaUOJQ%-U^(^wum-v~d%{RpdD^60zI^Vv?<5KKcq`!QB zT5By}>C|4O;@ZZU0}95Qj(3y91BPVg?vv*8lJO%AulXQMjIF&`JrDH**-U zGw)ZbTFzZDBG2(ojZZ#-wBKd*;Q8wZ1g<`|MHc;oGW<4V0O>JPP3B}gzf>Mr9frnNYZ zA8-iF{9PVSHw*-e6^vwn;}dW}2*VM>iFSfwIH?eW7mou+0vERXpX2D6b9e` z4S-|gBMuQO^q9azaO5F)pa(=090DE))-p-kl!&~C&f_F)gYtyCh4U?vqo|)}E;PUy z!1sWFI|?ECt2w>ck!=tgAGFO0oH~f23JNm{ATk%tcAsTTG@hk0fO`TfgBY4DZ32;@ zHbL$V;M^ zKq6~GU{Jc;O-ao9<{PxVT}#l6)=C*+c0x_HNwr}>q3C}5r_X*7E@4exw{h2p6ki{m zwY~L}FUMIW2X`&~+T0(xKBbpSugtBf^~H4$^##~Zw0!8b*YjjQV5z?ERM=OIur-1C z(8)fN8?%2jjh&nRy0vedtJK`W8nU=qeyZ=}-F5CAvQO$?eOAw&xLto^i_$rtJvq2H zA&2~z##>(EiRe>(kG>xCdwwU!J=t7taQ!bx?8A7A`ejG|OyLjo4-5W}hqu7nxzTLa z6-cmZGC4^caaO33f@Zm%9fPyWEq??rKMl*v5!&`F;ZB5*{coo@vic6LcJ|I2?2|@w zwR8vDLdlpRNZX@gWb?KnUV^ZGjF{#0XpN+Otkel7%LncHBt=es=}H4>ZL)yxn^IBJ zG!=gMwm1eqGL8WW$j~lC=0k8UvBd5Yah5*eHB*@5$XkK$F3W7s4 zh)d((mQ|qEGLZ}vmJe7Des~%KM{x0l82o@Jo*2V~_+5Yxgcym#8eB>RBLM?}F?i!D zV6g}wD?n~lhPsO4U$_Teb4Gp!Rp0MCPXJ>c&*Fa-{X6 zA8k*pD5dH0h&HCj`QEi^qARAUi;z{ZLo$`>0)DIhQ@^=u5;g_9Um25g?QpE~o$Eb# zZ2!W+h_GeHrd6xiW4QXY*SDs73(ddE$yKQPC`O+?^7~i*aQD4U&*$HMaDAf_e)`E5bsoad8;yO7 z{xvr?D@WpMVhMhH$*a%XTT3-Q+u#ij?^kflT9!GbaIxe#Q<|2?A!cAXCHnB1oQA{B z-3J{n3XN?)wRW^K`1%oVA^XVy|4*fksSf){WjXo}RYgeF$w(}s9|Hc)@S+!wrLGQ~ zE_{ZF$Ch~-Y`4ywm`f?m(Gf0}>`kvrGb~1B8WoG|PRu`=@-PbG;5sMm6oYYM?~%d3 z;oC+giS~E$W;d4#8|&utw;>=r&;pr2K)x3Y&DhQsRVg$@cI}a~L09$7x!36~_JyHXLNcClz zUkDk`$b&V}8)Kzxkc=D#1m}UuIR$~ki$GSOFbtwO1e6y9wE+bv=EOiif@i7QhUX6q z2KCtWjyK78;gm)lJ$@56vCH6klHz!&$)dmV@q?xyH~Z0Y4zpGcT&c$Nu<83r9v%6} zqzPw3qvZ4PyO>gk`BUnqZjOaF#5Wbs#COe_OVD~MZ$vGBP(9dN{5s7+;fmaG+t&Si zZ}%mJTZy1pRIX1too5> zHixVq+eBUoSicxK*jrokIUqRn{pzYl$IALepLVUrGL6*PQ>4XbS?66e$44$6-czZ$ zUr%h-+$7N<+x|_h(cs$7p*I;FtK+LGOJPm^^EI~TnWGkD6oy!2o_er(cgw-nTpmit zo6x4QD+6I3GFHVO{pZ~a?U@TFUR<}q2tL}PNaYl zN4&RIr>mclPF+d>O9Ozs2pZf#Ad7%5fr6VzScsAGH?M0B1DhiDrDi$Y8$elV>myBPTly3&7+D@sr^q6R=9Pm=Gl0A5PYIEmf*K)&?+k$9g zS-HveLaLO&``trvGY59vmg%8%%&#@lD{`JUxiTO7ZfCQ^-GlfzQUv+K9DVL2tO~CB zk(R<|ufM#p5USB}Q8prj8PIp_<>DonDg$U-{+YC|`+NRa8hRDxD0;^=)qX{K%%bpO zX?n~krEFd5TZg%?X?@1gjA@A~|5huFr#E zx4ukm5F>L*mLMM`wK+>AV=$LFofsuC!01#ktp|vbmQ9-YL~dSJloDnt&FyRxmsmBj z9{~&zjFn9RB0+pWGKTTr)dn#!5s-$16bl626WRHI^UPRKl_6$Zo1Lji}1(@A0o#R-9k3C_Xk0xMBhXbPI2p4?H^Ib9#0P(H|S zH4*Py!4x0okMmBCR3*oI7#c`Bw;tbS;Z#W`wqESb&EUQurGm1@ ziPsj~X;s0>v!q`5^Va@BtC{ui!Hf;-o4bJp)Pep_gbiTI?<$3gQqEpjH?rfuu{Ub-!XZ z4<7i`pm0H4Neo_rD5|!lID_?q-+2+=x&~>%KH0ivFhbOKTpXATZ#*}S!Z7;u3A|YcyKYi7B;avV<^9G;QGEHKAv3T zqw~|R>m6nL4vNg&^j~~+V_;yazWdqZ5are7)viH_Np*j_b-63+-b$sfS_@}BUBqw6 z1EWVwg`GBe^@shygMq{=N{gTW91ZggeR?I!HtgwXy_Fk#eTEIzmi(@=Lz*RFWZH!$ zqmO$|A8zuS{!&~2LT<$8?z4wEEvIr6I;4s;P7keBmTewH*zBV`$a=`GhJmPZ^_Q4` zWc>ceXP1iOQ2$xOX!%dwMt)s0I!4KH43O&-6O0+4IC?jRn2*xhm_(?lUbE6&^^$S+ zRh#2AX56T@^5Zvlc=9!nisXfDE?4s(Z%7d=$UZAtu^^ETF(ggXM6C2@MSn=ZGwK zmn#Mc2@IfI!$$I0@Zz8W39g4wOg`4KJrP9ADDi68BPNXHCv$QnwL#iqZ47P0=_03U z=$y0$Zc|wM-2%z(UB-YCOxJ+7*c^}HfZFet0HMJ`f)YR@aTAR&HYFuV5R=FSS++ya zT|Dr!kx>wo#|a4v57(3Bhm^dqEt6FXGTn)C=nRiOZG+uW-d07Mi;uq=kdj=PFE22* z5*-a$HOMwQZs&0Mm>&J<&H03e3y+td@$8ckxf*jl{b3%eLp;ZR(jd%;=J$ba-^jdH zbR@^3j5mhiZCO+>^CBBw#4c)1om;%`Y9iPF`vFpoeQ5Jl$EUg8zmb++KU!;*^Xw>N z^S9EtaNy&?h1psYkkfyAQ_XkXW-0t#{TkOJ#bJwg?_C|;4yA`#}T&-L)Bs6@>6?M0JJH$qZ5C!}Lm>YHR<7ha64Ql11np zM>|K`RqJfp8X#??bx{wskWe6Onb>V)E~8v95g;DTjAW!DB~bTlA`1l5@REW#7+48# z12BktFf5z_%kyIA<$ooeZYI_+od~tJw`mjcNCqBRW?_-SG-o`Ve$sZ0QO(Wq7YRm9&Jr6Hzb20m;|BP@p+ucSl%-zc5dPpiVMd%7t1^nYOo}-8%0KzaOxVF zpU=|3ZdrHXm`*I^>ESkp_&G2xB%N~0^L!BPj4?+hE-nvNHUO+SveFbOS)r{T$-~YA zGBiNkAY_R!5F!o+MCBNgU1ir;NEISb@@{jPrbsQHJ7WPlB0sdbDMVl32s5 z7!ke`UReEISsY203pqzuR*m|)TMZPm$HdiJ&K1tBMYIm>s&>D>)LJ^TR3qj;7!am$ ztg!FYGnKhe<~_Ee*Xvi()+1D>*Dltq3Augv@)uOeJiYJZ=^e)-J|(W6^D)*w2(O<# z)wg%5gZ!t@LWFr=@$1j~hYlT^4PW0K!{CRpk?qRUZhRfa$>9MWaA276ql1K)e`;$p?e*7?>Vo+deWxNP=jneoi#fzAkm! zl2e!j0^;eGEagU*pzu6c-~+|jM8+|&mpB+)Z5-Lc@en65>MmY%B$i49MhiGuV5^l? zSQ$N#%As9&FxCz~6YKhNxWjR&Q&`90k{W8HpbFC zpnThrictMq{&!4^~5O9sDDkDYkU`^wznR+pVq(f4W+9 zv6W~hNR_lfkkbKe^}nEFMybyih3wY7TU4**d=9%>-wT4RN6mA6;o=2$Pq!ZJq<>fr zTH@%Kti9hc5$=^Rv=R~HIlQ8_+kN@zv$L-BzVbI~wFT3jTP{6DEbiA6((E4SGf`2Zm^1&`gwDkqDgjNHF+};y+{!OlFwXL*KaH>+s zxVKQls|pmSxxO-od6pSpRni25s1jt#Y>29`xr-P?j7wcIFo!VNW$ov6xwXkeNW}?D zY#*^y)S~r^@iTX6>Rk8M%08>I9b7?J35bs!Uw77mlQUn{OASJ_=d}?TU@s9!9Y-Y5 zMNqg5LiFDS(KiI0gL45P62~xMc_d3N!*qB#S3Htl1@QrK6K6QZM8cMwg7a80!%#e* zHG-AoW9>vkSdLhiGlX_+}JaQV|@30DkdZkbLBj5)^F*v>_q@C$m|qmkvC< z;`Xl3{&JwRyQ135vM3`zz3AZ#U!wvS{IT8^#THFDLkxOLEx z{YuthE~D)Z_BT5sc(B3?6GXCaZ0V4g$(bJ%GveIvBbpDrJPll zYm*&sJFLIl9?ywzFPyQNC=cK2|KO8<>$|M=y<2VH+XN)y%jG-K9GT+h8r7~iy!g7K zv-|Eq-_uh&jvP9Ed}oW>+Ij1V-=<4KouuZk1mAzEa8kA9S@DgTh=h($M+QIp)P1f@ zTRpAvjPRj7bTFi42S4-p6_e#>x`|cwt(iz70w0&FSu=k>Gcz^{P~L=?osLWJPa%G!vT zXf8p131fmLVvQ1rWP2#t1bna>B#sMOrpU0KN`WgD2AT&;aL)y0$Mu2UbNudC_oiw2qIx^mLd3>m4y zO;xlQHP_=O^-|_d3@UW@i=WhtxmGN#cvq~n(DDV1zafUf@F?~+k}MFELYG@05CXq- zkH}8toL9E{*6mRZ~WgR&#yhL>Ww&k46E{6MDXN`r=9~#U!@fy9B3KgL!>Jw@Bcyl{Pc9= zit9|`wJAY%BaQpBpDjz9o_{rV5c=W}cfVu&RmZuJp7B8CRrRy}UNYsh!1I5FCweIyVC&IyQ}D|Yk#|d{zNm<{0PMseP{;`=$_@BFjO}q{ zF2F;9fM-O6K~jSGC6ReB9t0axPz&Ni5eul=+Ps2rs$R4_%@oMo#q(?fM4(f=wpj@r zpbEwo*tB!&DhcbHMe6c)i3*-A7BSaq5Ji|`5c~K*o>D@*446r%%~UWGYS3a#Gg=oI)~D;Lq4nsDprN*c9u|gT3axCb~kyFUJd#-jHcZy zcP)w^MdUY2d7tmxmr==e;d~==%;uTc#lxz4b}Px$>;7*p6bvfyl$NT_%&vxd`_i6d z;jYD-TWGH+ErL3l&srsxI3jC3-UDV%EjKcfq2n-7AczCWC5xC#;Z13b;5RHW(MX- ze88P?aT3sXE4pe>)+?)Eab{OFwkfCu|1_v-v4mFekjZa3(>_cwU?09EQ>Z77%+D_n z`6w0eJcp=0%CAJWDyYw@slAqD;+pw%}KvmE&!9> z`c0hR98uZV3-k-LqWP1|gmtcgpaGQMi4fc)TDXJ((el6!UKf!8oCdHha)8L~BH1n= z0&f#cX!5`9qa;IUs#;f=Jizo-9VB_@HcX6JoZHiTVm9q&CEv9sy2ncKV99jvdFQVF z>XO34xpzIv#Uo?GbV~a0Rp~n8QaJ(VKQJpFU+U(m<52VMuxYBkI_mJTJA9#jz_zDn zPAjy#mYJ1NwqQP@ogk6~6>r~>q4lo8YyY7wUq0H(dQ=z*80m3_1n`6`4y}Ap`?@#1 zc)hySs7@pMy+Zxi`=(G&QX*kT$?d0MRqOA&(|y!k2cG)ZYD~|3@_TAKcKGb;P`i@} z7yFMLnu(~L4OC%F@f{yXx^isgRko&;w0YEgZT=W(&G=8_w_JBFuJ@(fsBhkKN<~?H z@1YX0ult7AZcIMZx$Xp}tG%t_LdlgUa&qX^R_#R%^S=DKmv3fM!@~k|R8&J{1dI5x zvqXypC$&tqh^+{L1~;BCbA9R%?#_hN89K+7$Tz@6m~*g=*lw1f;}V<$vATM~V8 zdmb-TWoYqpT_R0gPP}KWbASos$s4^|eD!!^=)T_IMJrRCJ9~_jzaHKLIm=4%WFrYH8QU!B3x5c8_Y06X>)XqbIBAYmj z^7z>h1fm3@9e7G4BAY(EK&wJ$FM3k}gOyoogE8`yS;w-Vn0|SicK#%At|Ad03j=-| zmLmy5m_iJ&7+D6cZI`i~zoBu)?sv`#)d3k&&qz;C1(*AWy}tR|pw^^_&5PAU^LJM^ ztE#Ng)vopxJY{d(u_f>5;O^#Oe6PixRP*`JDaS8=FlA5ihy;q?cxs{&7QS7pm|$R8 zSSnRloHB?wRy{8@2zis==M0PN@QH6b&<(?HD8?acB%Sw zzwk_bN=DaLrQV~jmp{Iz&tKW(E#x=%b zHirtm4oG>cSB4l!nZN05VRgM=ym#r5z8+LzZ++9@R*Tg2(0VPQ>$2v4V+ZSQ@*PPV z?c;JF%?-$x$ja}2!v82ow8!K8NHkW6XrG6`V4R@-Ok|#0|6AD!XC$8Zia2 zB!?ShjPL33RvYmZwI8@-m?9oWO;=5#f@Dzkhc3tPce}kD4Si~s26C=<-AJt1Q=IZz zp=!l)TY`yF$%OOuo?+E|HAEXYtqCML8zcx2hW)%-APHKO7i2lj;B*m=JAj6^VJ*R# zjVu%!FPaNM#0%eRWFons_$0REZb&Rbc`Fgl+9Kf?g3Pa?z@9#1W5X55R~}wlfEzU~ z6D5eu=Mh1J{R|AqR)Rk+&IXm`<({Os4pM}k+{=S@6%z^$2G|jat0GovI0vv-h`D=> z4tCC|3r%Z;t`&sLluCf%;n4cSs(0z}H9_7>o~>UT{Dy3;OSPo>niG-bMNdLT_)^err~&^v!@(q zdlrwmPrJYF=nQ@4@cig3cFL*K%FVhZPxh9&33>KW&{CMy132#e*FLdYql6nWccFkme(9w{*nIO<#vuHB^ zP~h|?9t(*lsdxr&$Kk~J6j64<4QjoWho!Iaw*%SG85A?L%@GqekChTu5i3PlFbW)Y z|KZ|%q2=4B+Y|%$f7Bt!`S?y zuF&D?igfE_C-Rf5tj*~r)zc?89m*PioQSV@buP5->X_A&1SRgL@0Rr*B5Q zOKCMSDP1XEdEYDLRz3YyPv~aZxyupfa-P|<#mO(<+vZ`( z64F4*1lQO8SPNLuT)jIo{z2gw-<50ANA67a4RxyHCM=PFA=Tec-Drp1k)bgwR;X8P^0ne$j__S$~cMNmvX%|oHjHf29Z zNE<}QA?|5kclXuPe$;?1v(wfKsw%kWu}noJEFML!2hQazo@G zI0qXCn{TF+6PqyiRXCW)80djE1OjDnW`zo&?pX2hvdGl;j7T_lsc}zqPIIy=%VdtZY(=@Xj4Mf#C%_gwXa^X z+qDWWZW=O(EP7i=&?muO$lk7pyCF-%O44*8Vr z>-;bcoFm)gHHo;49maho-K$@2_aK(9(A>r^@+2($rf#C&W$pV~@#k z!hC2%Mpo~#XG~6M?bzM{mtdYU_5mKy2 z&V!K((^TSg`b>F)Da6K`m!`=ztW_kHA)_K)DorIOOFz&vQi~>*q0gw!+RnDp+&6cJ z1?R@xRt}&HlmyF9&^Qy^_h%1}2HFL#tQt6kc=;8Rxs5Y3!9fE?TXGagf9ql(#1IUJ ze~y=O0cTOD7!;c&gb@bW2&T2@dDM_Ls!&W)ygb$kg1g-Z|JfD#3w2K{jEI718}HI2 z{!Z({w?Syu{%{-QMQr2fln`xVo!doX`J}80tVAzgH!tTU=u=t3wQ*Dmcx6=S3;{F4 z3Gge7B6?aB7sL@cEWfCl=y*gnE%$P>S6WxU!OnTrq;nox2Tn9(RMc1HPJtXIk&iG>PEXO*YTf&Apx-&o$n)lo-CEegxhR z0&c6S6CZnKa&R@V3Fm7(O^n8tPDL2UCu9=MO2V?v*oUmwDHoQC<*dn^Tud#_*%OqA zFwm(dkBdo>IR^!b_VFF5qFHm=PU$>i2&EcyHRMQ@H|z4JNgB{L;Vm-Ar5@}iAJ$e(Z>+W*1bC@FH^1zRI9!9sJ z?qU(sBousr03ohI66`z(IM|cXPUqnSIWat(9S9c+ixQ9mVFozF0F�%`qSdM%nzvY=%7-M0nb&by?ISY(mLq64k14LJ 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 Dp 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�JHDg?81 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≦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 }vK% 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�-dOqqyr^>m^_m5>JrN$uTdHu4PrTrs;urdSUdv= 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

4rfHKVc$ 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 literal 0 HcmV?d00001 diff --git a/discover/banners/updatescrop.jpg b/discover/banners/updatescrop.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d4ceb646e794c4b6d0515691bf5dbbdae28cffe GIT binary patch literal 271389 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%0A{#l0I_=pqkk2*}n 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 DV6Ka| literal 0 HcmV?d00001 diff --git a/discover/icons/128-apps-plasmadiscover.png b/discover/icons/128-apps-plasmadiscover.png new file mode 100644 index 0000000000000000000000000000000000000000..a20f4749b9b4ea18eb08aa39bd976b5a565ec7ba GIT binary patch literal 18930 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 b;j{k*7r8(kh58j*00000NkvXXu0mjf#p<<$ literal 0 HcmV?d00001 diff --git a/discover/icons/48-apps-plasmadiscover.png b/discover/icons/48-apps-plasmadiscover.png new file mode 100644 index 0000000000000000000000000000000000000000..81d05b1aa71421a9c14137333219b4bf370bd531 GIT binary patch literal 3466 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 literal 0 HcmV?d00001 diff --git a/discover/icons/CMakeLists.txt b/discover/icons/CMakeLists.txt new file mode 100644 index 0000000..aca7055 --- /dev/null +++ b/discover/icons/CMakeLists.txt @@ -0,0 +1,11 @@ +ecm_install_icons( + ICONS + 128-apps-plasmadiscover.png + 16-apps-plasmadiscover.png + 22-apps-plasmadiscover.png + 32-apps-plasmadiscover.png + 48-apps-plasmadiscover.png + sc-apps-plasmadiscover.svgz + DESTINATION ${ICON_INSTALL_DIR} + THEME hicolor +) diff --git a/discover/icons/sc-apps-plasmadiscover.svgz b/discover/icons/sc-apps-plasmadiscover.svgz new file mode 100644 index 0000000000000000000000000000000000000000..b581cac99e9562be3b54023e5df23a961dc9e121 GIT binary patch literal 240726 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

5rk-is+s(caW0~KTb}?roz%-_ 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 + استكشف + Discover + Discover + Discover + Discover + Discover + Discover + Discover + Discover + Avastusretk + Discover + Discover + Discover + Discover + Discoperi + Discover + Discover + 발견 + Ontdekken + Discover + Odkrywca + Discover + Discover + Центр приложений Discover + Objaviť + Discover + Oткривач + Otkrivač + Oткривач + Otkrivač + Discover + Keşfet + Discover + xxDiscoverxx + 发现 + Discover + +

Haven’t you ever found a tool that was perfect for your need but you only found it after some time stumbling upon it on the net? When considering to install an application, don’t you wonder sometimes if it’s really worth it? Or if it’s actually what you’re looking for?

+

ألم تجد يومًا الأداة التي لبّت حاجتك تمامًا، ولكن بعد صراع طويل بالبحث عنها في الشّابكة؟ هل يأتي في خاطرك عندما تريد تثبيت تطبيق ما، إن كان ذلك يستحقّ ذلك أو لا؟ أو حتّى إن كان هو ما تبحث عنه؟

+

Alguna vegada heu trobat una eina que era perfecta per a les vostres necessitats però l'heu vist després d'ensopegar-hi per la xarxa? Quan considereu instal·lar una aplicació, voleu saber si val la pena? O si és la que realment esteu cercant?

+

Alguna vegada heu trobat una eina que era perfecta per a les vostres necessitats però l'heu vist després d'ensopegar-hi per la xarxa? Quan considereu instal·lar una aplicació, voleu saber si val la pena? O si és la que realment esteu cercant?

+

Har du haft problemer med at finde det rigtige værktøj til dit behov og først fundet det efter nogen tid hvor du faldt over det på nettet? Når du overvejer at installere et program overvejer du så ikke nogle gange om det er det værd? Eller om det faktisk er det du leder efter?

+

Haben Sie noch nie ein Programm für Ihre Bedürfnisse gesucht, das Sie aber nur nach längerer Suche im Netz gefunden haben? Wenn Sie eine Anwendung installieren möchten, fragen Sie sich nicht manchmal, ob es sich wirklich lohnt? Oder ob es wirklich das ist, wonach Sie eigentlich suchen?

+

Haven’t you ever found a tool that was perfect for your need but you only found it after some time stumbling upon it on the net? When considering to install an application, don’t you wonder sometimes if it’s really worth it? Or if it’s actually what you’re looking for?

+

¿Ha encontrado alguna vez una herramienta perfecta para sus necesidades aunque solo la ha encontrado tras perder un tiempo valioso en Internet? Cuando considera instalar una aplicación, ¿no se pregunta a veces si realmente merece la pena o si realmente es lo que estaba buscando?

+

Kahtlemata on sulgi ette tulnud, et oled leidnud täpselt sobiva ja vajaliku tööriista täiesti kogemata sellele internetis peale komistades. Või oled mõne rakenduse puhul kaalunud, kas ikka tasub seda üldse paigaldada või kas see on üldse see, mida sulle tegelikult vaja läheb.

+

Ez al duzu aurkitu inoiz zure beharretarako zeharo egokia zen tresna bat baino hura aurkitu zenuen soilik sarean denbora dezente eman ondoren? Aplikazio bat instalatzea hausnartzean, batzutan ez al duzu zalantzarik benetan merezi duen? Edo benetan ote den bilatzen duzuna?

+

Oletko koskaan törmännyt työkaluun, joka täyttää täysin tarpeesi mutta jonka löysit vasta pitkään verkossa etsittyäsi? Harkitessasi sovelluksen asentamista, etkö joskus mieti, onko se sen arvoista, tai onko se mitä todella etsit?

+

N'avez-vous jamais trouvé un outil correspondant parfaitement à vos besoins qu'après de longues recherches sur le net ? Lorsque vous pensez installer une application, ne vous êtes-vous jamais demandé si cela en valait la peine ? Ou si elle correspondait à ce que vous cherchez ?

+

Nunca lle pasou que atopou unha ferramenta perfecta para o que necesitaba, pero que só a atopou tras un bo anaco buscando en internet? Á hora de instalar un aplicativo, non se pregunta ás veces se paga a pena? Ou se realmente é o aplicativo que está a buscar?

+

Apakah Anda tidak pernah menemukan sebuah alat yang sempurna untuk kebutuhan Anda, tetapi hanya Anda yang menemukannya setelah beberapa waktu tersandung atas itu di internet? Ketika mempertimbangkan untuk memasang aplikasi, tidakkah Anda bertanya-tanya kadang-kadang apakah itu benar-benar layak? Atau jika itu benar demikian apa yang Anda cari?

+

Non hai mai trovato uno strumento che fosse perfetto per le tue esigenze, ma lo hai trovato solo dopo esserci incappato in Internet? Quando decidi se installare un'applicazione, non ti chiedi a volte se ne valga davvero la pena? O se è effettivamente ciò che stai cercando?

+

인터넷을 오랫동안 검색한 결과 끝에 필요한 도구가 무엇인지 찾은 적이 있었습니까? 프로그램을 설치할 때 이 프로그램이 유용한지 알고 싶은 적이 있었습니까? 아니면 목적에 맞는 프로그램인지 생각해 본 적이 있었습니까?

+

Hebt u niet ooit een hulpmiddel gevonden dat perfect was voor uw behoefte maar dat u alleen na enige tijd toevallig vond op het internet? Bij de overweging om een toepassing te installeren, hebt u uzelf dan soms niet afgevraagd of het dat werkelijk waard was? Of of het echt was waarnaar u op zoek was?

+

Har du nokon gong funne eit program som var midt i blinken for deg, men berre etter ein lengre ekspedisjon på nettet? Når du vurderer å installera eit program, lurer du nokon gong på om det er verdt det? Eller på om det eigentleg er programmet du treng?

+

Czy miałeś kiedyś tak, że znalazłeś idealne narzędzie, jednak na jego poszukiwania spędziłeś wiele czasu w sieci? Czy przy wgrywaniu programu na swój komputer, zastanawiasz się czasami czy jest on tego warty, albo czy jest to to czego właśnie szukasz?

+

Nunca encontrou uma ferramenta que fosse perfeita para as suas necessidades, mas que só a tivesse encontrado depois de "tropeçar" nela na Internet? Ao considerar instalar uma aplicação, não se questionou algumas vezes se realmente vale a pena? Ou se é realmente o que procura?

+

Em algum momento você já procurou uma ferramenta que fosse perfeita para as suas necessidades, mas só encontrou depois de "tropeçar" nela na Internet? Ao considerar a instalação de um aplicativo, não se questionou algumas vezes se realmente vale a pena, ou se é realmente o que procura?

+

Случалось ли вам случайно находить приложение, которое отлично подходит для решения ваших задач, но уже после того, как задача была решена? Не приходилось ли вам сомневаться перед установкой незнакомого приложения: действительно ли это именно то, что нужно?

+

Našli ste už nástroj, ktorý vám výborne vyhovuje, ale našli ste ho až po dlhom čase hľadania na nete? Keď zvážime inštaláciu aplikácie, nedivíte sa niekedy, či sa to naozaj oplatí? Alebo či je to naozaj to, čo hľadáte?

+

Ali ste kdaj našli orodje, ki je bilo odlično za vas, šele po mukotrpnem iskanju po spletu? Se ob nameščanju programa kdaj vprašate, če je res vreden namestitve? Ali pa, če je sploh to, kar iščete?

+

Зар нисте бар једном нашли алатку која савршено пристаје вашим потребама, али тако што сте на њу случајно натрапали на Интернету? Када размишљате да ли да инсталирате неки програм, зар се не питате да ли је вредно труда? И да ли заиста одговара ономе што сте тражили?

+

Zar niste bar jednom našli alatku koja savršeno pristaje vašim potrebama, ali tako što ste na nju slučajno natrapali na Internetu? Kada razmišljate da li da instalirate neki program, zar se ne pitate da li je vredno truda? I da li zaista odgovara onome što ste tražili?

+

Зар нисте бар једном нашли алатку која савршено пристаје вашим потребама, али тако што сте на њу случајно натрапали на Интернету? Када размишљате да ли да инсталирате неки програм, зар се не питате да ли је вредно труда? И да ли заиста одговара ономе што сте тражили?

+

Zar niste bar jednom našli alatku koja savršeno pristaje vašim potrebama, ali tako što ste na nju slučajno natrapali na Internetu? Kada razmišljate da li da instalirate neki program, zar se ne pitate da li je vredno truda? I da li zaista odgovara onome što ste tražili?

+

Har du aldrig hittat ett verktyg som är perfekt för dina behov, men bara efter att ha stött på det på nätet av en slump? När du funderar på att installera ett program, undrar du inte ibland om det verkligen är värt att göra? Eller om det verkligen är vad du behöver?

+

Tam ihtiyacınız olan aracı internette uzun süre araştırmadan sonra bulmadınız mı? Uygulama yüklendikten sonra bazen gerçekten buna değip değmediğini düşünmüyorsunuz? Ya da gerçekten aradığınız şey olup olmadığını?

+

Чи траплялося вам знаходити програму, яка повністю задовольняє ваші потреби, після довгих пошуків у інтернеті? Чи не кортіло вам дізнатися про те, чи варто встановлювати програму, ще до її встановлення? Чи хотіли б ви наперед знати, чи та це програма, яка вам потрібна?

+

xxHaven’t you ever found a tool that was perfect for your need but you only found it after some time stumbling upon it on the net? When considering to install an application, don’t you wonder sometimes if it’s really worth it? Or if it’s actually what you’re looking for?xx

+

您是否只网络上搜索之后才找到一个完美符合需求的工具?当安装一个程序时,您没有想过知道是否真的值得安装吗?或者它确实是您想要找的目标?

+

您曾在網路上找到一些原先看起來很完美,但到最後卻一直阻礙您生活的工具嗎?當考慮安裝應用程式時,您不會想到它是否真的符合我的需要嗎?又或著,您實際上是在找些什麼東西?

+

Discover helps users easily and quickly find applications or tools. By allowing to navigate a software library by search, software categories, top lists along with detailed application information that includes screenshots and reviews, users can more quickly find applications that suit their needs.

+

يساعد «استكشف» المستخدمين بالعثور على التّطبيقات أو الأدوات بسهولة وسرعة، وذلك بالتّنقّل في مكتبة البرمجيّات عبر البحث والفئات وأفضل البرمجيّات. هذا إلى جانب معلومات التّطبيقات المفصّلة التي تشمل لقطات شاشة ومراجعات. بذلك يصبح العثور على التّطبيقات سريعًا ومناسبًا لحاجة المستخدم.

+

El Discover ajuda als usuaris a cercar aplicacions i eines fàcilment i ràpidament. Permet explorar una biblioteca de programari cercant per categories de programari, llistes més valorades, junt amb informació detallada que inclou captures de pantalla i ressenyes. Els usuaris poden cercar ràpidament aplicacions que s'ajustin a les seves necessitats.

+

El Discover ajuda als usuaris a cercar aplicacions i eines fàcilment i ràpidament. Permet explorar una biblioteca de programari cercant per categories de programari, llistes més valorades, junt amb informació detallada que inclou captures de pantalla i ressenyes. Els usuaris poden cercar ràpidament aplicacions que s'ajusten a les seues necessitats.

+

Discover hjælper brugere med nemt og hurtigt at finde programmer eller værktøjer. Ved at lade dig navigere et softwarebibliotek med søgning, softwarekategorier, toplister og detaljeret information om programmerne inklusiv skærmbilleder og anmeldelser, så brugere hurtigere kan finde programmer der matcher deres behov.

+

Discover hilft Anwendern, Anwendungen oder Dienstprogramme schnell und einfach zu finden. Durch die Navigation in einer Softwarebibliothek nach Suchkriterien, Softwarekategorien, Favoritenliste zusammen mit detaillierten Anwendungsinformationen, Bildschirmfotos und Beurteilungen können Anwender schneller Anwendungen finden, die ihren Bedürfnissen entsprechen.

+

Discover helps users easily and quickly find applications or tools. By allowing to navigate a software library by search, software categories, top lists along with detailed application information that includes screenshots and reviews, users can more quickly find applications that suit their needs.

+

Discover le ayuda a encontrar aplicaciones y herramientas de una forma rápida y fácil. Al poder explorar una biblioteca de software usando búsquedas, categorías de software y listas de puntuaciones, junto a una detallada información sobre las aplicaciones que incluye capturas de pantalla y comentarios, los usuarios pueden encontrar más rápidamente aplicaciones que satisfagan sus necesidades.

+

Avastusretk aitab kasutajatel kiiresti ja vähese vaevaga leida vajaliku tööriista või rakenduse. Kui kasutaja saab tarkvarakogus hõlpsasti ringi liikuda ja olemasolevat näha nii otsides, kategooriate kaupa või mitmel alusel järjestatavate edetabelite abil, kusjuures alati pakutakse rakenduste kohta põhjalikku teavet koos ekraanipiltide ja arvustustega, ei ole täpselt sobiva tööriista või rakenduse leidmine enam kuigi keeruline.

+

Discover-rek erabiltzaileei aplikazioak edo tresnak erraz eta azkar aurkitzen laguntzen die. Software liburutegi batean nabigatzeko aukera eskainiz, bilaketa bidez, software kategoria bidez, top zerrenden bidez, aplikazioen informazio xehatuarekin batera pantaila-argazkiak eta iritziak barne, erabiltzaileek beraien beharretara egokitzen diren aplikazioak azkarrago aurkitu ditzakete.

+

Discover auttaa käyttäjiä löytämään sovellukset helposti ja nopeasti. Selaamalla ohjelmistokirjastoja hakujen, sovellusluokkien, suosikkiluetteloiden sekä ruutukaappauksia ja arvosteluja sisältävien yksityiskohtaisten lisätietojen avulla käyttäjät löytävät nopeammin tarpeitaan vastaavat sovellukset.

+

Discover aide les utilisateurs à rapidement trouver des applications ou des outils. En permettant de naviguer dans une bibliothèque de logiciels par recherche, par catégorie de logiciel, par classement des meilleures applications avec des informations détaillées contenant des captures d'écran ainsi que des notations, les utilisateurs peuvent trouver plus rapidement des applications qui correspondent à leurs besoins.

+

Discover permite atopar aplicativos e ferramentas de maneira fácil e rápida. Atope rapidamente aplicativos que se axustan ás súas necesidades explorando a biblioteca de software mediante buscas, categorías de software, e listas de aplicativos máis usados con información detallada dos aplicativos, incluíndo capturas de pantalla e opinións de usuarios.

+

Discover membantu pengguna dengan mudah dan cepat menemukan aplikasi atau alat-alat. Oleh karena itu memungkinkan untuk menavigasi sebuah perpustakaan perangkat lunak dengan mencari, kategori perangkat lunak, daftar teratas beserta informasi aplikasi terinci yang meliputi cuplikanlayar dan ulasan, pengguna bisa lebih cepat menemukan aplikasi yang sesuai dengan kebutuhan mereka.

+

Discover aiuta gli utenti a trovare in modo semplice e rapido applicazioni o strumenti. Permettendo di navigare una raccolta di software tramite ricerca, categorie di software, liste preferite oltre alle informazioni dettagliate sulle applicazioni che includono schermate e recensioni, gli utenti possono trovare più rapidamente applicazioni che si adattano alle loro esigenze.

+

발견을 통하여 프로그램과 도구를 쉽고 빠르게 발견할 수 있습니다. 소프트웨어 라이브러리를 직접 검색하거나, 분류별 및 상위 목록으로 볼 수 있으며 스크린샷과 리뷰를 포함한 소프트웨어 정보를 통해서 필요한 프로그램을 찾을 수 있습니다.

+

Discover helpt gebruikers om gemakkelijk en snel een toepassing of hulpmiddel te vinden. Door navigatie te bieden in een softwarebibliotheek door zoeken in softwarecategorieën, lijsten met toppers, samen met gedetailleerde informatie over toepassingen die schermafdrukken en reviews bevatten, kunnen gebruikers sneller toepassingen vinden die in hun behoeften voorzien.

+

Med Discover vert det lettare å finna program og verktøy. Du kan søkja etter program eller sjå gjennom programkategoriar og lister over populære program. Du får òg detaljert informasjon om kvart program, med bilete og brukaromtalar.

+

Odkrywca pomaga użytkownikowi w szybkim i łatwym wyszukiwaniu potrzebnych aplikacji i narzędzi. Umożliwia on przeglądanie biblioteki oprogramowania poprzez wyszukiwania, kategorie oprogramowania, listy najlepszych aplikacji wraz ze szczegółami takimi jak zrzuty ekranu i recenzje. W ten sposób użytkownicy znajdują szybciej to czego szukają.

+

O Discover ajuda os utilizadores a procurar fácil e rapidamente aplicações ou ferramentas. Ao permitir navegar numa biblioteca de 'software' com a pesquisa, as categorias de aplicações, as listas de topo com informações detalhadas, incluindo fotografias e revisões, os utilizadores poderão encontrar mais rapidamente as aplicações que se adequam às suas necessidades.

+

O Discover ajuda os usuários a encontrar os aplicativos e ferramentas de forma rápida e fácil. Ao fornecer acesso a uma biblioteca de software com uma ferramenta de pesquisa, por categorias de software, por listas das ferramentas mais populares e com informações detalhadas, incluindo capturas de tela e avaliações, os usuários poderão encontrar mais rapidamente os aplicativos que se adequam às suas necessidades.

+

Центр приложений Discover служит для быстрого и простого поиска нужного приложения. Приложения расположены в соответствующих категориях, возможен поиск по библиотеке приложений, представлены списки наиболее популярных приложений. Для каждого приложения предоставлена подробная информация, включающая снимки экрана и отзывы пользователей.

+

Discover vám pomôže ľahko a rýchlo nájsť aplikácie alebo nástroje. Umožní vám navigáciu cez knižnicu softvéru cez hľadanie, kategórie softvéru, najlepšie zoznamy spolu s podrobnými informáciami, ktoré obsahujú obrazovky a recenzie, teda môžete ľahšie nájsť aplikáciu, ktorá vám vyhovuje.

+

Discover vam pomaga na enostaven način najti programe ali orodja. Omogoča vam krmarjenje po knjižnicah s programi preko iskalnika, kategorij programov in seznamov najboljših programov. Ogledali si boste lahko podrobnosti o programu vključno s posnetki zaslona in ocenami ter tako hitreje našli programe, ki zadoščajo vašim potrebam.

+

Oткривач помаже корисницима да лако и брзо налазе програме и алатке. Кретањем кроз библиотеку софтвера путем претраге, категорија, топ‑листа, праћеним детаљним описима програма, снимцима екрана и рецензијама, корисник може брзо да пронађе програм према својим потребама.

+

Otkrivač pomaže korisnicima da lako i brzo nalaze programe i alatke. Kretanjem kroz biblioteku softvera putem pretrage, kategorija, top‑lista, praćenim detaljnim opisima programa, snimcima ekrana i recenzijama, korisnik može brzo da pronađe program prema svojim potrebama.

+

Oткривач помаже корисницима да лако и брзо налазе програме и алатке. Кретањем кроз библиотеку софтвера путем претраге, категорија, топ‑листа, праћеним детаљним описима програма, снимцима екрана и рецензијама, корисник може брзо да пронађе програм према својим потребама.

+

Otkrivač pomaže korisnicima da lako i brzo nalaze programe i alatke. Kretanjem kroz biblioteku softvera putem pretrage, kategorija, top‑lista, praćenim detaljnim opisima programa, snimcima ekrana i recenzijama, korisnik može brzo da pronađe program prema svojim potrebama.

+

Discover hjälper användare att enkelt och snabbt hitta program eller verktyg. Genom att göra det möjligt att gå igenom ett programvarubibliotek via sökning, enligt programvarukategorier och i topplistor tillsammans med detaljerad programinformation som innehåller skärmbilder och recensioner, kan användare snabbare hitta program som passar deras behov.

+

Keşfet, kullanıcıların hızlıca araç ve uygulamaları bulmalaraını sağlar. Bir yazılım kütüphanesinde arama, kategorilere göre veya en çok indirilen listesi ile birlikte, ekran görüntüleri ve değerlendirmeleri göstererek, kullanıcılar ihtiyaçları olan uygulamaları daha hızlı bulabilirler.

+

Discover допомагає користувачам просто і швидко знаходити програми або інструменти. Користувач може просто мандрувати бібліотекою програмного забезпечення, шукаючи програми, передивляючись списки категорій програм, найкращих програм, та ознайомлюючись із докладною інформацією щодо програм, знімками вікон та відгуками інших користувачів. Знайти потрібну програму у такий спосіб можна набагато швидше.

+

xxDiscover helps users easily and quickly find applications or tools. By allowing to navigate a software library by search, software categories, top lists along with detailed application information that includes screenshots and reviews, users can more quickly find applications that suit their needs.xx

+

发现能够帮助用户简单快捷的找到程序或者工具。通过对软件库的搜索,软件分类,热门列表和包括截图和评论的细节的程序信息,用户可以更快的找到符合要求的程序。

+

Discover 協助使用者簡單且快速地找到應用程式或工具。透過搜尋、軟體類別、精選軟體清單等等的方式瀏覽軟體庫,其中並包含了詳細的應用程式資訊,如螢幕截圖、使用感想等,使用者可以更快速地找到符合他們需求的應用程式。

+

Furthermore, Discover will let you manage the different sources of software you have and manage the applications you’ve already installed in the past but you don’t want anymore.

+

عدا عن هذا كلّه، يتيح لك «استكشف» إدارة مختلف مصادر البرمجيّات التي لديك كما وإدارة التّطبيقات المثبّتة والتي لم تعد تحتاجها بعد الآن.

+

Per altra banda, el Discover permet gestionar les diferents fonts de programari que tingueu i gestionar les aplicacions que ja heu instal·lat en el passat però ja no desitgeu.

+

Per altra banda, el Discover permet gestionar les diferents fonts de programari que tingueu i gestionar les aplicacions que ja heu instal·lat en el passat però ja no desitgeu.

+

Desuden vil Discover lade dig håndtere dine forskellige softwarekilder og håndtere de programmer du allerede tidligere har installeret, men som du ikke længere ønsker.

+

Darüber hinaus können Sie mit Discover Ihre verschiedenen Softwarequellen verwalten sowie auch die Anwendungen, die Sie früher bereits installiert haben, aber nicht mehr verwenden möchten.

+

Furthermore, Discover will let you manage the different sources of software you have and manage the applications you have already installed in the past but you do not want any more.

+

Además, Discover le permite gestionar las distintas fuentes de software de las que disponga y las aplicaciones que ya hubiera instalado en el pasado y que ya no desee.

+

Lisaks laseb Avastusretk sul mitmekülgselt hallata kõiki sinu käsutuses olevaid tarkvaraallikaid ega jäta sind hätta ka siis, kui sul leidub tarkvara, mille oled kunagi paigaldanud, aga enam sugugi ei vaja.

+

Honetaz gain, Discover-rek dituzun software iturburu desberdinak kudeatzen utziko dizu eta iraganean instalatu zenituen baino gehiago nahi ez dituzun aplikazioak kudeatzen utziko dizu.

+

Discover sallii sinun lisäksi hallita erilaisia ohjelmalähteitä sekä sovelluksia, jotka olet jo asentanut mutta joita et enää halua.

+

De plus, Discover vous permet de gérer les différentes sources de logiciels que vous avez et permet de gérer les applications que vous avez installé par le passé et que vous ne voulez plus.

+

Ademais, Discover permitiralle xestionar as distintas fontes de software de que dispón e xestionar os aplicativos que ten instalados pero que xa non lle interesan.

+

Selanjutnya, Discover akan membiarkan Anda mengelola sumber perangkat lunak yang berbeda-beda yang Anda miliki dan mengelola aplikasi yang sudah Anda pasang di masa lalu tetapi Anda tidak menginginkannya lagi.

+

Inoltre, Discover ti consentirà di gestire le diverse fonti del software disponibili e gestire le applicazioni che hai già installato in passato, ma che non ti servono più.

+

발견을 통하여 여러 소프트웨어 저장소를 관리하고 이전에 설치했지만 필요하지 않은 프로그램을 관리할 수 있습니다.

+

Verder laat Discover u de verschillende bronnen van software die u hebt beheren, evenals de al eerder geïnstalleerde toepassingen maar die u niet meer wilt.

+

Du får òg kontroll over dei ulike programvarekjeldene du har, og kan lett avinstallera program du tidlegare har installert men som du ikkje lenger treng.

+

Dodatkowo, Odkrywca umożliwia zarządzanie wieloma źródłami oprogramowania i oprogramowaniem, które jest już na twoim komputerze i którego chcesz się pozbyć.

+

Para além disso, o Discover permitir-lhe-á gerir as diferentes fontes de aplicações que tem e gerir as aplicações que já instalou no passado e que não quer mais.

+

Além disso, o Discover possibilita gerenciar as diferentes fontes de software que você possui e os aplicativos que já foram instalados e que não são mais necessários.

+

Кроме того, центр приложений Discover позволяет управлять источниками приложений, а также выполнять удаление ненужных приложений.

+

Okrem toho, Discover vám umožní spracovať rôzne zdroje softvéru a spravovať aplikácie, ktoré máte nainštalované, ale už ich nechcete.

+

Discover vam tudi omogoča upravljati s programskimi viri in že nameščenimi programi.

+

Затим, Oткривач вам омогућава да управљате различитим изворима софтвера, као и програмима које сте инсталирали раније али их више не желите.

+

Zatim, Otkrivač vam omogućava da upravljate različitim izvorima softvera, kao i programima koje ste instalirali ranije ali ih više ne želite.

+

Затим, Oткривач вам омогућава да управљате различитим изворима софтвера, као и програмима које сте инсталирали раније али их више не желите.

+

Zatim, Otkrivač vam omogućava da upravljate različitim izvorima softvera, kao i programima koje ste instalirali ranije ali ih više ne želite.

+

Dessutom låter Discover dig hantera olika programvarukällor du använder och hantera program som du redan tidigare har installerat men inte lägre vill ha.

+

Dahası, Keşfet, geçmişte yüklediğiniz fakat artık ihtiyacınız olmayan uygulamaları yönetmenize de olanak sağlar.

+

Крім того, Discover надасть вам змогу керувати різними джерелами програмного забезпечення та вилучати програми, у яких уже немає потреби.

+

xxFurthermore, Discover will let you manage the different sources of software you have and manage the applications you’ve already installed in the past but you don’t want anymore.xx

+

进一步,发现还可以管理多个不同软件源并且管理过去已安装但不再需要的程序。

+

此外,Discover 讓您管理您所擁有的不同的軟體來源,也可以管理您以前安裝,但現在並不想要了的應用程式。

+
+ https://bugs.kde.org/enter_bug.cgi?format=guided&product=Discover + + + https://www.kde.org/announcements/plasma-5.5/discover.png + + + KDE + + plasma-discover + + diff --git a/discover/org.kde.discover.desktop.cmake b/discover/org.kde.discover.desktop.cmake new file mode 100644 index 0000000..6528cfc --- /dev/null +++ b/discover/org.kde.discover.desktop.cmake @@ -0,0 +1,174 @@ +[Desktop Entry] +Name=Discover +Name[ar]=استكشف +Name[ast]=Discover +Name[ca]=Discover +Name[ca@valencia]=Discover +Name[da]=Discover +Name[de]=Discover +Name[el]=Discover +Name[en_GB]=Discover +Name[es]=Discover +Name[et]=Avastusretk +Name[eu]=Discover +Name[fi]=Discover +Name[fr]=Discover +Name[gl]=Descubrir +Name[he]=מרכז התוכנות Discover +Name[hu]=Discover +Name[ia]=Discoperi +Name[id]=Discover +Name[it]=Discover +Name[ko]=발견 +Name[nl]=Ontdekken +Name[nn]=Discover +Name[pa]=ਖੋਜ +Name[pl]=Odkrywca +Name[pt]=Discover +Name[pt_BR]=Discover +Name[ru]=Discover +Name[sk]=Objaviť +Name[sl]=Discover +Name[sr]=Oткривач +Name[sr@ijekavian]=Oткривач +Name[sr@ijekavianlatin]=Otkrivač +Name[sr@latin]=Otkrivač +Name[sv]=Upptäck +Name[tr]=Keşfet +Name[uk]=Discover +Name[x-test]=xxDiscoverxx +Name[zh_CN]=发现 +Name[zh_TW]=Discover +MimeType=@DesktopMimeType@ +Exec=@DesktopExec@ +Icon=plasmadiscover +Type=Application +X-DocPath=plasma-discover/index.html +InitialPreference=5 +NoDisplay=@DesktopNoDisplay@ +Actions=Updates; +GenericName=Software Center +GenericName[ar]=مركز البرمجيّات +GenericName[ca]=Centre de programari +GenericName[ca@valencia]=Centre de programari +GenericName[cs]=Centrum softwaru +GenericName[da]=Softwarecenter +GenericName[de]=Programmverwaltung +GenericName[el]=Κέντρο λογισμικού +GenericName[en_GB]=Software Centre +GenericName[es]=Centro de software +GenericName[et]=Tarkvarakeskus +GenericName[eu]=Software gunea +GenericName[fi]=Sovellusvalikoima +GenericName[fr]=Logithèque +GenericName[gl]=Centro de Software +GenericName[he]=מרכז התוכנות +GenericName[hu]=Szoftverközpont +GenericName[id]=Pusat Perangkat Lunak +GenericName[it]=Software Center +GenericName[ko]=소프트웨어 센터 +GenericName[nb]=Programvaresenter +GenericName[nl]=Softwarecentrum +GenericName[nn]=Programvaresenter +GenericName[pa]=ਸਾਫਟਵੇਅਰ ਸੈਂਟਰ +GenericName[pl]=Ośrodek programów +GenericName[pt]=Centro de Aplicações +GenericName[pt_BR]=Central de aplicativos +GenericName[ru]=Центр программ +GenericName[sk]=Softwareové centum +GenericName[sl]=Programsko središče +GenericName[sr]=Софтверски центар +GenericName[sr@ijekavian]=Софтверски центар +GenericName[sr@ijekavianlatin]=Softverski centar +GenericName[sr@latin]=Softverski centar +GenericName[sv]=Programvarucentral +GenericName[tr]=Yazılım Merkezi +GenericName[uk]=Центр програм +GenericName[x-test]=xxSoftware Centerxx +GenericName[zh_CN]=软件中心 +GenericName[zh_TW]=軟體中心 +Categories=Qt;KDE;System; +Keywords=program;software;repository;package;install;remove;update;apps;applications; +Keywords[ar]=برنامج;برمجيّة;برمجية;مستودع;حزمة;تثبيت;إزالة;ازالة;تحديث;تطبيقات;تطبيق; +Keywords[ca]=programa;programari;repositori;paquet;instal·la;suprimeix;actualitza;apps;aplicacions; +Keywords[ca@valencia]=programa;programari;repositori;paquet;instal·la;suprimeix;actualitza;apps;aplicacions; +Keywords[cs]=program;software;repozitář;balíček;instalovat;odstranit;aktualizovat;programy;aplikace; +Keywords[da]=program;software;softwarekilde;repository;pakke;installer;fjern;opdater;apps;applikationer; +Keywords[de]=Programm;Software;Archiv;Repository;Paket;Installieren;Entfernen;Aktualisieren;Programme;Anwendungen; +Keywords[el]=πρόγραμμα;λογισμικό;αποθετήριο;πακέτο;εγκατάσταση;αφαίρεση;ενημέρωση;εφαρμογές; +Keywords[en_GB]=program;software;repository;package;install;remove;update;apps;applications; +Keywords[es]=programa;software;repositorio;paquete;instalar;eliminar;actualizar;apps;aplicaciones; +Keywords[et]=programm,rakendus,tarkvara,hoidla,pakk,pakett,paigaldamine,installimine,eemaldamine,uuendamine,rakendused,äpid; +Keywords[eu]=programa;software;gordetegi;pakete;instalatu;kendu;eguneratu;appak;aplikazioak; +Keywords[fi]=program;software;repository;package;install;remove;update;apps;applications;ohjelma;ohjelmisto;ohjelmalähde;lähteet;arkisto;paketti;asenna;poista;päivitä;sovellukset; +Keywords[fr]=programme; logiciel;dépôt;archive;paquet;installation;suppression;mise à jour;deb; +Keywords[gl]=aplicativo;software;repositorio;paquete;instalar;desinstalar;actualizar;deb; +Keywords[he]=program;software;repository;package;install;remove;update;apps;applications;תוכנות;התקנה;הסרה;חבילה;מקורות;יישומים; +Keywords[hu]=program;szoftver;tároló;csomag;telepítés;eltávolítás;frissítés;alkalmazás;alkalmazások; +Keywords[id]=program;perangkat lunak;repositori;paket;pasang;copot;perbarui;apl;aplikasi; +Keywords[it]=programma;software;deposito;pacchetto;installa;rimuovi;aggiorna;app;applicazioni; +Keywords[ko]=program;software;repository;archive;package;install;remove;update;deb;프로그램;소프트웨어;저장소;리포지토리;패키지;꾸러미;설치;삭제;업데이트; +Keywords[nb]=program;programvare;pakkebrønn;pakke;installere;fjerne;oppdatere;app;apper; +Keywords[nl]=programma;software;opslagruimte;pakket;installeren;verwijderen;bijwerken;apps;toepassingen;applicaties; +Keywords[nn]=program;programvare;pakkebrønn;pakke;pakkar;installera;installering;fjerna;fjerning;oppdatera;oppdatering;app;appar;applikasjonar; +Keywords[pl]=program,oprogramowanie,repozytorium,archiwum,pakiet,paczka,instaluj,zainstaluj,usuń,odinstaluj,uaktualnij,aktualizuj,programy,aplikacje,deb +Keywords[pt]=programa;software;repositório;pacote;instalar;remover;actualizar;aplicações; +Keywords[pt_BR]=programa;software;repositório;pacote;instalar;instalação;remover;atualizar;aplicativos;apps;aplicações; +Keywords[ru]=program;software;repository;package;install;remove;update;apps;applications;программа;приложение;репозиторий;пакет;установка;удаление;deb; +Keywords[sk]=program;softvér;repozitár;archív;balík;inštalácia;odstránenie;appky;aplikácie;aktualizácia; +Keywords[sl]=program;programska oprema;skladišče;paket;namesti;odstrani;posodobi;programi; +Keywords[sr]=program;software;repository;package;install;remove;update;apps;applications;програм;софтвер;ризница;пакет;инсталирати;уклонити;ажурирати; +Keywords[sr@ijekavian]=program;software;repository;package;install;remove;update;apps;applications;програм;софтвер;ризница;пакет;инсталирати;уклонити;ажурирати; +Keywords[sr@ijekavianlatin]=program;software;repository;package;install;remove;update;apps;applications;program;softver;riznica;paket;instalirati;ukloniti;ažurirati; +Keywords[sr@latin]=program;software;repository;package;install;remove;update;apps;applications;program;softver;riznica;paket;instalirati;ukloniti;ažurirati; +Keywords[sv]=program;programvara;arkiv;paket;installera;ta bort;uppdatera;appar;program; +Keywords[tr]=program;yazılım;depo;paket;yükle;kur;kaldır;güncelle;uygulama;uygulamalar; +Keywords[uk]=program;software;repository;package;install;remove;update;app;apps;applications;програма;програмне забезпечення;сховище;архів;пакунок;встановити;встановлення;вилучити;вилучення;оновлення;оновити; +Keywords[x-test]=xxprogramxx;xxsoftwarexx;xxrepositoryxx;xxpackagexx;xxinstallxx;xxremovexx;xxupdatexx;xxappsxx;xxapplicationsxx; +Keywords[zh_CN]=program;software;repository;package;install;remove;update;apps;applications;程序;软件;软件源;包;安装;移除;更新;应用程序;应用; +Keywords[zh_TW]=program;software;repository;package;install;remove;update;apps;applications; + +[Desktop Action Updates] +Name=Updates +Name[ar]=التّحديثات +Name[ca]=Actualitzacions +Name[ca@valencia]=Actualitzacions +Name[cs]=Aktualizace +Name[da]=Opdateringer +Name[de]=Aktualisierungen +Name[el]=Ενημερώσεις +Name[en_GB]=Updates +Name[es]=Actualizaciones +Name[et]=Uuendused +Name[eu]=Eguneraketak +Name[fi]=Päivitykset +Name[fr]=Mises à jour +Name[gl]=Actualizacións +Name[he]=עדכונים +Name[hu]=Frissítések +Name[ia]=Actualisationes +Name[id]=Update +Name[it]=Aggiornamenti +Name[ko]=업데이트 +Name[nb]=Oppdateringer +Name[nl]=Elementen voor bijwerken +Name[nn]=Oppdateringar +Name[pa]=ਅੱਪਡੇਟ +Name[pl]=Uaktualnienia +Name[pt]=Actualizações +Name[pt_BR]=Atualizações +Name[ru]=Обновления +Name[sk]=Aktualizácie +Name[sl]=Posodobitve +Name[sr]=Допуне +Name[sr@ijekavian]=Допуне +Name[sr@ijekavianlatin]=Dopune +Name[sr@latin]=Dopune +Name[sv]=Uppdateringar +Name[tr]=Güncellemeler +Name[uk]=Оновлення +Name[x-test]=xxUpdatesxx +Name[zh_CN]=更新 +Name[zh_TW]=更新 +Icon=system-software-update +Exec=plasma-discover --mode update diff --git a/discover/plasmadiscoverui.rc b/discover/plasmadiscoverui.rc new file mode 100644 index 0000000..cfd3837 --- /dev/null +++ b/discover/plasmadiscoverui.rc @@ -0,0 +1,10 @@ + + + + + diff --git a/discover/qml/ActionBridge.qml b/discover/qml/ActionBridge.qml new file mode 100644 index 0000000..9f8fe43 --- /dev/null +++ b/discover/qml/ActionBridge.qml @@ -0,0 +1,38 @@ +/*************************************************************************** + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQml 2.0 +import QtQuick.Controls 2.3 + +Action +{ + property QtObject action: null + + function removeAmpersand(text) { + return text.replace("&", ""); + } + text: action ? removeAmpersand(action.text) : "" + checked: action && action.checked + enabled: action && action.enabled + icon.name: action ? app.iconName(action.icon) : "" + shortcut: action ? action.shortcut : undefined + + onTriggered: action.trigger() +} diff --git a/discover/qml/ActionListItem.qml b/discover/qml/ActionListItem.qml new file mode 100644 index 0000000..e2c44d6 --- /dev/null +++ b/discover/qml/ActionListItem.qml @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Controls 2.0 +import org.kde.kirigami 2.3 as Kirigami + +Kirigami.BasicListItem +{ + id: item + property QtObject action: null + checked: action.checked + icon: action.iconName + separatorVisible: false + visible: action.enabled + onClicked: { + drawer.resetMenu() + action.trigger() + } + + Kirigami.MnemonicData.enabled: item.enabled && item.visible + Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.MenuItem + Kirigami.MnemonicData.label: action.text + label: Kirigami.MnemonicData.richTextLabel + + readonly property var p0: Shortcut { + sequence: item.Kirigami.MnemonicData.sequence + onActivated: item.clicked() + } +} diff --git a/discover/qml/AddSourceDialog.qml b/discover/qml/AddSourceDialog.qml new file mode 100644 index 0000000..0dfd9c0 --- /dev/null +++ b/discover/qml/AddSourceDialog.qml @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2014 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.kirigami 2.2 as Kirigami + +Popup +{ + id: newSourceDialog + parent: applicationWindow().overlay + modal: true + focus: true + width: Kirigami.Units.gridUnit * 20 + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + + property string displayName + property QtObject source + + ColumnLayout { + id: info + anchors { + left: parent.left + right: parent.right + } + + Kirigami.Heading { + level: 3 + Layout.fillWidth: true + text: i18n("Add a new %1 repository", displayName) + } + Label { + id: description + Layout.fillWidth: true + Layout.fillHeight: true + wrapMode: Text.WordWrap + textFormat: Text.PlainText + text: source.idDescription + } + + TextField { + id: repository + Layout.fillWidth: true + onAccepted: okButton.clicked() + focus: true + onTextChanged: color = Kirigami.Theme.textColor + } + + DialogButtonBox { + Layout.fillWidth: true + + Button { + id: okButton + DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole + text: i18n("Add") + icon.name: "list-add" + onClicked: if (source.addSource(repository.text)) { + newSourceDialog.close() + } else { + repository.color = Kirigami.Theme.negativeTextColor + } + } + + Button { + id: cancelButton + DialogButtonBox.buttonRole: DialogButtonBox.DestructiveRole + text: i18n("Cancel") + icon.name: "dialog-cancel" + onClicked: newSourceDialog.close() + } + } + } +} diff --git a/discover/qml/AddonsView.qml b/discover/qml/AddonsView.qml new file mode 100644 index 0000000..9951872 --- /dev/null +++ b/discover/qml/AddonsView.qml @@ -0,0 +1,97 @@ +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import "navigation.js" as Navigation +import org.kde.kirigami 2.0 as Kirigami + +Kirigami.OverlaySheet +{ + id: addonsView + property alias application: addonsModel.application + property bool isInstalling: false + readonly property bool containsAddons: rep.count>0 || isExtended + readonly property bool isExtended: ResourcesModel.isExtended(application.appstreamId) + + ColumnLayout + { + visible: addonsView.containsAddons + enabled: !addonsView.isInstalling + spacing: Kirigami.Units.largeSpacing + + Kirigami.Heading { + level: 3 + text: i18n("Addons") + } + + Repeater + { + id: rep + model: ApplicationAddonsModel { id: addonsModel } + + delegate: RowLayout { + Layout.fillWidth: true + + CheckBox { + enabled: !addonsView.isInstalling + checked: model.checked + onClicked: addonsModel.changeState(packageName, checked) + } + Kirigami.Icon { + source: "applications-other" + smooth: true + Layout.minimumWidth: content.implicitHeight + Layout.minimumHeight: content.implicitHeight + opacity: addonsView.isInstalling ? 0.3 : 1 + } + + ColumnLayout { + id: content + Layout.fillWidth: true + spacing: 0 + Label { + Layout.fillWidth: true + elide: Text.ElideRight + text: display + } + Label { + Layout.fillWidth: true + elide: Text.ElideRight + font.italic: true + text: toolTip + } + } + } + } + + RowLayout { + readonly property bool active: addonsModel.hasChanges && !addonsView.isInstalling + spacing: Kirigami.Units.largeSpacing + + Button { + icon.name: "dialog-ok" + text: i18n("Apply Changes") + onClicked: addonsModel.applyChanges() + + visible: parent.active + } + Button { + icon.name: "document-revert" + text: i18n("Discard") + onClicked: addonsModel.discardChanges() + + visible: parent.active + } + Item { + Layout.fillWidth: true + height: Kirigami.Units.largeSpacing + } + Button { + Layout.alignment: Qt.AlignRight + text: i18n("More...") + visible: application.appstreamId.length>0 && addonsView.isExtended + onClicked: Navigation.openExtends(application.appstreamId) + } + } + } +} diff --git a/discover/qml/ApplicationDelegate.qml b/discover/qml/ApplicationDelegate.qml new file mode 100644 index 0000000..ad31616 --- /dev/null +++ b/discover/qml/ApplicationDelegate.qml @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.1 +import "navigation.js" as Navigation +import org.kde.kirigami 2.4 as Kirigami + +Kirigami.AbstractCard +{ + id: delegateArea + property alias application: installButton.application + property bool compact: false + property bool showRating: true + showClickFeedback: true + property var view: null + + function trigger() { + if (view) + view.currentIndex = index + Navigation.openApplication(application) + } + highlighted: ListView.isCurrentItem + Keys.onReturnPressed: trigger() + onClicked: trigger() + + contentItem: Item { + implicitHeight: delegateArea.compact ? Kirigami.Units.gridUnit * 2 : Kirigami.Units.gridUnit * 4 + + Kirigami.Icon { + id: resourceIcon + source: application.icon + readonly property real contHeight: delegateArea.compact ? Kirigami.Units.gridUnit * 3 : Kirigami.Units.gridUnit * 5 + height: contHeight + width: contHeight + anchors { + verticalCenter: parent.verticalCenter + left: parent.left + } + } + + GridLayout { + columnSpacing: delegateArea.compact ? 0 : 5 + rowSpacing: delegateArea.compact ? 0 : 5 + anchors { + verticalCenter: parent.verticalCenter + right: parent.right + left: resourceIcon.right + leftMargin: Kirigami.Units.largeSpacing + } + columns: 2 + rows: delegateArea.compact ? 4 : 3 + + Kirigami.Heading { + id: head + level: delegateArea.compact ? 3 : 2 + Layout.fillWidth: true + elide: Text.ElideRight + text: delegateArea.application.name + maximumLineCount: 1 + } + + InstallApplicationButton { + id: installButton + Layout.alignment: Qt.AlignVCenter | Qt.AlignRight + Layout.rowSpan: delegateArea.compact ? 3 : 1 + } + + RowLayout { + visible: showRating + spacing: Kirigami.Units.largeSpacing + Layout.fillWidth: true + Rating { + rating: delegateArea.application.rating ? delegateArea.application.rating.sortableRating : 0 + starSize: delegateArea.compact ? summary.font.pointSize : head.font.pointSize + } + Label { + Layout.fillWidth: true + text: delegateArea.application.rating ? i18np("%1 rating", "%1 ratings", delegateArea.application.rating.ratingCount) : i18n("No ratings yet") + visible: delegateArea.application.rating || delegateArea.application.backend.reviewsBackend.isResourceSupported(delegateArea.application) + opacity: 0.5 + elide: Text.ElideRight + } + } + + Label { + Layout.columnSpan: delegateArea.compact ? 1 : 2 + id: summary + Layout.fillWidth: true + + bottomPadding: Kirigami.Units.smallSpacing + elide: Text.ElideRight + text: delegateArea.application.comment + maximumLineCount: 1 + textFormat: Text.PlainText + } + } + } +} diff --git a/discover/qml/ApplicationPage.qml b/discover/qml/ApplicationPage.qml new file mode 100644 index 0000000..71e1df7 --- /dev/null +++ b/discover/qml/ApplicationPage.qml @@ -0,0 +1,431 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.5 +import QtQuick.Controls 2.3 +import QtQuick.Window 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.1 as Kirigami +import "navigation.js" as Navigation + +DiscoverPage { + id: appInfo + property QtObject application: null + readonly property int visibleReviews: 3 + clip: true + + background: Rectangle { color: Kirigami.Theme.viewBackgroundColor } + + ReviewsPage { + id: reviewsSheet + model: ReviewsModel { + id: reviewsModel + resource: appInfo.application + } + } + + contextualActions: [originsMenuAction] + + ActionGroup { + id: sourcesGroup + exclusive: true + } + + Kirigami.Action { + id: originsMenuAction + + text: i18n("Sources") + visible: children.length>1 + readonly property var r0: Instantiator { + model: ResourcesProxyModel { + id: alternativeResourcesModel + allBackends: true + resourcesUrl: appInfo.application.url + } + delegate: Action { + ActionGroup.group: sourcesGroup + text: displayOrigin + icon.name: sourceIcon + checked: appInfo.application == model.application + onTriggered: if(index>=0) { + var res = model.application + console.assert(res) + window.stack.pop() + Navigation.openApplication(res) + } + } + onObjectAdded: originsMenuAction.children.push(object) + } + } + + actions { + main: appbutton.action + right: Kirigami.Action { + visible: application.isInstalled && application.canExecute && !appbutton.isActive + text: application.executeLabel + icon.name: "media-playback-start" + onTriggered: application.invokeApplication() + } + } + + InstallApplicationButton { + id: appbutton + Layout.rightMargin: Kirigami.Units.smallSpacing + application: appInfo.application + visible: false + } + + leftPadding: Kirigami.Units.largeSpacing * (applicationWindow().wideScreen ? 2 : 1) + rightPadding: Kirigami.Units.largeSpacing * (applicationWindow().wideScreen ? 2 : 1) + // Icon, name, caption, screenshots, description and reviews + ColumnLayout { + spacing: 0 + RowLayout { + Kirigami.Icon { + Layout.preferredHeight: 80 + Layout.preferredWidth: 80 + source: appInfo.application.icon + Layout.rightMargin: Kirigami.Units.smallSpacing * 2 + } + ColumnLayout { + spacing: 0 + Kirigami.Heading { + level: 1 + text: appInfo.application.name + lineHeight: 1.0 + maximumLineCount: 1 + elide: Text.ElideRight + Layout.fillWidth: true + Layout.alignment: Text.AlignBottom + } + RowLayout { + spacing: Kirigami.Units.largeSpacing + Rating { + rating: appInfo.application.rating ? appInfo.application.rating.sortableRating : 0 + starSize: summary.font.pointSize + } + Label { + text: appInfo.application.rating ? i18np("%1 rating", "%1 ratings", appInfo.application.rating.ratingCount) : i18n("No ratings yet") + opacity: 0.5 + } + } + Kirigami.Heading { + id: summary + level: 4 + text: appInfo.application.comment + maximumLineCount: 2 + lineHeight: lineCount > 1 ? 0.75 : 1.2 + elide: Text.ElideRight + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop + } + } + Layout.bottomMargin: Kirigami.Units.largeSpacing + } + + ApplicationScreenshots { + Layout.fillWidth: true + visible: count > 0 + resource: appInfo.application + ScrollBar.horizontal: screenshotsScrollbar + } + ScrollBar { + id: screenshotsScrollbar + Layout.fillWidth: true + } + + Label { + Layout.topMargin: Kirigami.Units.largeSpacing + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: appInfo.application.longDescription + } + + Kirigami.Heading { + Layout.topMargin: Kirigami.Units.largeSpacing + text: i18n("What's New") + level: 2 + visible: changelogLabel.text.length > 0 + } + + Rectangle { + color: Kirigami.Theme.linkColor + Layout.fillWidth: true + height: 1 + visible: changelogLabel.text.length > 0 + } + + Label { + id: changelogLabel + Layout.topMargin: Kirigami.Units.largeSpacing + Layout.fillWidth: true + wrapMode: Text.WordWrap + + Component.onCompleted: appInfo.application.fetchChangelog() + Connections { + target: appInfo.application + onChangelogFetched: { + changelogLabel.text = changelog + } + } + } + + LinkButton { + id: addonsButton + text: i18n("Addons") + visible: addonsView.containsAddons + onClicked: addonsView.sheetOpen = true + } + + + RowLayout { + Layout.topMargin: Kirigami.Units.largeSpacing + Layout.fillWidth: true + + Kirigami.Heading { + Layout.fillWidth: true + text: i18n("Reviews") + Layout.alignment: Qt.AlignLeft | Qt.AlignBottom + level: 2 + visible: rep.count > 0 + } + + LinkButton { + visible: reviewsModel.count > visibleReviews + text: i18np("Show %1 review...", "Show all %1 reviews...", reviewsModel.count) + Layout.alignment: Qt.AlignRight | Qt.AlignBottom + + onClicked: { + reviewsSheet.open() + } + } + } + + Rectangle { + color: Kirigami.Theme.linkColor + Layout.fillWidth: true + height: 1 + visible: rep.count > 0 + } + + Repeater { + id: rep + model: PaginateModel { + sourceModel: reviewsSheet.model + pageSize: visibleReviews + } + delegate: ReviewDelegate { + Layout.topMargin: Kirigami.Units.largeSpacing + separator: false + compact: true + Layout.bottomMargin: Kirigami.Units.largeSpacing + } + } + LinkButton { + function writeReviewText() { + if (appInfo.application.isInstalled) { + if (reviewsModel.count > 0) { + return i18n("Write a review!") + } else { + return i18n("Be the first to write a review!") + } + // App not installed + } else { + if (reviewsModel.count > 0) { + return i18n("Install this app to write a review!") + } else { + return i18n("Install this app and be the first to write a review!") + } + } + } + text: writeReviewText() + Layout.alignment: Qt.AlignCenter + onClicked: reviewsSheet.openReviewDialog() + enabled: appInfo.application.isInstalled + visible: reviewsModel.backend && reviewsModel.backend.isResourceSupported(appInfo.application) + Layout.topMargin: Kirigami.Units.largeSpacing + Layout.bottomMargin: Kirigami.Units.largeSpacing + } + + Repeater { + model: application.objects + delegate: Loader { + property QtObject resource: appInfo.application + source: modelData + } + } + + Item { + height: addonsButton.height + width: 1 + } + + // Details/metadata + Rectangle { + color: Kirigami.Theme.linkColor + Layout.fillWidth: true + height: 1 + Layout.bottomMargin: Kirigami.Units.largeSpacing + } + GridLayout { + rowSpacing: 0 + columns: 2 + + // Category row + Label { + visible: categoryLabel.visible + Layout.alignment: Qt.AlignRight + text: i18n("Category:") + } + Label { + id: categoryLabel + visible: text.length > 0 + Layout.fillWidth: true + elide: Text.ElideRight + text: appInfo.application.categoryDisplay + } + + // Version row + Label { + visible: versionLabel.visible + Layout.alignment: Qt.AlignRight + text: i18n("Version:") + } + Label { + readonly property string version: appInfo.application.isInstalled ? appInfo.application.installedVersion : appInfo.application.availableVersion + readonly property string releaseDate: appInfo.application.releaseDate.toLocaleString() + + function versionString() { + if (version.length == 0) { + return "" + } else { + if (releaseDate.length > 0) { + return i18n("%1, released on %2", version, releaseDate) + } else { + return version + } + } + } + + id: versionLabel + visible: text.length > 0 + Layout.fillWidth: true + elide: Text.ElideRight + text: versionString() + } + + // Size row + Label { + Layout.alignment: Qt.AlignRight + text: i18n("Size:") + } + Label { + Layout.fillWidth: true + elide: Text.ElideRight + text: appInfo.application.sizeDescription + } + + // Source row + Label { + Layout.alignment: Qt.AlignRight + text: i18n("Source:") + } + Label { + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft + text: appInfo.application.displayOrigin + elide: Text.ElideRight + } + + // License row + Label { + Layout.alignment: Qt.AlignRight + text: i18n("License:") + visible: appInfo.application.license.length>0 + } + UrlButton { + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft +// tooltip: i18n("See full license terms") + text: appInfo.application.license + url: "https://spdx.org/licenses/" + appInfo.application.license + ".html#licenseText" + } + + // Homepage row + Label { + visible: homepageLink.visible + Layout.alignment: Qt.AlignRight + text: i18n("Homepage:") + } + UrlButton { + id: homepageLink + url: application.homepage + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft + } + + // "User Guide" row + Label { + visible: docsLink.visible + Layout.alignment: Qt.AlignRight + text: i18n("User Guide:") + } + UrlButton { + id: docsLink + url: application.helpURL + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft + } + + // Donate row + Label { + visible: donationLink.visible + Layout.alignment: Qt.AlignRight + text: i18n("Donate:") + } + UrlButton { + id: donationLink + url: application.donationURL + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft + } + + // "Report a Problem" row + Label { + visible: bugLink.visible + Layout.alignment: Qt.AlignRight + text: i18n("Report a Problem:") + } + UrlButton { + id: bugLink + url: application.bugURL + Layout.fillWidth: true + horizontalAlignment: Text.AlignLeft + } + } + } + + readonly property var addons: AddonsView { + id: addonsView + application: appInfo.application + parent: overlay + } +} diff --git a/discover/qml/ApplicationScreenshots.qml b/discover/qml/ApplicationScreenshots.qml new file mode 100644 index 0000000..7859184 --- /dev/null +++ b/discover/qml/ApplicationScreenshots.qml @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + + +import QtQuick 2.1 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import QtGraphicalEffects 1.0 +import org.kde.discover 2.0 +import org.kde.kirigami 2.0 as Kirigami + +Flickable { + id: root + readonly property alias count: screenshotsModel.count + property alias resource: screenshotsModel.application + property var resource + property int currentIndex: -1 + property Item currentItem: screenshotsRep.itemAt(currentIndex) + Layout.preferredHeight: Kirigami.Units.gridUnit * 13 + contentHeight: height + contentWidth: screenshotsLayout.width + + Popup { + id: overlay + parent: applicationWindow().overlay + modal: true + clip: false + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + readonly property real proportion: overlayImage.sourceSize.width>1 ? overlayImage.sourceSize.height/overlayImage.sourceSize.width : 1 + height: overlayImage.status == Image.Loading ? Kirigami.Units.gridUnit * 5 : Math.min(parent.height * 0.9, (parent.width * 0.9) * proportion, overlayImage.sourceSize.height) + width: height/proportion + + BusyIndicator { + id: indicator + visible: running + running: overlayImage.status == Image.Loading + anchors.fill: parent + } + + Image { + id: overlayImage + anchors.fill: parent + source: root.currentItem ? root.currentItem.imageSource : "" + fillMode: Image.PreserveAspectFit + smooth: true + } + + Button { + anchors { + right: parent.left + verticalCenter: parent.verticalCenter + } + visible: leftAction.visible + icon.name: leftAction.iconName + onClicked: leftAction.triggered(null) + } + + Button { + anchors { + left: parent.right + verticalCenter: parent.verticalCenter + } + visible: rightAction.visible + icon.name: rightAction.iconName + onClicked: rightAction.triggered(null) + } + + Kirigami.Action { + id: leftAction + icon.name: "arrow-left" + enabled: overlay.visible && visible + visible: root.currentIndex >= 1 && !indicator.running + onTriggered: root.currentIndex = (root.currentIndex - 1) % screenshotsModel.count + } + + Kirigami.Action { + id: rightAction + icon.name: "arrow-right" + enabled: overlay.visible && visible + visible: root.currentIndex < (root.count - 1) && !indicator.running + onTriggered: root.currentIndex = (root.currentIndex + 1) % screenshotsModel.count + } + } + + Row { + id: screenshotsLayout + height: root.contentHeight + spacing: Kirigami.Units.largeSpacing + focus: overlay.visible + + Keys.onLeftPressed: if (leftAction.visible) leftAction.trigger() + Keys.onRightPressed: if (rightAction.visible) rightAction.trigger() + + Repeater { + id: screenshotsRep + model: ScreenshotsModel { + id: screenshotsModel + } + + delegate: MouseArea { + readonly property url imageSource: large_image_url + readonly property real proportion: thumbnail.sourceSize.width>1 ? thumbnail.sourceSize.height/thumbnail.sourceSize.width : 1 + width: Math.max(50, height/proportion) + height: screenshotsLayout.height + + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + + onClicked: { + root.currentIndex = index + overlay.open() + } + + DropShadow { + source: thumbnail + anchors.fill: thumbnail + verticalOffset: Kirigami.Units.largeSpacing + horizontalOffset: 0 + radius: 12.0 + samples: 25 + color: Kirigami.Theme.disabledTextColor + cached: true + } + + BusyIndicator { + visible: running + running: thumbnail.status == Image.Loading + anchors.centerIn: parent + } + + Image { + id: thumbnail + source: small_image_url + height: parent.height + fillMode: Image.PreserveAspectFit + smooth: true + } + } + } + } + clip: true + readonly property var leftShadow: Shadow { + parent: root + anchors { + left: parent.left + top: parent.top + bottom: parent.bottom + } + edge: Qt.LeftEdge + width: Math.max(0, Math.min(root.width/5, root.contentX)) + } + + readonly property var rightShadow: Shadow { + parent: root + anchors { + right: parent.right + top: parent.top + bottom: parent.bottom + } + edge: Qt.RightEdge + width: Math.max(0, Math.min(root.contentWidth - root.contentX - root.width)/5) + } +} diff --git a/discover/qml/ApplicationsListPage.qml b/discover/qml/ApplicationsListPage.qml new file mode 100644 index 0000000..3082ff2 --- /dev/null +++ b/discover/qml/ApplicationsListPage.qml @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.5 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.2 +import "navigation.js" as Navigation +import org.kde.discover.app 1.0 +import org.kde.discover 2.0 +import org.kde.kirigami 2.4 as Kirigami + +DiscoverPage { + id: page + readonly property var model: appsModel + property alias category: appsModel.filteredCategory + property alias sortRole: appsModel.sortRole + property alias sortOrder: appsModel.sortOrder + property alias originFilter: appsModel.originFilter + property alias mimeTypeFilter: appsModel.mimeTypeFilter + property alias stateFilter: appsModel.stateFilter + property alias extending: appsModel.extending + property alias search: appsModel.search + property alias resourcesUrl: appsModel.resourcesUrl + property alias isBusy: appsModel.isBusy + property alias allBackends: appsModel.allBackends + property alias count: apps.count + property alias listHeader: apps.header + property alias listHeaderPositioning: apps.headerPositioning + property bool compact: page.width < 550 || !applicationWindow().wideScreen + property bool showRating: true + + property bool canNavigate: true + readonly property alias subcategories: appsModel.subcategories + title: category ? category.name : "" + + signal clearSearch() + + supportsRefreshing: true + onRefreshingChanged: if (refreshing) { + appsModel.invalidateFilter() + refreshing = false + } + + ActionGroup { + id: sortGroup + exclusive: true + } + + contextualActions: [ + Kirigami.Action { + visible: !appsModel.sortByRelevancy + text: i18n("Sort: %1", sortGroup.checkedAction.text) + Action { + ActionGroup.group: sortGroup + text: i18n("Name") + onTriggered: { + appsModel.sortRole = ResourcesProxyModel.NameRole + appsModel.sortOrder = Qt.AscendingOrder + } + checkable: true + checked: appsModel.sortRole == ResourcesProxyModel.NameRole + } + Action { + ActionGroup.group: sortGroup + text: i18n("Rating") + onTriggered: { + appsModel.sortRole = ResourcesProxyModel.SortableRatingRole + appsModel.sortOrder = Qt.DescendingOrder + } + checkable: true + checked: appsModel.sortRole == ResourcesProxyModel.SortableRatingRole + } + Action { + ActionGroup.group: sortGroup + text: i18n("Size") + onTriggered: { + appsModel.sortRole = ResourcesProxyModel.SizeRole + appsModel.sortOrder = Qt.AscendingOrder + } + checkable: true + checked: appsModel.sortRole == ResourcesProxyModel.SizeRole + } + Action { + ActionGroup.group: sortGroup + text: i18n("Release Date") + onTriggered: { + appsModel.sortRole = ResourcesProxyModel.ReleaseDateRole + appsModel.sortOrder = Qt.DescendingOrder + } + checkable: true + checked: appsModel.sortRole == ResourcesProxyModel.ReleaseDateRole + } + } + ] + + Kirigami.CardsListView { + id: apps + + section.delegate: Label { + text: section + anchors { + right: parent.right + } + } + + model: ResourcesProxyModel { + id: appsModel + sortRole: ResourcesProxyModel.SortableRatingRole + sortOrder: Qt.DescendingOrder + onBusyChanged: if (isBusy) { + apps.currentIndex = -1 + } + } + currentIndex: -1 + delegate: ApplicationDelegate { + application: model.application + compact: page.compact + showRating: page.showRating + view: apps + } + + Label { + anchors.centerIn: parent + opacity: apps.count == 0 && !appsModel.isBusy ? 0.3 : 0 + Behavior on opacity { PropertyAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad; } } + text: i18n("Sorry, nothing found...") + } + + BusyIndicator { + id: busyIndicator + anchors { + top: parent.bottom + horizontalCenter: parent.horizontalCenter + margins: Kirigami.Units.largeSpacing + } + running: false + opacity: 0 + states: [ + State { + name: "running"; + when: appsModel.isBusy + PropertyChanges { target: busyIndicator; opacity: 1; running: true; } + AnchorChanges { target: busyIndicator; anchors.bottom: parent.bottom; anchors.top: undefined; } + } + ] + transitions: [ + Transition { + from: "" + to: "running" + SequentialAnimation { + PauseAnimation { duration: Kirigami.Units.longDuration * 5; } + ParallelAnimation { + AnchorAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad; } + PropertyAnimation { property: "opacity"; duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad; } + } + } + }, + Transition { + from: "running" + to: "" + ParallelAnimation { + AnchorAnimation { duration: Kirigami.Units.shortDuration; easing.type: Easing.InOutQuad; } + PropertyAnimation { property: "opacity"; duration: Kirigami.Units.shortDuration; easing.type: Easing.InOutQuad; } + } + } + ] + Label { + id: busyLabel + anchors { + horizontalCenter: parent.horizontalCenter + bottom: parent.top + } + text: i18n("Still looking...") + opacity: 0 + states: [ + State { + name: "running"; + when: busyIndicator.opacity === 1; + PropertyChanges { target: busyLabel; opacity: 1; } + } + ] + transitions: Transition { + from: "" + to: "running" + SequentialAnimation { + PauseAnimation { duration: Kirigami.Units.longDuration * 5; } + PropertyAnimation { property: "opacity"; duration: Kirigami.Units.longDuration * 10; easing.type: Easing.InOutCubic; } + } + } + } + } + } +} diff --git a/discover/qml/BrowsingPage.qml b/discover/qml/BrowsingPage.qml new file mode 100644 index 0000000..7fff4ea --- /dev/null +++ b/discover/qml/BrowsingPage.qml @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.4 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import "navigation.js" as Navigation +import org.kde.kirigami 2.4 as Kirigami + +DiscoverPage +{ + id: page + title: i18n("Featured") + leftPadding: 0 + rightPadding: 0 + topPadding: 0 + bottomPadding: 0 + + readonly property bool isHome: true + + function searchFor(text) { + if (text.length === 0) + return; + Navigation.openCategory(null, "") + } + + signal clearSearch() + + readonly property bool compact: page.width < 550 || !applicationWindow().wideScreen + + Kirigami.CardsListView { + id: apps + model: FeaturedModel {} + currentIndex: -1 + delegate: ApplicationDelegate { + application: model.application + compact: page.compact + view: apps + } + } +} diff --git a/discover/qml/ConditionalLoader.qml b/discover/qml/ConditionalLoader.qml new file mode 100644 index 0000000..44f81fc --- /dev/null +++ b/discover/qml/ConditionalLoader.qml @@ -0,0 +1,35 @@ +/*************************************************************************** + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Layouts 1.1 + +Loader +{ + id: root + + property Component componentTrue + property Component componentFalse + property bool condition + + Layout.minimumHeight: item && item.Layout ? item.Layout.minimumHeight : 0 + Layout.minimumWidth: item && item.Layout ? item.Layout.minimumWidth : 0 + sourceComponent: condition ? componentTrue : componentFalse +} diff --git a/discover/qml/ConditionalObject.qml b/discover/qml/ConditionalObject.qml new file mode 100644 index 0000000..744898e --- /dev/null +++ b/discover/qml/ConditionalObject.qml @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright © 2018 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.1 + +QtObject +{ + id: root + + property Component componentTrue + property Component componentFalse + property bool condition + + onConditionChanged: { + if (object) + object.destroy(100) + + var component = (condition ? componentTrue : componentFalse) + object = component ? component.createObject(root) : null + } + + property QtObject object +} diff --git a/discover/qml/DiscoverDrawer.qml b/discover/qml/DiscoverDrawer.qml new file mode 100644 index 0000000..8065293 --- /dev/null +++ b/discover/qml/DiscoverDrawer.qml @@ -0,0 +1,184 @@ +/*************************************************************************** + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.0 as Kirigami +import "navigation.js" as Navigation + +Kirigami.GlobalDrawer { + id: drawer + + // FIXME: Dirty workaround for 385992 + width: Kirigami.Units.gridUnit * 14 + + property bool wideScreen: false + bannerImageSource: "qrc:/banners/banner.svg" + //make the left and bottom margins for search field the same + topPadding: drawer.wideScreen ? -toploader.height - leftPadding : 0 + bottomPadding: 0 + + resetMenuOnTriggered: false + + onBannerClicked: { + Navigation.openHome(); + if (modal) + drawerOpen = false + } + + property string currentSearchText + + onCurrentSubMenuChanged: { + if (currentSubMenu) + currentSubMenu.trigger() + else if (currentSearchText.length > 0) + window.leftPage.category = null + else + Navigation.openHome() + } + + function suggestSearchText(text) { + toploader.item.text = text + toploader.item.forceActiveFocus() + } + topContent: ConditionalLoader { + id: toploader + condition: drawer.wideScreen + Layout.fillWidth: true + componentFalse: Item { + Layout.minimumHeight: 1 + } + componentTrue: SearchField { + id: searchField + + visible: window.leftPage && (window.leftPage.searchFor != null || window.leftPage.hasOwnProperty("search")) + + page: window.leftPage + + onCurrentSearchTextChanged: { + var curr = window.leftPage; + + if (pageStack.depth>1) + pageStack.pop() + + if (currentSearchText === "" && window.currentTopLevel === "" && !window.leftPage.category) { + Navigation.openHome() + } else if (!curr.hasOwnProperty("search")) { + if (currentSearchText) { + Navigation.clearStack() + Navigation.openApplicationList( { search: currentSearchText }) + } + } else { + curr.search = currentSearchText; + curr.forceActiveFocus() + } + } + } + } + + ColumnLayout { + spacing: 0 + Layout.fillWidth: true + Layout.leftMargin: -drawer.leftPadding + Layout.rightMargin: -drawer.rightPadding + + Kirigami.Separator { + Layout.fillWidth: true + } + + ProgressView { + separatorVisible: false + } + + ActionListItem { + action: searchAction + } + ActionListItem { + action: installedAction + } + ActionListItem { + action: settingsAction + } + ActionListItem { + objectName: "updateButton" + action: updateAction + + backgroundColor: ResourcesModel.updatesCount>0 ? "orange" : Kirigami.Theme.viewBackgroundColor + } + + states: [ + State { + name: "full" + when: drawer.wideScreen + PropertyChanges { target: drawer; drawerOpen: true } + }, + State { + name: "compact" + when: !drawer.wideScreen + PropertyChanges { target: drawer; drawerOpen: false } + } + ] + } + + Component { + id: categoryActionComponent + Kirigami.Action { + property QtObject category + readonly property bool itsMe: window.leftPage && window.leftPage.hasOwnProperty("category") && (window.leftPage.category == category) + text: category ? category.name : "" + checked: itsMe + visible: (!window.leftPage + || !window.leftPage.subcategories + || window.leftPage.subcategories === undefined + || currentSearchText.length === 0 + || (category && category.contains(window.leftPage.subcategories)) + ) + onTriggered: { + if (!window.leftPage.canNavigate) + Navigation.openCategory(category, currentSearchText) + else { + if (pageStack.depth>1) + pageStack.pop() + pageStack.currentIndex = 0 + window.leftPage.category = category + } + } + } + } + + function createCategoryActions(categories) { + var actions = [] + for(var i in categories) { + var cat = categories[i]; + var catAction = categoryActionComponent.createObject(drawer, {category: cat}); + catAction.children = createCategoryActions(cat.subcategories); + actions.push(catAction) + } + return actions; + } + + actions: createCategoryActions(CategoryModel.rootCategories) + + modal: !drawer.wideScreen + handleVisible: !drawer.wideScreen +} diff --git a/discover/qml/DiscoverPage.qml b/discover/qml/DiscoverPage.qml new file mode 100644 index 0000000..5f169ab --- /dev/null +++ b/discover/qml/DiscoverPage.qml @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2015 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.5 +import org.kde.kirigami 2.0 as Kirigami + +Kirigami.ScrollablePage +{ + id: root + + readonly property var s1: Shortcut { + sequence: StandardKey.MoveToNextPage + enabled: root.isCurrentPage + onActivated: { + root.flickable.contentY = Math.min(root.flickable.contentHeight - root.flickable.height, + root.flickable.contentY + root.flickable.height); + } + } + + readonly property var s2: Shortcut { + sequence: StandardKey.MoveToPreviousPage + enabled: root.isCurrentPage + onActivated: { + root.flickable.contentY = Math.max(0, root.flickable.contentY - root.flickable.height); + } + } + + readonly property var sClose: Shortcut { + sequence: StandardKey.Cancel + enabled: root.isCurrentPage && applicationWindow().pageStack.depth>1 + onActivated: { + applicationWindow().pageStack.pop() + } + } + + readonly property var sRefresh: Shortcut { + sequence: StandardKey.Refresh + enabled: root.isCurrentPage && root.supportsRefreshing + onActivated: { + if (root.supportsRefreshing) + root.refreshing = true + } + } + + readonly property var readableCharacters: /\w+/ + Keys.onPressed: { + if(event.text.length > 0 && event.modifiers === Qt.NoModifier && event.text.match(readableCharacters)) { + window.globalDrawer.suggestSearchText(event.text) + } + } +} diff --git a/discover/qml/DiscoverPopup.qml b/discover/qml/DiscoverPopup.qml new file mode 100644 index 0000000..d606271 --- /dev/null +++ b/discover/qml/DiscoverPopup.qml @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.8 +import QtQuick.Controls 2.1 +import org.kde.kirigami 2.1 as Kirigami + +Popup { + id: overlay + parent: applicationWindow().overlay + bottomPadding: Kirigami.Units.largeSpacing + topPadding: Kirigami.Units.largeSpacing + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + width: Math.min(parent.width - Kirigami.Units.gridUnit * 3, Kirigami.Units.gridUnit * 50) + height: Math.min(view.contentHeight + bottomPadding + topPadding, parent.height * 4/5) +} diff --git a/discover/qml/DiscoverWindow.qml b/discover/qml/DiscoverWindow.qml new file mode 100644 index 0000000..561333f --- /dev/null +++ b/discover/qml/DiscoverWindow.qml @@ -0,0 +1,238 @@ +import QtQuick 2.5 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.5 as Kirigami +import "navigation.js" as Navigation + +Kirigami.ApplicationWindow +{ + id: window + readonly property string applicationListComp: ("qrc:/qml/ApplicationsListPage.qml") + readonly property string applicationComp: ("qrc:/qml/ApplicationPage.qml") + readonly property string reviewsComp: ("qrc:/qml/ReviewsPage.qml") + + //toplevels + readonly property string topBrowsingComp: ("qrc:/qml/BrowsingPage.qml") + readonly property string topInstalledComp: ("qrc:/qml/InstalledPage.qml") + readonly property string topSearchComp: ("qrc:/qml/SearchPage.qml") + readonly property string topUpdateComp: ("qrc:/qml/UpdatesPage.qml") + readonly property string topSourcesComp: ("qrc:/qml/SourcesPage.qml") + readonly property string loadingComponent: ("qrc:/qml/LoadingPage.qml") + readonly property QtObject stack: window.pageStack + property string currentTopLevel: defaultStartup ? topBrowsingComp : loadingComponent + property bool defaultStartup: true + + objectName: "DiscoverMainWindow" + title: leftPage ? leftPage.title : "" + + + visible: true + + minimumWidth: 300 + minimumHeight: 300 + + pageStack.defaultColumnWidth: Kirigami.Units.gridUnit * 25 + pageStack.globalToolBar.style: window.wideScreen ? Kirigami.ApplicationHeaderStyle.ToolBar : Kirigami.ApplicationHeaderStyle.Breadcrumb + + readonly property var leftPage: window.stack.depth>0 ? window.stack.get(0) : null + + Component.onCompleted: { + if (app.isRoot) + showPassiveNotification(i18n("Running as root is discouraged and unnecessary.")); + } + + TopLevelPageData { + iconName: "tools-wizard" + text: i18n("Discover") + component: topBrowsingComp + objectName: "discover" + } + + TopLevelPageData { + id: searchAction + enabled: !window.wideScreen + iconName: "search" + text: i18n("Search") + component: topSearchComp + objectName: "discover" + shortcut: "Ctrl+F" + } + TopLevelPageData { + id: installedAction + text: i18n("Installed") + component: topInstalledComp + objectName: "installed" + } + TopLevelPageData { + id: updateAction + iconName: ResourcesModel.updatesCount>0 ? ResourcesModel.hasSecurityUpdates ? "update-high" : "update-low" : "update-none" + text: ResourcesModel.updatesCount<=0 ? (ResourcesModel.isFetching ? i18n("Checking for updates...") : i18n("No Updates") ) : i18nc("Update section name", "Update (%1)", ResourcesModel.updatesCount) + component: topUpdateComp + objectName: "update" + } + TopLevelPageData { + id: settingsAction + iconName: "settings" + text: i18n("Settings") + component: topSourcesComp + objectName: "settings" + } + + Kirigami.Action { + id: refreshAction + readonly property QtObject action: ResourcesModel.updateAction + text: action.text + icon.name: "view-refresh" + onTriggered: action.trigger() + enabled: action.enabled + tooltip: shortcut + + shortcut: "Ctrl+R" + } + + Connections { + target: app + onOpenApplicationInternal: { + Navigation.clearStack() + Navigation.openApplication(app) + } + onListMimeInternal: { + currentTopLevel = topBrowsingComp; + Navigation.openApplicationMime(mime) + } + onListCategoryInternal: { + currentTopLevel = topBrowsingComp; + Navigation.openCategory(cat, "") + } + + onOpenSearch: { + Navigation.clearStack() + Navigation.openApplicationList({search: search}) + } + + onOpenErrorPage: { + Navigation.clearStack() + console.warn("error", errorMessage) + window.stack.push(errorPageComponent, { error: errorMessage, title: i18n("Sorry...") }) + } + + onPreventedClose: showPassiveNotification(i18n("Could not close the application, there are tasks that need to be done.")) + onUnableToFind: { + showPassiveNotification(i18n("Unable to find resource: %1", resid)); + Navigation.openHome() + } + } + + Connections { + target: ResourcesModel + onPassiveMessage: { + showPassiveNotification(message) + console.log("message:", message) + } + } + + Component { + id: errorPageComponent + Kirigami.Page { + id: page + property string error: "" + Kirigami.Heading { + text: page.error + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + } + } + + Component { + id: proceedDialog + Kirigami.OverlaySheet { + id: sheet + showCloseButton: false + property QtObject transaction + property alias title: heading.text + property alias description: desc.text + property bool acted: false + ColumnLayout { + Kirigami.Heading { + id: heading + } + Label { + id: desc + Layout.fillWidth: true + textFormat: Text.StyledText + wrapMode: Text.WordWrap + } + RowLayout { + Layout.alignment: Qt.AlignRight + Button { + text: i18n("Proceed") + icon.name: "dialog-ok" + onClicked: { + transaction.proceed() + sheet.acted = true + sheet.close() + } + } + Button { + Layout.alignment: Qt.AlignRight + text: i18n("Cancel") + icon.name: "dialog-cancel" + onClicked: { + transaction.cancel() + sheet.acted = true + sheet.close() + } + } + } + } + onSheetOpenChanged: if(!sheetOpen) { + sheet.destroy(1000) + if (!sheet.acted) + transaction.cancel() + } + } + } + + Instantiator { + model: TransactionModel + + delegate: Connections { + target: model.transaction ? model.transaction : null + + onProceedRequest: { + var dialog = proceedDialog.createObject(window, {transaction: transaction, title: title, description: description}) + dialog.open() + } + onPassiveMessage: { + window.showPassiveNotification(message) + } + } + } + + ConditionalObject { + id: drawerObject + condition: window.wideScreen + componentFalse: Kirigami.ContextDrawer {} + } + contextDrawer: drawerObject.object + + globalDrawer: DiscoverDrawer { + wideScreen: window.wideScreen + } + + onCurrentTopLevelChanged: { + window.pageStack.clear() + if (currentTopLevel) + window.pageStack.push(currentTopLevel, {}, window.status!=Component.Ready) + } + + UnityLauncher { + launcherId: "org.kde.discover.desktop" + progressVisible: TransactionModel.count > 0 + progress: TransactionModel.progress + } +} diff --git a/discover/qml/InstallApplicationButton.qml b/discover/qml/InstallApplicationButton.qml new file mode 100644 index 0000000..61d5bca --- /dev/null +++ b/discover/qml/InstallApplicationButton.qml @@ -0,0 +1,65 @@ +import QtQuick 2.1 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.kirigami 2.0 as Kirigami + +ConditionalLoader +{ + id: root + property alias application: listener.resource + readonly property alias isActive: listener.isActive + readonly property alias progress: listener.progress + readonly property alias listener: listener + readonly property string text: !application.isInstalled ? i18n("Install") : i18n("Remove") + property Component additionalItem: null + + TransactionListener { + id: listener + } + + property QtObject action: Kirigami.Action { + text: root.text + icon { + name: application.isInstalled ? "trash-empty" : "cloud-download" + color: !enabled ? Kirigami.Theme.backgroundColor : !listener.isActive ? (application.isInstalled ? Kirigami.Theme.negativeTextColor : Kirigami.Theme.positiveTextColor) : Kirigami.Theme.backgroundColor + } + enabled: !listener.isActive && application.state != AbstractResource.Broken + onTriggered: root.click() + } + + function click() { + if (!isActive) { + if(application.isInstalled) + ResourcesModel.removeApplication(application); + else + ResourcesModel.installApplication(application); + } else { + console.warn("trying to un/install but resouce still active", application.name) + } + } + + condition: listener.isActive + componentTrue: RowLayout { + ToolButton { + Layout.fillHeight: true + icon.name: "dialog-cancel" + enabled: listener.isCancellable + onClicked: listener.cancel() + } + + LabelBackground { + Layout.fillWidth: true + text: listener.statusText + progress: listener.progress/100 + } + } + + componentFalse: Button { + enabled: application.state != AbstractResource.Broken + text: root.text + focus: true + + onClicked: root.click() + } +} diff --git a/discover/qml/InstalledPage.qml b/discover/qml/InstalledPage.qml new file mode 100644 index 0000000..ddb179f --- /dev/null +++ b/discover/qml/InstalledPage.qml @@ -0,0 +1,21 @@ +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.1 as Kirigami + +ApplicationsListPage { + id: page + stateFilter: AbstractResource.Installed + sortRole: ResourcesProxyModel.NameRole + sortOrder: Qt.AscendingOrder + allBackends: true + + title: i18n("Installed") + compact: true + showRating: false + canNavigate: false + + listHeader: null +} diff --git a/discover/qml/KirigamiActionBridge.qml b/discover/qml/KirigamiActionBridge.qml new file mode 100644 index 0000000..9aa542f --- /dev/null +++ b/discover/qml/KirigamiActionBridge.qml @@ -0,0 +1,39 @@ +/*************************************************************************** + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQml 2.0 +import org.kde.kirigami 2.1 as Kirigami + +Kirigami.Action +{ + property QtObject action: null + + function removeAmpersand(text) { + return text.replace("&", ""); + } + text: action ? removeAmpersand(action.text) : "" + checked: action && action.checked + enabled: action && action.enabled + tooltip: action ? action.toolTip : "" + iconName: action ? app.iconName(action.icon) : "" + shortcut: action ? action.shortcut : undefined + + onTriggered: action.trigger() +} diff --git a/discover/qml/LabelBackground.qml b/discover/qml/LabelBackground.qml new file mode 100644 index 0000000..d8d9466 --- /dev/null +++ b/discover/qml/LabelBackground.qml @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.0 as Kirigami + +Item +{ + property alias text: theLabel.text + property real progress: 1. + readonly property real margin: Kirigami.Units.smallSpacing * 1.5 + implicitWidth: theLabel.implicitWidth + margin*2 + implicitHeight: theLabel.implicitHeight + margin*2 + width: implicitWidth + height: implicitHeight + + Rectangle { + color: Kirigami.Theme.disabledTextColor + anchors.fill: parent + radius: parent.margin + } + + Rectangle { + anchors { + fill: parent + rightMargin: (1-parent.progress) * parent.width + } + color: Kirigami.Theme.highlightColor + radius: parent.margin + } + + Label { + id: theLabel + anchors.centerIn: parent + color: Kirigami.Theme.highlightedTextColor + } +} diff --git a/discover/qml/LinkButton.qml b/discover/qml/LinkButton.qml new file mode 100644 index 0000000..7cb695d --- /dev/null +++ b/discover/qml/LinkButton.qml @@ -0,0 +1,33 @@ +import QtQuick 2.2 +import org.kde.kirigami 2.0 as Kirigami +import QtQuick.Controls 2.1 as QQC2 + +QQC2.Label { + id: control + + property QtObject action: null //some older Qt versions don't support the namespacing in Kirigami.Action + property alias acceptedButtons: area.acceptedButtons + text: action ? action.text : "" + enabled: !action || action.enabled + onClicked: if (action) action.trigger() + + font: control.font + color: enabled ? Kirigami.Theme.linkColor : Kirigami.Theme.textColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + + signal clicked(QtObject mouse) + MouseArea { + id: area + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + + onContainsMouseChanged: { + control.font.underline = containsMouse && control.enabled + } + + onClicked: control.clicked(mouse) + } +} diff --git a/discover/qml/LoadingPage.qml b/discover/qml/LoadingPage.qml new file mode 100644 index 0000000..83c18c0 --- /dev/null +++ b/discover/qml/LoadingPage.qml @@ -0,0 +1,12 @@ +import org.kde.kirigami 2.0 as Kirigami +import QtQuick.Controls 2.1 as QQC2 + +Kirigami.Page { + title: label.text + QQC2.Label { + id: label + text: i18n("Loading...") + font.pointSize: 52 + anchors.centerIn: parent + } +} diff --git a/discover/qml/ProgressView.qml b/discover/qml/ProgressView.qml new file mode 100644 index 0000000..b35b6fe --- /dev/null +++ b/discover/qml/ProgressView.qml @@ -0,0 +1,104 @@ +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.kirigami 2.0 as Kirigami +import "navigation.js" as Navigation + +Kirigami.BasicListItem { + id: listItem + label: TransactionModel.count ? i18n("Tasks (%1%)", TransactionModel.progress) : i18n("Tasks") + visible: TransactionModel.count > 0 + + background: Item { + + Rectangle { + anchors { + fill: parent + rightMargin: TransactionModel.count>=1 ? listItem.width*(1-TransactionModel.progress/100) : 0 + } + color: TransactionModel.count>=1 || listItem.hovered || listItem.highlighted || listItem.pressed || listItem.checked ? listItem.activeBackgroundColor : listItem.backgroundColor + opacity: listItem.hovered || listItem.highlighted ? 0.2 : 1 + } + } + + property QtObject sheetObject: null + onClicked: { + sheetObject = sheet.createObject() + sheetObject.open() + } + onVisibleChanged: if (!visible && sheetObject) { + sheetObject.close() + sheetObject.destroy(100) + } + + readonly property var v3: Component { + id: sheet + Kirigami.OverlaySheet { + + contentItem: ListView { + spacing: 0 + + Component { + id: listenerComp + TransactionListener {} + } + model: TransactionModel + + delegate: Kirigami.AbstractListItem { + id: del + separatorVisible: false + hoverEnabled: model.application + onClicked: { + if (model.application) { + Navigation.clearStack() + Navigation.openApplication(model.application) + } + } + readonly property QtObject listener: listenerComp.createObject(del, (model.transaction.resource ? {resource: model.transaction.resource} : {transaction: model.transaction})) + + ColumnLayout { + width: parent.width + + RowLayout { + Layout.fillWidth: true + + Kirigami.Icon { + Layout.fillHeight: true + Layout.minimumWidth: height + source: model.transaction.icon + } + + Label { + Layout.alignment: Qt.AlignVCenter + Layout.fillWidth: true + elide: Text.ElideRight + text: listener.isActive && model.transaction.downloadSpeed>0 ? i18nc("TransactioName - TransactionStatus", "%1 - %2: %3", model.transaction.name, listener.statusText, model.transaction.downloadSpeedString) : + listener.isActive ? i18nc("TransactioName - TransactionStatus", "%1 - %2", model.transaction.name, listener.statusText) + : model.transaction.name + } + ToolButton { + icon.name: "dialog-cancel" + visible: listener.isCancellable + onClicked: listener.cancel() + } + ToolButton { + icon.name: "system-run" + visible: model.application != undefined && model.application.isInstalled && !listener.isActive && model.application.canExecute + onClicked: { + model.application.invokeApplication() + model.remove(index) + } + } + } + ProgressBar { + Layout.fillWidth: true + visible: listener.isActive + value: listener.progress / 100 + } + } + } + } + } + } +} diff --git a/discover/qml/Rating.qml b/discover/qml/Rating.qml new file mode 100644 index 0000000..eea2e93 --- /dev/null +++ b/discover/qml/Rating.qml @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtQuick.Layouts 1.1 +import org.kde.kirigami 2.0 as Kirigami + +RowLayout +{ + id: view + property bool editable: false + property int max: 10 + property int rating: 0 + property real starSize: Kirigami.Units.gridUnit + + clip: true + spacing: 0 + + readonly property var ratingIndex: (theRepeater.count/view.max)*view.rating + + Repeater { + id: theRepeater + model: 5 + delegate: Kirigami.Icon { + Layout.minimumWidth: view.starSize + Layout.minimumHeight: view.starSize + Layout.preferredWidth: view.starSize + Layout.preferredHeight: view.starSize + + width: height + source: "rating" + opacity: (view.editable && mouse.item.containsMouse ? 0.7 + : index>=view.ratingIndex ? 0.2 + : 1) + + ConditionalLoader { + id: mouse + + anchors.fill: parent + condition: view.editable + componentTrue: MouseArea { + hoverEnabled: true + onClicked: rating = (max/theRepeater.model*(index+1)) + } + componentFalse: null + } + } + } +} diff --git a/discover/qml/ReviewDelegate.qml b/discover/qml/ReviewDelegate.qml new file mode 100644 index 0000000..e57893f --- /dev/null +++ b/discover/qml/ReviewDelegate.qml @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import org.kde.discover 2.0 +import org.kde.kirigami 2.0 as Kirigami + +ColumnLayout +{ + id: item + visible: model.shouldShow + property bool compact: false + property bool separator: true + signal markUseful(bool useful) + + function usefulnessToString(favorable, total) + { + return total==0 + ? i18n("Tell us about this review!") + : i18n("%1 out of %2 people found this review useful", favorable, total) + } + + RowLayout { + Layout.fillWidth: true + Label { + id: content + Layout.fillWidth: true + elide: Text.ElideRight + readonly property string author: reviewer ? reviewer : i18n("unknown reviewer") + text: summary ? i18n("%1 by %2", summary, author) : i18n("Comment by %1", author) + } + Rating { + id: rating + rating: model.rating + starSize: content.font.pointSize + } + } + Label { + Layout.fillWidth: true + text: display + maximumLineCount: item.compact ? 3 : undefined + wrapMode: Text.Wrap + } + Label { + visible: !item.compact + text: usefulnessToString(usefulnessFavorable, usefulnessTotal) + } + + Label { + visible: !item.compact + Layout.alignment: Qt.AlignRight + text: { + switch(usefulChoice) { + case ReviewsModel.Yes: + i18n("Useful?
Yes/No") + break; + case ReviewsModel.No: + i18n("Useful? Yes/No") + break; + default: + i18n("Useful? Yes/No") + break; + } + } + onLinkActivated: item.markUseful(link=='true') + } + Kirigami.Separator { + visible: item.separator + Layout.fillWidth: true + } +} diff --git a/discover/qml/ReviewDialog.qml b/discover/qml/ReviewDialog.qml new file mode 100644 index 0000000..a9026ae --- /dev/null +++ b/discover/qml/ReviewDialog.qml @@ -0,0 +1,63 @@ +import QtQuick 2.3 +import QtQuick.Controls 2.2 +import QtQuick.Dialogs 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.0 +import org.kde.kirigami 2.0 as Kirigami + +Kirigami.OverlaySheet +{ + id: reviewDialog + + property QtObject application + readonly property alias rating: ratingInput.rating + readonly property alias summary: titleInput.text + readonly property alias review: reviewInput.text + property QtObject backend: null + + signal accepted() + + ColumnLayout { + Kirigami.Heading { level: 3; text: i18n("Reviewing '%1'", application.name) } + Label { text: i18n("Rating:") } + Rating { + id: ratingInput + editable: true + } + + Label { + visible: reviewDialog.backend.userName.length > 0 + text: visible ? i18n("Submission name: %1", reviewDialog.backend.userName) : "" + } + Label { text: i18n("Title:") } + TextField { + id: titleInput + Layout.fillWidth: true + validator: RegExpValidator { regExp: /.{3,70}/ } + } + Label { text: i18n("Review:") } + TextArea { + id: reviewInput + readonly property bool acceptableInput: length > 15 && length < 3000 + Layout.fillWidth: true + Layout.fillHeight: true + } + + Button { + id: acceptButton + Layout.alignment: Qt.AlignRight + enabled: rating > 2 && titleInput.acceptableInput && reviewInput.acceptableInput + text: { + if (rating < 2) return i18n("Enter a rating"); + if (! titleInput.acceptableInput) return i18n("Write a title"); + if (reviewInput.length < 15) return i18n("Keep writing..."); + if (reviewInput.length > 3000) return i18n("Too long!"); + return i18n("Submit review"); + } + onClicked: { + reviewDialog.accepted() + reviewDialog.sheetOpen = false + } + } + } +} diff --git a/discover/qml/ReviewsPage.qml b/discover/qml/ReviewsPage.qml new file mode 100644 index 0000000..5a6f152 --- /dev/null +++ b/discover/qml/ReviewsPage.qml @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.1 +import QtQuick.Controls 2.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.0 as Kirigami + +Kirigami.OverlaySheet { + id: page + property alias model: reviewsView.model + readonly property QtObject reviewsBackend: resource.backend.reviewsBackend + readonly property var resource: model.resource + + readonly property var rd: ReviewDialog { + id: reviewDialog + application: page.resource + parent: overlay + backend: page.reviewsBackend + onAccepted: backend.submitReview(resource, summary, review, rating) + } + + function openReviewDialog() { + reviewDialog.sheetOpen = true + page.sheetOpen = false + } + + ListView { + id: reviewsView + + clip: true + spacing: Kirigami.Units.smallSpacing + cacheBuffer: Math.max(0, contentHeight) + + header: Item { + width: parent.width + height: reviewButton.implicitHeight + 2 * Kirigami.Units.largeSpacing + Button { + id: reviewButton + + anchors { + verticalCenter: parent.verticalCenter + left: parent.left + leftMargin: Kirigami.Units.largeSpacing + } + + visible: page.reviewsBackend != null + enabled: page.resource.isInstalled + text: i18n("Review...") + onClicked: page.openReviewDialog() + } + } + + delegate: ReviewDelegate { + anchors { + left: parent.left + right: parent.right + } + separator: index != ListView.view.count-1 + onMarkUseful: page.model.markUseful(index, useful) + } + } +} diff --git a/discover/qml/SearchField.qml b/discover/qml/SearchField.qml new file mode 100644 index 0000000..2c71b7f --- /dev/null +++ b/discover/qml/SearchField.qml @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Controls 2.1 +import org.kde.kirigami 2.1 as Kirigami + +TextField +{ + id: searchField + property QtObject page + property string currentSearchText + + placeholderText: (!enabled || !page || page.hasOwnProperty("isHome") || page.title.length === 0) ? i18n("Search...") : i18n("Search in '%1'...", window.leftPage.title) + + Shortcut { + sequence: "Ctrl+F" + onActivated: { + searchField.forceActiveFocus() + searchField.selectAll() + } + } + onAccepted: { + currentSearchText = text + } + + hoverEnabled: true + ToolTip { + delay: Kirigami.Units.longDuration + visible: hovered + text: searchAction.shortcut + } + + function clearText() { + searchField.text = "" + searchField.accepted() + } + + ToolButton { + anchors { + top: parent.top + right: parent.right + bottom: parent.bottom + margins: Kirigami.Units.smallSpacing + } + icon.name: "edit-clear" + visible: searchField.text != "" + onClicked: clearText() + } + + Connections { + ignoreUnknownSignals: true + target: page + onClearSearch: clearText() + } + + Connections { + target: applicationWindow() + onCurrentTopLevelChanged: { + if (applicationWindow().currentTopLevel.length > 0) + clearText() + } + } +} diff --git a/discover/qml/SearchPage.qml b/discover/qml/SearchPage.qml new file mode 100644 index 0000000..ad4fe44 --- /dev/null +++ b/discover/qml/SearchPage.qml @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +import QtQuick 2.5 + +ApplicationsListPage { + id: searchPage + + signal shown() + Timer { + interval: 0 + running: true + onTriggered: { + searchPage.shown() + } + } + + listHeaderPositioning: ListView.OverlayHeader + listHeader: SearchField { + id: searchField + width: parent.width + focus: true + z: 100 + Component.onCompleted: forceActiveFocus() + + Connections { + ignoreUnknownSignals: true + target: searchPage + onShown: { + searchField.forceActiveFocus() + } + } + + onCurrentSearchTextChanged: { + searchPage.search = currentSearchText + } + } +} diff --git a/discover/qml/Shadow.qml b/discover/qml/Shadow.qml new file mode 100644 index 0000000..1d0548c --- /dev/null +++ b/discover/qml/Shadow.qml @@ -0,0 +1,48 @@ +/* + * Copyright 2018 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.1 +import QtGraphicalEffects 1.0 +import org.kde.kirigami 2.2 + +LinearGradient { + id: shadow + property int edge: Qt.LeftEdge + + width: Units.gridUnit/2 + height: Units.gridUnit/2 + + start: Qt.point((edge != Qt.RightEdge ? 0 : width), (edge != Qt.BottomEdge ? 0 : height)) + end: Qt.point((edge != Qt.LeftEdge ? 0 : width), (edge != Qt.TopEdge ? 0 : height)) + gradient: Gradient { + GradientStop { + position: 0.0 + color: Theme.backgroundColor + } + GradientStop { + position: 0.3 + color: Qt.rgba(0, 0, 0, 0.1) + } + GradientStop { + position: 1.0 + color: "transparent" + } + } +} + diff --git a/discover/qml/SourcesPage.qml b/discover/qml/SourcesPage.qml new file mode 100644 index 0000000..a2bef56 --- /dev/null +++ b/discover/qml/SourcesPage.qml @@ -0,0 +1,262 @@ +import QtQuick 2.4 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import org.kde.kirigami 2.2 as Kirigami +import "navigation.js" as Navigation + +DiscoverPage { + id: page + clip: true + title: i18n("Settings") + property string search: "" + + contextualActions: [ + KirigamiActionBridge { action: app.action("help_about_app") }, + KirigamiActionBridge { action: app.action("help_report_bug") } + ] + + mainItem: ListView { + id: sourcesView + model: QSortFilterProxyModel { + filterRegExp: new RegExp(page.search, 'i') + dynamicSortFilter: false //We don't want to sort, as sorting can have some semantics on some backends + sourceModel: SourcesModel + } + currentIndex: -1 + + section.property: "sourceName" + section.delegate: Kirigami.AbstractListItem { + id: backendItem + hoverEnabled: false + supportsMouseEvents: false + readonly property QtObject backend: SourcesModel.sourcesBackendByName(section) + readonly property QtObject resourcesBackend: backend.resourcesBackend + readonly property bool isDefault: ResourcesModel.currentApplicationBackend == resourcesBackend + + GridLayout { + id: sourceTitleLayout + Layout.fillHeight: true + Connections { + target: backendItem.backend + onPassiveMessage: window.showPassiveNotification(message) + onProceedRequest: { + var dialog = sourceProceedDialog.createObject(window, {sourcesBackend: sourcesBackend, title: title, description: description}) + dialog.open() + } + } + + Kirigami.Heading { + Layout.fillWidth: true + Layout.leftMargin: Kirigami.Units.smallSpacing + Layout.alignment: Qt.AlignVCenter + text: backendItem.isDefault ? i18n("%1 (Default)", resourcesBackend.displayName) : resourcesBackend.displayName + level: 3 + } + + Instantiator { + id: backendActionsInst + model: ActionsModel { + actions: backendItem.backend ? backendItem.backend.actions : undefined + } + delegate: Button { + parent: sourceTitleLayout + Layout.column: 1 + text: modelData.text + icon.name: app.iconName(modelData.icon) + ToolTip.visible: hovered + ToolTip.text: modelData.toolTip + onClicked: modelData.trigger() + } + onObjectRemoved: { + object.destroy() + } + } + + Button { + Layout.alignment: Qt.AlignVCenter + icon.name: "preferences-other" + Layout.column: 2 + + visible: resourcesBackend && resourcesBackend.hasApplications + Component { + id: dialogComponent + AddSourceDialog { + source: backendItem.backend + onVisibleChanged: if (!visible) { + destroy() + } + } + } + + id: this + onClicked: settingsMenu.popup(this) + Menu { + id: settingsMenu + MenuItem { + enabled: !backendItem.isDefault + text: i18n("Make default") + onTriggered: ResourcesModel.currentApplicationBackend = backendItem.backend.resourcesBackend + } + + MenuItem { + text: i18n("Add Source...") + visible: backendItem.backend && backendItem.backend.supportsAdding + + onTriggered: { + var addSourceDialog = dialogComponent.createObject(null, {displayName: backendItem.backend.resourcesBackend.displayName }) + addSourceDialog.open() + } + } + } + } + } + } + + Component { + id: sourceProceedDialog + Kirigami.OverlaySheet { + id: sheet + showCloseButton: false + property QtObject sourcesBackend + property alias title: heading.text + property alias description: desc.text + property bool acted: false + ColumnLayout { + Kirigami.Heading { + id: heading + } + Label { + id: desc + Layout.fillWidth: true + textFormat: Text.StyledText + wrapMode: Text.WordWrap + } + RowLayout { + Layout.alignment: Qt.AlignRight + Button { + text: i18n("Proceed") + icon.name: "dialog-ok" + onClicked: { + sourcesBackend.proceed() + sheet.acted = true + sheet.close() + } + } + Button { + Layout.alignment: Qt.AlignRight + text: i18n("Cancel") + icon.name: "dialog-cancel" + onClicked: { + sourcesBackend.cancel() + sheet.acted = true + sheet.close() + } + } + } + } + onSheetOpenChanged: if(!sheetOpen) { + sheet.destroy(1000) + if (!sheet.acted) + sourcesBackend.cancel() + } + } + } + + delegate: Kirigami.SwipeListItem { + Layout.fillWidth: true + enabled: display.length>0 && model.enabled + highlighted: ListView.isCurrentItem + supportsMouseEvents: sourcesBackend.canFilterSources + onClicked: if (sourcesBackend.canFilterSources) { + Navigation.openApplicationListSource(sourceId) + } + + Keys.onReturnPressed: clicked() + actions: [ + Kirigami.Action { + iconName: "go-up" + enabled: sourcesBackend.firstSourceId !== sourceId + visible: sourcesBackend.canMoveSources + onTriggered: { + var ret = sourcesBackend.moveSource(sourceId, -1) + if (!ret) + window.showPassiveNotification(i18n("Failed to increase '%1' preference", display)) + } + }, + Kirigami.Action { + iconName: "go-down" + enabled: sourcesBackend.lastSourceId !== sourceId + visible: sourcesBackend.canMoveSources + onTriggered: { + var ret = sourcesBackend.moveSource(sourceId, +1) + if (!ret) + window.showPassiveNotification(i18n("Failed to decrease '%1' preference", display)) + } + }, + Kirigami.Action { + iconName: "edit-delete" + tooltip: i18n("Delete the origin") + visible: sourcesBackend.supportsAdding + onTriggered: { + var backend = sourcesBackend + if (!backend.removeSource(sourceId)) { + window.showPassiveNotification(i18n("Failed to remove the source '%1'", display)) + } + } + } + ] + + RowLayout { + CheckBox { + id: enabledBox + + readonly property variant idx: sourcesView.model.index(index, 0) + readonly property variant modelChecked: sourcesView.model.data(idx, Qt.CheckStateRole) + checked: modelChecked != Qt.Unchecked + enabled: modelChecked !== undefined + onClicked: { + sourcesView.model.setData(idx, checkState, Qt.CheckStateRole) + checked = Qt.binding(function() { return modelChecked != Qt.Unchecked; }) + } + } + Label { + text: display + (toolTip ? " - " + toolTip + "" : "") + elide: Text.ElideRight + Layout.fillWidth: true + } + } + } + + footer: ColumnLayout { + id: foot + anchors { + right: parent.right + left: parent.left + margins: Kirigami.Units.smallSpacing + } + Kirigami.Heading { + Layout.fillWidth: true + text: i18n("Missing Backends") + visible: back.count>0 + } + spacing: 0 + Repeater { + id: back + model: ResourcesProxyModel { + extending: "org.kde.discover.desktop" + filterMinimumState: false + } + delegate: Kirigami.BasicListItem { + supportsMouseEvents: false + label: name + icon: model.icon + InstallApplicationButton { + application: model.application + } + } + } + } + } +} diff --git a/discover/qml/TopLevelPageData.qml b/discover/qml/TopLevelPageData.qml new file mode 100644 index 0000000..64d4884 --- /dev/null +++ b/discover/qml/TopLevelPageData.qml @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import org.kde.kirigami 2.0 + +Action { + property string component + checked: window.currentTopLevel==component + + onTriggered: { + if(window.currentTopLevel!=component) + window.currentTopLevel=component + } +} diff --git a/discover/qml/UpdatesPage.qml b/discover/qml/UpdatesPage.qml new file mode 100644 index 0000000..dc36962 --- /dev/null +++ b/discover/qml/UpdatesPage.qml @@ -0,0 +1,312 @@ +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.1 +import QtQuick 2.4 +import org.kde.discover 2.0 +import org.kde.discover.app 1.0 +import "navigation.js" as Navigation +import org.kde.kirigami 2.3 as Kirigami + +DiscoverPage +{ + id: page + title: i18n("Updates") + + property string footerLabel: "" + + ResourcesUpdatesModel { + id: resourcesUpdatesModel + onPassiveMessage: window.showPassiveNotification(message) + onIsProgressingChanged: { + if (!isProgressing) { + resourcesUpdatesModel.prepare() + } + } + + Component.onCompleted: { + if (!isProgressing) { + resourcesUpdatesModel.prepare() + } + } + } + + UpdateModel { + id: updateModel + backend: resourcesUpdatesModel + } + + Kirigami.Action + { + id: updateAction + text: page.unselected>0 ? i18n("Update Selected") : i18n("Update All") + visible: updateModel.toUpdateCount + iconName: "update-none" + enabled: !resourcesUpdatesModel.isProgressing && !ResourcesModel.isFetching + onTriggered: resourcesUpdatesModel.updateAll() + } + + footer: ScrollView { + id: scv + width: parent.width + height: visible ? Kirigami.Units.gridUnit * 10 : 0 + visible: log.contents.length > 0 + TextArea { + readOnly: true + text: log.contents + + cursorPosition: text.length - 1 + font.family: "monospace" + + ReadFile { + id: log + filter: ".*ALPM-SCRIPTLET\\] .*" + path: "/var/log/pacman.log" + } + } + } + + Kirigami.Action + { + id: cancelUpdateAction + iconName: "dialog-cancel" + text: i18n("Cancel") + enabled: resourcesUpdatesModel.transaction && resourcesUpdatesModel.transaction.isCancellable + onTriggered: resourcesUpdatesModel.transaction.cancel() + } + + readonly property int unselected: (updateModel.totalUpdatesCount - updateModel.toUpdateCount) + readonly property QtObject currentAction: resourcesUpdatesModel.isProgressing ? cancelUpdateAction : updateAction + actions { + left: refreshAction + main: currentAction + } + + header: ToolBar { + Kirigami.Theme.colorSet: Kirigami.Theme.Button + Kirigami.Theme.inherit: false + visible: (updateModel.totalUpdatesCount > 0 && resourcesUpdatesModel.isProgressing) || updateModel.hasUpdates + + RowLayout { + anchors.fill: parent + enabled: page.currentAction.enabled + + LabelBackground { + Layout.leftMargin: Kirigami.Units.gridUnit + text: updateModel.toUpdateCount + " (" + updateModel.updateSize+")" + } + Label { + text: i18n("updates selected") + } + LabelBackground { + id: unselectedItem + text: page.unselected + visible: page.unselected>0 + } + Label { + text: i18n("updates not selected") + visible: unselectedItem.visible + } + Item { + Layout.fillWidth: true + } + } + } + + supportsRefreshing: true + onRefreshingChanged: { + showPassiveNotification("Fetching updates...") + ResourcesModel.updateAction.triggered() + refreshing = false + } + ListView + { + id: updatesView + currentIndex: -1 + + displaced: Transition { + YAnimator { + duration: Kirigami.Units.longDuration + easing.type: Easing.InOutQuad + } + } + + footer: ColumnLayout { + anchors.right: parent.right + anchors.left: parent.left + Kirigami.Heading { + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + horizontalAlignment: Text.AlignHCenter + visible: page.footerLabel !== "" + text: page.footerLabel + } + Kirigami.Icon { + Layout.alignment: Qt.AlignHCenter + visible: page.footerLabel !== "" + source: "update-none" + opacity: 0.3 + width: Kirigami.Units.gridUnit * 12 + height: width + } + Item { + visible: page.footerLabel === "" + height: Kirigami.Units.gridUnit + width: 1 + } + } + + model: QSortFilterProxyModel { + sourceModel: updateModel + sortRole: UpdateModel.SectionResourceProgressRole + } + + section { + property: "section" + delegate: Kirigami.Heading { + x: Kirigami.Units.gridUnit + level: 3 + text: section + height: implicitHeight + Kirigami.Units.largeSpacing * 2 + } + } + + delegate: Kirigami.AbstractListItem { + backgroundColor: Kirigami.Theme.backgroundColor + highlighted: ListView.isCurrentItem + onEnabledChanged: if (!enabled) { + layout.extended = false; + } + + Keys.onReturnPressed: { + itemChecked.clicked() + } + Keys.onPressed: if (event.key===Qt.Key_Alt) layout.extended = true + Keys.onReleased: if (event.key===Qt.Key_Alt) layout.extended = false + + ColumnLayout { + id: layout + property bool extended: false + onExtendedChanged: if (extended) { + updateModel.fetchUpdateDetails(index) + } + RowLayout { + Layout.fillWidth: true + Layout.fillHeight: true + + CheckBox { + id: itemChecked + Layout.leftMargin: Kirigami.Units.gridUnit + Layout.alignment: Qt.AlignVCenter + checked: model.checked == Qt.Checked + onClicked: model.checked = (model.checked==Qt.Checked ? Qt.Unchecked : Qt.Checked) + enabled: !resourcesUpdatesModel.isProgressing + } + + Kirigami.Icon { + Layout.fillHeight: true + Layout.preferredWidth: height + source: decoration + smooth: true + } + + Label { + Layout.fillWidth: true + text: i18n("%1 (%2)", display, version) + elide: Text.ElideRight + } + + LabelBackground { + Layout.minimumWidth: Kirigami.Units.gridUnit * 6 + text: size + + progress: resourceProgress/100 + } + } + + Frame { + Layout.fillWidth: true + implicitHeight: view.contentHeight + visible: layout.extended && changelog.length>0 + Label { + id: view + anchors { + right: parent.right + left: parent.left + } + text: changelog + textFormat: Text.StyledText + wrapMode: Text.WordWrap + onLinkActivated: Qt.openUrlExternally(link) + + } + + //This saves a binding loop on implictHeight, as the Label + //height is updated twice (first time with the wrong value) + Behavior on implicitHeight + { PropertyAnimation { duration: Kirigami.Units.shortDuration } } + } + + Button { + Layout.alignment: Qt.AlignRight + text: i18n("More Information...") + visible: layout.extended + enabled: !resourcesUpdatesModel.isProgressing + onClicked: Navigation.openApplication(resource) + } + } + + onClicked: { + layout.extended = !layout.extended + } + } + } + + readonly property alias secSinceUpdate: resourcesUpdatesModel.secsToLastUpdate + state: ( updateModel.hasUpdates ? "has-updates" + : resourcesUpdatesModel.isProgressing ? "progressing" + : ResourcesModel.isFetching ? "fetching" + : secSinceUpdate < 0 ? "unknown" + : secSinceUpdate === 0 ? "now-uptodate" + : secSinceUpdate < 1000 * 60 * 60 * 24 ? "uptodate" + : secSinceUpdate < 1000 * 60 * 60 * 24 * 7 ? "medium" + : "low" + ) + + states: [ + State { + name: "fetching" + PropertyChanges { target: page; title: i18nc("@info", "Fetching...") } + PropertyChanges { target: page; footerLabel: i18nc("@info", "Looking for updates") } + }, + State { + name: "progressing" + PropertyChanges { target: page; title: i18nc("@info", "Updating...") } + PropertyChanges { target: page; footerLabel: resourcesUpdatesModel.progress<=0 ? i18nc("@info", "Fetching updates") : "" } + }, + State { + name: "has-updates" + PropertyChanges { target: page; title: i18nc("@info", "Updates") } + }, + State { + name: "now-uptodate" + PropertyChanges { target: page; title: i18nc("@info", "The system is up to date") } + PropertyChanges { target: page; footerLabel: i18nc("@info", "No updates") } + }, + State { + name: "uptodate" + PropertyChanges { target: page; title: i18nc("@info", "The system is up to date") } + PropertyChanges { target: page; footerLabel: i18nc("@info", "No updates") } + }, + State { + name: "medium" + PropertyChanges { target: page; title: i18nc("@info", "No updates are available") } + }, + State { + name: "low" + PropertyChanges { target: page; title: i18nc("@info", "Should check for updates") } + }, + State { + name: "unknown" + PropertyChanges { target: page; title: i18nc("@info", "It is unknown when the last check for updates was") } + } + ] +} diff --git a/discover/qml/UrlButton.qml b/discover/qml/UrlButton.qml new file mode 100644 index 0000000..abd8751 --- /dev/null +++ b/discover/qml/UrlButton.qml @@ -0,0 +1,27 @@ +import QtQuick 2.2 +import org.kde.kirigami 2.0 as Kirigami +import QtQuick.Controls 2.1 as QQC2 + +LinkButton +{ + id: button + property string url + text: url + visible: text.length>0 + + acceptedButtons: Qt.LeftButton | Qt.RightButton + onClicked: { + if (mouse.button === Qt.RightButton) + menu.popup() + else + Qt.openUrlExternally(url) + } + + QQC2.Menu { + id: menu + QQC2.MenuItem { + text: i18n("Copy link address") + onClicked: app.copyTextToClipboard(button.url) + } + } +} diff --git a/discover/qml/navigation.js b/discover/qml/navigation.js new file mode 100644 index 0000000..b3e9d93 --- /dev/null +++ b/discover/qml/navigation.js @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +function clearStack() +{ + window.currentTopLevel = "" + window.stack.clear(); +} + +function openApplicationListSource(origin) { + openApplicationList({ originFilter: origin, title: origin, allBackends: true }) +} + +function openApplicationMime(mime) { + clearStack() + openApplicationList({ mimeTypeFilter: mime, title: i18n("Resources for '%1'", mime) }) +} + +function openApplicationList(props) { + var page = window.stack.push(applicationListComp, props) + if (props.search === "") + page.clearSearch(); +} + +function openCategory(cat, search) { + clearStack() + openApplicationList({ category: cat, search: search }) +} + +function openApplication(app) { + console.assert(app) + window.stack.push(applicationComp, { application: app }) +} + +function openReviews(model) { + window.stack.push(reviewsComp, { model: model }) +} + +function openExtends(ext) { + window.stack.push(applicationListComp, { extending: ext, title: i18n("Extensions...") }) +} + +function openHome() { + if (window.globalDrawer.currentSubMenu) + window.globalDrawer.resetMenu(); + clearStack() + var page = window.stack.push(topBrowsingComp) + page.clearSearch() +} diff --git a/discover/resources.qrc b/discover/resources.qrc new file mode 100644 index 0000000..25d4624 --- /dev/null +++ b/discover/resources.qrc @@ -0,0 +1,40 @@ + + + + qml/TopLevelPageData.qml + qml/ApplicationsListPage.qml + qml/ApplicationPage.qml + qml/ReviewsPage.qml + qml/AddonsView.qml + qml/ApplicationDelegate.qml + qml/InstallApplicationButton.qml + qml/Rating.qml + qml/UpdatesPage.qml + qml/ReviewDialog.qml + qml/ProgressView.qml + qml/BrowsingPage.qml + qml/InstalledPage.qml + qml/SearchPage.qml + qml/SourcesPage.qml + qml/ReviewDelegate.qml + qml/AddSourceDialog.qml + qml/ConditionalLoader.qml + qml/ConditionalObject.qml + qml/LinkButton.qml + qml/UrlButton.qml + qml/ApplicationScreenshots.qml + qml/LabelBackground.qml + qml/ActionBridge.qml + qml/KirigamiActionBridge.qml + qml/DiscoverPage.qml + qml/DiscoverWindow.qml + qml/DiscoverDrawer.qml + qml/ActionListItem.qml + qml/LoadingPage.qml + qml/SearchField.qml + qml/Shadow.qml + qml/DiscoverPopup.qml + + qml/navigation.js + + diff --git a/exporter/CMakeLists.txt b/exporter/CMakeLists.txt new file mode 100644 index 0000000..8023033 --- /dev/null +++ b/exporter/CMakeLists.txt @@ -0,0 +1,3 @@ +add_executable(plasma-discover-exporter main.cpp MuonExporter.cpp) + +target_link_libraries(plasma-discover-exporter Discover::Common KF5::CoreAddons KF5::I18n) diff --git a/exporter/MuonExporter.cpp b/exporter/MuonExporter.cpp new file mode 100644 index 0000000..041ba05 --- /dev/null +++ b/exporter/MuonExporter.cpp @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "MuonExporter.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +MuonExporter::MuonExporter() + : QObject(nullptr) + , m_exculdedProperties({ "executables" , "canExecute" }) +{ + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &MuonExporter::fetchResources); +} + +MuonExporter::~MuonExporter() = default; + +void MuonExporter::setExportPath(const QUrl& url) +{ + m_path = url; +} + +QJsonObject itemDataToMap(const AbstractResource* res, const QSet& excluded) +{ + QJsonObject ret; + int propsCount = res->metaObject()->propertyCount(); + for(int i = 0; imetaObject()->property(i); + if(prop.type() == QVariant::UserType || excluded.contains(prop.name())) + continue; + + const QVariant val = prop.read(res); + if(val.isNull()) + continue; + + ret.insert(QLatin1String(prop.name()), QJsonValue::fromVariant(val)); + } + return ret; +} + +void MuonExporter::fetchResources() +{ + ResourcesModel* m = ResourcesModel::global(); + QSet streams; + foreach(auto backend, m->backends()) { + streams << backend->search({}); + } + auto stream = new StoredResultsStream(streams); + connect(stream, &StoredResultsStream::finishedResources, this, &MuonExporter::exportResources); + QTimer::singleShot(15000, stream, &AggregatedResultsStream::finished); +} + +void MuonExporter::exportResources(const QVector& resources) +{ + QJsonArray data; + foreach(auto res, resources) { + data += itemDataToMap(res, m_exculdedProperties); + } + + QJsonDocument doc = QJsonDocument(data); + if(doc.isNull()) { + qWarning() << "Could not completely export the data to " << m_path; + return; + } + + QFile f(m_path.toLocalFile()); + if(f.open(QIODevice::WriteOnly|QIODevice::Text)) { + int w = f.write(doc.toJson(QJsonDocument::Indented)); + if(w<=0) + qWarning() << "Could not completely export the data to " << m_path; + } else { + qWarning() << "Could not write to " << m_path; + } + qDebug() << "exported items: " << data.count() << " to " << m_path; + emit exportDone(); +} diff --git a/exporter/MuonExporter.h b/exporter/MuonExporter.h new file mode 100644 index 0000000..9834d09 --- /dev/null +++ b/exporter/MuonExporter.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef MUONEXPORTER_H +#define MUONEXPORTER_H + +#include +#include +#include + +class AbstractResource; + +class MuonExporter : public QObject +{ + Q_OBJECT + public: + explicit MuonExporter(); + ~MuonExporter() override; + + void setExportPath(const QUrl& url); + + public Q_SLOTS: + void fetchResources(); + void exportResources(const QVector& resources); + + Q_SIGNALS: + void exportDone(); + + private: + QUrl m_path; + const QSet m_exculdedProperties; +}; + +#endif // MUONEXPORTER_H diff --git a/exporter/main.cpp b/exporter/main.cpp new file mode 100644 index 0000000..be10a73 --- /dev/null +++ b/exporter/main.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include +#include +#include +#include +#include +#include "MuonExporter.h" +#include +#include "../DiscoverVersion.h" + +int main(int argc, char** argv) +{ + QGuiApplication app(argc, argv); + app.setQuitOnLastWindowClosed(false); + KLocalizedString::setApplicationDomain("plasma-discover-exporter"); + KAboutData about(QStringLiteral("muonexporter"), i18n("Muon Exporter"), version, QString(), + KAboutLicense::GPL, i18n("©2013 Aleix Pol Gonzalez"), QString()); + about.addAuthor(i18n("Jonathan Thomas"), QString(), QStringLiteral("echidnaman@kubuntu.org")); + about.addAuthor(i18n("Aleix Pol Gonzalez"), QString(), QStringLiteral("aleixpol@blue-systems.com")); + about.setProductName("discover/exporter"); + + MuonExporter exp; + { + QCommandLineParser parser; + parser.addOption(QCommandLineOption(QStringLiteral("backends"), i18n("List all the backends we'll want to have loaded, separated by coma ','."), QStringLiteral("names"))); + parser.addPositionalArgument(QStringLiteral("file"), i18n("File to which we'll export")); + DiscoverBackendsFactory::setupCommandLine(&parser); + about.setupCommandLine(&parser); + parser.process(app); + about.processCommandLine(&parser); + DiscoverBackendsFactory::processCommandLine(&parser, false); + + if(parser.positionalArguments().count() != 1) { + parser.showHelp(1); + } + exp.setExportPath(QUrl::fromUserInput(parser.positionalArguments().at(0), QString(), QUrl::AssumeLocalFile)); + } + + QObject::connect(&exp, &MuonExporter::exportDone, &app, &QApplication::quit); + + return app.exec(); +} diff --git a/libdiscover/ActionsModel.cpp b/libdiscover/ActionsModel.cpp new file mode 100644 index 0000000..e21aa6e --- /dev/null +++ b/libdiscover/ActionsModel.cpp @@ -0,0 +1,93 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "ActionsModel.h" +#include "resources/ResourcesModel.h" +#include "utils.h" +#include +#include "libdiscover_debug.h" + +ActionsModel::ActionsModel(QObject* parent) + : QAbstractListModel(parent) + , m_priority(-1) +{ + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &ActionsModel::reload); +} + +QHash< int, QByteArray > ActionsModel::roleNames() const +{ + return { { Qt::UserRole, "action" }}; +} + +QVariant ActionsModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid() || role!=Qt::UserRole) + return QVariant(); + return QVariant::fromValue(m_filteredActions[index.row()]); +} + +int ActionsModel::rowCount(const QModelIndex& parent) const +{ + return parent.isValid() ? 0 : m_filteredActions.count(); +} + +void ActionsModel::setActions(const QVariant& actions) +{ + if (m_actions == actions) { + return; + } + m_actions = actions; + + reload(); + Q_EMIT actionsChanged(m_actions); +} + +void ActionsModel::reload() +{ + QList actions = m_actions.value>(); + if (m_priority>=0) { + actions = kFilter>(actions, [this](QAction* action){ return action->priority() == m_priority; }); + } + actions = kFilter>(actions, [](QAction* action){ return action->isVisible(); }); + if (actions == m_filteredActions) + return; + + + beginResetModel(); + m_filteredActions = actions; + endResetModel(); + + for(auto a : qAsConst(m_filteredActions)) { + connect(a, &QAction::changed, this, &ActionsModel::reload, Qt::UniqueConnection); + } +} + +int ActionsModel::filterPriority() const +{ + return m_priority; +} + +void ActionsModel::setFilterPriority(int p) +{ + if (m_priority != p) { + m_priority = p; + reload(); + } +} diff --git a/libdiscover/ActionsModel.h b/libdiscover/ActionsModel.h new file mode 100644 index 0000000..099448c --- /dev/null +++ b/libdiscover/ActionsModel.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef ACTIONSMODEL_H +#define ACTIONSMODEL_H + +#include +#include +#include "discovercommon_export.h" + +class QAction; + +class DISCOVERCOMMON_EXPORT ActionsModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(QVariant actions READ actions WRITE setActions NOTIFY actionsChanged) + Q_PROPERTY(int filterPriority READ filterPriority WRITE setFilterPriority) + public: + explicit ActionsModel(QObject* parent = nullptr); + + QHash roleNames() const override; + QVariant data(const QModelIndex& index, int role) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + + void setFilterPriority(int p); + int filterPriority() const; + + void setActions(const QVariant& actions); + QVariant actions() const { return m_actions; } + + Q_SIGNALS: + void actionsChanged(const QVariant& actions); + + private: + void reload(); + + QVariant m_actions; + QList m_filteredActions; + int m_priority; +}; + +#endif diff --git a/libdiscover/ApplicationAddonsModel.cpp b/libdiscover/ApplicationAddonsModel.cpp new file mode 100644 index 0000000..219b6ea --- /dev/null +++ b/libdiscover/ApplicationAddonsModel.cpp @@ -0,0 +1,158 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "ApplicationAddonsModel.h" +#include +#include +#include +#include +#include "libdiscover_debug.h" + +ApplicationAddonsModel::ApplicationAddonsModel(QObject* parent) + : QAbstractListModel(parent) + , m_app(nullptr) +{ +// new ModelTest(this, this); + + connect(TransactionModel::global(), &TransactionModel::transactionRemoved, this, &ApplicationAddonsModel::transactionOver); +} + +QHash< int, QByteArray > ApplicationAddonsModel::roleNames() const +{ + QHash roles = QAbstractItemModel::roleNames(); + roles.insert(Qt::CheckStateRole, "checked"); + roles.insert(PackageNameRole, "packageName"); + return roles; +} + +void ApplicationAddonsModel::setApplication(AbstractResource* app) +{ + if (app == m_app) + return; + + if (m_app) + disconnect(m_app, nullptr, this, nullptr); + + m_app = app; + resetState(); + if (m_app) { + connect(m_app, &QObject::destroyed, this, [this](){ + setApplication(nullptr); + }); + } + emit applicationChanged(); +} + +void ApplicationAddonsModel::resetState() +{ + beginResetModel(); + m_state.clear(); + m_initial = m_app ? m_app->addonsInformation() : QList(); + endResetModel(); + + emit stateChanged(); +} + +AbstractResource* ApplicationAddonsModel::application() const +{ + return m_app; +} + +int ApplicationAddonsModel::rowCount(const QModelIndex& parent) const +{ + return parent.isValid()? 0 : m_initial.size(); +} + +QVariant ApplicationAddonsModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid() || index.row()>=m_initial.size()) + return QVariant(); + + switch(role) { + case Qt::DisplayRole: + return m_initial[index.row()].name(); + case Qt::ToolTipRole: + return m_initial[index.row()].description(); + case PackageNameRole: + return m_initial[index.row()].packageName(); + case Qt::CheckStateRole: { + const PackageState init = m_initial[index.row()]; + const AddonList::State state = m_state.addonState(init.name()); + if(state == AddonList::None) { + return init.isInstalled() ? Qt::Checked : Qt::Unchecked; + } else { + return state == AddonList::ToInstall ? Qt::Checked : Qt::Unchecked; + } + } + } + + return QVariant(); +} + +void ApplicationAddonsModel::discardChanges() +{ + //dataChanged should suffice, but it doesn't + beginResetModel(); + m_state.clear(); + emit stateChanged(); + endResetModel(); +} + +void ApplicationAddonsModel::applyChanges() +{ + ResourcesModel::global()->installApplication(m_app, m_state); +} + +void ApplicationAddonsModel::changeState(const QString& packageName, bool installed) +{ + auto it = m_initial.constBegin(); + for(; it != m_initial.constEnd(); ++it) { + if(it->packageName()==packageName) + break; + } + Q_ASSERT(it != m_initial.constEnd()); + + const bool restored = it->isInstalled()==installed; + + if(restored) + m_state.resetAddon(packageName); + else + m_state.addAddon(packageName, installed); + + emit stateChanged(); +} + +bool ApplicationAddonsModel::hasChanges() const +{ + return !m_state.isEmpty(); +} + +bool ApplicationAddonsModel::isEmpty() const +{ + return m_initial.isEmpty(); +} + +void ApplicationAddonsModel::transactionOver(Transaction* t) +{ + if (t->resource() != m_app) + return; + + resetState(); +} diff --git a/libdiscover/ApplicationAddonsModel.h b/libdiscover/ApplicationAddonsModel.h new file mode 100644 index 0000000..6b9fbaf --- /dev/null +++ b/libdiscover/ApplicationAddonsModel.h @@ -0,0 +1,73 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef APPLICATIONADDONSMODEL_H +#define APPLICATIONADDONSMODEL_H + +#include +#include +#include "Transaction/AddonList.h" + +#include "discovercommon_export.h" + +class Transaction; +class AbstractResource; + +class DISCOVERCOMMON_EXPORT ApplicationAddonsModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(AbstractResource* application READ application WRITE setApplication NOTIFY applicationChanged) + Q_PROPERTY(bool hasChanges READ hasChanges NOTIFY stateChanged) + Q_PROPERTY(bool isEmpty READ isEmpty NOTIFY applicationChanged) + public: + enum Roles { + PackageNameRole = Qt::UserRole + }; + + explicit ApplicationAddonsModel(QObject* parent = nullptr); + + AbstractResource* application() const; + void setApplication(AbstractResource* app); + bool hasChanges() const; + + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + QHash roleNames() const override; + bool isEmpty() const; + + public Q_SLOTS: + void discardChanges(); + void applyChanges(); + void changeState(const QString& packageName, bool installed); + + Q_SIGNALS: + void stateChanged(); + void applicationChanged(); + + private: + void transactionOver(Transaction* t); + void resetState(); + + AbstractResource* m_app; + QList m_initial; + AddonList m_state; +}; + +#endif // APPLICATIONADDONSMODEL_H diff --git a/libdiscover/CMakeLists.txt b/libdiscover/CMakeLists.txt new file mode 100644 index 0000000..633a848 --- /dev/null +++ b/libdiscover/CMakeLists.txt @@ -0,0 +1,69 @@ +add_definitions(-DTRANSLATION_DOMAIN=\"libdiscover\") + +add_subdirectory(backends) +add_subdirectory(notifiers) +add_subdirectory(tests) + +set(discovercommon_SRCS + Category/Category.cpp + Category/CategoryModel.cpp + Category/CategoriesReader.cpp + ReviewsBackend/AbstractReviewsBackend.cpp + ReviewsBackend/Rating.cpp + ReviewsBackend/Review.cpp + ReviewsBackend/ReviewsModel.cpp + Transaction/AddonList.cpp + Transaction/Transaction.cpp + Transaction/TransactionListener.cpp + Transaction/TransactionModel.cpp + UpdateModel/UpdateItem.cpp + UpdateModel/UpdateModel.cpp + resources/ResourcesModel.cpp + resources/ResourcesProxyModel.cpp + resources/PackageState.cpp + resources/ResourcesUpdatesModel.cpp + resources/StandardBackendUpdater.cpp + resources/SourcesModel.cpp + resources/AbstractResourcesBackend.cpp + resources/AbstractResource.cpp + resources/AbstractBackendUpdater.cpp + resources/AbstractSourcesBackend.cpp + resources/StoredResultsStream.cpp + CachedNetworkAccessManager.cpp + ActionsModel.cpp + DiscoverBackendsFactory.cpp + ScreenshotsModel.cpp + ApplicationAddonsModel.cpp +) + +ecm_qt_declare_logging_category(discovercommon_SRCS HEADER libdiscover_debug.h IDENTIFIER LIBDISCOVER_LOG CATEGORY_NAME org.kde.plasma.libdiscover) + +if(AppStreamQt_FOUND) + set(discovercommon_SRCS ${discovercommon_SRCS} + appstream/OdrsReviewsBackend.cpp + appstream/AppStreamIntegration.cpp + ) +endif() + +add_library(DiscoverCommon ${discovercommon_SRCS}) + +target_link_libraries(DiscoverCommon +LINK_PUBLIC + Qt5::Core + Qt5::Qml + Qt5::Widgets + KF5::I18n + KF5::ItemModels +LINK_PRIVATE + Qt5::Xml + KF5::KIOCore + KF5::CoreAddons +) +add_library(Discover::Common ALIAS DiscoverCommon) + +generate_export_header(DiscoverCommon) + +target_include_directories(DiscoverCommon PRIVATE ${PHONON_INCLUDES} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + +install(TARGETS DiscoverCommon DESTINATION ${CMAKE_INSTALL_LIBDIR}/plasma-discover) +install(FILES resources/discoverabstractnotifier.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) diff --git a/libdiscover/CachedNetworkAccessManager.cpp b/libdiscover/CachedNetworkAccessManager.cpp new file mode 100644 index 0000000..af7f4e8 --- /dev/null +++ b/libdiscover/CachedNetworkAccessManager.cpp @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "CachedNetworkAccessManager.h" + +#include +#include +#include +#include + +CachedNetworkAccessManager::CachedNetworkAccessManager(const QString &path, QObject *parent) + : QNetworkAccessManager(parent) +{ + const QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1Char('/') + path; + QNetworkDiskCache *cache = new QNetworkDiskCache(this); + QStorageInfo storageInfo(cacheDir); + cache->setCacheDirectory(cacheDir); + cache->setMaximumCacheSize(storageInfo.bytesTotal() / 1000); + setCache(cache); +} + +QNetworkReply * CachedNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData) +{ + QNetworkRequest req(request); + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); + return QNetworkAccessManager::createRequest(op, request, outgoingData); +} + +QNetworkAccessManager * CachedNetworkAccessManagerFactory::create(QObject *parent) +{ + return new CachedNetworkAccessManager(QStringLiteral("images"), parent); +} + diff --git a/libdiscover/CachedNetworkAccessManager.h b/libdiscover/CachedNetworkAccessManager.h new file mode 100644 index 0000000..6c78083 --- /dev/null +++ b/libdiscover/CachedNetworkAccessManager.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef CACHEDNETWORKACCESSMANAGER_H +#define CACHEDNETWORKACCESSMANAGER_H + +#include "discovercommon_export.h" + +#include +#include + +class DISCOVERCOMMON_EXPORT CachedNetworkAccessManager : public QNetworkAccessManager +{ +public: + explicit CachedNetworkAccessManager(const QString &path, QObject *parent = nullptr); + + virtual QNetworkReply * createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = nullptr) override; +}; + +class DISCOVERCOMMON_EXPORT CachedNetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory +{ + virtual QNetworkAccessManager * create(QObject *parent) override; +}; + +#endif // CACHEDNETWORKACCESSMANAGER_H + diff --git a/libdiscover/Category/CategoriesReader.cpp b/libdiscover/Category/CategoriesReader.cpp new file mode 100644 index 0000000..01883d8 --- /dev/null +++ b/libdiscover/Category/CategoriesReader.cpp @@ -0,0 +1,75 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "CategoriesReader.h" +#include "Category.h" +#include +#include +#include "libdiscover_debug.h" +#include + +#include +#include + +QVector CategoriesReader::loadCategoriesFile(AbstractResourcesBackend* backend) +{ + QString path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("libdiscover/categories/")+backend->name()+QStringLiteral("-categories.xml")); + if (path.isEmpty()) { + auto cat = backend->category(); + if (cat.isEmpty()) + qCWarning(LIBDISCOVER_LOG) << "Couldn't find a category for " << backend->name(); + + Category::sortCategories(cat); + return cat; + } + return loadCategoriesPath(path); +} + +QVector CategoriesReader::loadCategoriesPath(const QString& path) +{ + QVector ret; + QFile menuFile(path); + if (!menuFile.open(QIODevice::ReadOnly)) { + qCWarning(LIBDISCOVER_LOG) << "couldn't open" << path; + return ret; + } + + QDomDocument menuDocument; + QString error; + int line; + bool correct = menuDocument.setContent(&menuFile, &error, &line); + if(!correct) + qCWarning(LIBDISCOVER_LOG) << "error while parsing the categories file:" << error << " at: " << path << ':' << line; + + QDomElement root = menuDocument.documentElement(); + + QDomNode node = root.firstChild(); + while(!node.isNull()) + { + if (node.nodeType() == QDomNode::ElementNode) { + ret << new Category( {path} ); + ret.last()->parseData(path, node); + } + + node = node.nextSibling(); + } + Category::sortCategories(ret); + return ret; +} diff --git a/libdiscover/Category/CategoriesReader.h b/libdiscover/Category/CategoriesReader.h new file mode 100644 index 0000000..a19cd2d --- /dev/null +++ b/libdiscover/Category/CategoriesReader.h @@ -0,0 +1,36 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef CATEGORIESREADER_H +#define CATEGORIESREADER_H + +#include +#include "discovercommon_export.h" + +class Category; +class AbstractResourcesBackend; +class DISCOVERCOMMON_EXPORT CategoriesReader +{ + public: + QVector loadCategoriesPath(const QString& path); + QVector loadCategoriesFile(AbstractResourcesBackend* backend); +}; + +#endif // CATEGORIESREADER_H diff --git a/libdiscover/Category/Category.cpp b/libdiscover/Category/Category.cpp new file mode 100644 index 0000000..5cfc5f7 --- /dev/null +++ b/libdiscover/Category/Category.cpp @@ -0,0 +1,279 @@ +/*************************************************************************** + * Copyright © 2010 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "Category.h" + +#include + +#include +#include +#include +#include "libdiscover_debug.h" +#include + +Category::Category(QSet pluginName, QObject* parent) + : QObject(parent) + , m_iconString(QStringLiteral("applications-other")) + , m_plugins(std::move(pluginName)) +{} + +Category::Category(const QString& name, const QString& iconName, const QVector >& orFilters, const QSet &pluginName, const QVector& subCategories, const QUrl& decoration, bool isAddons) + : QObject(nullptr) + , m_name(name) + , m_iconString(iconName) + , m_decoration(decoration) + , m_orFilters(orFilters) + , m_subCategories(subCategories) + , m_plugins(pluginName) + , m_isAddons(isAddons) +{ + setObjectName(m_name); +} + +Category::~Category() = default; + +void Category::parseData(const QString& path, const QDomNode& data) +{ + for(QDomNode node = data.firstChild(); !node.isNull(); node = node.nextSibling()) + { + if(!node.isElement()) { + if(!node.isComment()) + qCWarning(LIBDISCOVER_LOG) << "unknown node found at " << QStringLiteral("%1:%2").arg(path).arg(node.lineNumber()); + continue; + } + QDomElement tempElement = node.toElement(); + + if (tempElement.tagName() == QLatin1String("Name")) { + m_name = i18nc("Category", tempElement.text().toUtf8().constData()); + setObjectName(m_name); + } else if (tempElement.tagName() == QLatin1String("Menu")) { + m_subCategories << new Category(m_plugins, this); + m_subCategories.last()->parseData(path, node); + } else if (tempElement.tagName() == QLatin1String("Image")) { + m_decoration = QUrl(tempElement.text()); + if (m_decoration.isRelative()) { + m_decoration = QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("discover/") + tempElement.text())); + if (m_decoration.isEmpty()) + qCWarning(LIBDISCOVER_LOG) << "couldn't find category decoration" << tempElement.text(); + } + } else if (tempElement.tagName() == QLatin1String("Addons")) { + m_isAddons = true; + } else if (tempElement.tagName() == QLatin1String("Icon") && tempElement.hasChildNodes()) { + m_iconString = tempElement.text(); + } else if (tempElement.tagName() == QLatin1String("Include")) { //previous muon format + parseIncludes(tempElement); + } else if (tempElement.tagName() == QLatin1String("Categories")) { //as provided by appstream + parseIncludes(tempElement); + } + } +} + +QVector > Category::parseIncludes(const QDomNode &data) +{ + QDomNode node = data.firstChild(); + QVector > filter; + while(!node.isNull()) + { + QDomElement tempElement = node.toElement(); + + if (tempElement.tagName() == QLatin1String("And")) { + // Parse children + m_andFilters.append(parseIncludes(node)); + } else if (tempElement.tagName() == QLatin1String("Or")) { + m_orFilters.append(parseIncludes(node)); + } else if (tempElement.tagName() == QLatin1String("Not")) { + m_notFilters.append(parseIncludes(node)); + } else if (tempElement.tagName() == QLatin1String("PkgSection")) { + filter.append({ PkgSectionFilter, tempElement.text() }); + } else if (tempElement.tagName() == QLatin1String("Category")) { + filter.append({ CategoryFilter, tempElement.text() }); + } else if (tempElement.tagName() == QLatin1String("PkgWildcard")) { + filter.append({ PkgWildcardFilter, tempElement.text() }); + } else if (tempElement.tagName() == QLatin1String("AppstreamIdWildcard")) { + filter.append({ AppstreamIdWildcardFilter, tempElement.text() }); + } else if (tempElement.tagName() == QLatin1String("PkgName")) { + filter.append({ PkgNameFilter, tempElement.text() }); + } else { + qCWarning(LIBDISCOVER_LOG) << "unknown" << tempElement.tagName(); + } + node = node.nextSibling(); + } + + return filter; +} + +QString Category::name() const +{ + return m_name; +} + +QString Category::icon() const +{ + return m_iconString; +} + +QVector > Category::andFilters() const +{ + return m_andFilters; +} + +QVector > Category::orFilters() const +{ + return m_orFilters; +} + +QVector > Category::notFilters() const +{ + return m_notFilters; +} + +QVector Category::subCategories() const +{ + return m_subCategories; +} + +bool Category::categoryLessThan(Category *c1, const Category *c2) +{ + return (!c1->isAddons() && c2->isAddons()) || (c1->isAddons()==c2->isAddons() && QString::localeAwareCompare(c1->name(), c2->name()) < 0); +} + +static bool isSorted(const QVector& vector) +{ + Category *last = nullptr; + for(auto a: vector) { + if (last && !Category::categoryLessThan(last, a)) + return false; + last = a; + } + return true; +} + +void Category::sortCategories(QVector& cats) +{ + std::sort(cats.begin(), cats.end(), &categoryLessThan); + for(auto cat: cats) { + sortCategories(cat->m_subCategories); + } + Q_ASSERT(isSorted(cats)); +} + +void Category::addSubcategory(QVector< Category* >& list, Category* newcat) +{ + Q_ASSERT(isSorted(list)); + + auto it = std::lower_bound(list.begin(), list.end(), newcat, &categoryLessThan); + if (it == list.end()) { + list << newcat; + return; + } + + auto c = *it; + if(c->name() == newcat->name()) { + if(c->icon() != newcat->icon() + || c->m_andFilters != newcat->m_andFilters + || c->m_isAddons != newcat->m_isAddons + ) + { + qCWarning(LIBDISCOVER_LOG) << "the following categories seem to be the same but they're not entirely" + << c->name() << newcat->name() << "--" + << c->andFilters() << newcat->andFilters() << "--" + << c->isAddons() << newcat->isAddons(); + } else { + c->m_orFilters += newcat->orFilters(); + c->m_notFilters += newcat->notFilters(); + c->m_plugins.unite(newcat->m_plugins); + Q_FOREACH (Category* nc, newcat->subCategories()) { + addSubcategory(c->m_subCategories, nc); + } + return; + } + } + + list.insert(it, newcat); + Q_ASSERT(isSorted(list)); +} + +bool Category::blacklistPluginsInVector(const QSet& pluginNames, QVector& subCategories) +{ + bool ret = false; + for(QVector::iterator it = subCategories.begin(); it!=subCategories.end(); ) { + if ((*it)->blacklistPlugins(pluginNames)) { + delete *it; + it = subCategories.erase(it); + ret = true; + } else + ++it; + } + return ret; +} + +bool Category::blacklistPlugins(const QSet& pluginNames) +{ + if (m_plugins.subtract(pluginNames).isEmpty()) { + return true; + } + + if (blacklistPluginsInVector(pluginNames, m_subCategories)) + Q_EMIT subCategoriesChanged(); + return false; +} + +QUrl Category::decoration() const +{ + if (m_decoration.isEmpty()) { + Category* c = qobject_cast(parent()); + return c ? c->decoration() : QUrl(); + } else { + Q_ASSERT(!m_decoration.isLocalFile() || QFile::exists(m_decoration.toLocalFile())); + return m_decoration; + } +} + +QVariantList Category::subCategoriesVariant() const +{ + return kTransform(m_subCategories, [](Category* cat){ return QVariant::fromValue(cat); }); +} + +bool Category::matchesCategoryName(const QString& name) const +{ + for(const auto &filter: m_orFilters) { + if (filter.first == CategoryFilter && filter.second == name) + return true; + } + return false; +} + +bool Category::contains(Category* cat) const +{ + const bool ret = cat == this || (cat && contains(qobject_cast(cat->parent()))); + return ret; +} + +bool Category::contains(const QVariantList& cats) const +{ + bool ret = false; + for(const auto &itCat : cats) { + if (contains(qobject_cast(itCat.value()))) { + ret = true; + break; + } + } + return ret; +} diff --git a/libdiscover/Category/Category.h b/libdiscover/Category/Category.h new file mode 100644 index 0000000..537b98e --- /dev/null +++ b/libdiscover/Category/Category.h @@ -0,0 +1,96 @@ +/*************************************************************************** + * Copyright © 2010 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef CATEGORY_H +#define CATEGORY_H + +#include +#include +#include +#include +#include + +#include "discovercommon_export.h" + +class QDomNode; + +enum FilterType { + InvalidFilter, + CategoryFilter, + PkgSectionFilter, + PkgWildcardFilter, + PkgNameFilter, + AppstreamIdWildcardFilter +}; + +class DISCOVERCOMMON_EXPORT Category : public QObject +{ +Q_OBJECT +public: + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QString icon READ icon CONSTANT) + Q_PROPERTY(QObject* parent READ parent CONSTANT) + Q_PROPERTY(QUrl decoration READ decoration CONSTANT) + Q_PROPERTY(QVariantList subcategories READ subCategoriesVariant NOTIFY subCategoriesChanged) + explicit Category(QSet pluginNames, QObject* parent = nullptr); + + Category(const QString& name, const QString& iconName, const QVector< QPair< FilterType, QString > >& orFilters, const QSet &pluginName, const QVector& subCategories, const QUrl& decoration, bool isAddons); + ~Category() override; + + QString name() const; + QString icon() const; + QVector > andFilters() const; + QVector > orFilters() const; + QVector > notFilters() const; + QVector subCategories() const; + QVariantList subCategoriesVariant() const; + + static void sortCategories(QVector& cats); + static void addSubcategory(QVector& cats, Category* cat); + void parseData(const QString& path, const QDomNode& data); + bool blacklistPlugins(const QSet& pluginName); + bool isAddons() const { return m_isAddons; } + QUrl decoration() const; + bool matchesCategoryName(const QString &name) const; + + Q_SCRIPTABLE bool contains(Category* cat) const; + Q_SCRIPTABLE bool contains(const QVariantList &cats) const; + + static bool categoryLessThan(Category *c1, const Category *c2); + static bool blacklistPluginsInVector(const QSet& pluginNames, QVector& subCategories); + +Q_SIGNALS: + void subCategoriesChanged(); + +private: + QString m_name; + QString m_iconString; + QUrl m_decoration; + QVector > m_andFilters; + QVector > m_orFilters; + QVector > m_notFilters; + QVector m_subCategories; + + QVector > parseIncludes(const QDomNode &data); + QSet m_plugins; + bool m_isAddons = false; +}; + +#endif diff --git a/libdiscover/Category/CategoryModel.cpp b/libdiscover/Category/CategoryModel.cpp new file mode 100644 index 0000000..87480e8 --- /dev/null +++ b/libdiscover/Category/CategoryModel.cpp @@ -0,0 +1,106 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +// Own includes +#include "CategoryModel.h" +#include "Category.h" +#include "CategoriesReader.h" +#include "libdiscover_debug.h" +#include +#include +#include + +CategoryModel::CategoryModel(QObject* parent) + : QObject(parent) +{ + connect(ResourcesModel::global(), &ResourcesModel::backendsChanged, this, &CategoryModel::populateCategories); +} + +CategoryModel * CategoryModel::global() +{ + static CategoryModel *instance = nullptr; + if (!instance) { + instance = new CategoryModel; + } + return instance; +} + +void CategoryModel::populateCategories() +{ + const auto backends = ResourcesModel::global()->backends(); + + QVector ret; + CategoriesReader cr; + Q_FOREACH (const auto backend, backends) { + if (!backend->isValid()) + continue; + + const QVector cats = cr.loadCategoriesFile(backend); + + if(ret.isEmpty()) { + ret = cats; + } else { + Q_FOREACH (Category* c, cats) + Category::addSubcategory(ret, c); + } + } + if (m_rootCategories != ret) { + m_rootCategories = ret; + Q_EMIT rootCategoriesChanged(); + } +} + +QVariantList CategoryModel::rootCategoriesVL() const +{ + return kTransform(m_rootCategories, [](Category* cat) {return qVariantFromValue(cat); }); +} + +void CategoryModel::blacklistPlugin(const QString &name) +{ + const bool ret = Category::blacklistPluginsInVector({name}, m_rootCategories); + if (ret) { + Q_EMIT rootCategoriesChanged(); + } +} + +static Category* recFindCategory(Category* root, const QString& name) +{ + if(root->name()==name) + return root; + else { + const auto subs = root->subCategories(); + Q_FOREACH (Category* c, subs) { + Category* ret = recFindCategory(c, name); + if(ret) + return ret; + } + } + return nullptr; +} + +Category* CategoryModel::findCategoryByName(const QString& name) const +{ + for (Category* cat: m_rootCategories) { + Category* ret = recFindCategory(cat, name); + if(ret) + return ret; + } + return nullptr; +} diff --git a/libdiscover/Category/CategoryModel.h b/libdiscover/Category/CategoryModel.h new file mode 100644 index 0000000..3fced13 --- /dev/null +++ b/libdiscover/Category/CategoryModel.h @@ -0,0 +1,52 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef CATEGORYMODEL_H +#define CATEGORYMODEL_H + +#include +#include +#include "Category.h" + +#include "discovercommon_export.h" + +class DISCOVERCOMMON_EXPORT CategoryModel : public QObject +{ + Q_OBJECT + Q_PROPERTY(QVariantList rootCategories READ rootCategoriesVL NOTIFY rootCategoriesChanged) + public: + explicit CategoryModel(QObject* parent = nullptr); + + static CategoryModel* global(); + + Q_SCRIPTABLE Category* findCategoryByName(const QString& name) const; + void blacklistPlugin(const QString& name); + QVector rootCategories() const { return m_rootCategories; } + QVariantList rootCategoriesVL() const; + void populateCategories(); + + Q_SIGNALS: + void rootCategoriesChanged(); + + private: + QVector m_rootCategories; +}; + +#endif // CATEGORYMODEL_H diff --git a/libdiscover/DiscoverBackendsFactory.cpp b/libdiscover/DiscoverBackendsFactory.cpp new file mode 100644 index 0000000..d14ec99 --- /dev/null +++ b/libdiscover/DiscoverBackendsFactory.cpp @@ -0,0 +1,126 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DiscoverBackendsFactory.h" +#include "resources/AbstractResourcesBackend.h" +#include "resources/ResourcesModel.h" +#include "utils.h" +#include "libdiscover_debug.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +Q_GLOBAL_STATIC(QStringList, s_requestedBackends) + +void DiscoverBackendsFactory::setRequestedBackends(const QStringList& backends) +{ + *s_requestedBackends = backends; +} + +DiscoverBackendsFactory::DiscoverBackendsFactory() +{} + +QVector DiscoverBackendsFactory::backend(const QString& name) const +{ + if (QDir::isAbsolutePath(name) && QStandardPaths::isTestModeEnabled()) { + return backendForFile(name, QFileInfo(name).fileName()); + } else { + return backendForFile(name, name); + } +} + +QVector DiscoverBackendsFactory::backendForFile(const QString& libname, const QString& name) const +{ + QPluginLoader* loader = new QPluginLoader(QStringLiteral("discover/") + libname, ResourcesModel::global()); + + // qCDebug(LIBDISCOVER_LOG) << "trying to load plugin:" << loader->fileName(); + AbstractResourcesBackendFactory* f = qobject_cast(loader->instance()); + if(!f) { + qCWarning(LIBDISCOVER_LOG) << "error loading" << libname << loader->errorString() << loader->metaData(); + return {}; + } + auto instances = f->newInstance(ResourcesModel::global(), name); + if(instances.isEmpty()) { + qCWarning(LIBDISCOVER_LOG) << "Couldn't find the backend: " << libname << "among" << allBackendNames(false, true); + return instances; + } + + return instances; +} + +QStringList DiscoverBackendsFactory::allBackendNames(bool whitelist, bool allowDummy) const +{ + if (whitelist) { + QStringList whitelistNames = *s_requestedBackends; + if (!whitelistNames.isEmpty()) + return whitelistNames; + } + + QStringList pluginNames; + foreach (const QString &dir, QCoreApplication::libraryPaths()) { + QDirIterator it(dir + QStringLiteral("/discover"), QDir::Files); + while (it.hasNext()) { + it.next(); + if (QLibrary::isLibrary(it.fileName()) && (allowDummy || it.fileName() != QLatin1String("dummy-backend.so"))) { + pluginNames += it.fileInfo().baseName(); + } + } + } + + pluginNames.removeDuplicates(); //will happen when discover is installed twice on the system + return pluginNames; +} + +QVector DiscoverBackendsFactory::allBackends() const +{ + QStringList names = allBackendNames(); + auto ret = kTransform>(names, [this](const QString& name) { return backend(name); }); + ret.removeAll(nullptr); + + if(ret.isEmpty()) + qCWarning(LIBDISCOVER_LOG) << "Didn't find any Discover backend!"; + return ret; +} + +int DiscoverBackendsFactory::backendsCount() const +{ + return allBackendNames().count(); +} + +void DiscoverBackendsFactory::setupCommandLine(QCommandLineParser* parser) +{ + parser->addOption(QCommandLineOption(QStringLiteral("backends"), i18n("List all the backends we'll want to have loaded, separated by comma ','."), QStringLiteral("names"))); +} + +void DiscoverBackendsFactory::processCommandLine(QCommandLineParser* parser, bool test) +{ + QStringList backends = test ? QStringList{ QStringLiteral("dummy-backend") } : parser->value(QStringLiteral("backends")).split(QLatin1Char(','), QString::SkipEmptyParts); + for(auto &backend: backends) { + if (!backend.endsWith(QLatin1String("-backend"))) + backend.append(QLatin1String("-backend")); + } + *s_requestedBackends = backends; +} diff --git a/libdiscover/DiscoverBackendsFactory.h b/libdiscover/DiscoverBackendsFactory.h new file mode 100644 index 0000000..dd3e3e5 --- /dev/null +++ b/libdiscover/DiscoverBackendsFactory.h @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DISCOVERBACKENDSFACTORY_H +#define DISCOVERBACKENDSFACTORY_H + +#include "discovercommon_export.h" +#include + +class QCommandLineParser; +class QStringList; +class KPluginInfo; +class AbstractResourcesBackend; + +class DISCOVERCOMMON_EXPORT DiscoverBackendsFactory +{ +public: + DiscoverBackendsFactory(); + + QVector backend(const QString& name) const; + QVector allBackends() const; + QStringList allBackendNames(bool whitelist = true, bool allowDummy = false) const; + int backendsCount() const; + + static void setupCommandLine(QCommandLineParser* parser); + static void processCommandLine(QCommandLineParser* parser, bool test); + static void setRequestedBackends(const QStringList &backends); + +private: + QVector backendForFile(const QString& path, const QString& name) const; +}; + +#endif // MUONBACKENDSFACTORY_H diff --git a/libdiscover/ReviewsBackend/AbstractReviewsBackend.cpp b/libdiscover/ReviewsBackend/AbstractReviewsBackend.cpp new file mode 100644 index 0000000..401f85b --- /dev/null +++ b/libdiscover/ReviewsBackend/AbstractReviewsBackend.cpp @@ -0,0 +1,35 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez . * + ***************************************************************************/ + +#include "AbstractReviewsBackend.h" + +AbstractReviewsBackend::AbstractReviewsBackend(QObject* parent) + : QObject(parent) +{} + +bool AbstractReviewsBackend::isReviewable() const +{ + return true; +} + +QString AbstractReviewsBackend::errorMessage() const +{ + return QString(); +} diff --git a/libdiscover/ReviewsBackend/AbstractReviewsBackend.h b/libdiscover/ReviewsBackend/AbstractReviewsBackend.h new file mode 100644 index 0000000..58704dd --- /dev/null +++ b/libdiscover/ReviewsBackend/AbstractReviewsBackend.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez . * + ***************************************************************************/ + +#ifndef ABSTRACTREVIEWSBACKEND_H +#define ABSTRACTREVIEWSBACKEND_H + +#include + +#include "ReviewsModel.h" + +class Rating; +class AbstractResource; + +class DISCOVERCOMMON_EXPORT AbstractReviewsBackend : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool isReviewable READ isReviewable CONSTANT) + Q_PROPERTY(bool hasCredentials READ hasCredentials NOTIFY loginStateChanged) + Q_PROPERTY(QString userName READ userName NOTIFY loginStateChanged) + public: + explicit AbstractReviewsBackend(QObject* parent = nullptr); + + virtual QString userName() const = 0; + virtual bool hasCredentials() const = 0; + + Q_SCRIPTABLE virtual Rating *ratingForApplication(AbstractResource *app) const = 0; + Q_INVOKABLE virtual QString errorMessage() const; + Q_INVOKABLE virtual bool isResourceSupported(AbstractResource *res) const = 0; + virtual bool isFetching() const = 0; + virtual bool isReviewable() const; + + public Q_SLOTS: + virtual void login() = 0; + virtual void registerAndLogin() = 0; + virtual void logout() = 0; + virtual void submitUsefulness(Review* r, bool useful) = 0; + virtual void submitReview(AbstractResource* app, const QString& summary, + const QString& review_text, const QString& rating) = 0; + virtual void deleteReview(Review* r) = 0; + virtual void flagReview(Review* r, const QString& reason, const QString &text) = 0; + virtual void fetchReviews(AbstractResource* app, int page=1) = 0; + + Q_SIGNALS: + void reviewsReady(AbstractResource *app, const QVector &reviews, bool canFetchMore); + void loginStateChanged(); +}; + +#endif // ABSTRACTREVIEWSBACKEND_H diff --git a/libdiscover/ReviewsBackend/Rating.cpp b/libdiscover/ReviewsBackend/Rating.cpp new file mode 100644 index 0000000..87590e1 --- /dev/null +++ b/libdiscover/ReviewsBackend/Rating.cpp @@ -0,0 +1,150 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "Rating.h" +#include +#include "libdiscover_debug.h" +#include + +inline double fastPow(double a, double b) { + union { + double d; + int x[2]; + } u = { a }; + +#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN + u.x[1] = (int)(b * (u.x[1] - 1072632447) + 1072632447); + u.x[0] = 0; +#else + u.x[1] = 0; + u.x[0] = (int)(b * (u.x[1] - 1072632447) + 1072632447); +#endif + + return u.d; +} + +// Converted from a Ruby example, returns an inverse normal distribution +double pnormaldist(double qn) +{ + double b[] = {1.570796288, 0.03706987906, -0.8364353589e-3, -0.2250947176e-3, 0.6841218299e-5, 0.5824238515e-5, -0.104527497e-5, 0.8360937017e-7, -0.3231081277e-8, 0.3657763036e-10, 0.6936233982e-12}; + + if(qn < 0.0 || 1.0 < qn) + return 0.0; + + if(qn == 0.5) + return 0.0; + + double w1 = qn; + if(qn > 0.5) + w1 = 1.0 - w1; + double w3 = -qLn(4.0 * w1 * (1.0 - w1)); + w1 = b[0]; + + for(int i = 1; i < 11; i++) + w1 += b[i] * fastPow(w3,i); + + if(qn > 0.5) + return qSqrt(w1*w3); + return -qSqrt(w1*w3); +} + +double wilson_score(int pos, int n, double power = 0.2) +{ + if (n == 0) + return 0; + + double z = pnormaldist(1 - power / 2); + double phat = 1.0 * pos / n; + return (phat + z * z / (2 * n) - z * qSqrt( + (phat * (1 - phat) + z * z / (4 * n)) / n)) / (1 + z * z / n); +} + +double dampenedRating(const QVector &ratings, double power = 0.1) +{ + if (ratings.count() != 5) + return 0; + + int tot_ratings = 0; + Q_FOREACH (const int rating, ratings) + tot_ratings = rating + tot_ratings; + + double sum_scores = 0.0; + + for (int i = 0; i < ratings.count(); i++) { + const int rating = ratings.at(i); + double ws = wilson_score(rating, tot_ratings, power); + sum_scores = sum_scores + float((i + 1) - 3) * ws; + } + + return sum_scores + 3; +} + +Rating::Rating(const QString &packageName, quint64 ratingCount, const QVariantMap &data) + : QObject() + , m_packageName(packageName) + , m_ratingCount(ratingCount) + // TODO consider storing this and present in UI + , m_rating(((data.value(QStringLiteral("star1")).toInt() + (data.value(QStringLiteral("star2")).toInt() * 2) + + (data.value(QStringLiteral("star3")).toInt() * 3) + (data.value(QStringLiteral("star4")).toInt() * 4) + + (data.value(QStringLiteral("star5")).toInt() * 5)) * 2) / qMax(1, ratingCount)) + , m_ratingPoints(0) + , m_sortableRating(0) +{ + const QVector histo = { data.value(QStringLiteral("star1")).toInt(), data.value(QStringLiteral("star2")).toInt(), + data.value(QStringLiteral("star3")).toInt(), data.value(QStringLiteral("star4")).toInt(), + data.value(QStringLiteral("star5")).toInt() }; + QVector spread; + spread.reserve(histo.size()); + + for(int i=0; i * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef RATING_H +#define RATING_H + +#include +#include + +#include "discovercommon_export.h" + +class DISCOVERCOMMON_EXPORT Rating : public QObject +{ +Q_OBJECT +Q_PROPERTY(double sortableRating READ sortableRating CONSTANT) +Q_PROPERTY(float rating READ rating CONSTANT) +Q_PROPERTY(int ratingPoints READ ratingPoints CONSTANT) +Q_PROPERTY(quint64 ratingCount READ ratingCount CONSTANT) +public: + explicit Rating(const QString &packageName, quint64 ratingCount, const QVariantMap &data); + ~Rating() override; + + QString packageName() const; + quint64 ratingCount() const; + // 0.0 - 10.0 ranged rating + float rating() const; + int ratingPoints() const; + // Returns a dampened rating calculated with the Wilson Score Interval algorithm + double sortableRating() const; + +private: + const QString m_packageName; + const quint64 m_ratingCount; + const float m_rating; + int m_ratingPoints; + double m_sortableRating; +}; + +#endif diff --git a/libdiscover/ReviewsBackend/Review.cpp b/libdiscover/ReviewsBackend/Review.cpp new file mode 100644 index 0000000..412304a --- /dev/null +++ b/libdiscover/ReviewsBackend/Review.cpp @@ -0,0 +1,138 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "Review.h" +#include + +Review::Review(QString name, QString pkgName, QString language, QString summary, + QString reviewText, QString userName, const QDateTime& date, bool show, quint64 id, + int rating, int usefulTotal, int usefulFavorable, QString packageVersion) + : m_appName(std::move(name)) + , m_creationDate(date) + , m_shouldShow(show) + , m_id(id) + , m_language(std::move(language)) + , m_packageName(std::move(pkgName)) + , m_rating(rating) + , m_reviewText(std::move(reviewText)) + , m_reviewer(std::move(userName)) + , m_usefulnessTotal(usefulTotal) + , m_usefulnessFavorable(usefulFavorable) + , m_usefulChoice(ReviewsModel::None) + , m_summary(std::move(summary)) + , m_packageVersion(std::move(packageVersion)) +{} + +Review::~Review() = default; + +bool Review::operator<(const Review &other) const +{ + return m_creationDate < other.m_creationDate; +} + +bool Review::operator>(const Review &other) const +{ + return m_creationDate > other.m_creationDate; +} + +QString Review::applicationName() const +{ + return m_appName; +} + +QString Review::packageName() const +{ + return m_packageName; +} + +QString Review::packageVersion() const +{ + return m_packageVersion; +} + +QString Review::language() const +{ + return m_language; +} + +QString Review::summary() const +{ + return m_summary; +} + +QString Review::reviewText() const +{ + return m_reviewText; +} + +QString Review::reviewer() const +{ + return m_reviewer; +} + +QDateTime Review::creationDate() const +{ + return m_creationDate; +} + +bool Review::shouldShow() const +{ + return m_shouldShow; +} + +quint64 Review::id() const +{ + return m_id; +} + +int Review::rating() const +{ + return m_rating; +} + +int Review::usefulnessTotal() const +{ + return m_usefulnessTotal; +} + +int Review::usefulnessFavorable() const +{ + return m_usefulnessFavorable; +} + +ReviewsModel::UserChoice Review::usefulChoice() const +{ + return m_usefulChoice; +} + +void Review::setUsefulChoice(ReviewsModel::UserChoice useful) +{ + m_usefulChoice = useful; +} + +void Review::addMetadata(const QString &key, const QVariant &value) +{ + m_metadata.insert(key, value); +} + +QVariant Review::getMetadata(const QString &key) +{ + return m_metadata.value(key); +} diff --git a/libdiscover/ReviewsBackend/Review.h b/libdiscover/ReviewsBackend/Review.h new file mode 100644 index 0000000..12f63e4 --- /dev/null +++ b/libdiscover/ReviewsBackend/Review.h @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef REVIEW_H +#define REVIEW_H + +#include +#include + +#include "ReviewsModel.h" +#include "discovercommon_export.h" + +class AbstractResource; + +class DISCOVERCOMMON_EXPORT Review +{ +public: + Review(QString name, QString pkgName, QString language, QString summary, + QString reviewText, QString userName, const QDateTime& date, bool show, quint64 id, + int rating, int usefulTotal, int usefulFavorable, QString packageVersion); + ~Review(); + + // Creation date determines greater than/less than + bool operator<(const Review &rhs) const; + bool operator>(const Review &rhs) const; + + QString applicationName() const; + QString packageName() const; + QString packageVersion() const; + QString language() const; + QString summary() const; + QString reviewText() const; + QString reviewer() const; + QDateTime creationDate() const; + bool shouldShow() const; + quint64 id() const; + int rating() const; + int usefulnessTotal() const; + int usefulnessFavorable() const; + ReviewsModel::UserChoice usefulChoice() const; + void setUsefulChoice(ReviewsModel::UserChoice useful); + void addMetadata(const QString &key, const QVariant &value); + QVariant getMetadata(const QString &key); + +private: + QString m_appName; + QDateTime m_creationDate; + bool m_shouldShow; + quint64 m_id; + QString m_language; + QString m_packageName; + int m_rating; + QString m_reviewText; + QString m_reviewer; + int m_usefulnessTotal; + int m_usefulnessFavorable; + ReviewsModel::UserChoice m_usefulChoice; + QString m_summary; + QString m_packageVersion; + QVariantMap m_metadata; +}; + +#endif diff --git a/libdiscover/ReviewsBackend/ReviewsModel.cpp b/libdiscover/ReviewsBackend/ReviewsModel.cpp new file mode 100644 index 0000000..0210ee3 --- /dev/null +++ b/libdiscover/ReviewsBackend/ReviewsModel.cpp @@ -0,0 +1,181 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include "libdiscover_debug.h" + +ReviewsModel::ReviewsModel(QObject* parent) + : QAbstractListModel(parent) + , m_app(nullptr) + , m_backend(nullptr) + , m_lastPage(0) + , m_canFetchMore(true) +{} + +ReviewsModel::~ReviewsModel() = default; + +QHash< int, QByteArray > ReviewsModel::roleNames() const +{ + QHash roles = QAbstractItemModel::roleNames(); + roles.insert(ShouldShow, "shouldShow"); + roles.insert(Reviewer, "reviewer"); + roles.insert(CreationDate, "date"); + roles.insert(UsefulnessTotal, "usefulnessTotal"); + roles.insert(UsefulnessFavorable, "usefulnessFavorable"); + roles.insert(UsefulChoice, "usefulChoice"); + roles.insert(Rating, "rating"); + roles.insert(Summary, "summary"); + return roles; +} + +QVariant ReviewsModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid()) + return QVariant(); + switch(role) { + case Qt::DisplayRole: + return m_reviews.at(index.row())->reviewText(); + case ShouldShow: + return m_reviews.at(index.row())->shouldShow(); + case Reviewer: + return m_reviews.at(index.row())->reviewer(); + case CreationDate: + return m_reviews.at(index.row())->creationDate(); + case UsefulnessTotal: + return m_reviews.at(index.row())->usefulnessTotal(); + case UsefulnessFavorable: + return m_reviews.at(index.row())->usefulnessFavorable(); + case UsefulChoice: + return m_reviews.at(index.row())->usefulChoice(); + case Rating: + return m_reviews.at(index.row())->rating(); + case Summary: + return m_reviews.at(index.row())->summary(); + } + return QVariant(); +} + +int ReviewsModel::rowCount(const QModelIndex& parent) const +{ + if(parent.isValid()) + return 0; + return m_reviews.count(); +} + +AbstractResource* ReviewsModel::resource() const +{ + return m_app; +} + +AbstractReviewsBackend* ReviewsModel::backend() const +{ + return m_backend; +} + +void ReviewsModel::setResource(AbstractResource* app) +{ + if(m_app!=app) { + beginResetModel(); + m_reviews.clear(); + m_lastPage = 0; + + if(m_backend) { + disconnect(m_backend, &AbstractReviewsBackend::reviewsReady, this, &ReviewsModel::addReviews); + } + m_app = app; + m_backend = app ? app->backend()->reviewsBackend() : nullptr; + if(m_backend) { + connect(m_backend, &AbstractReviewsBackend::reviewsReady, this, &ReviewsModel::addReviews); + + QMetaObject::invokeMethod(this, "restartFetching", Qt::QueuedConnection); + } + endResetModel(); + emit rowsChanged(); + emit resourceChanged(); + } +} + +void ReviewsModel::restartFetching() +{ + if(!m_app || !m_backend) + return; + + m_canFetchMore=true; + m_lastPage = 0; + fetchMore(); + emit rowsChanged(); +} + +void ReviewsModel::fetchMore(const QModelIndex& parent) +{ + if(!m_backend || !m_app || parent.isValid() || m_backend->isFetching() || !m_canFetchMore) + return; + + m_lastPage++; + m_backend->fetchReviews(m_app, m_lastPage); +// qCDebug(LIBDISCOVER_LOG) << "fetching reviews... " << m_lastPage; +} + +void ReviewsModel::addReviews(AbstractResource* app, const QVector& reviews, bool canFetchMore) +{ + if(app!=m_app) + return; + + m_canFetchMore = canFetchMore; +// qCDebug(LIBDISCOVER_LOG) << "reviews arrived..." << m_lastPage << reviews.size(); + + if(!reviews.isEmpty()) { + beginInsertRows(QModelIndex(), rowCount(), rowCount()+reviews.size()-1); + m_reviews += reviews; + endInsertRows(); + emit rowsChanged(); + } +} + +bool ReviewsModel::canFetchMore(const QModelIndex& /*parent*/) const +{ + return m_canFetchMore; +} + +void ReviewsModel::markUseful(int row, bool useful) +{ + Review* r = m_reviews[row].data(); + r->setUsefulChoice(useful ? Yes : No); +// qCDebug(LIBDISCOVER_LOG) << "submitting usefulness" << r->applicationName() << r->id() << useful; + m_backend->submitUsefulness(r, useful); + const QModelIndex ind = index(row, 0, QModelIndex()); + emit dataChanged(ind, ind, {UsefulnessTotal, UsefulnessFavorable, UsefulChoice}); +} + +void ReviewsModel::deleteReview(int row) +{ + Review* r = m_reviews[row].data(); + m_backend->deleteReview(r); +} + +void ReviewsModel::flagReview(int row, const QString& reason, const QString& text) +{ + Review* r = m_reviews[row].data(); + m_backend->flagReview(r, reason, text); +} diff --git a/libdiscover/ReviewsBackend/ReviewsModel.h b/libdiscover/ReviewsBackend/ReviewsModel.h new file mode 100644 index 0000000..c3ba337 --- /dev/null +++ b/libdiscover/ReviewsBackend/ReviewsModel.h @@ -0,0 +1,91 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef REVIEWSMODEL_H +#define REVIEWSMODEL_H + +#include +#include +#include "discovercommon_export.h" + +class Review; +typedef QSharedPointer ReviewPtr; + +class AbstractResource; +class AbstractReviewsBackend; +class DISCOVERCOMMON_EXPORT ReviewsModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(AbstractReviewsBackend* backend READ backend NOTIFY resourceChanged) + Q_PROPERTY(AbstractResource* resource READ resource WRITE setResource NOTIFY resourceChanged) + Q_PROPERTY(int count READ rowCount NOTIFY rowsChanged) + public: + enum Roles { + ShouldShow=Qt::UserRole+1, + Reviewer, + CreationDate, + UsefulnessTotal, + UsefulnessFavorable, + UsefulChoice, + Rating, + Summary + }; + enum UserChoice { + None, + Yes, + No + }; + Q_ENUM(UserChoice) + + explicit ReviewsModel(QObject* parent = nullptr); + ~ReviewsModel() override; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + + AbstractReviewsBackend* backend() const; + void setResource(AbstractResource* app); + AbstractResource* resource() const; + void fetchMore(const QModelIndex& parent=QModelIndex()) override; + bool canFetchMore(const QModelIndex& /*parent*/) const override; + QHash roleNames() const override; + + public Q_SLOTS: + void deleteReview(int row); + void flagReview(int row, const QString& reason, const QString& text); + void markUseful(int row, bool useful); + + private Q_SLOTS: + void addReviews(AbstractResource* app, const QVector& reviews, bool canFetchMore); + void restartFetching(); + + Q_SIGNALS: + void rowsChanged(); + void resourceChanged(); + + private: + AbstractResource* m_app; + AbstractReviewsBackend* m_backend; + QVector m_reviews; + int m_lastPage; + bool m_canFetchMore; +}; + +#endif // REVIEWSMODEL_H + diff --git a/libdiscover/ScreenshotsModel.cpp b/libdiscover/ScreenshotsModel.cpp new file mode 100644 index 0000000..e40f856 --- /dev/null +++ b/libdiscover/ScreenshotsModel.cpp @@ -0,0 +1,101 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "ScreenshotsModel.h" +#include +#include "libdiscover_debug.h" +// #include + +ScreenshotsModel::ScreenshotsModel(QObject* parent) + : QAbstractListModel(parent) + , m_resource(nullptr) +{} + +QHash< int, QByteArray > ScreenshotsModel::roleNames() const +{ + QHash roles = QAbstractItemModel::roleNames(); + roles.insert(ThumbnailUrl, "small_image_url"); + roles.insert(ScreenshotUrl, "large_image_url"); + return roles; +} + +void ScreenshotsModel::setResource(AbstractResource* res) +{ + if(res == m_resource) + return; + + if(m_resource) { + disconnect(m_resource, &AbstractResource::screenshotsFetched, this, &ScreenshotsModel::screenshotsFetched); + } + m_resource = res; + Q_EMIT resourceChanged(res); + + if(res) { + connect(m_resource, &AbstractResource::screenshotsFetched, this, &ScreenshotsModel::screenshotsFetched); + res->fetchScreenshots(); + } else + qCWarning(LIBDISCOVER_LOG) << "empty resource!"; +} + +AbstractResource* ScreenshotsModel::resource() const +{ + return m_resource; +} + +void ScreenshotsModel::screenshotsFetched(const QList< QUrl >& thumbnails, const QList< QUrl >& screenshots) +{ + Q_ASSERT(thumbnails.count()==screenshots.count()); + if (thumbnails.isEmpty()) + return; + + beginInsertRows(QModelIndex(), m_thumbnails.size(), m_thumbnails.size()+thumbnails.size()-1); + m_thumbnails += thumbnails; + m_screenshots += screenshots; + endInsertRows(); + emit countChanged(); +} + +QVariant ScreenshotsModel::data(const QModelIndex& index, int role) const +{ + if(!index.isValid() || index.parent().isValid()) + return QVariant(); + + switch(role) { + case ThumbnailUrl: return m_thumbnails[index.row()]; + case ScreenshotUrl: return m_screenshots[index.row()]; + } + + return QVariant(); +} + +int ScreenshotsModel::rowCount(const QModelIndex& parent) const +{ + return !parent.isValid() ? m_screenshots.count() : 0; +} + +QUrl ScreenshotsModel::screenshotAt(int row) const +{ + return m_screenshots[row]; +} + +int ScreenshotsModel::count() const +{ + return m_screenshots.count(); +} diff --git a/libdiscover/ScreenshotsModel.h b/libdiscover/ScreenshotsModel.h new file mode 100644 index 0000000..495b4de --- /dev/null +++ b/libdiscover/ScreenshotsModel.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef SCREENSHOTSMODEL_H +#define SCREENSHOTSMODEL_H + +#include +#include +#include "discovercommon_export.h" + +class AbstractResource; + +class DISCOVERCOMMON_EXPORT ScreenshotsModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(AbstractResource* application READ resource WRITE setResource NOTIFY resourceChanged) + Q_PROPERTY(int count READ count NOTIFY countChanged) + public: + enum Roles { ThumbnailUrl=Qt::UserRole+1, ScreenshotUrl }; + + explicit ScreenshotsModel(QObject* parent = nullptr); + QHash roleNames() const override; + + AbstractResource* resource() const; + void setResource(AbstractResource* res); + + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + Q_SCRIPTABLE QUrl screenshotAt(int row) const; + int count() const; + + private Q_SLOTS: + void screenshotsFetched(const QList& thumbnails, const QList& screenshots); + + Q_SIGNALS: + void countChanged(); + void resourceChanged(const AbstractResource* resource); + + private: + AbstractResource* m_resource; + QList m_thumbnails; + QList m_screenshots; + +}; + +#endif // SCREENSHOTSMODEL_H diff --git a/libdiscover/Transaction/AddonList.cpp b/libdiscover/Transaction/AddonList.cpp new file mode 100644 index 0000000..15c77ac --- /dev/null +++ b/libdiscover/Transaction/AddonList.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "AddonList.h" +#include "libdiscover_debug.h" + +AddonList::AddonList() +{} + +bool AddonList::isEmpty() const +{ + return m_toInstall.isEmpty() && m_toRemove.isEmpty(); +} + +QStringList AddonList::addonsToInstall() const +{ + return m_toInstall; +} + +QStringList AddonList::addonsToRemove() const +{ + return m_toRemove; +} + +void AddonList::addAddon(const QString &addon, bool toInstall) +{ + if (toInstall) { + m_toInstall.append(addon); + m_toRemove.removeAll(addon); + } else { + m_toInstall.removeAll(addon); + m_toRemove.append(addon); + } +} + +void AddonList::resetAddon(const QString &addon) +{ + m_toInstall.removeAll(addon); + m_toRemove.removeAll(addon); +} + +void AddonList::clear() +{ + m_toInstall.clear(); + m_toRemove.clear(); +} + +AddonList::State AddonList::addonState(const QString& addonName) const +{ + if(m_toInstall.contains(addonName)) + return ToInstall; + else if(m_toRemove.contains(addonName)) + return ToRemove; + else + return None; +} + +QDebug operator<<(QDebug debug, const AddonList& addons) +{ + QDebugStateSaver saver(debug); + debug.nospace() << "AddonsList("; + debug.nospace() << "install:" << addons.addonsToInstall() << ','; + debug.nospace() << "remove:" << addons.addonsToRemove() << ','; + debug.nospace() << ')'; + return debug; +} diff --git a/libdiscover/Transaction/AddonList.h b/libdiscover/Transaction/AddonList.h new file mode 100644 index 0000000..0ddff8b --- /dev/null +++ b/libdiscover/Transaction/AddonList.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef ADDONLIST_H +#define ADDONLIST_H + +#include +#include + +#include "discovercommon_export.h" + +class DISCOVERCOMMON_EXPORT AddonList +{ +public: + enum State { + None, + ToInstall, + ToRemove + }; + AddonList(); + AddonList(const AddonList &other) = default; + + bool isEmpty() const; + QStringList addonsToInstall() const; + QStringList addonsToRemove() const; + State addonState(const QString& addonName) const; + + void addAddon(const QString &addon, bool toInstall); + void resetAddon(const QString &addon); + void clear(); + +private: + QStringList m_toInstall; + QStringList m_toRemove; +}; + +DISCOVERCOMMON_EXPORT QDebug operator<<(QDebug dbg, const AddonList& addons); + +#endif // ADDONLIST_H diff --git a/libdiscover/Transaction/Transaction.cpp b/libdiscover/Transaction/Transaction.cpp new file mode 100644 index 0000000..90e115d --- /dev/null +++ b/libdiscover/Transaction/Transaction.cpp @@ -0,0 +1,149 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "Transaction.h" + +#include +#include "TransactionModel.h" +#include +#include +#include "libdiscover_debug.h" + +Transaction::Transaction(QObject *parent, AbstractResource *resource, + Role role, const AddonList& addons) + : QObject(parent) + , m_resource(resource) + , m_role(role) + , m_status(CommittingStatus) + , m_addons(addons) + , m_isCancellable(true) + , m_progress(0) +{ +} + +Transaction::~Transaction() +{ + if(status()contains(this)) { + qCWarning(LIBDISCOVER_LOG) << "destroying Transaction before it's over" << this; + TransactionModel::global()->removeTransaction(this); + } +} + +AbstractResource *Transaction::resource() const +{ + return m_resource; +} + +Transaction::Role Transaction::role() const +{ + return m_role; +} + +Transaction::Status Transaction::status() const +{ + return m_status; +} + +AddonList Transaction::addons() const +{ + return m_addons; +} + +bool Transaction::isCancellable() const +{ + return m_isCancellable; +} + +int Transaction::progress() const +{ + return m_progress; +} + +void Transaction::setStatus(Status status) +{ + if(m_status != status) { + m_status = status; + emit statusChanged(m_status); + + if (m_status == DoneStatus || m_status == CancelledStatus || m_status == DoneWithErrorStatus) { + setCancellable(false); + + TransactionModel::global()->removeTransaction(this); + } + } +} + +void Transaction::setCancellable(bool isCancellable) +{ + if(m_isCancellable != isCancellable) { + m_isCancellable = isCancellable; + emit cancellableChanged(m_isCancellable); + } +} + +void Transaction::setProgress(int progress) +{ + if(m_progress != progress) { + Q_ASSERT(qBound(0, progress, 100) == progress); + m_progress = qBound(0, progress, 100); + emit progressChanged(m_progress); + } +} + +bool Transaction::isActive() const +{ + return m_status == DownloadingStatus || m_status == CommittingStatus; +} + +QString Transaction::name() const +{ + return m_resource->name(); +} + +QVariant Transaction::icon() const +{ + return m_resource->icon(); +} + +bool Transaction::isVisible() const +{ + return m_visible; +} + +void Transaction::setVisible(bool visible) +{ + if (m_visible != visible) { + m_visible = visible; + Q_EMIT visibleChanged(visible); + } +} + +void Transaction::setDownloadSpeed(quint64 downloadSpeed) +{ + if (downloadSpeed != m_downloadSpeed) { + m_downloadSpeed = downloadSpeed; + Q_EMIT downloadSpeedChanged(downloadSpeed); + } +} + +QString Transaction::downloadSpeedString() const +{ + return i18nc("@label Download rate", "%1/s", KFormat().formatByteSize(downloadSpeed())); +} diff --git a/libdiscover/Transaction/Transaction.h b/libdiscover/Transaction/Transaction.h new file mode 100644 index 0000000..3901ac1 --- /dev/null +++ b/libdiscover/Transaction/Transaction.h @@ -0,0 +1,198 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef TRANSACTION_H +#define TRANSACTION_H + +// Qt includes +#include + +// Own includes +#include "AddonList.h" + +#include "discovercommon_export.h" + +class AbstractResource; + +/** + * \class Transaction Transaction.h "Transaction.h" + * + * \brief This is the base class of all transactions. + * + * When there are transactions running inside Muon, the backends should + * provide the corresponding Transaction objects with proper information. + */ +class DISCOVERCOMMON_EXPORT Transaction : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QVariant icon READ icon CONSTANT) + Q_PROPERTY(AbstractResource* resource READ resource CONSTANT) + Q_PROPERTY(Role role READ role CONSTANT) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(bool isCancellable READ isCancellable NOTIFY cancellableChanged) + Q_PROPERTY(int progress READ progress NOTIFY progressChanged) + Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged) + Q_PROPERTY(quint64 downloadSpeed READ downloadSpeed WRITE setDownloadSpeed NOTIFY downloadSpeedChanged) + Q_PROPERTY(QString downloadSpeedString READ downloadSpeedString NOTIFY downloadSpeedChanged) + +public: + enum Status { + /// Not queued, newly created + SetupStatus = 0, + /// Queued, but not yet run + QueuedStatus, + /// Transaction is in the downloading phase + DownloadingStatus, + /// Transaction is doing an installation/removal + CommittingStatus, + /// Transaction is done + DoneStatus, + /// Transaction is done, but there was an error during transaction + DoneWithErrorStatus, + /// Transaction was cancelled + CancelledStatus + }; + Q_ENUM(Status) + + enum Role { + ///The transaction is going to install a resource + InstallRole = 0, + ///The transaction is going to remove a resource + RemoveRole, + ///The transaction is going to change the addons of a resource + ChangeAddonsRole + }; + Q_ENUM(Role) + + Transaction(QObject *parent, AbstractResource *resource, + Transaction::Role role, const AddonList &addons = {}); + + ~Transaction() override; + + /** + * @returns the AbstractResource which this transaction works with + */ + AbstractResource *resource() const; + /** + * @returns the role which this transaction executes + */ + Role role() const; + /** + * @returns the current status + */ + Status status() const; + /** + * @returns the addons which this transaction works on + */ + AddonList addons() const; + /** + * @returns true when the transaction can be canceled + */ + bool isCancellable() const; + /** + * @returns a percentage of how much the transaction is already done + */ + int progress() const; + + /** + * Sets the status of the transaction + * @param status the new status + */ + void setStatus(Status status); + /** + * Sets whether the transaction can be canceled or not + * @param isCancellable should be true if the transaction can be canceled + */ + void setCancellable(bool isCancellable); + /** + * Sets the progress of the transaction + * @param progress this should be a percentage of how much of the transaction is already done + */ + void setProgress(int progress); + + /** + * Cancels the transaction + */ + Q_SCRIPTABLE virtual void cancel() = 0; + + /** + * @returns if the transaction is either downloading or committing + */ + bool isActive() const; + + Q_SCRIPTABLE virtual void proceed() {} + + /** @returns a name that identifies the transaction */ + virtual QString name() const; + + /** @returns an icon that describes the transaction */ + virtual QVariant icon() const; + + bool isVisible() const; + void setVisible(bool v); + + quint64 downloadSpeed() const { return m_downloadSpeed; } + void setDownloadSpeed(quint64 downloadSpeed); + + QString downloadSpeedString() const; + +private: + AbstractResource * const m_resource; + const Role m_role; + Status m_status; + const AddonList m_addons; + bool m_isCancellable; + int m_progress; + bool m_visible = true; + quint64 m_downloadSpeed = 0; + +Q_SIGNALS: + /** + * This gets emitted when the status of the transaction changed + */ + void statusChanged(Transaction::Status status); + /** + * This gets emitted when the ability to cancel the transaction or not changed + */ + void cancellableChanged(bool cancellable); + /** + * This gets emitted when the transaction changed the percentage of how much of it is already done + */ + void progressChanged(int progress); + + /** + * Provides a message to be shown to the user + * + * The user gets to acknowledge and proceed or cancel the transaction. + * + * @sa proceed(), cancel() + */ + void proceedRequest(const QString &title, const QString &description); + + void passiveMessage(const QString &message); + + void visibleChanged(bool visible); + + void downloadSpeedChanged(quint64 downloadSpeed); +}; + +#endif // TRANSACTION_H diff --git a/libdiscover/Transaction/TransactionListener.cpp b/libdiscover/Transaction/TransactionListener.cpp new file mode 100644 index 0000000..09d3283 --- /dev/null +++ b/libdiscover/Transaction/TransactionListener.cpp @@ -0,0 +1,159 @@ +/*************************************************************************** + * Copyright © 2010 Jonathan Thomas * + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "TransactionListener.h" + +#include "TransactionModel.h" +#include +#include "libdiscover_debug.h" + +TransactionListener::TransactionListener(QObject *parent) + : QObject(parent) + , m_resource(nullptr) + , m_transaction(nullptr) +{ + connect(TransactionModel::global(), &TransactionModel::transactionAdded, this, &TransactionListener::transactionAdded); +} + +void TransactionListener::cancel() +{ + if(!isCancellable()) { + return; + } + m_transaction->cancel(); +} + +bool TransactionListener::isCancellable() const +{ + return m_transaction && m_transaction->isCancellable(); +} + +bool TransactionListener::isActive() const +{ + return m_transaction && m_transaction->status() != Transaction::SetupStatus; +} + +QString TransactionListener::statusText() const +{ + QModelIndex index = TransactionModel::global()->indexOf(m_resource); + + return index.data(TransactionModel::StatusTextRole).toString(); +} + +void TransactionListener::setResource(AbstractResource *resource) +{ + setResourceInternal(resource); + // Catch already-started transactions + setTransaction(TransactionModel::global()->transactionFromResource(resource)); +} + +void TransactionListener::setResourceInternal(AbstractResource* resource) +{ + if (m_resource == resource) + return; + + m_resource = resource; + emit resourceChanged(); +} + +void TransactionListener::transactionAdded(Transaction *trans) +{ + if (trans->resource() != m_resource) + return; + + setTransaction(trans); +} + +class CheckChange +{ +public: + CheckChange(QObject* obj, const QByteArray& prop) + : m_object(obj) + , m_prop(obj->metaObject()->property(obj->metaObject()->indexOfProperty(prop.constData()))) + , m_oldValue(m_prop.read(obj)) + { + Q_ASSERT(obj->metaObject()->indexOfProperty(prop.constData())>=0); + } + + ~CheckChange() { + const QVariant newValue = m_prop.read(m_object); + if (newValue != m_oldValue) { + QMetaMethod m = m_prop.notifySignal(); + m.invoke(m_object, Qt::DirectConnection); + } + } + +private: + QObject* m_object; + QMetaProperty m_prop; + QVariant m_oldValue; +}; + +void TransactionListener::setTransaction(Transaction* trans) +{ + if (m_transaction == trans) { + return; + } + + if(m_transaction) { + disconnect(m_transaction, nullptr, this, nullptr); + } + + CheckChange change1(this, "isCancellable"); + CheckChange change2(this, "isActive"); + CheckChange change3(this, "statusText"); + CheckChange change4(this, "progress"); + + m_transaction = trans; + if(m_transaction) { + connect(m_transaction, &Transaction::cancellableChanged, this, &TransactionListener::cancellableChanged); + connect(m_transaction, &Transaction::statusChanged, this, &TransactionListener::transactionStatusChanged); + connect(m_transaction, &Transaction::progressChanged, this, &TransactionListener::progressChanged); + connect(m_transaction, &QObject::destroyed, this, [this]() { + qCDebug(LIBDISCOVER_LOG) << "destroyed transaction before finishing"; + setTransaction(nullptr); + }); + setResourceInternal(trans->resource()); + } + Q_EMIT transactionChanged(trans); +} + +void TransactionListener::transactionStatusChanged(Transaction::Status status) +{ + switch (status) { + case Transaction::CancelledStatus: + setTransaction(nullptr); + emit cancelled(); + break; + case Transaction::DoneStatus: + setTransaction(nullptr); + break; + default: + break; + } + + emit statusTextChanged(); +} + +int TransactionListener::progress() const +{ + return m_transaction ? m_transaction->progress() : 0; +} diff --git a/libdiscover/Transaction/TransactionListener.h b/libdiscover/Transaction/TransactionListener.h new file mode 100644 index 0000000..cd7b084 --- /dev/null +++ b/libdiscover/Transaction/TransactionListener.h @@ -0,0 +1,76 @@ +/*************************************************************************** + * Copyright © 2010 Jonathan Thomas * + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef TRANSACTIONLISTENER_H +#define TRANSACTIONLISTENER_H + +#include + +#include "Transaction.h" +#include "discovercommon_export.h" + +class AbstractResource; + +class DISCOVERCOMMON_EXPORT TransactionListener : public QObject +{ + Q_OBJECT + Q_PROPERTY(AbstractResource* resource READ resource WRITE setResource NOTIFY resourceChanged) + Q_PROPERTY(Transaction* transaction READ transaction WRITE setTransaction NOTIFY transactionChanged) + Q_PROPERTY(bool isCancellable READ isCancellable NOTIFY cancellableChanged) + Q_PROPERTY(bool isActive READ isActive NOTIFY isActiveChanged) + Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged) + Q_PROPERTY(int progress READ progress NOTIFY progressChanged) +public: + explicit TransactionListener(QObject *parent = nullptr); + + AbstractResource *resource() const { return m_resource; } + Transaction *transaction() const { return m_transaction; } + bool isCancellable() const; + bool isActive() const; + QString statusText() const; + int progress() const; + + Q_SCRIPTABLE void cancel(); + + void setResource(AbstractResource* resource); + void setTransaction(Transaction *trans); + +private: + void setResourceInternal(AbstractResource* resource); + + AbstractResource *m_resource; + Transaction* m_transaction; + +private Q_SLOTS: + void transactionAdded(Transaction *trans); + void transactionStatusChanged(Transaction::Status status); + +Q_SIGNALS: + void resourceChanged(); + void cancellableChanged(); + void isActiveChanged(); + void statusTextChanged(); + void cancelled(); + void progressChanged(); + void transactionChanged(Transaction* transaction); +}; + +#endif // TRANSACTIONLISTENER_H diff --git a/libdiscover/Transaction/TransactionModel.cpp b/libdiscover/Transaction/TransactionModel.cpp new file mode 100644 index 0000000..9b41527 --- /dev/null +++ b/libdiscover/Transaction/TransactionModel.cpp @@ -0,0 +1,211 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "TransactionModel.h" + +// Qt includes +#include +#include +#include + +// Own includes +#include "resources/AbstractResource.h" +#include "libdiscover_debug.h" + +Q_GLOBAL_STATIC(TransactionModel, globalTransactionModel) + +TransactionModel *TransactionModel::global() +{ + return globalTransactionModel; +} + +TransactionModel::TransactionModel(QObject *parent) + : QAbstractListModel(parent) +{ + connect(this, &QAbstractItemModel::rowsInserted, this, &TransactionModel::countChanged); + connect(this, &QAbstractItemModel::rowsRemoved, this, &TransactionModel::countChanged); + connect(this, &TransactionModel::countChanged, this, &TransactionModel::progressChanged); +} + +QHash< int, QByteArray > TransactionModel::roleNames() const +{ + QHash roles; + roles[TransactionRoleRole] = "transactionRole"; + roles[TransactionStatusRole] = "status"; + roles[CancellableRole] = "cancellable"; + roles[ProgressRole] = "progress"; + roles[StatusTextRole] = "statusText"; + roles[ResourceRole] = "resource"; + roles[TransactionRole] = "transaction"; + return roles; +} + +int TransactionModel::rowCount(const QModelIndex &parent) const +{ + // Root element parents all children + if (!parent.isValid()) + return m_transactions.size(); + + // Child elements have no children themselves + return 0; +} + +QVariant TransactionModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + Transaction *trans = m_transactions[index.row()]; + switch (role) { + case TransactionRoleRole: + return trans->role(); + case TransactionStatusRole: + return trans->status(); + case CancellableRole: + return trans->isCancellable(); + case ProgressRole: + return trans->progress(); + case StatusTextRole: + switch (trans->status()) { + case Transaction::SetupStatus: + return i18nc("@info:status", "Starting"); + case Transaction::QueuedStatus: + return i18nc("@info:status", "Waiting"); + case Transaction::DownloadingStatus: + return i18nc("@info:status", "Downloading"); + case Transaction::CommittingStatus: + switch (trans->role()) { + case Transaction::InstallRole: + return i18nc("@info:status", "Installing"); + case Transaction::RemoveRole: + return i18nc("@info:status", "Removing"); + case Transaction::ChangeAddonsRole: + return i18nc("@info:status", "Changing Addons"); + } + break; + case Transaction::DoneStatus: + return i18nc("@info:status", "Done"); + case Transaction::DoneWithErrorStatus: + return i18nc("@info:status", "Failed"); + case Transaction::CancelledStatus: + return i18nc("@info:status", "Cancelled"); + } + break; + case TransactionRole: + return qVariantFromValue(trans); + case ResourceRole: + return qVariantFromValue(trans->resource()); + } + + return QVariant(); +} + +Transaction *TransactionModel::transactionFromResource(AbstractResource *resource) const +{ + Transaction *ret = nullptr; + + Q_FOREACH (Transaction *trans, m_transactions) { + if (trans->resource() == resource) { + ret = trans; + break; + } + } + + return ret; +} + +QModelIndex TransactionModel::indexOf(Transaction *trans) const +{ + int row = m_transactions.indexOf(trans); + QModelIndex ret = index(row); + Q_ASSERT(!trans || ret.isValid()); + return ret; +} + +QModelIndex TransactionModel::indexOf(AbstractResource *res) const +{ + Transaction *trans = transactionFromResource(res); + + return indexOf(trans); +} + +void TransactionModel::addTransaction(Transaction *trans) +{ + if(!trans) + return; + + if (m_transactions.contains(trans)) + return; + + if (m_transactions.isEmpty()) + emit startingFirstTransaction(); + + int before = m_transactions.size(); + beginInsertRows(QModelIndex(), before, before + 1); + m_transactions.append(trans); + endInsertRows(); + + connect(trans, &Transaction::statusChanged, this, [this](){ transactionChanged(StatusTextRole); }); + connect(trans, &Transaction::cancellableChanged, this, [this](){ transactionChanged(CancellableRole); }); + connect(trans, &Transaction::progressChanged, this, [this](){ transactionChanged(ProgressRole); Q_EMIT progressChanged(); }); + + emit transactionAdded(trans); +} + +void TransactionModel::removeTransaction(Transaction *trans) +{ + Q_ASSERT(trans); + trans->deleteLater(); + int r = m_transactions.indexOf(trans); + if (r<0) { + qCWarning(LIBDISCOVER_LOG) << "transaction not part of the model" << trans; + return; + } + + disconnect(trans, nullptr, this, nullptr); + + beginRemoveRows(QModelIndex(), r, r); + m_transactions.removeAt(r); + endRemoveRows(); + + emit transactionRemoved(trans); + if (m_transactions.isEmpty()) + emit lastTransactionFinished(); +} + +void TransactionModel::transactionChanged(int role) +{ + Transaction *trans = qobject_cast(sender()); + QModelIndex transIdx = indexOf(trans); + emit dataChanged(transIdx, transIdx, {role}); +} + +int TransactionModel::progress() const +{ + int sum = 0; + int count = 0; + foreach(Transaction* t, m_transactions) { + if (t->isActive() && t->isVisible()) { + sum += t->progress(); + ++count; + } + } + return count==0 ? 0 : sum / count; +} diff --git a/libdiscover/Transaction/TransactionModel.h b/libdiscover/Transaction/TransactionModel.h new file mode 100644 index 0000000..996d5d1 --- /dev/null +++ b/libdiscover/Transaction/TransactionModel.h @@ -0,0 +1,81 @@ +/*************************************************************************** + * Copyright © 2012 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef TRANSACTIONMODEL_H +#define TRANSACTIONMODEL_H + +#include + +#include "Transaction.h" + +#include "discovercommon_export.h" + +class DISCOVERCOMMON_EXPORT TransactionModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(int progress READ progress NOTIFY progressChanged) + Q_PROPERTY(int count READ rowCount NOTIFY countChanged) +public: + enum Roles { + TransactionRoleRole = Qt::UserRole, + TransactionStatusRole, + CancellableRole, + ProgressRole, + StatusTextRole, + ResourceRole, + TransactionRole + }; + + explicit TransactionModel(QObject *parent = nullptr); + static TransactionModel *global(); + + // Reimplemented from QAbstractListModel + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + QHash roleNames() const override; + + Q_SCRIPTABLE Transaction *transactionFromResource(AbstractResource *resource) const; + QModelIndex indexOf(Transaction *trans) const; + QModelIndex indexOf(AbstractResource *res) const; + + void addTransaction(Transaction *trans); + void removeTransaction(Transaction *trans); + + bool contains(Transaction* transaction) const { return m_transactions.contains(transaction); } + int progress() const; + QVector transactions() const { return m_transactions; } + +private: + QVector m_transactions; + +Q_SIGNALS: + void startingFirstTransaction(); + void lastTransactionFinished(); + void transactionAdded(Transaction *trans); + void transactionRemoved(Transaction* trans); + void countChanged(); + void progressChanged(); + void proceedRequest(Transaction* transaction, const QString &title, const QString &description); + +private Q_SLOTS: + void transactionChanged(int role); +}; + +#endif // TRANSACTIONMODEL_H diff --git a/libdiscover/UpdateModel/UpdateItem.cpp b/libdiscover/UpdateModel/UpdateItem.cpp new file mode 100644 index 0000000..30a2439 --- /dev/null +++ b/libdiscover/UpdateModel/UpdateItem.cpp @@ -0,0 +1,93 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "UpdateItem.h" +#include +#include +#include + +#include +#include +#include "libdiscover_debug.h" + +UpdateItem::UpdateItem(AbstractResource *app) + : m_app(app) + , m_progress(0) +{ +} + +UpdateItem::~UpdateItem() +{ +} + +AbstractResource *UpdateItem::app() const +{ + return m_app; +} + +QString UpdateItem::name() const +{ + return m_app->name(); +} + +QString UpdateItem::version() const +{ + return m_app->availableVersion(); +} + +QVariant UpdateItem::icon() const +{ + return m_app->icon(); +} + +qint64 UpdateItem::size() const +{ + return m_app->size(); +} + +static bool isMarked(AbstractResource* res) +{ + return res->backend()->backendUpdater()->isMarked(res); +} + +Qt::CheckState UpdateItem::checked() const +{ + return isMarked(app()) ? Qt::Checked : Qt::Unchecked; +} + +qreal UpdateItem::progress() const +{ + return m_progress; +} + +void UpdateItem::setProgress(qreal progress) +{ + m_progress = progress; +} + +QString UpdateItem::changelog() const +{ + return m_changelog; +} + +void UpdateItem::setChangelog(const QString& changelog) +{ + m_changelog = changelog; +} diff --git a/libdiscover/UpdateModel/UpdateItem.h b/libdiscover/UpdateModel/UpdateItem.h new file mode 100644 index 0000000..567752a --- /dev/null +++ b/libdiscover/UpdateModel/UpdateItem.h @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef UPDATEITEM_H +#define UPDATEITEM_H + +// Qt includes +#include +#include +#include "discovercommon_export.h" + +#include + +class AbstractResource; +class DISCOVERCOMMON_EXPORT UpdateItem +{ +public: + explicit UpdateItem(AbstractResource *app); + + ~UpdateItem(); + + enum Section { + ApplicationSection, + SystemSection + }; + + void setSection(const Section §ion) { m_section = section; } + Section section() const { return m_section; } + void setProgress(qreal progress); + qreal progress() const; + + QString changelog() const; + void setChangelog(const QString &changelog); + + AbstractResource *app() const; + QString name() const; + QString version() const; + QVariant icon() const; + qint64 size() const; + Qt::CheckState checked() const; + + AbstractResource* resource() const { return m_app; } + +private: + AbstractResource * const m_app; + + const QString m_categoryName; + const QIcon m_categoryIcon; + qreal m_progress; + QString m_changelog; + Section m_section; +}; + +#endif // UPDATEITEM_H diff --git a/libdiscover/UpdateModel/UpdateModel.cpp b/libdiscover/UpdateModel/UpdateModel.cpp new file mode 100644 index 0000000..4b9ae8d --- /dev/null +++ b/libdiscover/UpdateModel/UpdateModel.cpp @@ -0,0 +1,333 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "UpdateModel.h" + +// Qt includes +#include +#include +#include "libdiscover_debug.h" + +// KDE includes +#include +#include + +// Own includes +#include "UpdateItem.h" +#include +#include +#include + +UpdateModel::UpdateModel(QObject *parent) + : QAbstractListModel(parent) + , m_updateSizeTimer(new QTimer(this)) + , m_updates(nullptr) +{ + connect(ResourcesModel::global(), &ResourcesModel::fetchingChanged, this, &UpdateModel::activityChanged); + connect(ResourcesModel::global(), &ResourcesModel::updatesCountChanged, this, &UpdateModel::activityChanged); + connect(ResourcesModel::global(), &ResourcesModel::resourceDataChanged, this, &UpdateModel::resourceDataChanged); + connect(this, &UpdateModel::toUpdateChanged, this, &UpdateModel::updateSizeChanged); + + m_updateSizeTimer->setInterval(100); + m_updateSizeTimer->setSingleShot(true); + connect(m_updateSizeTimer, &QTimer::timeout, this, &UpdateModel::updateSizeChanged); +} + +UpdateModel::~UpdateModel() +{ + qDeleteAll(m_updateItems); + m_updateItems.clear(); +} + +QHash UpdateModel::roleNames() const +{ + return QAbstractItemModel::roleNames().unite({ + { Qt::CheckStateRole, "checked" }, + { ResourceProgressRole, "resourceProgress" }, + { ResourceRole, "resource" }, + { SizeRole, "size" }, + { VersionRole, "version" }, + { SectionRole, "section" }, + { ChangelogRole, "changelog" } + } ); +} + +void UpdateModel::setBackend(ResourcesUpdatesModel* updates) +{ + if (m_updates) { + disconnect(m_updates, nullptr, this, nullptr); + } + + m_updates = updates; + + connect(m_updates, &ResourcesUpdatesModel::progressingChanged, this, &UpdateModel::activityChanged); + connect(m_updates, &ResourcesUpdatesModel::resourceProgressed, this, &UpdateModel::resourceHasProgressed); + + activityChanged(); +} + +void UpdateModel::resourceHasProgressed(AbstractResource* res, qreal progress) +{ + UpdateItem* item = itemFromResource(res); + if (!item) + return; + item->setProgress(progress); + + const QModelIndex idx = indexFromItem(item); + Q_EMIT dataChanged(idx, idx, { ResourceProgressRole, SectionResourceProgressRole }); +} + +void UpdateModel::activityChanged() +{ + if (m_updates) { + if (!m_updates->isProgressing()) { + m_updates->prepare(); + setResources(m_updates->toUpdate()); + + for(auto item : qAsConst(m_updateItems)) { + item->setProgress(0); + } + } else + setResources(m_updates->toUpdate()); + } +} + +QVariant UpdateModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) { + return QVariant(); + } + + UpdateItem *item = itemFromIndex(index); + + switch (role) { + case Qt::DisplayRole: + return item->name(); + case Qt::DecorationRole: + return item->icon(); + case Qt::CheckStateRole: + return item->checked(); + case VersionRole: + return item->version(); + case SizeRole: + return KFormat().formatByteSize(item->size()); + case ResourceRole: + return QVariant::fromValue(item->resource()); + case ResourceProgressRole: + return item->progress(); + case ChangelogRole: + return item->changelog(); + case SectionRole: { + static const QString appUpdatesSection = i18nc("@item:inlistbox", "Application Updates"); + static const QString systemUpdateSection = i18nc("@item:inlistbox", "System Updates"); + switch(item->section()) { + case UpdateItem::ApplicationSection: return appUpdatesSection; + case UpdateItem::SystemSection: return systemUpdateSection; + } + return {}; + } + case SectionResourceProgressRole: + return (100-item->progress()) + (101 * item->section()); + default: + break; + } + + return QVariant(); +} + +void UpdateModel::checkResources(const QList& resource, bool checked) +{ + if(checked) + m_updates->addResources(resource); + else + m_updates->removeResources(resource); +} + +Qt::ItemFlags UpdateModel::flags(const QModelIndex &index) const +{ + if (!index.isValid()) + return nullptr; + + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + +int UpdateModel::rowCount(const QModelIndex &parent) const +{ + return !parent.isValid() ? m_updateItems.count() : 0; +} + +bool UpdateModel::setData(const QModelIndex &idx, const QVariant &value, int role) +{ + if (role == Qt::CheckStateRole) { + UpdateItem *item = itemFromIndex(idx); + const bool newValue = value.toInt() == Qt::Checked; + const QList apps = { item->app() }; + + checkResources(apps, newValue); + Q_ASSERT(idx.data(Qt::CheckStateRole) == value); + + //When un/checking some backends will decide to add or remove a bunch of packages, so refresh it all + auto m = idx.model(); + Q_EMIT dataChanged(m->index(0, 0), m->index(m->rowCount()-1, 0), { Qt::CheckStateRole }); + Q_EMIT toUpdateChanged(); + + return true; + } + + return false; +} + +void UpdateModel::fetchUpdateDetails(int row) +{ + UpdateItem *item = itemFromIndex(index(row, 0)); + Q_ASSERT(item); + if (!item) return; + + item->app()->fetchUpdateDetails(); +} + +void UpdateModel::integrateChangelog(const QString &changelog) +{ + auto app = qobject_cast(sender()); + Q_ASSERT(app); + auto item = itemFromResource(app); + if (!item) + return; + + item->setChangelog(changelog); + + const QModelIndex idx = indexFromItem(item); + Q_ASSERT(idx.isValid()); + emit dataChanged(idx, idx, { ChangelogRole }); +} + +void UpdateModel::setResources(const QList& resources) +{ + if (resources == m_resources) { + return; + } + m_resources = resources; + + beginResetModel(); + qDeleteAll(m_updateItems); + m_updateItems.clear(); + + QVector appItems, systemItems; + foreach(AbstractResource* res, resources) { + connect(res, &AbstractResource::changelogFetched, this, &UpdateModel::integrateChangelog, Qt::UniqueConnection); + + UpdateItem *updateItem = new UpdateItem(res); + + if(!res->isTechnical()) { + updateItem->setSection(UpdateItem::ApplicationSection); + appItems += updateItem; + } else { + updateItem->setSection(UpdateItem::SystemSection); + systemItems += updateItem; + } + } + const auto sortUpdateItems = [](UpdateItem *a, UpdateItem *b) { return a->name() < b->name(); }; + qSort(appItems.begin(), appItems.end(), sortUpdateItems); + qSort(systemItems.begin(), systemItems.end(), sortUpdateItems); + m_updateItems = (QVector() << appItems << systemItems); + endResetModel(); + + Q_EMIT hasUpdatesChanged(!resources.isEmpty()); + Q_EMIT toUpdateChanged(); +} + +bool UpdateModel::hasUpdates() const +{ + return rowCount() > 0; +} + +ResourcesUpdatesModel* UpdateModel::backend() const +{ + return m_updates; +} + +int UpdateModel::toUpdateCount() const +{ + int ret = 0; + QSet packages; + foreach (UpdateItem* item, m_updateItems) { + const auto packageName = item->resource()->packageName(); + if (packages.contains(packageName)) { + continue; + } + packages.insert(packageName); + ret += item->checked() != Qt::Unchecked ? 1 : 0; + } + return ret; +} + +int UpdateModel::totalUpdatesCount() const +{ + int ret = 0; + QSet packages; + foreach (UpdateItem* item, m_updateItems) { + const auto packageName = item->resource()->packageName(); + if (packages.contains(packageName)) { + continue; + } + packages.insert(packageName); + ret += 1; + } + return ret; +} + +UpdateItem * UpdateModel::itemFromResource(AbstractResource* res) +{ + foreach (UpdateItem* item, m_updateItems) { + if (item->app() == res) + return item; + } + return nullptr; +} + +QString UpdateModel::updateSize() const +{ + return KFormat().formatByteSize(m_updates->updateSize()); +} + +QModelIndex UpdateModel::indexFromItem(UpdateItem* item) const +{ + return index(m_updateItems.indexOf(item), 0, {}); +} + +UpdateItem * UpdateModel::itemFromIndex(const QModelIndex& index) const +{ + return m_updateItems[index.row()]; +} + +void UpdateModel::resourceDataChanged(AbstractResource* res, const QVector& properties) +{ + auto item = itemFromResource(res); + if (!item) + return; + + const auto index = indexFromItem(item); + if (properties.contains("state")) + Q_EMIT dataChanged(index, index, {SizeRole, VersionRole}); + else if (properties.contains("size")) { + Q_EMIT dataChanged(index, index, {SizeRole}); + m_updateSizeTimer->start(); + } +} diff --git a/libdiscover/UpdateModel/UpdateModel.h b/libdiscover/UpdateModel/UpdateModel.h new file mode 100644 index 0000000..29142ba --- /dev/null +++ b/libdiscover/UpdateModel/UpdateModel.h @@ -0,0 +1,103 @@ +/*************************************************************************** + * Copyright © 2011 Jonathan Thomas * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef UPDATEMODEL_H +#define UPDATEMODEL_H + +#include +#include "discovercommon_export.h" + +class QTimer; +class ResourcesUpdatesModel; +class AbstractResource; +class UpdateItem; + +class DISCOVERCOMMON_EXPORT UpdateModel : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(ResourcesUpdatesModel* backend READ backend WRITE setBackend) + Q_PROPERTY(bool hasUpdates READ hasUpdates NOTIFY hasUpdatesChanged) + Q_PROPERTY(int toUpdateCount READ toUpdateCount NOTIFY toUpdateChanged) + Q_PROPERTY(int totalUpdatesCount READ totalUpdatesCount NOTIFY hasUpdatesChanged) + Q_PROPERTY(QString updateSize READ updateSize NOTIFY updateSizeChanged) +public: + + enum Roles { + VersionRole = Qt::UserRole + 1, + SizeRole, + ResourceRole, + ResourceProgressRole, + SectionResourceProgressRole, + ChangelogRole, + SectionRole + }; + Q_ENUM(Roles) + + explicit UpdateModel(QObject *parent = nullptr); + ~UpdateModel() override; + + QVariant data(const QModelIndex &index, int role) const override; + Qt::ItemFlags flags(const QModelIndex &index) const override; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + bool setData(const QModelIndex &index, const QVariant &value, int role) override; + void setResources(const QList& res); + UpdateItem *itemFromIndex(const QModelIndex &index) const; + + void checkResources(const QList& resource, bool checked); + QHash roleNames() const override; + + bool hasUpdates() const; + + ///all upgradeable packages + int totalUpdatesCount() const; + + ///packages marked to upgrade + int toUpdateCount() const; + + Q_SCRIPTABLE void fetchUpdateDetails(int row); + + QString updateSize() const; + + ResourcesUpdatesModel* backend() const; + +public Q_SLOTS: + void setBackend(ResourcesUpdatesModel* updates); + +Q_SIGNALS: + void hasUpdatesChanged(bool hasUpdates); + void toUpdateChanged(); + void updateSizeChanged(); + +private: + void resourceDataChanged(AbstractResource* res, const QVector &properties); + void integrateChangelog(const QString &changelog); + QModelIndex indexFromItem(UpdateItem* item) const; + UpdateItem* itemFromResource(AbstractResource* res); + void resourceHasProgressed(AbstractResource* res, qreal progress); + void activityChanged(); + + QTimer* const m_updateSizeTimer; + QVector m_updateItems; + ResourcesUpdatesModel* m_updates; + QList m_resources; +}; + +#endif // UPDATEMODEL_H diff --git a/libdiscover/appstream/AppStreamIntegration.cpp b/libdiscover/appstream/AppStreamIntegration.cpp new file mode 100644 index 0000000..3c1e307 --- /dev/null +++ b/libdiscover/appstream/AppStreamIntegration.cpp @@ -0,0 +1,43 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "AppStreamIntegration.h" + +AppStreamIntegration * AppStreamIntegration::global() +{ + static AppStreamIntegration * var = nullptr; + if (!var) { + var = new AppStreamIntegration; + } + + return var; +} + +QSharedPointer AppStreamIntegration::reviews() +{ + QSharedPointer ret; + if (m_reviews) { + ret = m_reviews; + } else { + ret = QSharedPointer(new OdrsReviewsBackend(nullptr)); + m_reviews = ret; + } + return ret; +} diff --git a/libdiscover/appstream/AppStreamIntegration.h b/libdiscover/appstream/AppStreamIntegration.h new file mode 100644 index 0000000..e0f662b --- /dev/null +++ b/libdiscover/appstream/AppStreamIntegration.h @@ -0,0 +1,42 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef APPSTREAMINTEGRATION_H +#define APPSTREAMINTEGRATION_H + +#include "discovercommon_export.h" +#include +#include "OdrsReviewsBackend.h" + +class DISCOVERCOMMON_EXPORT AppStreamIntegration : public QObject +{ + Q_OBJECT +public: + static AppStreamIntegration* global(); + + QSharedPointer reviews(); + +private: + QWeakPointer m_reviews; + + AppStreamIntegration() {} +}; + +#endif // APPSTREAMINTEGRATION_H diff --git a/libdiscover/appstream/AppStreamUtils.h b/libdiscover/appstream/AppStreamUtils.h new file mode 100644 index 0000000..78de3c2 --- /dev/null +++ b/libdiscover/appstream/AppStreamUtils.h @@ -0,0 +1,78 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef APPSTREAMUTILS_H +#define APPSTREAMUTILS_H + +#include +#include +#include +#include +#include +#include +#include + +namespace AppStreamUtils +{ +static QUrl imageOfKind(const QList &images, AppStream::Image::Kind kind) +{ + QUrl ret; + Q_FOREACH (const AppStream::Image &i, images) { + if (i.kind() == kind) { + ret = i.url(); + break; + } + } + return ret; +} + +static QString changelogToHtml(const AppStream::Component &appdata) +{ + if(appdata.releases().isEmpty()) + return {}; + + const auto release = appdata.releases().constFirst(); + if (release.description().isEmpty()) + return {}; + + QString changelog = QStringLiteral("

") + release.version() + QStringLiteral("

") + + QStringLiteral("

") + release.description() + QStringLiteral("

"); + return changelog; +} + +static QPair, QList> fetchScreenshots(const AppStream::Component &appdata) +{ + QList screenshots, thumbnails; + Q_FOREACH (const AppStream::Screenshot &s, appdata.screenshots()) { + const auto images = s.images(); + const QUrl thumbnail = AppStreamUtils::imageOfKind(images, AppStream::Image::KindThumbnail); + const QUrl plain = AppStreamUtils::imageOfKind(images, AppStream::Image::KindSource); + if (plain.isEmpty()) + qWarning() << "invalid screenshot for" << appdata.name(); + + screenshots << plain; + thumbnails << (thumbnail.isEmpty() ? plain : thumbnail); + } + return {screenshots, thumbnails}; +} + +} + +#endif diff --git a/libdiscover/appstream/OdrsReviewsBackend.cpp b/libdiscover/appstream/OdrsReviewsBackend.cpp new file mode 100644 index 0000000..0fd6536 --- /dev/null +++ b/libdiscover/appstream/OdrsReviewsBackend.cpp @@ -0,0 +1,371 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "OdrsReviewsBackend.h" + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include "libdiscover_debug.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// #define APIURL "http://127.0.0.1:5000/1.0/reviews/api" +#define APIURL "https://odrs.gnome.org/1.0/reviews/api" + +OdrsReviewsBackend::OdrsReviewsBackend(AbstractResourcesBackend *parent) + : AbstractReviewsBackend(parent) + , m_isFetching(false) + , m_nam(new QNetworkAccessManager(this)) +{ + bool fetchRatings = false; + const QUrl ratingsUrl(QStringLiteral(APIURL "/ratings")); + const QUrl fileUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/ratings/ratings")); + const QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); + + // Create $HOME/.cache/discover/ratings folder + cacheDir.mkdir(QStringLiteral("ratings")); + + if (QFileInfo::exists(fileUrl.toLocalFile())) { + QFileInfo file(fileUrl.toLocalFile()); + // Refresh the cached ratings if they are older than one day + if (file.lastModified().msecsTo(QDateTime::currentDateTime()) > 1000 * 60 * 60 * 24) { + fetchRatings = true; + } + } else { + fetchRatings = true; + } + + if (fetchRatings) { + m_isFetching = true; + KIO::FileCopyJob *getJob = KIO::file_copy(ratingsUrl, fileUrl, -1, KIO::Overwrite | KIO::HideProgressInfo); + connect(getJob, &KIO::FileCopyJob::result, this, &OdrsReviewsBackend::ratingsFetched); + } else { + parseRatings(); + } +} + +void OdrsReviewsBackend::ratingsFetched(KJob *job) +{ + m_isFetching = false; + if (job->error()) { + qCWarning(LIBDISCOVER_LOG) << "Failed to fetch ratings " << job->errorString(); + } else { + parseRatings(); + } +} + +static QString osName() +{ + QString osReleaseFilename; + if (QFileInfo::exists(QStringLiteral("/etc/os-release"))) { + osReleaseFilename = QStringLiteral("/etc/os-release"); + } else if (QFileInfo::exists(QStringLiteral("/usr/lib/os-release"))) { + osReleaseFilename = QStringLiteral("/usr/lib/os-release"); + } + + if (osReleaseFilename.isEmpty()) { + return QStringLiteral("Unknown"); + } + + QFile osReleaseFile(osReleaseFilename); + if (osReleaseFile.open(QIODevice::ReadOnly)) { + QString line; + QTextStream stream(&osReleaseFile); + while (stream.readLineInto(&line)) { + if (line.startsWith(QStringLiteral("NAME"))) { + QStringRef name = line.midRef(5).trimmed(); + if (name.startsWith(QLatin1Char('\"')) && name.endsWith(QLatin1Char('\"'))) + name = name.mid(1, name.size()-2); + return name.toString(); + } + } + } + + return QStringLiteral("Unknown"); +} + +static QString userHash() +{ + QString machineId; + QFile file(QStringLiteral("/etc/machine-id")); + if (file.open(QIODevice::ReadOnly)) { + machineId = QString::fromUtf8(file.readAll()); + file.close(); + } + + if (machineId.isEmpty()) { + return QString(); + } + + QString salted = QStringLiteral("gnome-software[%1:%2]").arg(KUser().loginName(), machineId); + return QString::fromUtf8(QCryptographicHash::hash(salted.toUtf8(), QCryptographicHash::Sha1).toHex()); +} + +void OdrsReviewsBackend::fetchReviews(AbstractResource *app, int page) +{ + Q_UNUSED(page) + m_isFetching = true; + + // Check cached reviews + const QString fileName = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/reviews/%1.json").arg(app->appstreamId()); + if (QFileInfo::exists(fileName)) { + QFileInfo file(fileName); + // Check if the reviews are not older than a week msecs * secs * hours * days + if (file.lastModified().msecsTo(QDateTime::currentDateTime()) < 1000 * 60 * 60 * 24 * 7 ) { + QFile reviewFile(fileName); + if (reviewFile.open(QIODevice::ReadOnly)) { + QByteArray reviews = reviewFile.readAll(); + QJsonDocument document = QJsonDocument::fromJson(reviews); + parseReviews(document, app); + return; + } + } + } + + const QJsonDocument document(QJsonObject{ + {QStringLiteral("app_id"), app->appstreamId()}, + {QStringLiteral("distro"), osName()}, + {QStringLiteral("user_hash"), userHash()}, + {QStringLiteral("version"), app->isInstalled() ? app->installedVersion() : app->availableVersion()}, + {QStringLiteral("locale"), QLocale::system().name()}, + {QStringLiteral("limit"), 0} + }); + + QNetworkRequest request(QUrl(QStringLiteral(APIURL "/fetch"))); + request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json; charset=utf-8")); + request.setHeader(QNetworkRequest::ContentLengthHeader, document.toJson().size()); + // Store reference to the app for which we request reviews + request.setOriginatingObject(app); + + auto reply = m_nam->post(request, document.toJson()); + connect(reply, &QNetworkReply::finished, this, &OdrsReviewsBackend::reviewsFetched); +} + +void OdrsReviewsBackend::reviewsFetched() +{ + QNetworkReply* reply = qobject_cast(sender()); + + if (reply->error() != QNetworkReply::NoError) { + qCWarning(LIBDISCOVER_LOG) << "error fetching reviews:" << reply->errorString(); + m_isFetching = false; + return; + } + + QByteArray data = reply->readAll(); + const QJsonDocument document = QJsonDocument::fromJson(data); + AbstractResource *resource = qobject_cast(reply->request().originatingObject()); + Q_ASSERT(resource); + parseReviews(document, resource); + + // Store reviews to cache so we don't need to download them all the time + if (document.array().isEmpty()) { + return; + } + + QJsonObject jsonObject = document.array().first().toObject(); + if (jsonObject.isEmpty()) { + return; + } + + QFile file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/reviews/%1.json").arg(jsonObject.value(QStringLiteral("app_id")).toString())); + if (file.open(QIODevice::WriteOnly)) { + file.write(document.toJson()); + } +} + +Rating * OdrsReviewsBackend::ratingForApplication(AbstractResource *app) const +{ + if (app->appstreamId().isEmpty()) { + return nullptr; + } + + return m_ratings[app->appstreamId()]; +} + +void OdrsReviewsBackend::submitUsefulness(Review *review, bool useful) +{ + const QJsonDocument document(QJsonObject{ + {QStringLiteral("app_id"), review->applicationName()}, + {QStringLiteral("user_skey"), review->getMetadata(QStringLiteral("ODRS::user_skey")).toString()}, + {QStringLiteral("user_hash"), userHash()}, + {QStringLiteral("distro"), osName()}, + {QStringLiteral("review_id"), QJsonValue(double(review->id()))} //if we really need uint64 we should get it in QJsonValue + }); + + QNetworkRequest request(QUrl(QStringLiteral(APIURL) + (useful ? QLatin1String("/upvote") : QLatin1String("/downvote")))); + request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json; charset=utf-8")); + request.setHeader(QNetworkRequest::ContentLengthHeader, document.toJson().size()); + + auto reply = m_nam->post(request, document.toJson()); + connect(reply, &QNetworkReply::finished, this, &OdrsReviewsBackend::usefulnessSubmitted); +} + +void OdrsReviewsBackend::usefulnessSubmitted() +{ + QNetworkReply* reply = qobject_cast(sender()); + + if (reply->error() == QNetworkReply::NoError) { + qCWarning(LIBDISCOVER_LOG) << "Usefullness submitted"; + } else { + qCWarning(LIBDISCOVER_LOG) << "Failed to submit usefulness: " << reply->errorString(); + } +} + +QString OdrsReviewsBackend::userName() const +{ + return i18n("%1 (%2)", KUser().property(KUser::FullName).toString(), KUser().loginName()); +} + +void OdrsReviewsBackend::submitReview(AbstractResource *res, const QString &summary, const QString &description, const QString &rating) +{ + QJsonObject map = {{QStringLiteral("app_id"), res->appstreamId()}, + {QStringLiteral("user_skey"), res->getMetadata(QStringLiteral("ODRS::user_skey")).toString()}, + {QStringLiteral("user_hash"), userHash()}, + {QStringLiteral("version"), res->isInstalled() ? res->installedVersion() : res->availableVersion()}, + {QStringLiteral("locale"), QLocale::system().name()}, + {QStringLiteral("distro"), osName()}, + {QStringLiteral("user_display"), QJsonValue::fromVariant(KUser().property(KUser::FullName))}, + {QStringLiteral("summary"), summary}, + {QStringLiteral("description"), description}, + {QStringLiteral("rating"), rating.toInt() * 10}}; + + const QJsonDocument document(map); + + QNetworkAccessManager *accessManager = new QNetworkAccessManager(this); + QNetworkRequest request(QUrl(QStringLiteral(APIURL "/submit"))); + request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/json; charset=utf-8")); + request.setHeader(QNetworkRequest::ContentLengthHeader, document.toJson().size()); + + // Store what we need so we can immediately show our review once it is submitted + // Use review_id 0 for now as odrs starts numbering from 1 and once reviews are re-downloaded we get correct id + map.insert(QStringLiteral("review_id"), 0); + res->addMetadata(QStringLiteral("ODRS::review_map"), map); + request.setOriginatingObject(res); + + accessManager->post(request, document.toJson()); + connect(accessManager, &QNetworkAccessManager::finished, this, &OdrsReviewsBackend::reviewSubmitted); +} + +void OdrsReviewsBackend::reviewSubmitted(QNetworkReply *reply) +{ + if (reply->error() == QNetworkReply::NoError) { + qCWarning(LIBDISCOVER_LOG) << "Review submitted"; + AbstractResource *resource = qobject_cast(reply->request().originatingObject()); + const QJsonArray array = {resource->getMetadata(QStringLiteral("ODRS::review_map")).toObject()}; + const QJsonDocument document(array); + // Remove local file with reviews so we can re-download it next time to get our review + QFile file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/reviews/%1.json").arg(array.first().toObject().value(QStringLiteral("app_id")).toString())); + file.remove(); + parseReviews(document, resource); + } else { + qCWarning(LIBDISCOVER_LOG) << "Failed to submit review: " << reply->errorString(); + } +} + +void OdrsReviewsBackend::parseRatings() +{ + QFile ratingsDocument(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/ratings/ratings")); + if (ratingsDocument.open(QIODevice::ReadOnly)) { + QJsonDocument jsonDocument = QJsonDocument::fromJson(ratingsDocument.readAll()); + const QJsonObject jsonObject = jsonDocument.object(); + m_ratings.reserve(jsonObject.size()); + for (auto it = jsonObject.begin(); it != jsonObject.end(); it++) { + QJsonObject appJsonObject = it.value().toObject(); + + const int ratingCount = appJsonObject.value(QLatin1String("total")).toInt(); + QVariantMap ratingMap = { { QStringLiteral("star0"), appJsonObject.value(QLatin1String("star0")).toInt() }, + { QStringLiteral("star1"), appJsonObject.value(QLatin1String("star1")).toInt() }, + { QStringLiteral("star2"), appJsonObject.value(QLatin1String("star2")).toInt() }, + { QStringLiteral("star3"), appJsonObject.value(QLatin1String("star3")).toInt() }, + { QStringLiteral("star4"), appJsonObject.value(QLatin1String("star4")).toInt() }, + { QStringLiteral("star5"), appJsonObject.value(QLatin1String("star5")).toInt() } }; + + Rating *rating = new Rating(it.key(), ratingCount, ratingMap); + rating->setParent(this); + m_ratings.insert(it.key(), rating); + } + ratingsDocument.close(); + + Q_EMIT ratingsReady(); + } +} + +void OdrsReviewsBackend::parseReviews(const QJsonDocument &document, AbstractResource *resource) +{ + m_isFetching = false; + Q_ASSERT(resource); + if (!resource) { + return; + } + + QJsonArray reviews = document.array(); + if (!reviews.isEmpty()) { + QVector reviewList; + for (auto it = reviews.begin(); it != reviews.end(); it++) { + const QJsonObject review = it->toObject(); + if (!review.isEmpty()) { + const int usefulFavorable = review.value(QStringLiteral("karma_up")).toInt(); + const int usefulTotal = review.value(QStringLiteral("karma_down")).toInt() + usefulFavorable; + QDateTime dateTime; + dateTime.setTime_t(review.value(QStringLiteral("date_created")).toInt()); + ReviewPtr r(new Review(review.value(QStringLiteral("app_id")).toString(), resource->packageName(), + review.value(QStringLiteral("locale")).toString(), review.value(QStringLiteral("summary")).toString(), + review.value(QStringLiteral("description")).toString(), review.value(QStringLiteral("user_display")).toString(), + dateTime, true, review.value(QStringLiteral("review_id")).toInt(), + review.value(QStringLiteral("rating")).toInt() / 10, usefulTotal, usefulFavorable, + review.value(QStringLiteral("version")).toString())); + // We can also receive just a json with app name and user info so filter these out as there is no review + if (!r->summary().isEmpty() && !r->reviewText().isEmpty()) { + reviewList << r; + // Needed for submitting usefulness + r->addMetadata(QStringLiteral("ODRS::user_skey"), review.value(QStringLiteral("user_skey")).toString()); + } + + // We should get at least user_skey needed for posting reviews + resource->addMetadata(QStringLiteral("ODRS::user_skey"), review.value(QStringLiteral("user_skey")).toString()); + } + } + + Q_EMIT reviewsReady(resource, reviewList, false); + } +} + +bool OdrsReviewsBackend::isResourceSupported(AbstractResource* res) const +{ + return !res->appstreamId().isEmpty(); +} diff --git a/libdiscover/appstream/OdrsReviewsBackend.h b/libdiscover/appstream/OdrsReviewsBackend.h new file mode 100644 index 0000000..ba35e7a --- /dev/null +++ b/libdiscover/appstream/OdrsReviewsBackend.h @@ -0,0 +1,75 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef ODRSREVIEWSBACKEND_H +#define ODRSREVIEWSBACKEND_H + +#include +#include + +#include +#include +#include + +class KJob; +class AbstractResourcesBackend; +class DISCOVERCOMMON_EXPORT OdrsReviewsBackend : public AbstractReviewsBackend +{ +Q_OBJECT +public: + explicit OdrsReviewsBackend(AbstractResourcesBackend *parent = nullptr); + + QString userName() const override; + void login() override {} + void logout() override {} + void registerAndLogin() override {} + + Rating * ratingForApplication(AbstractResource *app) const override; + bool hasCredentials() const override { return false; } + void deleteReview(Review *) override {} + void fetchReviews(AbstractResource *app, int page = 1) override; + bool isFetching() const override { return m_isFetching; } + void submitReview(AbstractResource *, const QString &summary, const QString &description, const QString &rating) override; + void flagReview(Review *, const QString &, const QString &) override {} + void submitUsefulness(Review *review, bool useful) override; + QStringList appstreamIds() const { return m_ratings.keys(); } + bool isResourceSupported(AbstractResource * res) const override; + +private Q_SLOTS: + void ratingsFetched(KJob *job); + void reviewsFetched(); + void reviewSubmitted(QNetworkReply *reply); + void usefulnessSubmitted(); + +Q_SIGNALS: + void ratingsReady(); + +private: + void parseRatings(); + void parseReviews(const QJsonDocument &document, AbstractResource *resource); + + QHash m_ratings; + bool m_isFetching; + QNetworkAccessManager* const m_nam; +}; + +#endif // ODRSREVIEWSBACKEND_H + diff --git a/libdiscover/backends/CMakeLists.txt b/libdiscover/backends/CMakeLists.txt new file mode 100644 index 0000000..e2f8ab3 --- /dev/null +++ b/libdiscover/backends/CMakeLists.txt @@ -0,0 +1,48 @@ +function(add_unit_test name) + add_executable(${name} ${CMAKE_SOURCE_DIR}/libdiscover/tests/modeltest.cpp ${ARGN}) + add_test(${name} ${name}) + ecm_mark_as_test(${name}) + target_link_libraries(${name} + Discover::Common + + Qt5::Test Qt5::Core ${EXTRA_LIBS}) +endfunction() + +if(KF5Attica_FOUND AND KF5NewStuff_FOUND) + add_subdirectory(KNSBackend) +endif() + +if(packagekitqt5_FOUND AND AppStreamQt_FOUND) + add_subdirectory(PackageKitBackend) +endif() + +option(BUILD_DummyBackend "Build the DummyBackend" "OFF") +if(BUILD_DummyBackend) + add_subdirectory(DummyBackend) +endif() + +option(BUILD_FlatpakBackend "Build Flatpak support" "ON") +if(Flatpak_FOUND AND AppStreamQt_FOUND AND BUILD_FlatpakBackend) + add_subdirectory(FlatpakBackend) +elseif(BUILD_FlatpakBackend) + message(WARNING "BUILD_FlatpakBackend enabled but Flatpak=${Flatpak_FOUND} or AppStreamQt=${AppStreamQt_FOUND} not found") +endif() + +find_package(Snapd) +set_package_properties(Snapd PROPERTIES + DESCRIPTION "Library that exposes Snapd" + URL "http://www.snapcraft.io" + PURPOSE "Required to build the Snap backend" + TYPE OPTIONAL) + +option(BUILD_SnapBackend "Build Snap support." "ON") +if(BUILD_SnapBackend AND Snapd_FOUND) + add_subdirectory(SnapBackend) +endif() + +option(BUILD_FwupdBackend "Build Fwupd support." "ON") +if(BUILD_FwupdBackend AND TARGET PkgConfig::Fwupd) + add_subdirectory(FwupdBackend) +endif() + + diff --git a/libdiscover/backends/DummyBackend/CMakeLists.txt b/libdiscover/backends/DummyBackend/CMakeLists.txt new file mode 100644 index 0000000..65525b2 --- /dev/null +++ b/libdiscover/backends/DummyBackend/CMakeLists.txt @@ -0,0 +1,21 @@ +add_subdirectory(tests) + +set(dummy-backend_SRCS + DummyResource.cpp + DummyBackend.cpp + DummyReviewsBackend.cpp + DummyTransaction.cpp + DummySourcesBackend.cpp +) + +add_library(dummy-backend MODULE ${dummy-backend_SRCS}) +target_link_libraries(dummy-backend Qt5::Core Qt5::Widgets KF5::CoreAddons KF5::ConfigCore Discover::Common) + +install(TARGETS dummy-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) +install(FILES dummy-backend-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libdiscover/categories) + +add_library(DummyNotifier MODULE DummyNotifier.cpp) +target_link_libraries(DummyNotifier Discover::Notifiers) +set_target_properties(DummyNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover) + +install(TARGETS DummyNotifier DESTINATION ${PLUGIN_INSTALL_DIR}/discover-notifier) diff --git a/libdiscover/backends/DummyBackend/DummyBackend.cpp b/libdiscover/backends/DummyBackend/DummyBackend.cpp new file mode 100644 index 0000000..ce3659b --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyBackend.cpp @@ -0,0 +1,179 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyBackend.h" +#include "DummyResource.h" +#include "DummyReviewsBackend.h" +#include "DummyTransaction.h" +#include "DummySourcesBackend.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DISCOVER_BACKEND_PLUGIN(DummyBackend) + +DummyBackend::DummyBackend(QObject* parent) + : AbstractResourcesBackend(parent) + , m_updater(new StandardBackendUpdater(this)) + , m_reviews(new DummyReviewsBackend(this)) + , m_fetching(true) + , m_startElements(120) +{ + QTimer::singleShot(500, this, &DummyBackend::toggleFetching); + connect(m_reviews, &DummyReviewsBackend::ratingsReady, this, &AbstractResourcesBackend::emitRatingsReady); + connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &DummyBackend::updatesCountChanged); + + populate(QStringLiteral("Dummy")); + if (!m_fetching) + m_reviews->initialize(); + + SourcesModel::global()->addSourcesBackend(new DummySourcesBackend(this)); +} + +void DummyBackend::populate(const QString& n) +{ + const int start = m_resources.count(); + for(int i=start; isetSize(100+(m_startElements-i)); + res->setState(AbstractResource::State(1+(i%3))); + m_resources.insert(name.toLower(), res); + connect(res, &DummyResource::stateChanged, this, &DummyBackend::updatesCountChanged); + } + + for(int i=start; isetState(AbstractResource::State(1+(i%3))); + res->setSize(300+(m_startElements-i)); + m_resources.insert(name, res); + connect(res, &DummyResource::stateChanged, this, &DummyBackend::updatesCountChanged); + } +} + +void DummyBackend::toggleFetching() +{ + m_fetching = !m_fetching; +// qDebug() << "fetching..." << m_fetching; + emit fetchingChanged(); + if (!m_fetching) + m_reviews->initialize(); +} + +int DummyBackend::updatesCount() const +{ + return m_updater->updatesCount(); +} + +ResultsStream* DummyBackend::search(const AbstractResourcesBackend::Filters& filter) +{ + QVector ret; + if (!filter.resourceUrl.isEmpty()) + return findResourceByPackageName(filter.resourceUrl); + else foreach(AbstractResource* r, m_resources) { + if (r->isTechnical() && filter.state != AbstractResource::Upgradeable) { + continue; + } + + if (r->state() < filter.state) + continue; + + if(r->name().contains(filter.search, Qt::CaseInsensitive) || r->comment().contains(filter.search, Qt::CaseInsensitive)) + ret += r; + } + return new ResultsStream(QStringLiteral("DummyStream"), ret); +} + +ResultsStream * DummyBackend::findResourceByPackageName(const QUrl& search) +{ + auto res = search.scheme() == QLatin1String("dummy") ? m_resources.value(search.host().replace(QLatin1Char('.'), QLatin1Char(' '))) : nullptr; + if (!res) { + return new ResultsStream(QStringLiteral("DummyStream"), {}); + } else + return new ResultsStream(QStringLiteral("DummyStream"), { res }); +} + +AbstractBackendUpdater* DummyBackend::backendUpdater() const +{ + return m_updater; +} + +AbstractReviewsBackend* DummyBackend::reviewsBackend() const +{ + return m_reviews; +} + +Transaction* DummyBackend::installApplication(AbstractResource* app, const AddonList& addons) +{ + return new DummyTransaction(qobject_cast(app), addons, Transaction::InstallRole); +} + +Transaction* DummyBackend::installApplication(AbstractResource* app) +{ + return new DummyTransaction(qobject_cast(app), Transaction::InstallRole); +} + +Transaction* DummyBackend::removeApplication(AbstractResource* app) +{ + return new DummyTransaction(qobject_cast(app), Transaction::RemoveRole); +} + +void DummyBackend::checkForUpdates() +{ + if(m_fetching) + return; + toggleFetching(); + populate(QStringLiteral("Moar")); + QTimer::singleShot(500, this, &DummyBackend::toggleFetching); + qDebug() << "DummyBackend::checkForUpdates"; +} + +AbstractResource * DummyBackend::resourceForFile(const QUrl& path) +{ + DummyResource* res = new DummyResource(path.fileName(), true, this); + res->setSize(666); + res->setState(AbstractResource::None); + m_resources.insert(res->packageName(), res); + connect(res, &DummyResource::stateChanged, this, &DummyBackend::updatesCountChanged); + return res; +} + +QString DummyBackend::displayName() const +{ + return QStringLiteral("Dummy"); +} + +bool DummyBackend::hasApplications() const +{ + return true; +} + +#include "DummyBackend.moc" diff --git a/libdiscover/backends/DummyBackend/DummyBackend.h b/libdiscover/backends/DummyBackend/DummyBackend.h new file mode 100644 index 0000000..b3a3315 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyBackend.h @@ -0,0 +1,68 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYBACKEND_H +#define DUMMYBACKEND_H + +#include +#include + +class QAction; +class DummyReviewsBackend; +class StandardBackendUpdater; +class DummyResource; +class DummyBackend : public AbstractResourcesBackend +{ +Q_OBJECT +Q_PROPERTY(int startElements MEMBER m_startElements) +public: + explicit DummyBackend(QObject* parent = nullptr); + + int updatesCount() const override; + AbstractBackendUpdater* backendUpdater() const override; + AbstractReviewsBackend* reviewsBackend() const override; + ResultsStream* search(const AbstractResourcesBackend::Filters & search) override; + ResultsStream * findResourceByPackageName(const QUrl& search); + QHash resources() const { return m_resources; } + bool isValid() const override { return true; } // No external file dependencies that could cause runtime errors + + Transaction* installApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app, const AddonList& addons) override; + Transaction* removeApplication(AbstractResource* app) override; + bool isFetching() const override { return m_fetching; } + AbstractResource * resourceForFile(const QUrl & ) override; + void checkForUpdates() override; + QString displayName() const override; + bool hasApplications() const override; + +public Q_SLOTS: + void toggleFetching(); + +private: + void populate(const QString& name); + + QHash m_resources; + StandardBackendUpdater* m_updater; + DummyReviewsBackend* m_reviews; + bool m_fetching; + int m_startElements; +}; + +#endif // DUMMYBACKEND_H diff --git a/libdiscover/backends/DummyBackend/DummyNotifier.cpp b/libdiscover/backends/DummyBackend/DummyNotifier.cpp new file mode 100644 index 0000000..6a0b22d --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyNotifier.cpp @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#include "DummyNotifier.h" + +#include + +DummyNotifier::DummyNotifier(QObject* parent) + : BackendNotifierModule(parent) +{ +} + +DummyNotifier::~DummyNotifier() +{ +} + +void DummyNotifier::recheckSystemUpdateNeeded() +{ + emit foundUpdates(); +} + +uint DummyNotifier::securityUpdatesCount() +{ + return 0; +} + +uint DummyNotifier::updatesCount() +{ + return 0; +} diff --git a/libdiscover/backends/DummyBackend/DummyNotifier.h b/libdiscover/backends/DummyBackend/DummyNotifier.h new file mode 100644 index 0000000..4e99a56 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyNotifier.h @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#ifndef DUMMYNOTIFIER_H +#define DUMMYNOTIFIER_H + +#include + +class DummyNotifier : public BackendNotifierModule +{ +Q_OBJECT +Q_PLUGIN_METADATA(IID "org.kde.discover.BackendNotifierModule") +Q_INTERFACES(BackendNotifierModule) +public: + explicit DummyNotifier(QObject* parent = nullptr); + ~DummyNotifier() override; + + void recheckSystemUpdateNeeded() override; + uint securityUpdatesCount() override; + uint updatesCount() override; + bool needsReboot() const override { return false; } +}; + +#endif diff --git a/libdiscover/backends/DummyBackend/DummyResource.cpp b/libdiscover/backends/DummyBackend/DummyResource.cpp new file mode 100644 index 0000000..96b5188 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyResource.cpp @@ -0,0 +1,195 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyResource.h" +#include +#include +#include +#include +#include + +Q_GLOBAL_STATIC_WITH_ARGS(QVector, s_icons, ({ QLatin1String("kdevelop"), QLatin1String("kalgebra"), QLatin1String("kmail"), QLatin1String("akregator"), QLatin1String("korganizer") })) + +DummyResource::DummyResource(QString name, bool isTechnical, AbstractResourcesBackend* parent) + : AbstractResource(parent) + , m_name(std::move(name)) + , m_state(State::Broken) + , m_iconName((*s_icons)[KRandom::random() % s_icons->size()]) + , m_addons({ PackageState(QStringLiteral("a"), QStringLiteral("aaaaaa"), false), PackageState(QStringLiteral("b"), QStringLiteral("aaaaaa"), false), PackageState(QStringLiteral("c"), QStringLiteral("aaaaaa"), false)}) + , m_isTechnical(isTechnical) +{ + const int nofScreenshots = KRandom::random() % 5; + m_screenshots = QList{ + QUrl(QStringLiteral("http://screenshots.debian.net/screenshots/000/014/863/large.png")), + QUrl(QStringLiteral("https://c2.staticflickr.com/6/5656/21772158034_dc84382527_o.jpg")), + QUrl(QStringLiteral("https://c1.staticflickr.com/9/8479/8166397343_b78106f353_k.jpg")), + QUrl(QStringLiteral("https://c2.staticflickr.com/4/3685/9954407993_dad10a6943_k.jpg")), + QUrl(QStringLiteral("https://c1.staticflickr.com/1/653/22527103378_8ce572e1de_k.jpg")) + }.mid(nofScreenshots); + m_screenshotThumbnails = m_screenshots; +} + +QList DummyResource::addonsInformation() +{ + return m_addons; +} + +QString DummyResource::availableVersion() const +{ + return QStringLiteral("3.0"); +} + +QStringList DummyResource::categories() +{ + return { QStringLiteral("dummy"), m_name.endsWith(QLatin1Char('3')) ? QStringLiteral("three") : QStringLiteral("notthree") }; +} + +QString DummyResource::comment() +{ + return QStringLiteral("A reasonably short comment ")+name(); +} + +int DummyResource::size() +{ + return m_size; +} + +QUrl DummyResource::homepage() +{ + return QUrl(QStringLiteral("http://kde.org")); +} + +QUrl DummyResource::helpURL() +{ + return QUrl(QStringLiteral("http://very-very-excellent-docs.lol")); +} + +QUrl DummyResource::bugURL() +{ + return QUrl(QStringLiteral("file:///dev/null")); +} + +QUrl DummyResource::donationURL() +{ + return QUrl(QStringLiteral("https://youtu.be/0o8XMlL8rqY")); +} + +QVariant DummyResource::icon() const +{ + return isTechnical() ? QStringLiteral("kalarm") : m_iconName; +} + +QString DummyResource::installedVersion() const +{ + return QStringLiteral("2.3"); +} + +QString DummyResource::license() +{ + return QStringLiteral("GPL"); +} + +QString DummyResource::longDescription() +{ + return QStringLiteral("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ultricies consequat nulla, ut vulputate nulla ultricies ac. Suspendisse lacinia commodo lacus, non tristique mauris dictum vitae. Sed adipiscing augue nec nisi aliquet viverra. Etiam sit amet nulla in tellus consectetur feugiat. Cras in sem tortor. Fusce a nulla at justo accumsan gravida. Maecenas dui felis, lacinia at ornare sed, aliquam et purus. Sed ut sagittis lacus. Etiam dictum pharetra rhoncus. Suspendisse auctor orci ipsum. Pellentesque vitae urna nec felis consequat lobortis dictum in urna. Phasellus a mi ac leo adipiscing varius eget a felis. Cras magna augue, commodo sed placerat vel, tempus vel ligula. In feugiat quam quis est lobortis sed accumsan nunc malesuada. Mauris quis massa sit amet felis tempus suscipit a quis diam.\n\n" + + "Aenean quis nulla erat, vel sagittis sem. Praesent vitae mauris arcu. Cras porttitor, ante at scelerisque sodales, nibh felis consectetur orci, ut hendrerit urna urna non urna. Duis eu magna id mi scelerisque adipiscing. Aliquam sed quam in eros sodales accumsan. Phasellus tempus sagittis suscipit. Aliquam rutrum dictum justo ut viverra. Nulla felis sem, molestie sed scelerisque non, consequat vitae nulla. Aliquam ullamcorper malesuada mi, vel vestibulum magna vulputate eget. In hac habitasse platea dictumst. Cras sed lacus dui, vel semper sem. Aenean sodales porta leo vel fringilla.\n\n" + + "Ut tempus massa et urna porta non mollis metus ultricies. Duis nec nulla ac metus auctor porta id et mi. Mauris aliquam nibh a ligula malesuada sed tincidunt nibh varius. Sed felis metus, porta et adipiscing non, faucibus id leo. Donec ipsum nibh, hendrerit eget aliquam nec, tempor ut mauris. Suspendisse potenti. Vestibulum scelerisque adipiscing libero tristique eleifend. Donec quis tortor eget elit mollis iaculis ac sit amet nisi. Proin non massa sed nunc rutrum pellentesque. Sed dui lectus, laoreet sed condimentum id, commodo sed urna.\n\n" + + "Praesent tincidunt mattis massa mattis porta. Nullam posuere neque at mauris vestibulum vitae elementum leo sodales. Quisque condimentum lectus in libero luctus egestas. Fusce tempor neque ac dui tincidunt eget viverra quam suscipit. In hac habitasse platea dictumst. Etiam metus mi, adipiscing nec suscipit id, aliquet sed sem. Duis urna ligula, ornare sed vestibulum vel, molestie ac nisi. Morbi varius iaculis ligula. Nunc in augue leo, sit amet aliquam elit. Suspendisse rutrum sem diam. Proin eu orci nisl. Praesent porttitor dignissim est, id fermentum arcu venenatis vitae.\n\n" + + "Integer in sapien eget quam vulputate lobortis. Morbi nibh elit, elementum vitae vehicula sed, consequat nec erat. Donec placerat porttitor est ut dapibus. Fusce augue orci, dictum et convallis vel, blandit eu tortor. Phasellus non eros nulla. In iaculis nulla fermentum nulla gravida eu mattis purus consectetur. Integer dui nunc, sollicitudin ac tincidunt nec, hendrerit bibendum nunc. Proin sit amet augue ac velit egestas varius. Sed eu ante quis orci vestibulum sagittis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus vitae urna odio, at molestie leo. In convallis neque vel mi dictum convallis lobortis turpis sagittis.\n\n"); +} + +QString DummyResource::name() const +{ + return m_name; +} + +QString DummyResource::origin() const +{ + return QStringLiteral("DummySource1"); +} + +QString DummyResource::packageName() const +{ + return m_name; +} + +QString DummyResource::section() +{ + return QStringLiteral("dummy"); +} + +AbstractResource::State DummyResource::state() +{ + return m_state; +} + +void DummyResource::fetchChangelog() +{ + QString log = longDescription(); + log.replace(QLatin1Char('\n'), QLatin1String("
")); + + emit changelogFetched(log); +} + +void DummyResource::fetchScreenshots() +{ + Q_EMIT screenshotsFetched(m_screenshotThumbnails, m_screenshots); +} + +void DummyResource::setState(AbstractResource::State state) +{ + m_state = state; + emit stateChanged(); +} + +void DummyResource::setAddons(const AddonList& addons) +{ + Q_FOREACH (const QString& toInstall, addons.addonsToInstall()) { + setAddonInstalled(toInstall, true); + } + Q_FOREACH (const QString& toRemove, addons.addonsToRemove()) { + setAddonInstalled(toRemove, false); + } +} + +void DummyResource::setAddonInstalled(const QString& addon, bool installed) +{ + for(auto & elem : m_addons) { + if(elem.name() == addon) { + elem.setInstalled(installed); + } + } +} + + +void DummyResource::invokeApplication() const +{ + QDesktopServices d; + d.openUrl(QUrl(QStringLiteral("https://projects.kde.org/projects/extragear/sysadmin/muon"))); +} + +QUrl DummyResource::url() const +{ + return QUrl(QLatin1String("dummy://") + packageName().replace(QLatin1Char(' '), QLatin1Char('.'))); +} diff --git a/libdiscover/backends/DummyBackend/DummyResource.h b/libdiscover/backends/DummyBackend/DummyResource.h new file mode 100644 index 0000000..cee6bfe --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyResource.h @@ -0,0 +1,76 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYRESOURCE_H +#define DUMMYRESOURCE_H + +#include + +class AddonList; +class DummyResource : public AbstractResource +{ +Q_OBJECT +public: + explicit DummyResource(QString name, bool isTechnical, AbstractResourcesBackend* parent); + + QList addonsInformation() override; + QString section() override; + QString origin() const override; + QString longDescription() override; + QString availableVersion() const override; + QString installedVersion() const override; + QString license() override; + int size() override; + QUrl homepage() override; + QUrl helpURL() override; + QUrl bugURL() override; + QUrl donationURL() override; + QStringList categories() override; + AbstractResource::State state() override; + QVariant icon() const override; + QString comment() override; + QString name() const override; + QString packageName() const override; + bool isTechnical() const override { return m_isTechnical; } + bool canExecute() const override { return true; } + void invokeApplication() const override; + void fetchChangelog() override; + void fetchScreenshots() override; + QUrl url() const override; + void setState(State state); + void setSize(int size) { m_size = size; } + void setAddons(const AddonList& addons); + + void setAddonInstalled(const QString& addon, bool installed); + QString sourceIcon() const override { return QStringLiteral("player-time"); } + QDate releaseDate() const override { return {}; } + +public: + QString m_name; + AbstractResource::State m_state; + QList m_screenshots; + QList m_screenshotThumbnails; + QString m_iconName; + QList m_addons; + bool m_isTechnical; + int m_size; +}; + +#endif // DUMMYRESOURCE_H diff --git a/libdiscover/backends/DummyBackend/DummyReviewsBackend.cpp b/libdiscover/backends/DummyBackend/DummyReviewsBackend.cpp new file mode 100644 index 0000000..b638cf7 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyReviewsBackend.cpp @@ -0,0 +1,82 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyReviewsBackend.h" +#include "DummyBackend.h" +#include "DummyResource.h" +#include +#include +#include +#include +#include + +DummyReviewsBackend::DummyReviewsBackend(DummyBackend* parent) + : AbstractReviewsBackend(parent) +{} + +void DummyReviewsBackend::fetchReviews(AbstractResource* app, int page) +{ + if (page>=5) + return; + + QVector review; + for(int i=0; i<33; i++) { + review += ReviewPtr(new Review(app->name(), app->packageName(), QStringLiteral("en_US"), QStringLiteral("good morning"), QStringLiteral("the morning is very good"), QStringLiteral("dummy"), + QDateTime(), true, page+i, i%5, 1, 1, app->packageName())); + } + emit reviewsReady(app, review, false); +} + +Rating* DummyReviewsBackend::ratingForApplication(AbstractResource* app) const +{ + return m_ratings[app]; +} + +void DummyReviewsBackend::initialize() +{ + int i = 11; + DummyBackend* b = qobject_cast(parent()); + foreach(DummyResource* app, b->resources()) { + if (m_ratings.contains(app)) + continue; + auto randomRating = qrand()%10; + Rating* rating = new Rating(app->packageName(), ++i, {{QStringLiteral("star5"), randomRating}}); + rating->setParent(this); + m_ratings.insert(app, rating); + Q_EMIT app->ratingFetched(); + } + emit ratingsReady(); +} + +void DummyReviewsBackend::submitUsefulness(Review* r, bool useful) +{ + qDebug() << "usefulness..." << r->applicationName() << r->reviewer() << useful; + r->setUsefulChoice(useful ? ReviewsModel::Yes : ReviewsModel::No); +} + +void DummyReviewsBackend::submitReview(AbstractResource* res, const QString& a, const QString& b, const QString& c) +{ + qDebug() << "dummy submit review" << res->name() << a << b << c; +} + +bool DummyReviewsBackend::isResourceSupported(AbstractResource* /*res*/) const +{ + return true; +} diff --git a/libdiscover/backends/DummyBackend/DummyReviewsBackend.h b/libdiscover/backends/DummyBackend/DummyReviewsBackend.h new file mode 100644 index 0000000..ca5d09a --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyReviewsBackend.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYREVIEWSBACKEND_H +#define DUMMYREVIEWSBACKEND_H + +#include +#include +#include + +class DummyBackend; +class DummyReviewsBackend : public AbstractReviewsBackend +{ +Q_OBJECT +public: + explicit DummyReviewsBackend(DummyBackend* parent = nullptr); + + QString userName() const override { return QStringLiteral("dummy"); } + void login() override {} + void logout() override {} + void registerAndLogin() override {} + + Rating* ratingForApplication(AbstractResource* app) const override; + bool hasCredentials() const override { return false; } + void deleteReview(Review*) override {} + void fetchReviews(AbstractResource* app, int page = 1) override; + bool isFetching() const override { return false; } + void submitReview(AbstractResource*, const QString&, const QString&, const QString&) override; + void flagReview(Review*, const QString&, const QString&) override {} + void submitUsefulness(Review*, bool) override; + + void initialize(); + bool isResourceSupported(AbstractResource * res) const override; + +Q_SIGNALS: + void ratingsReady(); + +private: + QHash m_ratings; +}; + +#endif // DUMMYREVIEWSBACKEND_H diff --git a/libdiscover/backends/DummyBackend/DummySourcesBackend.cpp b/libdiscover/backends/DummyBackend/DummySourcesBackend.cpp new file mode 100644 index 0000000..b5571ab --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummySourcesBackend.cpp @@ -0,0 +1,94 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummySourcesBackend.h" +#include +#include + +DummySourcesBackend::DummySourcesBackend(AbstractResourcesBackend * parent) + : AbstractSourcesBackend(parent) + , m_sources(new QStandardItemModel(this)) + , m_testAction(new QAction(QIcon::fromTheme(QStringLiteral("kalgebra")), QStringLiteral("DummyAction"), this)) +{ + for (int i = 0; i<10; ++i) + addSource(QStringLiteral("DummySource%1").arg(i)); + + connect(m_testAction, &QAction::triggered, [](){ qDebug() << "action triggered!"; }); + connect(m_sources, &QStandardItemModel::itemChanged, this, [](QStandardItem* item) { qDebug() << "DummySource changed" << item << item->checkState(); }); +} + +QAbstractItemModel* DummySourcesBackend::sources() +{ + return m_sources; +} + +bool DummySourcesBackend::addSource(const QString& id) +{ + if (id.isEmpty()) + return false; + + QStandardItem* it = new QStandardItem(id); + it->setData(id, AbstractSourcesBackend::IdRole); + it->setData(QVariant(id + QLatin1Char(' ') + id), Qt::ToolTipRole); + it->setCheckable(true); + it->setCheckState(Qt::Checked); + m_sources->appendRow(it); + return true; +} + +QStandardItem * DummySourcesBackend::sourceForId(const QString& id) const +{ + for (int i=0, c=m_sources->rowCount(); iitem(i, 0); + if (it->text() == id) + return it; + } + return nullptr; +} + +bool DummySourcesBackend::removeSource(const QString& id) +{ + const auto it = sourceForId(id); + if (!it) { + qWarning() << "couldn't find " << id; + return false; + } + return m_sources->removeRow(it->row()); +} + +QList DummySourcesBackend::actions() const +{ + return QList() << m_testAction; +} + +bool DummySourcesBackend::moveSource(const QString& sourceId, int delta) +{ + int row = sourceForId(sourceId)->row(); + auto prevRow = m_sources->takeRow(row); + Q_ASSERT(!prevRow.isEmpty()); + + const auto destRow = row + delta; + m_sources->insertRow(destRow, prevRow); + if (destRow == 0 || row == 0) + Q_EMIT firstSourceIdChanged(); + if (destRow == m_sources->rowCount() - 1 || row == m_sources->rowCount() - 1) + Q_EMIT lastSourceIdChanged(); + return true; +} diff --git a/libdiscover/backends/DummyBackend/DummySourcesBackend.h b/libdiscover/backends/DummyBackend/DummySourcesBackend.h new file mode 100644 index 0000000..f775627 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummySourcesBackend.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYSOURCESBACKEND_H +#define DUMMYSOURCESBACKEND_H + +#include +#include + +class DummySourcesBackend : public AbstractSourcesBackend +{ +public: + explicit DummySourcesBackend(AbstractResourcesBackend * parent); + + QAbstractItemModel* sources() override; + bool addSource(const QString& id) override; + bool removeSource(const QString& id) override; + QString idDescription() override { return QStringLiteral("Random weird text"); } + QList actions() const override; + bool supportsAdding() const override { return true; } + + bool canMoveSources() const override { return true; } + bool moveSource(const QString & sourceId, int delta) override; + +private: + QStandardItem* sourceForId(const QString& id) const; + + QStandardItemModel* m_sources; + QAction* m_testAction; +}; + +#endif // DUMMYSOURCESBACKEND_H diff --git a/libdiscover/backends/DummyBackend/DummyTransaction.cpp b/libdiscover/backends/DummyBackend/DummyTransaction.cpp new file mode 100644 index 0000000..cf73909 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyTransaction.cpp @@ -0,0 +1,88 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyTransaction.h" +#include "DummyBackend.h" +#include "DummyResource.h" +#include +#include +#include + +// #define TEST_PROCEED + +DummyTransaction::DummyTransaction(DummyResource* app, Role role) + : DummyTransaction(app, {}, role) +{ +} + +DummyTransaction::DummyTransaction(DummyResource* app, const AddonList& addons, Transaction::Role role) + : Transaction(app->backend(), app, role, addons) + , m_app(app) +{ + setCancellable(true); + iterateTransaction(); +} + +void DummyTransaction::iterateTransaction() +{ + if (!m_iterate) + return; + + setStatus(CommittingStatus); + if(progress()<100) { + setProgress(qBound(0, progress()+(KRandom::random()%30), 100)); + QTimer::singleShot(/*KRandom::random()%*/100, this, &DummyTransaction::iterateTransaction); + } else +#ifdef TEST_PROCEED + Q_EMIT proceedRequest(QStringLiteral("yadda yadda"), QStringLiteral("Biii BOooo
  • A
  • A
  • A
  • A
")); +#else + finishTransaction(); +#endif +} + +void DummyTransaction::proceed() +{ + finishTransaction(); +} + +void DummyTransaction::cancel() +{ + m_iterate = false; + + setStatus(CancelledStatus); +} + +void DummyTransaction::finishTransaction() +{ + AbstractResource::State newState; + switch(role()) { + case InstallRole: + case ChangeAddonsRole: + newState = AbstractResource::Installed; + break; + case RemoveRole: + newState = AbstractResource::None; + break; + } + m_app->setAddons(addons()); + m_app->setState(newState); + setStatus(DoneStatus); + deleteLater(); +} diff --git a/libdiscover/backends/DummyBackend/DummyTransaction.h b/libdiscover/backends/DummyBackend/DummyTransaction.h new file mode 100644 index 0000000..a938642 --- /dev/null +++ b/libdiscover/backends/DummyBackend/DummyTransaction.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYTRANSACTION_H +#define DUMMYTRANSACTION_H + +#include + +class DummyResource; +class DummyTransaction : public Transaction +{ + Q_OBJECT + public: + DummyTransaction(DummyResource* app, Role role); + DummyTransaction(DummyResource* app, const AddonList& list, Role role); + + void cancel() override; + void proceed() override; + + private Q_SLOTS: + void iterateTransaction(); + void finishTransaction(); + + private: + bool m_iterate = true; + DummyResource* m_app; +}; + +#endif // DUMMYTRANSACTION_H diff --git a/libdiscover/backends/DummyBackend/dummy-backend-categories.xml b/libdiscover/backends/DummyBackend/dummy-backend-categories.xml new file mode 100644 index 0000000..8132af7 --- /dev/null +++ b/libdiscover/backends/DummyBackend/dummy-backend-categories.xml @@ -0,0 +1,86 @@ + + + + Dummy Category + applications + https://c1.staticflickr.com/1/44/155013466_a8596ed65a_o.jpg + + + + dummy + kalarm + https://c2.staticflickr.com/6/5308/5876407905_6f31082232_o.jpg + + dummy1 + + + + dummy addons + plasma + https://c2.staticflickr.com/4/3221/2897450915_a1fcde62b7_o.jpg + + + dummy2 + + + + dummy 1 + kontact + https://c2.staticflickr.com/2/1347/955467402_be4f5970b2_o.jpg + + dummy3 + + + + dummy with stuff + kmail + + dummy + + + + dummy 2.1 + kalgebra + + dummy + + + + + dummy with quite some stuff + kmail + + dummy2 + + + + dummy 2.1 + kalgebra + + dummy + + + + + + dummy 3 + kig + + dummy + + three + + + + + dummy 4 + kdeconnect + + dummy + + notthree + + + + + diff --git a/libdiscover/backends/DummyBackend/tests/CMakeLists.txt b/libdiscover/backends/DummyBackend/tests/CMakeLists.txt new file mode 100644 index 0000000..04d7f6a --- /dev/null +++ b/libdiscover/backends/DummyBackend/tests/CMakeLists.txt @@ -0,0 +1,4 @@ +add_unit_test(dummytest DummyTest.cpp) +add_unit_test(updatedummytest UpdateDummyTest.cpp) + +target_link_libraries(updatedummytest KF5::CoreAddons) diff --git a/libdiscover/backends/DummyBackend/tests/DummyTest.cpp b/libdiscover/backends/DummyBackend/tests/DummyTest.cpp new file mode 100644 index 0000000..d068f87 --- /dev/null +++ b/libdiscover/backends/DummyBackend/tests/DummyTest.cpp @@ -0,0 +1,298 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyTest.h" +#include "DiscoverBackendsFactory.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +QTEST_MAIN(DummyTest) + +AbstractResourcesBackend* backendByName(ResourcesModel* m, const QString& name) +{ + QVector backends = m->backends(); + foreach(AbstractResourcesBackend* backend, backends) { + if(QString::fromLatin1(backend->metaObject()->className()) == name) { + return backend; + } + } + return nullptr; +} + +DummyTest::DummyTest(QObject* parent): QObject(parent) +{ + DiscoverBackendsFactory::setRequestedBackends({ QStringLiteral("dummy-backend") }); + + m_model = new ResourcesModel(QStringLiteral("dummy-backend"), this); + m_appBackend = backendByName(m_model, QStringLiteral("DummyBackend")); + + CategoryModel::global()->populateCategories(); +} + +void DummyTest::initTestCase() +{ + QVERIFY(m_appBackend); + while(m_appBackend->isFetching()) { + QSignalSpy spy(m_appBackend, &AbstractResourcesBackend::fetchingChanged); + QVERIFY(spy.wait()); + } +} + +QVector fetchResources(ResultsStream* stream) +{ + QVector ret; + QObject::connect(stream, &ResultsStream::resourcesFound, stream, [&ret](const QVector& res) { ret += res; }); + QSignalSpy spy(stream, &ResultsStream::destroyed); + Q_ASSERT(spy.wait()); + return ret; +} + +void DummyTest::testReadData() +{ + const auto resources = fetchResources(m_appBackend->search({})); + + QCOMPARE(m_appBackend->property("startElements").toInt(), resources.size()); + QBENCHMARK { + for(AbstractResource* res: resources) { + QVERIFY(!res->name().isEmpty()); + } + } +} + +void DummyTest::testProxy() +{ + ResourcesProxyModel pm; + QSignalSpy spy(&pm, &ResourcesProxyModel::busyChanged); +// QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + + pm.setFiltersFromCategory(CategoryModel::global()->rootCategories().first()); + pm.componentComplete(); + QVERIFY(pm.isBusy()); + QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + + QCOMPARE(m_appBackend->property("startElements").toInt(), pm.rowCount()); + pm.setSearch(QStringLiteral("techie")); + QVERIFY(pm.isBusy()); + QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + QCOMPARE(0, pm.rowCount()); + QCOMPARE(pm.subcategories().count(), 7); + pm.setSearch(QString()); + QVERIFY(pm.isBusy()); + QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + QCOMPARE(m_appBackend->property("startElements").toInt(), pm.rowCount()); +} + +void DummyTest::testProxySorting() +{ + ResourcesProxyModel pm; + QSignalSpy spy(&pm, &ResourcesProxyModel::busyChanged); +// QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + + pm.setFiltersFromCategory(CategoryModel::global()->rootCategories().first()); + pm.setSortOrder(Qt::DescendingOrder); + pm.setSortRole(ResourcesProxyModel::RatingCountRole); + pm.componentComplete(); + QVERIFY(pm.isBusy()); + QVERIFY(spy.wait()); + QVERIFY(!pm.isBusy()); + + QCOMPARE(m_appBackend->property("startElements").toInt(), pm.rowCount()); + QVariant lastRatingCount; + for(int i=0, rc=pm.rowCount(); isearch({})); + QCOMPARE(m_appBackend->property("startElements").toInt(), resources.count()); + + //fetches updates, adds new things + m_appBackend->checkForUpdates(); + QSignalSpy spy(m_model, SIGNAL(allInitialized())); + QVERIFY(spy.wait(80000)); + auto resources2 = fetchResources(m_appBackend->search({})); + QCOMPARE(m_appBackend->property("startElements").toInt()*2, resources2.count()); +} + +void DummyTest::testSort() +{ + ResourcesProxyModel pm; + + QCollator c; + QBENCHMARK_ONCE { + pm.setSortRole(ResourcesProxyModel::NameRole); + pm.sort(0); + QCOMPARE(pm.sortOrder(), Qt::AscendingOrder); + QString last; + for(int i = 0, count = pm.rowCount(); isearch(filter)); + QCOMPARE(resources.count(), 1); + AbstractResource* res = resources.first(); + QVERIFY(res); + + ApplicationAddonsModel m; + new ModelTest(&m, &m); + m.setApplication(res); + QCOMPARE(m.rowCount(), res->addonsInformation().count()); + QCOMPARE(res->addonsInformation().at(0).isInstalled(), false); + + QString firstAddonName = m.data(m.index(0,0)).toString(); + m.changeState(firstAddonName, true); + QVERIFY(m.hasChanges()); + + m.applyChanges(); + QSignalSpy sR(TransactionModel::global(), &TransactionModel::transactionRemoved); + QVERIFY(sR.wait()); + QVERIFY(!m.hasChanges()); + + QCOMPARE(m.data(m.index(0,0)).toString(), firstAddonName); + QCOMPARE(res->addonsInformation().at(0).name(), firstAddonName); + QCOMPARE(res->addonsInformation().at(0).isInstalled(), true); + + m.changeState(m.data(m.index(1,0)).toString(), true); + QVERIFY(m.hasChanges()); + for(int i=0, c=m.rowCount(); isearch(filter)); + QCOMPARE(resources.count(), 1); + AbstractResource* res = resources.first(); + QVERIFY(res); + + ReviewsModel m; + new ModelTest(&m, &m); + m.setResource(res); + m.fetchMore(); + + QVERIFY(m.rowCount()>0); + + QCOMPARE(ReviewsModel::UserChoice(m.data(m.index(0,0), ReviewsModel::UsefulChoice).toInt()), ReviewsModel::None); + m.markUseful(0, true); + QCOMPARE(ReviewsModel::UserChoice(m.data(m.index(0,0), ReviewsModel::UsefulChoice).toInt()), ReviewsModel::Yes); + m.markUseful(0, false); + QCOMPARE(ReviewsModel::UserChoice(m.data(m.index(0,0), ReviewsModel::UsefulChoice).toInt()), ReviewsModel::No); + + const auto resources2 = fetchResources(m_appBackend->search(filter)); + QCOMPARE(resources2.count(), 1); + res = resources2.first(); + m.setResource(res); + m.fetchMore(); + + QSignalSpy spy(&m, &ReviewsModel::rowsChanged); + QVERIFY(m.rowCount()>0); +} + +void DummyTest::testUpdateModel() +{ + const auto backend = m_model->backends().first(); + + ResourcesUpdatesModel ruModel; + new ModelTest(&ruModel, &ruModel); + UpdateModel model; + new ModelTest(&model, &model); + model.setBackend(&ruModel); + + QCOMPARE(model.rowCount(), 4*backend->property("startElements").toInt()/3); + QCOMPARE(model.hasUpdates(), true); +} + +void DummyTest::testScreenshotsModel() +{ + AbstractResourcesBackend::Filters filter; + filter.resourceUrl = QUrl(QStringLiteral("dummy://Dummy.1")); + + ScreenshotsModel m; + new ModelTest(&m, &m); + + const auto resources = fetchResources(m_appBackend->search(filter)); + QCOMPARE(resources.count(), 1); + AbstractResource* res = resources.first(); + QVERIFY(res); + m.setResource(res); + QCOMPARE(res, m.resource()); + + int c=m.rowCount(); + for(int i=0; i * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef DUMMYTEST_H +#define DUMMYTEST_H + +#include + +class ResourcesModel; +class AbstractResourcesBackend; + +class DummyTest : public QObject +{ + Q_OBJECT +public: + explicit DummyTest(QObject* parent = nullptr); + +private Q_SLOTS: + void initTestCase(); + + void testReadData(); + void testProxy(); + void testProxySorting(); + void testFetch(); + void testSort(); + void testInstallAddons(); + void testReviewsModel(); + void testUpdateModel(); + void testScreenshotsModel(); + +private: + AbstractResourcesBackend* m_appBackend; + ResourcesModel* m_model; +}; + +#endif // DUMMYTEST_H diff --git a/libdiscover/backends/DummyBackend/tests/UpdateDummyTest.cpp b/libdiscover/backends/DummyBackend/tests/UpdateDummyTest.cpp new file mode 100644 index 0000000..56574cb --- /dev/null +++ b/libdiscover/backends/DummyBackend/tests/UpdateDummyTest.cpp @@ -0,0 +1,171 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "DummyTest.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +class UpdateDummyTest + : public QObject +{ + Q_OBJECT +public: + AbstractResourcesBackend* backendByName(ResourcesModel* m, const QString& name) + { + QVector backends = m->backends(); + foreach(AbstractResourcesBackend* backend, backends) { + if(QLatin1String(backend->metaObject()->className()) == name) { + return backend; + } + } + return nullptr; + } + + UpdateDummyTest(QObject* parent = nullptr): QObject(parent) + { + m_model = new ResourcesModel(QStringLiteral("dummy-backend"), this); + m_appBackend = backendByName(m_model, QStringLiteral("DummyBackend")); + } + +private Q_SLOTS: + void init() + { + QVERIFY(m_appBackend); + while(m_appBackend->isFetching()) { + QSignalSpy spy(m_appBackend, &AbstractResourcesBackend::fetchingChanged); + QVERIFY(spy.wait()); + } + } + + void testInformation() + { + ResourcesUpdatesModel* rum = new ResourcesUpdatesModel(this); + new ModelTest(rum, rum); + + UpdateModel* m = new UpdateModel(this); + new ModelTest(m, m); + m->setBackend(rum); + + rum->prepare(); + QSignalSpy spySetup(m_appBackend->backendUpdater(), &AbstractBackendUpdater::progressingChanged); + QVERIFY(!m_appBackend->backendUpdater()->isProgressing() || spySetup.wait()); + QCOMPARE(m_appBackend->updatesCount(), m_appBackend->property("startElements").toInt()*2/3); + QCOMPARE(m->hasUpdates(), true); + + QCOMPARE(m->index(0,0).data(UpdateModel::ChangelogRole).toString(), {}); + + QSignalSpy spy(m, &QAbstractItemModel::dataChanged); + m->fetchUpdateDetails(0); + QVERIFY(spy.count() || spy.wait()); + QCOMPARE(spy.count(), 1); + delete m; + } + + void testUpdate() + { + ResourcesUpdatesModel* rum = new ResourcesUpdatesModel(this); + new ModelTest(rum, rum); + + UpdateModel* m = new UpdateModel(this); + new ModelTest(m, m); + m->setBackend(rum); + + rum->prepare(); + QSignalSpy spySetup(m_appBackend->backendUpdater(), &AbstractBackendUpdater::progressingChanged); + QVERIFY(!m_appBackend->backendUpdater()->isProgressing() || spySetup.wait()); + QCOMPARE(m_appBackend->updatesCount(), m_appBackend->property("startElements").toInt()*2/3); + QCOMPARE(m->hasUpdates(), true); + + for(int i=0, c=m->rowCount(); iindex(i,0); + QVERIFY(resourceIdx.isValid()); + + AbstractResource* res = qobject_cast(resourceIdx.data(UpdateModel::ResourceRole).value()); + QVERIFY(res); + + QCOMPARE(Qt::CheckState(resourceIdx.data(Qt::CheckStateRole).toInt()), Qt::Checked); + QVERIFY(m->setData(resourceIdx, int(Qt::Unchecked), Qt::CheckStateRole)); + QCOMPARE(Qt::CheckState(resourceIdx.data(Qt::CheckStateRole).toInt()), Qt::Unchecked); + QCOMPARE(resourceIdx.data(Qt::DisplayRole).toString(), res->name()); + + if (i!=0) { + QVERIFY(m->setData(resourceIdx, int(Qt::Checked), Qt::CheckStateRole)); + } + } + + QSignalSpy spy(rum, &ResourcesUpdatesModel::progressingChanged); + QVERIFY(!rum->isProgressing() || spy.wait()); + QCOMPARE(rum->isProgressing(), false); + + QCOMPARE(m_appBackend->updatesCount(), m->rowCount()); + QCOMPARE(m->hasUpdates(), true); + + rum->prepare(); + + spy.clear(); + QCOMPARE(rum->isProgressing(), false); + rum->updateAll(); + QVERIFY(spy.count() || spy.wait()); + QCOMPARE(rum->isProgressing(), true); + + QCOMPARE(TransactionModel::global()->rowCount(), 1); + connect(TransactionModel::global(), &TransactionModel::progressChanged, this, []() { + const int progress = TransactionModel::global()->progress(); + static int lastProgress = -1; + Q_ASSERT(progress >= lastProgress || (TransactionModel::global()->rowCount() == 0 && progress == 0)); + lastProgress = progress; + }); + + QTest::qWait(20); + QScopedPointer rum2(new ResourcesUpdatesModel(this)); + new ModelTest(rum2.data(), rum2.data()); + + QScopedPointer m2(new UpdateModel(this)); + new ModelTest(m2.data(), m2.data()); + m->setBackend(rum2.data()); + + QCOMPARE(rum->isProgressing(), true); + QVERIFY(spy.wait()); + QCOMPARE(rum->isProgressing(), false); + + QCOMPARE(m_appBackend->updatesCount(), 0); + QCOMPARE(m->hasUpdates(), false); + } + +private: + ResourcesModel* m_model; + AbstractResourcesBackend* m_appBackend; +}; + +QTEST_MAIN(UpdateDummyTest) + +#include "UpdateDummyTest.moc" diff --git a/libdiscover/backends/FlatpakBackend/CMakeLists.txt b/libdiscover/backends/FlatpakBackend/CMakeLists.txt new file mode 100644 index 0000000..b87c52d --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/CMakeLists.txt @@ -0,0 +1,31 @@ +add_subdirectory(tests) + +set(flatpak-backend_SRCS + FlatpakResource.cpp + FlatpakBackend.cpp + FlatpakFetchDataJob.cpp + FlatpakSourcesBackend.cpp + FlatpakJobTransaction.cpp + FlatpakTransactionThread.cpp +) + +add_library(flatpak-backend MODULE ${flatpak-backend_SRCS}) +target_link_libraries(flatpak-backend Qt5::Core Qt5::Widgets Qt5::Concurrent KF5::CoreAddons KF5::ConfigCore Discover::Common AppStreamQt PkgConfig::Flatpak) + +install(TARGETS flatpak-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) +install(FILES flatpak-backend-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libdiscover/categories) + +add_library(FlatpakNotifier MODULE FlatpakNotifier.cpp) +target_link_libraries(FlatpakNotifier Discover::Notifiers Qt5::Concurrent PkgConfig::Flatpak) +set_target_properties(FlatpakNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover) + +install(TARGETS FlatpakNotifier DESTINATION ${PLUGIN_INSTALL_DIR}/discover-notifier) +install(PROGRAMS org.kde.discover-flatpak.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) +install(FILES org.kde.discover.flatpak.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} ) + +ecm_install_icons( + ICONS + sc-apps-flatpak-discover.svg + DESTINATION ${ICON_INSTALL_DIR} + THEME hicolor +) diff --git a/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp b/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp new file mode 100644 index 0000000..d81e549 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp @@ -0,0 +1,1298 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakBackend.h" +#include "FlatpakFetchDataJob.h" +#include "FlatpakResource.h" +#include "FlatpakSourcesBackend.h" +#include "FlatpakJobTransaction.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "FlatpakSourcesBackend.h" + +DISCOVER_BACKEND_PLUGIN(FlatpakBackend) + +static FlatpakResource::Id idForInstalledRef(FlatpakInstallation *installation, FlatpakInstalledRef *ref) +{ + const FlatpakResource::ResourceType appType = flatpak_ref_get_kind(FLATPAK_REF(ref)) == FLATPAK_REF_KIND_APP ? FlatpakResource::DesktopApp : FlatpakResource::Runtime; + const QString name = QLatin1String(flatpak_ref_get_name(FLATPAK_REF(ref))); + const QString appId = appType == FlatpakResource::DesktopApp ? QLatin1String(flatpak_ref_get_name(FLATPAK_REF(ref))) + QStringLiteral(".desktop") : name; + + const QString arch = QString::fromUtf8(flatpak_ref_get_arch(FLATPAK_REF(ref))); + const QString branch = QString::fromUtf8(flatpak_ref_get_branch(FLATPAK_REF(ref))); + + return { installation, QString::fromUtf8(flatpak_installed_ref_get_origin(ref)), appType, appId, branch, arch }; +} + +FlatpakBackend::FlatpakBackend(QObject* parent) + : AbstractResourcesBackend(parent) + , m_updater(new StandardBackendUpdater(this)) + , m_reviews(AppStreamIntegration::global()->reviews()) + , m_refreshAppstreamMetadataJobs(0) + , m_cancellable(g_cancellable_new()) + , m_threadPool(new QThreadPool(this)) +{ + g_autoptr(GError) error = nullptr; + + connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &FlatpakBackend::updatesCountChanged); + + // Load flatpak installation + if (!setupFlatpakInstallations(&error)) { + qWarning() << "Failed to setup flatpak installations:" << error->message; + } else { + loadAppsFromAppstreamData(); + + m_sources = new FlatpakSourcesBackend(m_installations, this); + SourcesModel::global()->addSourcesBackend(m_sources); + } + + connect(m_reviews.data(), &OdrsReviewsBackend::ratingsReady, this, &FlatpakBackend::announceRatingsReady); +} + +FlatpakBackend::~FlatpakBackend() +{ + g_cancellable_cancel(m_cancellable); + m_threadPool.waitForDone(200); + m_threadPool.clear(); + for(auto inst : m_installations) + g_object_unref(inst); + + g_object_unref(m_cancellable); +} + +bool FlatpakBackend::isValid() const +{ + return m_sources && !m_installations.isEmpty(); +} + +void FlatpakBackend::announceRatingsReady() +{ + emitRatingsReady(); + + const auto ids = m_reviews->appstreamIds().toSet(); + foreach(AbstractResource* res, m_resources) { + if (ids.contains(res->appstreamId())) { + res->ratingFetched(); + } + } +} + +class FlatpakFetchRemoteResourceJob : public QNetworkAccessManager +{ +Q_OBJECT +public: + FlatpakFetchRemoteResourceJob(const QUrl &url, FlatpakBackend *backend) + : QNetworkAccessManager(backend) + , m_backend(backend) + , m_url(url) + { + } + + void start() + { + auto replyGet = get(QNetworkRequest(m_url)); + + connect(replyGet, &QNetworkReply::finished, this, [this, replyGet] { + const QUrl originalUrl = replyGet->request().url(); + if (replyGet->error() != QNetworkReply::NoError) { + qWarning() << "couldn't download" << originalUrl << replyGet->errorString(); + Q_EMIT jobFinished(false, nullptr); + return; + } + + const QUrl fileUrl = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::TempLocation) + QLatin1Char('/') + originalUrl.fileName()); + auto replyPut = put(QNetworkRequest(fileUrl), replyGet->readAll()); + connect(replyPut, &QNetworkReply::finished, this, [this, originalUrl, fileUrl, replyPut]() { + if (replyPut->error() == QNetworkReply::NoError) { + auto res = m_backend->resourceForFile(fileUrl); + if (res) { + FlatpakResource *resource = qobject_cast(res); + resource->setResourceFile(originalUrl); + Q_EMIT jobFinished(true, resource); + } else { + qWarning() << "couldn't create resource from" << fileUrl.toLocalFile(); + Q_EMIT jobFinished(false, nullptr); + } + } else { + qWarning() << "couldn't save" << originalUrl << replyPut->errorString(); + Q_EMIT jobFinished(false, nullptr); + } + }); + }); + } + +Q_SIGNALS: + void jobFinished(bool success, FlatpakResource *resource); + +private: + FlatpakBackend *m_backend; + QUrl m_url; +}; + +FlatpakRemote * FlatpakBackend::getFlatpakRemoteByUrl(const QString &url, FlatpakInstallation *installation) const +{ + auto remotes = flatpak_installation_list_remotes(installation, m_cancellable, nullptr); + if (!remotes) { + return nullptr; + } + + const QByteArray comparableUrl = url.toUtf8(); + for (uint i = 0; i < remotes->len; i++) { + FlatpakRemote *remote = FLATPAK_REMOTE(g_ptr_array_index(remotes, i)); + + if (comparableUrl == flatpak_remote_get_url(remote)) { + return remote; + } + } + return nullptr; +} + +FlatpakInstalledRef * FlatpakBackend::getInstalledRefForApp(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) const +{ + FlatpakInstalledRef *ref = nullptr; + g_autoptr(GError) localError = nullptr; + + if (!flatpakInstallation) { + return ref; + } + + const auto type = resource->type() == FlatpakResource::DesktopApp ? FLATPAK_REF_KIND_APP : FLATPAK_REF_KIND_RUNTIME; + + return flatpak_installation_get_installed_ref(flatpakInstallation, + type, + resource->flatpakName().toUtf8().constData(), + resource->arch().toUtf8().constData(), + resource->branch().toUtf8().constData(), + m_cancellable, &localError); +} + +FlatpakResource * FlatpakBackend::getAppForInstalledRef(FlatpakInstallation *flatpakInstallation, FlatpakInstalledRef *ref) const +{ + return m_resources.value(idForInstalledRef(flatpakInstallation, ref)); +} + +FlatpakResource * FlatpakBackend::getRuntimeForApp(FlatpakResource *resource) const +{ + FlatpakResource *runtime = nullptr; + const auto runtimeInfo = resource->runtime().split(QLatin1Char('/')); + + if (runtimeInfo.count() != 3) { + return runtime; + } + + for(auto it = m_resources.constBegin(), itEnd = m_resources.constEnd(); it!=itEnd; ++it) { + const auto id = it.key(); + if (id.type == FlatpakResource::Runtime && id.id == runtimeInfo.at(0) && id.branch == runtimeInfo.at(2)) { + runtime = *it; + break; + } + } + + // TODO if runtime wasn't found, create a new one from available info + if (!runtime) { + qWarning() << "could not find runtime" << runtimeInfo << resource; + } + + return runtime; +} + +FlatpakResource * FlatpakBackend::addAppFromFlatpakBundle(const QUrl &url) +{ + g_autoptr(GBytes) appstreamGz = nullptr; + g_autoptr(GError) localError = nullptr; + g_autoptr(GFile) file = nullptr; + g_autoptr(FlatpakBundleRef) bundleRef = nullptr; + AppStream::Component asComponent; + + file = g_file_new_for_path(url.toLocalFile().toUtf8().constData()); + bundleRef = flatpak_bundle_ref_new(file, &localError); + + if (!bundleRef) { + qWarning() << "Failed to load bundle:" << localError->message; + return nullptr; + } + + g_autoptr(GBytes) metadata = flatpak_bundle_ref_get_metadata(bundleRef); + appstreamGz = flatpak_bundle_ref_get_appstream(bundleRef); + if (appstreamGz) { + g_autoptr(GZlibDecompressor) decompressor = nullptr; + g_autoptr(GInputStream) streamGz = nullptr; + g_autoptr(GInputStream) streamData = nullptr; + g_autoptr(GBytes) appstream = nullptr; + + /* decompress data */ + decompressor = g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_GZIP); + streamGz = g_memory_input_stream_new_from_bytes (appstreamGz); + if (!streamGz) { + return nullptr; + } + + streamData = g_converter_input_stream_new (streamGz, G_CONVERTER (decompressor)); + + appstream = g_input_stream_read_bytes (streamData, 0x100000, m_cancellable, &localError); + if (!appstream) { + qWarning() << "Failed to extract appstream metadata from bundle:" << localError->message; + return nullptr; + } + + gsize len = 0; + gconstpointer data = g_bytes_get_data(appstream, &len); + + AppStream::Metadata metadata; + metadata.setFormatStyle(AppStream::Metadata::FormatStyleCollection); + AppStream::Metadata::MetadataError error = metadata.parse(QString::fromUtf8((char*)data, len), AppStream::Metadata::FormatKindXml); + if (error != AppStream::Metadata::MetadataErrorNoError) { + qWarning() << "Failed to parse appstream metadata: " << error; + return nullptr; + } + + const QList components = metadata.components(); + if (components.size()) { + asComponent = AppStream::Component(components.first()); + } else { + qWarning() << "Failed to parse appstream metadata"; + return nullptr; + } + } else { + qWarning() << "No appstream metadata in bundle"; + + QTemporaryFile tempFile; + tempFile.setAutoRemove(false); + if (!tempFile.open()) { + qWarning() << "Failed to get metadata file"; + return nullptr; + } + + gsize len = 0; + QByteArray metadataContent = QByteArray((char *)g_bytes_get_data(metadata, &len)); + tempFile.write(metadataContent); + tempFile.close(); + + // Parse the temporary file + QSettings setting(tempFile.fileName(), QSettings::NativeFormat); + setting.beginGroup(QLatin1String("Application")); + + asComponent.setName(setting.value(QLatin1String("name")).toString()); + + tempFile.remove(); + } + + FlatpakResource *resource = new FlatpakResource(asComponent, preferredInstallation(), this); + + gsize len = 0; + QByteArray metadataContent = QByteArray((char *)g_bytes_get_data(metadata, &len)); + if (!updateAppMetadata(resource, metadataContent)) { + delete resource; + qWarning() << "Failed to update metadata from app bundle"; + return nullptr; + } + + g_autoptr(GBytes) iconData = flatpak_bundle_ref_get_icon(bundleRef, 128); + if (!iconData) { + iconData = flatpak_bundle_ref_get_icon(bundleRef, 64); + } + + if (iconData) { + gsize len = 0; + char * data = (char *)g_bytes_get_data(iconData, &len); + + QPixmap pixmap; + pixmap.loadFromData(QByteArray(data, len), "PNG"); + resource->setBundledIcon(pixmap); + } + + const QString origin = QString::fromUtf8(flatpak_bundle_ref_get_origin(bundleRef)); + + resource->setDownloadSize(0); + resource->setInstalledSize(flatpak_bundle_ref_get_installed_size(bundleRef)); + resource->setPropertyState(FlatpakResource::DownloadSize, FlatpakResource::AlreadyKnown); + resource->setPropertyState(FlatpakResource::InstalledSize, FlatpakResource::AlreadyKnown); + resource->setFlatpakFileType(QStringLiteral("flatpak")); + resource->setOrigin(origin.isEmpty() ? i18n("Local bundle") : origin); + resource->setResourceFile(url); + resource->setState(FlatpakResource::None); + resource->setType(FlatpakResource::DesktopApp); + + addResource(resource); + return resource; +} + +FlatpakResource * FlatpakBackend::addAppFromFlatpakRef(const QUrl &url) +{ + QSettings settings(url.toLocalFile(), QSettings::NativeFormat); + const QString refurl = settings.value(QStringLiteral("Flatpak Ref/Url")).toString(); + + g_autoptr(GError) error = nullptr; + g_autoptr(FlatpakRemoteRef) remoteRef = nullptr; + { + QFile f(url.toLocalFile()); + if (!f.open(QFile::ReadOnly | QFile::Text)) { + return nullptr; + } + + QByteArray contents = f.readAll(); + + g_autoptr(GBytes) bytes = g_bytes_new (contents.data(), contents.size()); + + remoteRef = flatpak_installation_install_ref_file (preferredInstallation(), bytes, m_cancellable, &error); + if (!remoteRef) { + qWarning() << "Failed to create install ref file:" << error->message; + const auto resources = resourcesByAppstreamName(settings.value(QStringLiteral("Flatpak Ref/Name")).toString()); + if (!resources.isEmpty()) { + return qobject_cast(resources.constFirst()); + } + return nullptr; + } + } + + const auto remoteName = flatpak_remote_ref_get_remote_name(remoteRef); + + auto ref = FLATPAK_REF(remoteRef); + + AppStream::Component asComponent; + asComponent.addUrl(AppStream::Component::UrlKindHomepage, settings.value(QStringLiteral("Flatpak Ref/Homepage")).toString()); + asComponent.setDescription(settings.value(QStringLiteral("Flatpak Ref/Description")).toString()); + asComponent.setName(settings.value(QStringLiteral("Flatpak Ref/Title")).toString()); + asComponent.setSummary(settings.value(QStringLiteral("Flatpak Ref/Comment")).toString()); + asComponent.setId(settings.value(QStringLiteral("Flatpak Ref/Name")).toString()); + + const QString iconUrl = settings.value(QStringLiteral("Flatpak Ref/Icon")).toString(); + if (!iconUrl.isEmpty()) { + AppStream::Icon icon; + icon.setKind(AppStream::Icon::KindRemote); + icon.setUrl(QUrl(iconUrl)); + asComponent.addIcon(icon); + } + + auto resource = new FlatpakResource(asComponent, preferredInstallation(), this); + resource->setFlatpakFileType(QStringLiteral("flatpakref")); + resource->setOrigin(QString::fromUtf8(remoteName)); + resource->updateFromRef(ref); + + QUrl runtimeUrl = QUrl(settings.value(QStringLiteral("Flatpak Ref/RuntimeRepo")).toString()); + if (!runtimeUrl.isEmpty()) { + auto installation = preferredInstallation(); + // We need to fetch metadata to find information about required runtime + auto fw = new QFutureWatcher(this); + connect(fw, &QFutureWatcher::finished, this, [this, installation, resource, fw, runtimeUrl]() { + const auto metadata = fw->result(); + // Even when we failed to fetch information about runtime we still want to show the application + if (metadata.isEmpty()) { + onFetchMetadataFinished(installation, resource, metadata); + } else { + updateAppMetadata(resource, metadata); + + auto runtime = getRuntimeForApp(resource); + if (!runtime || (runtime && !runtime->isInstalled())) { + FlatpakFetchRemoteResourceJob *fetchRemoteResource = new FlatpakFetchRemoteResourceJob(runtimeUrl, this); + connect(fetchRemoteResource, &FlatpakFetchRemoteResourceJob::jobFinished, this, [this, resource] (bool success, FlatpakResource *repoResource) { + if (success) { + installApplication(repoResource); + } + addResource(resource); + }); + fetchRemoteResource->start(); + return; + } else { + addResource(resource); + } + } + fw->deleteLater(); + }); + fw->setFuture(QtConcurrent::run(&m_threadPool, &FlatpakRunnables::fetchMetadata, installation, resource)); + } else { + addResource(resource); + } + + return resource; +} + +FlatpakResource * FlatpakBackend::addSourceFromFlatpakRepo(const QUrl &url) +{ + Q_ASSERT(url.isLocalFile()); + QSettings settings(url.toLocalFile(), QSettings::NativeFormat); + + const QString gpgKey = settings.value(QStringLiteral("Flatpak Repo/GPGKey")).toString(); + const QString title = settings.value(QStringLiteral("Flatpak Repo/Title")).toString(); + const QString repoUrl = settings.value(QStringLiteral("Flatpak Repo/Url")).toString(); + + if (gpgKey.isEmpty() || title.isEmpty() || repoUrl.isEmpty()) { + return nullptr; + } + + if (gpgKey.startsWith(QStringLiteral("http://")) || gpgKey.startsWith(QStringLiteral("https://"))) { + return nullptr; + } + + AppStream::Component asComponent; + asComponent.addUrl(AppStream::Component::UrlKindHomepage, settings.value(QStringLiteral("Flatpak Repo/Homepage")).toString()); + asComponent.setSummary(settings.value(QStringLiteral("Flatpak Repo/Comment")).toString()); + asComponent.setDescription(settings.value(QStringLiteral("Flatpak Repo/Description")).toString()); + asComponent.setName(title); + asComponent.setId(settings.value(QStringLiteral("Flatpak Ref/Name")).toString()); + + const QString iconUrl = settings.value(QStringLiteral("Flatpak Repo/Icon")).toString(); + if (!iconUrl.isEmpty()) { + AppStream::Icon icon; + icon.setKind(AppStream::Icon::KindRemote); + icon.setUrl(QUrl(iconUrl)); + asComponent.addIcon(icon); + } + + auto resource = new FlatpakResource(asComponent, preferredInstallation(), this); + // Use metadata only for stuff which are not common for all resources + resource->addMetadata(QStringLiteral("gpg-key"), gpgKey); + resource->addMetadata(QStringLiteral("repo-url"), repoUrl); + resource->setBranch(settings.value(QStringLiteral("Flatpak Repo/DefaultBranch")).toString()); + resource->setFlatpakName(url.fileName().remove(QStringLiteral(".flatpakrepo"))); + resource->setType(FlatpakResource::Source); + + auto repo = flatpak_installation_get_remote_by_name(preferredInstallation(), resource->flatpakName().toUtf8().constData(), m_cancellable, nullptr); + if (!repo) { + resource->setState(AbstractResource::State::None); + } else { + resource->setState(AbstractResource::State::Installed); + } + + return resource; +} + +void FlatpakBackend::addResource(FlatpakResource *resource) +{ + // Update app with all possible information we have + if (!parseMetadataFromAppBundle(resource)) { + qWarning() << "Failed to parse metadata from app bundle for" << resource->name(); + } + + auto installation = resource->installation(); + updateAppState(installation, resource); + + // This will update also metadata (required runtime) + updateAppSize(installation, resource); + + m_resources.insert(resource->uniqueId(), resource); +} + +class FlatpakSource +{ +public: + FlatpakSource(FlatpakRemote* remote) : m_remote(remote) {} + + bool isEnabled() const + { + return !flatpak_remote_get_disabled(m_remote); + } + + QString appstreamDir() const + { + g_autoptr(GFile) appstreamDir = flatpak_remote_get_appstream_dir(m_remote, nullptr); + if (!appstreamDir) { + qWarning() << "No appstream dir for" << flatpak_remote_get_name(m_remote); + return {}; + } + return QString::fromUtf8(g_file_get_path(appstreamDir)); + } + + QString name() const + { + return QString::fromUtf8(flatpak_remote_get_name(m_remote)); + } + +private: + FlatpakRemote* m_remote; +}; + +void FlatpakBackend::loadAppsFromAppstreamData() +{ + for (auto installation : qAsConst(m_installations)) { + // Load applications from appstream metadata + if (!loadAppsFromAppstreamData(installation)) { + qWarning() << "Failed to load packages from appstream data from installation" << installation; + } + } +} + +bool FlatpakBackend::loadAppsFromAppstreamData(FlatpakInstallation *flatpakInstallation) +{ + Q_ASSERT(flatpakInstallation); + + GPtrArray *remotes = flatpak_installation_list_remotes(flatpakInstallation, m_cancellable, nullptr); + if (!remotes) { + return false; + } + + m_refreshAppstreamMetadataJobs += remotes->len; + + for (uint i = 0; i < remotes->len; i++) { + FlatpakRemote *remote = FLATPAK_REMOTE(g_ptr_array_index(remotes, i)); + g_autoptr(GFile) fileTimestamp = flatpak_remote_get_appstream_timestamp(remote, nullptr); + + QFileInfo fileInfo = QFileInfo(QString::fromUtf8(g_file_get_path(fileTimestamp))); + // Refresh appstream metadata in case they have never been refreshed or the cache is older than 6 hours + if (!fileInfo.exists() || fileInfo.lastModified().toUTC().secsTo(QDateTime::currentDateTimeUtc()) > 21600) { + refreshAppstreamMetadata(flatpakInstallation, remote); + } else { + integrateRemote(flatpakInstallation, remote); + } + } + + return true; +} + +void FlatpakBackend::integrateRemote(FlatpakInstallation *flatpakInstallation, FlatpakRemote *remote) +{ + Q_ASSERT(m_refreshAppstreamMetadataJobs != 0); + m_refreshAppstreamMetadataJobs--; + + FlatpakSource source(remote); + if (!source.isEnabled() || flatpak_remote_get_noenumerate(remote)) { + return; + } + + const QString appstreamDirPath = source.appstreamDir(); + const QString appstreamIconsPath = source.appstreamDir() + QLatin1String("/icons/"); + const QString appDirFileName = appstreamDirPath + QLatin1String("/appstream.xml.gz"); + if (!QFile::exists(appDirFileName)) { + qWarning() << "No" << appDirFileName << "appstream metadata found for" << source.name(); + return; + } + + auto fw = new QFutureWatcher>(this); + const auto sourceName = source.name(); + connect(fw, &QFutureWatcher>::finished, this, [this, fw, flatpakInstallation, appstreamIconsPath, sourceName]() { + const auto components = fw->result(); + foreach (const AppStream::Component& appstreamComponent, components) { + FlatpakResource *resource = new FlatpakResource(appstreamComponent, flatpakInstallation, this); + resource->setIconPath(appstreamIconsPath); + resource->setOrigin(sourceName); + addResource(resource); + } + if (!m_refreshAppstreamMetadataJobs) { + loadInstalledApps(); + checkForUpdates(); + + } + acquireFetching(false); + fw->deleteLater(); + }); + acquireFetching(true); + fw->setFuture(QtConcurrent::run(&m_threadPool, [appDirFileName]() -> QList { + AppStream::Metadata metadata; + metadata.setFormatStyle(AppStream::Metadata::FormatStyleCollection); + AppStream::Metadata::MetadataError error = metadata.parseFile(appDirFileName, AppStream::Metadata::FormatKindXml); + if (error != AppStream::Metadata::MetadataErrorNoError) { + qWarning() << "Failed to parse appstream metadata: " << error; + return {}; + } + + return metadata.components(); + })); +} + +void FlatpakBackend::loadInstalledApps() +{ + for (auto installation : qAsConst(m_installations)) { + // Load installed applications and update existing resources with info from installed application + if (!loadInstalledApps(installation)) { + qWarning() << "Failed to load installed packages from installation" << installation; + } + } +} + +bool FlatpakBackend::loadInstalledApps(FlatpakInstallation *flatpakInstallation) +{ + Q_ASSERT(flatpakInstallation); + + g_autoptr(GError) localError = nullptr; + g_autoptr(GPtrArray) refs = flatpak_installation_list_installed_refs(flatpakInstallation, m_cancellable, &localError); + if (!refs) { + qWarning() << "Failed to get list of installed refs for listing updates:" << localError->message; + return false; + } + + const QString pathExports = FlatpakResource::installationPath(flatpakInstallation) + QLatin1String("/exports/"); + const QString pathApps = pathExports + QLatin1String("share/applications/"); + + for (uint i = 0; i < refs->len; i++) { + FlatpakInstalledRef *ref = FLATPAK_INSTALLED_REF(g_ptr_array_index(refs, i)); + + if (flatpak_ref_get_kind(FLATPAK_REF(ref)) == FLATPAK_REF_KIND_RUNTIME) { + continue; + } + const auto res = getAppForInstalledRef(flatpakInstallation, ref); + if (res) { + res->setState(AbstractResource::Installed); + continue; + } + + const auto name = QLatin1String(flatpak_ref_get_name(FLATPAK_REF(ref))); + AppStream::Metadata metadata; + const QString fnDesktop = pathApps + name + QLatin1String(".desktop"); + AppStream::Metadata::MetadataError error = metadata.parseFile(fnDesktop, AppStream::Metadata::FormatKindDesktopEntry); + if (error != AppStream::Metadata::MetadataErrorNoError) { + qWarning() << "Failed to parse appstream metadata: " << error << fnDesktop; + continue; + } + + auto component = metadata.component(); + component.setId(name + QLatin1String(".desktop")); + FlatpakResource *resource = new FlatpakResource(component, flatpakInstallation, this); + + resource->setIconPath(pathExports); + resource->setState(AbstractResource::Installed); + resource->setOrigin(QString::fromUtf8(flatpak_installed_ref_get_origin(ref))); + resource->updateFromRef(FLATPAK_REF(ref)); + + addResource(resource); + } + + return true; +} + +void FlatpakBackend::loadLocalUpdates(FlatpakInstallation *flatpakInstallation) +{ + g_autoptr(GError) localError = nullptr; + g_autoptr(GPtrArray) refs = nullptr; + + refs = flatpak_installation_list_installed_refs(flatpakInstallation, m_cancellable, &localError); + if (!refs) { + qWarning() << "Failed to get list of installed refs for listing updates:" << localError->message; + return; + } + + for (uint i = 0; i < refs->len; i++) { + FlatpakInstalledRef *ref = FLATPAK_INSTALLED_REF(g_ptr_array_index(refs, i)); + + const gchar *latestCommit = flatpak_installed_ref_get_latest_commit(ref); + + if (!latestCommit) { + qWarning() << "Couldn't get latest commit for" << flatpak_ref_get_name(FLATPAK_REF(ref)); + continue; + } + + const gchar *commit = flatpak_ref_get_commit(FLATPAK_REF(ref)); + if (g_strcmp0(commit, latestCommit) == 0) { + continue; + } + + FlatpakResource *resource = getAppForInstalledRef(flatpakInstallation, ref); + if (resource) { + resource->setState(AbstractResource::Upgradeable); + updateAppSize(flatpakInstallation, resource); + } + } +} + +void FlatpakBackend::loadRemoteUpdates(FlatpakInstallation* installation) +{ + auto fw = new QFutureWatcher(this); + connect(fw, &QFutureWatcher::finished, this, [this, installation, fw](){ + auto refs = fw->result(); + onFetchUpdatesFinished(installation, refs); + fw->deleteLater(); + }); + fw->setFuture(QtConcurrent::run(&m_threadPool, [installation, this]() -> GPtrArray * { + g_autoptr(GError) localError = nullptr; + GPtrArray *refs = flatpak_installation_list_installed_refs_for_update(installation, m_cancellable, &localError); + if (!refs) { + qWarning() << "Failed to get list of installed refs for listing updates: " << localError->message; + } + return refs; + })); +} + +void FlatpakBackend::onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates) +{ + if (!updates) { + qWarning() << "could not get updates for" << flatpakInstallation; + return; + } + + g_autoptr(GPtrArray) fetchedUpdates = updates; + + for (uint i = 0; i < fetchedUpdates->len; i++) { + FlatpakInstalledRef *ref = FLATPAK_INSTALLED_REF(g_ptr_array_index(fetchedUpdates, i)); + FlatpakResource *resource = getAppForInstalledRef(flatpakInstallation, ref); + if (resource) { + resource->setState(AbstractResource::Upgradeable); + updateAppSize(flatpakInstallation, resource); + } + } +} + +bool FlatpakBackend::parseMetadataFromAppBundle(FlatpakResource *resource) +{ + g_autoptr(FlatpakRef) ref = nullptr; + g_autoptr(GError) localError = nullptr; + AppStream::Bundle bundle = resource->appstreamComponent().bundle(AppStream::Bundle::KindFlatpak); + + // Get arch/branch/commit/name from FlatpakRef + if (!bundle.isEmpty()) { + ref = flatpak_ref_parse(bundle.id().toUtf8().constData(), &localError); + if (!ref) { + qWarning() << "Failed to parse" << bundle.id() << localError->message; + return false; + } else { + resource->updateFromRef(ref); + } + } + + return true; +} + +class FlatpakRefreshAppstreamMetadataJob : public QThread +{ + Q_OBJECT +public: + FlatpakRefreshAppstreamMetadataJob(FlatpakInstallation *installation, FlatpakRemote *remote) + : QThread() + , m_cancellable(g_cancellable_new()) + , m_installation(installation) + , m_remote(remote) + { + connect(this, &FlatpakRefreshAppstreamMetadataJob::finished, this, &QObject::deleteLater); + } + + ~FlatpakRefreshAppstreamMetadataJob() + { + g_object_unref(m_cancellable); + } + + void cancel() + { + g_cancellable_cancel(m_cancellable); + } + + void run() override + { + g_autoptr(GError) localError = nullptr; + +#if FLATPAK_CHECK_VERSION(0,9,4) + // With Flatpak 0.9.4 we can use flatpak_installation_update_appstream_full_sync() providing progress reporting which we don't use at this moment, but still + // better to use newer function in case the previous one gets deprecated + if (!flatpak_installation_update_appstream_full_sync(m_installation, flatpak_remote_get_name(m_remote), nullptr, nullptr, nullptr, nullptr, m_cancellable, &localError)) { +#else + if (!flatpak_installation_update_appstream_sync(m_installation, flatpak_remote_get_name(m_remote), nullptr, nullptr, m_cancellable, &localError)) { +#endif + qWarning() << "Failed to refresh appstream metadata for " << flatpak_remote_get_name(m_remote) << ": " << (localError ? localError->message : ""); + Q_EMIT jobRefreshAppstreamMetadataFailed(); + } else { + Q_EMIT jobRefreshAppstreamMetadataFinished(m_installation, m_remote); + } + } + +Q_SIGNALS: + void jobRefreshAppstreamMetadataFailed(); + void jobRefreshAppstreamMetadataFinished(FlatpakInstallation *installation, FlatpakRemote *remote); + +private: + GCancellable *m_cancellable; + FlatpakInstallation *m_installation; + FlatpakRemote *m_remote; +}; + +void FlatpakBackend::refreshAppstreamMetadata(FlatpakInstallation *installation, FlatpakRemote *remote) +{ + FlatpakRefreshAppstreamMetadataJob *job = new FlatpakRefreshAppstreamMetadataJob(installation, remote); + connect(job, &FlatpakRefreshAppstreamMetadataJob::jobRefreshAppstreamMetadataFailed, this, [this] () { + m_refreshAppstreamMetadataJobs--; + }); + connect(job, &FlatpakRefreshAppstreamMetadataJob::jobRefreshAppstreamMetadataFinished, this, &FlatpakBackend::integrateRemote); + job->start(); +} + +bool FlatpakBackend::setupFlatpakInstallations(GError **error) +{ + if (qEnvironmentVariableIsSet("FLATPAK_TEST_MODE")) { + const QString path = QStandardPaths::writableLocation(QStandardPaths::TempLocation) + QLatin1String("/discover-flatpak-test"); + qDebug() << "running flatpak backend on test mode" << path; + g_autoptr(GFile) file = g_file_new_for_path(QFile::encodeName(path).constData()); + m_installations << flatpak_installation_new_for_path(file, true, m_cancellable, error); + return true; + } + + GPtrArray *installations = flatpak_get_system_installations(m_cancellable, error); + if (*error) { + qWarning() << "Failed to call flatpak_get_system_installations:" << (*error)->message; + } + for (uint i = 0; installations && i < installations->len; i++) { + m_installations << FLATPAK_INSTALLATION(g_ptr_array_index(installations, i)); + } + + auto user = flatpak_installation_new_user(m_cancellable, error); + if (user) { + m_installations << user; + } + + return !m_installations.isEmpty(); +} + +void FlatpakBackend::updateAppInstalledMetadata(FlatpakInstalledRef *installedRef, FlatpakResource *resource) +{ + // Update the rest + resource->updateFromRef(FLATPAK_REF(installedRef)); + resource->setInstalledSize(flatpak_installed_ref_get_installed_size(installedRef)); + resource->setOrigin(QString::fromUtf8(flatpak_installed_ref_get_origin(installedRef))); + if (resource->state() < AbstractResource::Installed) + resource->setState(AbstractResource::Installed); +} + +bool FlatpakBackend::updateAppMetadata(FlatpakInstallation* flatpakInstallation, FlatpakResource *resource) +{ + g_autoptr(GFile) installationPath = nullptr; + + if (resource->type() != FlatpakResource::DesktopApp) { + return true; + } + + installationPath = flatpak_installation_get_path(flatpakInstallation); + const QString path = QString::fromUtf8(g_file_get_path(installationPath)) + QStringLiteral("/app/%1/%2/%3/active/metadata").arg(resource->flatpakName()).arg(resource->arch()).arg(resource->branch()); + + if (QFile::exists(path)) { + return updateAppMetadata(resource, path); + } else { + auto fw = new QFutureWatcher(this); + connect(fw, &QFutureWatcher::finished, this, [this, flatpakInstallation, resource, fw]() { + const auto metadata = fw->result(); + if (!metadata.isEmpty()) + onFetchMetadataFinished(flatpakInstallation, resource, metadata); + fw->deleteLater(); + }); + fw->setFuture(QtConcurrent::run(&m_threadPool, &FlatpakRunnables::fetchMetadata, flatpakInstallation, resource)); + + // Return false to indicate we cannot continue (right now used only in updateAppSize()) + return false; + } +} + +void FlatpakBackend::onFetchMetadataFinished(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource, const QByteArray &metadata) +{ + updateAppMetadata(resource, metadata); + + // Right now we attempt to update metadata for calculating the size so call updateSizeFromRemote() + // as it's what we want. In future if there are other reason to update metadata we will need to somehow + // distinguish betwen these calls + updateAppSizeFromRemote(flatpakInstallation, resource); +} + +bool FlatpakBackend::updateAppMetadata(FlatpakResource *resource, const QString &path) +{ + // Parse the temporary file + QSettings setting(path, QSettings::NativeFormat); + setting.beginGroup(QLatin1String("Application")); + // Set the runtime in form of name/arch/version which can be later easily parsed + resource->setRuntime(setting.value(QLatin1String("runtime")).toString()); + // TODO get more information? + return true; +} + +bool FlatpakBackend::updateAppMetadata(FlatpakResource *resource, const QByteArray &data) +{ + //We just find the runtime with a regex, QSettings only can read from disk (and so does KConfig) + const QRegularExpression rx(QStringLiteral("runtime=(.*)")); + const auto match = rx.match(QString::fromUtf8(data)); + if (!match.isValid()) { + return false; + } + + resource->setRuntime(match.captured(1)); + return true; +} + +bool FlatpakBackend::updateAppSize(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) +{ + // Check if the size is already set, we should also distiguish between download and installed size, + // right now it doesn't matter whether we get size for installed or not installed app, but if we + // start making difference then for not installed app check download and install size separately + + if (resource->state() == AbstractResource::Installed) { + // The size appears to be already set (from updateAppInstalledMetadata() apparently) + if (resource->installedSize() > 0) { + return true; + } + } else { + if (resource->installedSize() > 0 && resource->downloadSize() > 0) { + return true; + } + } + + // Check if we know the needed runtime which is needed for calculating the size + if (resource->runtime().isEmpty()) { + if (!updateAppMetadata(flatpakInstallation, resource)) { + return false; + } + } + + return updateAppSizeFromRemote(flatpakInstallation, resource); +} + +bool FlatpakBackend::updateAppSizeFromRemote(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) +{ + // Calculate the runtime size + if (resource->state() == AbstractResource::None && resource->type() == FlatpakResource::DesktopApp) { + auto runtime = getRuntimeForApp(resource); + if (runtime) { + // Re-check runtime state if case a new one was created + updateAppState(flatpakInstallation, runtime); + + if (!runtime->isInstalled()) { + if (!updateAppSize(flatpakInstallation, runtime)) { + qWarning() << "Failed to get runtime size needed for total size of" << resource->name(); + return false; + } + // Set required download size to include runtime size even now, in case we fail to + // get the app size (e.g. when installing bundles where download size is 0) + resource->setDownloadSize(runtime->downloadSize()); + } + } + } + + if (resource->state() == AbstractResource::Installed) { + g_autoptr(FlatpakInstalledRef) ref = nullptr; + ref = getInstalledRefForApp(flatpakInstallation, resource); + if (!ref) { + qWarning() << "Failed to get installed size of" << resource->name(); + return false; + } + resource->setInstalledSize(flatpak_installed_ref_get_installed_size(ref)); + } else { + if (resource->origin().isEmpty()) { + qWarning() << "Failed to get size of" << resource->name() << " because of missing origin"; + return false; + } + + auto futureWatcher = new QFutureWatcher(this); + connect(futureWatcher, &QFutureWatcher::finished, this, [this, resource, futureWatcher]() { + auto value = futureWatcher->result(); + if (value.valid) { + onFetchSizeFinished(resource, value.downloadSize, value.installedSize); + } else { + resource->setPropertyState(FlatpakResource::DownloadSize, FlatpakResource::UnknownOrFailed); + resource->setPropertyState(FlatpakResource::InstalledSize, FlatpakResource::UnknownOrFailed); + } + futureWatcher->deleteLater(); + }); + futureWatcher->setFuture(QtConcurrent::run(&m_threadPool, &FlatpakRunnables::fetchFlatpakSize, flatpakInstallation, resource)); + } + + return true; +} + +void FlatpakBackend::onFetchSizeFinished(FlatpakResource *resource, guint64 downloadSize, guint64 installedSize) +{ + FlatpakResource *runtime = nullptr; + if (resource->state() == AbstractResource::None && resource->type() == FlatpakResource::DesktopApp) { + runtime = getRuntimeForApp(resource); + } + + if (runtime && !runtime->isInstalled()) { + resource->setDownloadSize(runtime->downloadSize() + downloadSize); + } else { + resource->setDownloadSize(downloadSize); + } + resource->setInstalledSize(installedSize); +} + +void FlatpakBackend::updateAppState(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) +{ + FlatpakInstalledRef *ref = getInstalledRefForApp(flatpakInstallation, resource); + if (ref) { + // If the app is installed, we can set information about commit, arch etc. + updateAppInstalledMetadata(ref, resource); + } else { + // TODO check if the app is actuall still available + resource->setState(AbstractResource::None); + } +} + +void FlatpakBackend::acquireFetching(bool f) +{ + if (f) + m_isFetching++; + else + m_isFetching--; + + if ((!f && m_isFetching==0) || (f && m_isFetching==1)) { + emit fetchingChanged(); + } + + if (m_isFetching==0) + Q_EMIT initialized(); +} + +int FlatpakBackend::updatesCount() const +{ + return m_updater->updatesCount(); +} + +bool FlatpakBackend::flatpakResourceLessThan(AbstractResource* l, AbstractResource* r) const +{ + return (l->isInstalled() != r->isInstalled()) ? l->isInstalled() + : (l->origin() != r->origin()) ? m_sources->originIndex(l->origin()) < m_sources->originIndex(r->origin()) + : l < r; +} + +ResultsStream * FlatpakBackend::search(const AbstractResourcesBackend::Filters &filter) +{ + if (filter.resourceUrl.fileName().endsWith(QLatin1String(".flatpakrepo")) || filter.resourceUrl.fileName().endsWith(QLatin1String(".flatpakref"))) { + auto stream = new ResultsStream(QStringLiteral("FlatpakStream-http-")+filter.resourceUrl.fileName()); + + FlatpakFetchRemoteResourceJob *fetchResourceJob = new FlatpakFetchRemoteResourceJob(filter.resourceUrl, this); + connect(fetchResourceJob, &FlatpakFetchRemoteResourceJob::jobFinished, this, [fetchResourceJob, stream] (bool success, FlatpakResource *resource) { + if (success) { + stream->resourcesFound({resource}); + } + stream->finish(); + fetchResourceJob->deleteLater(); + }); + fetchResourceJob->start(); + + return stream; + } else if(filter.resourceUrl.scheme() == QLatin1String("appstream")) { + return findResourceByPackageName(filter.resourceUrl); + } else if (!filter.resourceUrl.isEmpty() || !filter.extends.isEmpty()) + return new ResultsStream(QStringLiteral("FlatpakStream-void"), {}); + + auto stream = new ResultsStream(QStringLiteral("FlatpakStream")); + auto f = [this, stream, filter] () { + QVector ret; + foreach(AbstractResource* r, m_resources) { + if (r->isTechnical() && filter.state != AbstractResource::Upgradeable) { + continue; + } + + if (r->state() < filter.state) + continue; + + if (filter.search.isEmpty() || r->name().contains(filter.search, Qt::CaseInsensitive) || r->comment().contains(filter.search, Qt::CaseInsensitive)) { + ret += r; + } + } + auto f = [this](AbstractResource* l, AbstractResource* r) { return flatpakResourceLessThan(l,r); }; + std::sort(ret.begin(), ret.end(), f); + if (!ret.isEmpty()) + Q_EMIT stream->resourcesFound(ret); + stream->finish(); + }; + if (isFetching()) { + connect(this, &FlatpakBackend::initialized, stream, f); + } else { + QTimer::singleShot(0, this, f); + } + return stream; +} + +QVector FlatpakBackend::resourcesByAppstreamName(const QString& name) const +{ + QVector resources; + foreach(FlatpakResource* res, m_resources) { + if (QString::compare(res->appstreamId(), name, Qt::CaseInsensitive)==0 || QString::compare(res->appstreamId(), name + QLatin1String(".desktop"), Qt::CaseInsensitive)==0) + resources << res; + } + auto f = [this](AbstractResource* l, AbstractResource* r) { return flatpakResourceLessThan(l, r); }; + std::sort(resources.begin(), resources.end(), f); + return resources; +} + +ResultsStream * FlatpakBackend::findResourceByPackageName(const QUrl &url) +{ + if (url.scheme() == QLatin1String("appstream")) { + if (url.host().isEmpty()) + passiveMessage(i18n("Malformed appstream url '%1'", url.toDisplayString())); + else { + auto stream = new ResultsStream(QStringLiteral("FlatpakStream")); + auto f = [this, stream, url] () { + const auto resources = resourcesByAppstreamName(url.host()); + if (!resources.isEmpty()) + Q_EMIT stream->resourcesFound(resources); + stream->finish(); + }; + + if (isFetching()) { + connect(this, &FlatpakBackend::initialized, stream, f); + } else { + QTimer::singleShot(0, this, f); + } + return stream; + } + } + return new ResultsStream(QStringLiteral("FlatpakStream-packageName-void"), {}); +} + +AbstractBackendUpdater * FlatpakBackend::backendUpdater() const +{ + return m_updater; +} + +AbstractReviewsBackend * FlatpakBackend::reviewsBackend() const +{ + return m_reviews.data(); +} + +Transaction* FlatpakBackend::installApplication(AbstractResource *app, const AddonList &addons) +{ + Q_UNUSED(addons); + + FlatpakResource *resource = qobject_cast(app); + + if (resource->type() == FlatpakResource::Source) { + // Let source backend handle this + FlatpakRemote *remote = m_sources->installSource(resource); + if (remote) { + resource->setState(AbstractResource::Installed); + m_refreshAppstreamMetadataJobs++; + // Make sure we update appstream metadata first + // FIXME we have to let flatpak to return the remote as the one created by FlatpakSourcesBackend will not have appstream directory + refreshAppstreamMetadata(preferredInstallation(), flatpak_installation_get_remote_by_name(preferredInstallation(), flatpak_remote_get_name(remote), nullptr, nullptr)); + } + return nullptr; + } + + FlatpakJobTransaction *transaction = nullptr; + FlatpakInstallation *installation = resource->installation(); + + if (resource->propertyState(FlatpakResource::RequiredRuntime) == FlatpakResource::NotKnownYet && resource->type() == FlatpakResource::DesktopApp) { + transaction = new FlatpakJobTransaction(resource, Transaction::InstallRole, true); + connect(resource, &FlatpakResource::propertyStateChanged, [resource, transaction, this] (FlatpakResource::PropertyKind kind, FlatpakResource::PropertyState state) { + if (kind != FlatpakResource::RequiredRuntime) { + return; + } + + if (state == FlatpakResource::AlreadyKnown) { + FlatpakResource *runtime = getRuntimeForApp(resource); + if (runtime && !runtime->isInstalled()) { + transaction->setRuntime(runtime); + } + } + transaction->start(); + }); + } else { + FlatpakResource *runtime = getRuntimeForApp(resource); + if (runtime && !runtime->isInstalled()) { + transaction = new FlatpakJobTransaction(resource, runtime, Transaction::InstallRole); + } else { + transaction = new FlatpakJobTransaction(resource, Transaction::InstallRole); + } + } + + connect(transaction, &FlatpakJobTransaction::statusChanged, [this, installation, resource] (Transaction::Status status) { + if (status == Transaction::Status::DoneStatus) { + updateAppState(installation, resource); + } + }); + return transaction; +} + +Transaction* FlatpakBackend::installApplication(AbstractResource *app) +{ + return installApplication(app, {}); +} + +Transaction* FlatpakBackend::removeApplication(AbstractResource *app) +{ + FlatpakResource *resource = qobject_cast(app); + + if (resource->type() == FlatpakResource::Source) { + // Let source backend handle this + if (m_sources->removeSource(resource->flatpakName())) { + resource->setState(AbstractResource::None); + } + return nullptr; + } + + FlatpakInstallation *installation = resource->installation(); + FlatpakJobTransaction *transaction = new FlatpakJobTransaction(resource, Transaction::RemoveRole); + + connect(transaction, &FlatpakJobTransaction::statusChanged, [this, installation, resource] (Transaction::Status status) { + if (status == Transaction::Status::DoneStatus) { + updateAppSize(installation, resource); + } + }); + return transaction; +} + +void FlatpakBackend::checkForUpdates() +{ + for (auto installation : qAsConst(m_installations)) { + // Load local updates, comparing current and latest commit + loadLocalUpdates(installation); + + // Load updates from remote repositories + loadRemoteUpdates(installation); + } +} + +AbstractResource * FlatpakBackend::resourceForFile(const QUrl &url) +{ + if (!url.isLocalFile()) { + return nullptr; + } + + FlatpakResource *resource = nullptr; + if (url.path().endsWith(QLatin1String(".flatpak"))) { + resource = addAppFromFlatpakBundle(url); + } else if (url.path().endsWith(QLatin1String(".flatpakref"))) { + resource = addAppFromFlatpakRef(url); + } else if (url.path().endsWith(QLatin1String(".flatpakrepo"))) { + resource = addSourceFromFlatpakRepo(url); + } + + return resource; +} + +QString FlatpakBackend::displayName() const +{ + return QStringLiteral("Flatpak"); +} + +#include "FlatpakBackend.moc" diff --git a/libdiscover/backends/FlatpakBackend/FlatpakBackend.h b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h new file mode 100644 index 0000000..3c5aa69 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h @@ -0,0 +1,120 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKBACKEND_H +#define FLATPAKBACKEND_H + +#include "FlatpakResource.h" + +#include +#include +#include +#include + +#include + +extern "C" { +#include +} + +class QAction; +class FlatpakSourcesBackend; +class StandardBackendUpdater; +class OdrsReviewsBackend; +class FlatpakBackend : public AbstractResourcesBackend +{ + Q_OBJECT +public: + explicit FlatpakBackend(QObject *parent = nullptr); + ~FlatpakBackend(); + + int updatesCount() const override; + AbstractBackendUpdater * backendUpdater() const override; + AbstractReviewsBackend * reviewsBackend() const override; + ResultsStream * search(const AbstractResourcesBackend::Filters & search) override; + ResultsStream * findResourceByPackageName(const QUrl &search); + QList resources() const { return m_resources.values(); } + bool isValid() const override; + + Transaction* installApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app, const AddonList& addons) override; + Transaction* removeApplication(AbstractResource* app) override; + bool isFetching() const override { return m_isFetching>0; } + AbstractResource * resourceForFile(const QUrl & ) override; + void checkForUpdates() override; + QString displayName() const override; + bool hasApplications() const override { return true; } + FlatpakResource * addSourceFromFlatpakRepo(const QUrl &url); + +private Q_SLOTS: + void onFetchMetadataFinished(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource, const QByteArray &metadata); + void onFetchSizeFinished(FlatpakResource *resource, guint64 downloadSize, guint64 installedSize); + void onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates); + +Q_SIGNALS: //for tests + void initialized(); + +private: + bool flatpakResourceLessThan(AbstractResource* l, AbstractResource* r) const; + void announceRatingsReady(); + FlatpakInstallation * preferredInstallation() const { return m_installations.constFirst(); } + void integrateRemote(FlatpakInstallation *flatpakInstallation, FlatpakRemote *remote); + FlatpakRemote * getFlatpakRemoteByUrl(const QString &url, FlatpakInstallation *installation) const; + FlatpakInstalledRef * getInstalledRefForApp(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) const; + FlatpakResource * getAppForInstalledRef(FlatpakInstallation *flatpakInstallation, FlatpakInstalledRef *ref) const; + FlatpakResource * getRuntimeForApp(FlatpakResource *resource) const; + + FlatpakResource * addAppFromFlatpakBundle(const QUrl &url); + FlatpakResource * addAppFromFlatpakRef(const QUrl &url); + void addResource(FlatpakResource *resource); + void loadAppsFromAppstreamData(); + bool loadAppsFromAppstreamData(FlatpakInstallation *flatpakInstallation); + void loadInstalledApps(); + bool loadInstalledApps(FlatpakInstallation *flatpakInstallation); + void loadLocalUpdates(FlatpakInstallation *flatpakInstallation); + void loadRemoteUpdates(FlatpakInstallation *flatpakInstallation); + bool parseMetadataFromAppBundle(FlatpakResource *resource); + void refreshAppstreamMetadata(FlatpakInstallation *installation, FlatpakRemote *remote); + bool setupFlatpakInstallations(GError **error); + void updateAppInstalledMetadata(FlatpakInstalledRef *installedRef, FlatpakResource *resource); + bool updateAppMetadata(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource); + bool updateAppMetadata(FlatpakResource *resource, const QByteArray &data); + bool updateAppMetadata(FlatpakResource *resource, const QString &path); + bool updateAppSize(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource); + bool updateAppSizeFromRemote(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource); + void updateAppState(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource); + + QVector resourcesByAppstreamName(const QString &name) const; + void acquireFetching(bool f); + + QHash m_resources; + StandardBackendUpdater *m_updater; + FlatpakSourcesBackend *m_sources = nullptr; + QSharedPointer m_reviews; + uint m_isFetching = 0; + uint m_refreshAppstreamMetadataJobs; + + GCancellable *m_cancellable; + QVector m_installations; + QThreadPool m_threadPool; +}; + +#endif // FLATPAKBACKEND_H diff --git a/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.cpp b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.cpp new file mode 100644 index 0000000..cf98bb0 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.cpp @@ -0,0 +1,97 @@ +/*************************************************************************** + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakFetchDataJob.h" +#include "FlatpakResource.h" + +#include + +static FlatpakRef * createFakeRef(FlatpakResource *resource) +{ + FlatpakRef *ref = nullptr; + g_autoptr(GError) localError = nullptr; + + const QString id = QStringLiteral("%1/%2/%3/%4").arg(resource->typeAsString(), resource->flatpakName(), resource->arch(), resource->branch()); + ref = flatpak_ref_parse(id.toUtf8().constData(), &localError); + + if (!ref) { + qWarning() << "Failed to create fake ref: " << localError->message; + } + + return ref; +} + +namespace FlatpakRunnables +{ +QByteArray fetchMetadata(FlatpakInstallation *installation, FlatpakResource *app) +{ + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GError) localError = nullptr; + + if (app->origin().isEmpty()) { + qWarning() << "Failed to get metadata file because of missing origin"; + return {}; + } + + g_autoptr(FlatpakRef) fakeRef = createFakeRef(app); + if (!fakeRef) { + return {}; + } + + QByteArray metadataContent; + g_autoptr(GBytes) data = flatpak_installation_fetch_remote_metadata_sync(installation, app->origin().toUtf8().constData(), fakeRef, cancellable, &localError); + if (data) { + gsize len = 0; + auto buff = g_bytes_get_data(data, &len); + metadataContent = QByteArray((const char*) buff, len); + } else { + qWarning() << "Failed to get metadata file: " << localError->message; + return {}; + } + + if (metadataContent.isEmpty()) { + qWarning() << "Failed to get metadata file: empty metadata"; + return {}; + } + + return metadataContent; +} + +SizeInformation fetchFlatpakSize(FlatpakInstallation *installation, FlatpakResource *app) +{ + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GError) localError = nullptr; + + SizeInformation ret; + g_autoptr(FlatpakRef) ref = createFakeRef(app); + if (!ref) { + return ret; + } + + if (!flatpak_installation_fetch_remote_size_sync(installation, app->origin().toUtf8().constData(), ref, &ret.downloadSize, &ret.installedSize, cancellable, &localError)) { + qWarning() << "Failed to get remote size of " << app->name() << ": " << localError->message; + return ret; + } + + ret.valid = true; + return ret; +} + +} diff --git a/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h new file mode 100644 index 0000000..3998fee --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKFETCHDATAJOB_H +#define FLATPAKFETCHDATAJOB_H + +#include +extern "C" { +#include +#include +} + +class FlatpakResource; + +namespace FlatpakRunnables +{ + struct SizeInformation { + bool valid = false; + guint64 downloadSize; + guint64 installedSize; + }; + + SizeInformation fetchFlatpakSize(FlatpakInstallation *installation, FlatpakResource *app); + + QByteArray fetchMetadata(FlatpakInstallation *installation, FlatpakResource *app); +} + +#endif // FLATPAKFETCHDATAJOB_H + + diff --git a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp new file mode 100644 index 0000000..51edc0e --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp @@ -0,0 +1,213 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakJobTransaction.h" +#include "FlatpakBackend.h" +#include "FlatpakResource.h" +#include "FlatpakTransactionThread.h" + +#include +#include + +extern "C" { +#include +#include +#include +} + +FlatpakJobTransaction::FlatpakJobTransaction(FlatpakResource *app, Role role, bool delayStart) + : FlatpakJobTransaction(app, nullptr, role, delayStart) +{ +} + +FlatpakJobTransaction::FlatpakJobTransaction(FlatpakResource *app, FlatpakResource *runtime, Transaction::Role role, bool delayStart) + : Transaction(app->backend(), app, role, {}) + , m_app(app) + , m_runtime(runtime) +{ + setCancellable(true); + setStatus(QueuedStatus); + + if (!delayStart) { + QTimer::singleShot(0, this, &FlatpakJobTransaction::start); + } +} + +FlatpakJobTransaction::~FlatpakJobTransaction() +{ + for(auto job : m_jobs) { + if (!job->isFinished()) { + connect(job, &QThread::finished, job, &QObject::deleteLater); + } else + delete job; + } +} + +void FlatpakJobTransaction::cancel() +{ + //note it's possible to have a job cancelled before it ever started as + //sometimes we're delaying the start until we have the runtime + foreach (const QPointer &job, m_jobs) { + job->cancel(); + } + setStatus(CancelledStatus); +} + +void FlatpakJobTransaction::setRuntime(FlatpakResource *runtime) +{ + m_runtime = runtime; +} + +void FlatpakJobTransaction::start() +{ + setStatus(CommittingStatus); + if (m_runtime) { + QPointer job = new FlatpakTransactionThread(m_runtime, {}, role()); + connect(job, &FlatpakTransactionThread::finished, this, &FlatpakJobTransaction::onJobFinished); + connect(job, &FlatpakTransactionThread::progressChanged, this, &FlatpakJobTransaction::onJobProgressChanged); + m_jobs << job; + + processRelatedRefs(m_runtime); + } + + // App job will be added everytime + m_appJob = new FlatpakTransactionThread(m_app, {}, role()); + connect(m_appJob, &FlatpakTransactionThread::finished, this, &FlatpakJobTransaction::onJobFinished); + connect(m_appJob, &FlatpakTransactionThread::progressChanged, this, &FlatpakJobTransaction::onJobProgressChanged); + m_jobs << m_appJob; + + processRelatedRefs(m_app); + + + // Now start all the jobs together + foreach (const QPointer &job, m_jobs) { + job->start(); + } +} + +void FlatpakJobTransaction::processRelatedRefs(FlatpakResource* resource) +{ + g_autoptr(GPtrArray) refs = nullptr; + g_autoptr(GError) error = nullptr; + g_autoptr(GCancellable) cancellable = g_cancellable_new();; + QList additionalResources; + + g_autofree gchar *ref = g_strdup_printf ("%s/%s/%s/%s", + resource->typeAsString().toUtf8().constData(), + resource->flatpakName().toUtf8().constData(), + resource->arch().toUtf8().constData(), + resource->branch().toUtf8().constData()); + + if (role() == Transaction::Role::InstallRole) { + if (resource->state() == AbstractResource::Upgradeable) { + refs = flatpak_installation_list_installed_related_refs_sync(resource->installation(), resource->origin().toUtf8().constData(), ref, cancellable, &error); + if (error) { + qWarning() << "Failed to list installed related refs for update: " << error->message; + } + } else { + refs = flatpak_installation_list_remote_related_refs_sync(resource->installation(), resource->origin().toUtf8().constData(), ref, cancellable, &error); + if (error) { + qWarning() << "Failed to list related refs for installation: " << error->message; + } + } + } else if (role() == Transaction::Role::RemoveRole) { + refs = flatpak_installation_list_installed_related_refs_sync(resource->installation(), resource->origin().toUtf8().constData(), ref, cancellable, &error); + if (error) { + qWarning() << "Failed to list installed related refs for removal: " << error->message; + } + } + + if (refs) { + for (uint i = 0; i < refs->len; i++) { + FlatpakRef *flatpakRef = FLATPAK_REF(g_ptr_array_index(refs, i)); + if (flatpak_related_ref_should_download(FLATPAK_RELATED_REF(flatpakRef))) { + QPointer job = new FlatpakTransactionThread(resource, QPair(QString::fromUtf8(flatpak_ref_get_name(flatpakRef)), flatpak_ref_get_kind(flatpakRef)), role()); + connect(job, &FlatpakTransactionThread::finished, this, &FlatpakJobTransaction::onJobFinished); + connect(job, &FlatpakTransactionThread::progressChanged, this, &FlatpakJobTransaction::onJobProgressChanged); + // Add to the list of all jobs + m_jobs << job; + } + } + } +} + +void FlatpakJobTransaction::onJobFinished() +{ + FlatpakTransactionThread *job = static_cast(sender()); + + if (job != m_appJob) { + if (!job->result()) { + Q_EMIT passiveMessage(job->errorMessage()); + } + + // Mark runtime as installed + if (m_runtime && job->app()->flatpakName() == m_runtime->flatpakName() && !job->isRelated() && role() != Transaction::Role::RemoveRole) { + if (job->result()) { + m_runtime->setState(AbstractResource::Installed); + } + } + } + + foreach (const QPointer &job, m_jobs) { + if (job->isRunning()) { + return; + } + } + + // No other job is running → finish transaction + finishTransaction(); +} + +void FlatpakJobTransaction::onJobProgressChanged(int progress) +{ + Q_UNUSED(progress); + + int total = 0; + + // Count progress from all the jobs + foreach (const QPointer &job, m_jobs) { + total += job->progress(); + } + + setProgress(total / m_jobs.count()); +} + +void FlatpakJobTransaction::finishTransaction() +{ + if (m_appJob->result()) { + AbstractResource::State newState = AbstractResource::None; + switch(role()) { + case InstallRole: + case ChangeAddonsRole: + newState = AbstractResource::Installed; + break; + case RemoveRole: + newState = AbstractResource::None; + break; + } + + m_app->setState(newState); + + setStatus(DoneStatus); + } else { + setStatus(DoneWithErrorStatus); + } +} diff --git a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h new file mode 100644 index 0000000..f07acf9 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h @@ -0,0 +1,64 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKJOBTRANSACTION_H +#define FLATPAKJOBTRANSACTION_H + +#include +#include + +extern "C" { +#include +#include +#include +} + +class FlatpakResource; +class FlatpakTransactionThread; +class FlatpakJobTransaction : public Transaction +{ +Q_OBJECT +public: + FlatpakJobTransaction(FlatpakResource *app, Role role, bool delayStart = false); + FlatpakJobTransaction(FlatpakResource *app, FlatpakResource *runtime, Role role, bool delayStart = false); + + ~FlatpakJobTransaction(); + + void cancel() override; + void setRuntime(FlatpakResource *runtime); + +public Q_SLOTS: + void onJobFinished(); + void onJobProgressChanged(int progress); + void finishTransaction(); + void start(); + +private: + void processRelatedRefs(FlatpakResource *resource); + void updateProgress(); + + QPointer m_app; + QPointer m_runtime; + QPointer m_appJob; + QList > m_jobs; +}; + +#endif // FLATPAKJOBTRANSACTION_H diff --git a/libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp new file mode 100644 index 0000000..c810596 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp @@ -0,0 +1,185 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakNotifier.h" + +#include + +#include +#include +#include +#include + +static void installationChanged(GFileMonitor *monitor, GFile *child, GFile *other_file, GFileMonitorEvent event_type, gpointer self) +{ + Q_UNUSED(monitor); + Q_UNUSED(child); + Q_UNUSED(other_file); + Q_UNUSED(event_type); + + FlatpakNotifier *notifier = (FlatpakNotifier*)self; + if (!notifier) { + return; + } + + notifier->checkUpdates(); +} + +FlatpakNotifier::FlatpakNotifier(QObject* parent) + : BackendNotifierModule(parent) + , m_userInstallationUpdates(0) + , m_systemInstallationUpdates(0) +{ + m_cancellable = g_cancellable_new(); + + checkUpdates(); + + QTimer *dailyCheck = new QTimer(this); + dailyCheck->setInterval(24 * 60 * 60 * 1000); //refresh at least once every day + connect(dailyCheck, &QTimer::timeout, this, &FlatpakNotifier::checkUpdates); +} + +FlatpakNotifier::~FlatpakNotifier() +{ + g_object_unref(m_userInstallationMonitor); + g_object_unref(m_systemInstallationMonitor); + g_object_unref(m_flatpakInstallationSystem); + g_object_unref(m_flatpakInstallationUser); + g_object_unref(m_cancellable); +} + +void FlatpakNotifier::recheckSystemUpdateNeeded() +{ + checkUpdates(); +} + +uint FlatpakNotifier::securityUpdatesCount() +{ + return 0; +} + +uint FlatpakNotifier::updatesCount() +{ + return m_systemInstallationUpdates + m_userInstallationUpdates; +} + +void FlatpakNotifier::checkUpdates() +{ + g_autoptr(GError) error = nullptr; + + // Load flatpak installation + if (!setupFlatpakInstallations(&error)) { + qWarning() << "Failed to setup flatpak installations: " << error->message; + } else { + // Load updates from remote repositories + loadRemoteUpdates(m_flatpakInstallationSystem); + loadRemoteUpdates(m_flatpakInstallationUser); + } +} + +void FlatpakNotifier::onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates) +{ + bool changed = false; + uint validUpdates = 0; + + g_autoptr(GPtrArray) fetchedUpdates = updates; + + for (uint i = 0; i < fetchedUpdates->len; i++) { + FlatpakInstalledRef *ref = FLATPAK_INSTALLED_REF(g_ptr_array_index(fetchedUpdates, i)); + const QString refName = QString::fromUtf8(flatpak_ref_get_name(FLATPAK_REF(ref))); + // FIXME right now I can't think of any other filter than this, in FlatpakBackend updates are matched + // with apps so .Locale/.Debug subrefs are not shown and updated automatically. Also this will show + // updates for refs we don't show in Discover if appstream metadata or desktop file for them is not found + if (refName.endsWith(QStringLiteral(".Locale")) || refName.endsWith(QStringLiteral(".Debug"))) { + continue; + } + validUpdates++; + } + + if (flatpak_installation_get_is_user(flatpakInstallation)) { + changed = m_userInstallationUpdates != validUpdates; + m_userInstallationUpdates = validUpdates; + } else { + changed = m_systemInstallationUpdates != validUpdates; + m_systemInstallationUpdates = validUpdates; + } + + if (changed) { + Q_EMIT foundUpdates(); + } +} + +void FlatpakNotifier::loadRemoteUpdates(FlatpakInstallation *installation) +{ + auto fw = new QFutureWatcher(this); + fw->setFuture(QtConcurrent::run( [installation]() -> GPtrArray * { + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GError) localError = nullptr; + GPtrArray *refs = flatpak_installation_list_installed_refs_for_update(installation, cancellable, &localError); + if (!refs) { + qWarning() << "Failed to get list of installed refs for listing updates: " << localError->message; + } + return refs; + })); + connect(fw, &QFutureWatcher::finished, this, [this, installation, fw](){ + auto refs = fw->result(); + if (refs) + onFetchUpdatesFinished(installation, refs); + fw->deleteLater(); + }); +} + +bool FlatpakNotifier::setupFlatpakInstallations(GError **error) +{ + if (!m_flatpakInstallationSystem) { + m_flatpakInstallationSystem = flatpak_installation_new_system(m_cancellable, error); + if (!m_flatpakInstallationSystem) { + return false; + } + } + + if (!m_flatpakInstallationUser) { + m_flatpakInstallationUser = flatpak_installation_new_user(m_cancellable, error); + if (!m_flatpakInstallationUser) { + return false; + } + } + + if (!m_systemInstallationMonitor) { + m_systemInstallationMonitor = flatpak_installation_create_monitor(m_flatpakInstallationSystem, m_cancellable, error); + if (!m_systemInstallationMonitor) { + return false; + } + + g_signal_connect(m_systemInstallationMonitor, "changed", G_CALLBACK(installationChanged), this); + } + + if (!m_userInstallationMonitor) { + m_userInstallationMonitor = flatpak_installation_create_monitor(m_flatpakInstallationUser, m_cancellable, error); + if (!m_userInstallationMonitor) { + return false; + } + + g_signal_connect(m_userInstallationMonitor, "changed", G_CALLBACK(installationChanged), this); + } + + return true; +} diff --git a/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h new file mode 100644 index 0000000..8b392ce --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#ifndef FLATPAKNOTIFIER_H +#define FLATPAKNOTIFIER_H + +#include + +extern "C" { +#include +} + +class FlatpakNotifier : public BackendNotifierModule +{ +Q_OBJECT +Q_PLUGIN_METADATA(IID "org.kde.discover.BackendNotifierModule") +Q_INTERFACES(BackendNotifierModule) +public: + explicit FlatpakNotifier(QObject* parent = nullptr); + ~FlatpakNotifier() override; + + void recheckSystemUpdateNeeded() override; + uint securityUpdatesCount() override; + uint updatesCount() override; + bool needsReboot() const override { return false; } + +public Q_SLOTS: + void checkUpdates(); + void onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates); + +private: + void loadRemoteUpdates(FlatpakInstallation *flatpakInstallation); + bool setupFlatpakInstallations(GError **error); + + uint m_userInstallationUpdates; + uint m_systemInstallationUpdates; + GCancellable *m_cancellable; + GFileMonitor *m_userInstallationMonitor = nullptr; + GFileMonitor *m_systemInstallationMonitor = nullptr; + FlatpakInstallation *m_flatpakInstallationUser = nullptr; + FlatpakInstallation *m_flatpakInstallationSystem = nullptr; +}; + +#endif diff --git a/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp b/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp new file mode 100644 index 0000000..df6fda3 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp @@ -0,0 +1,545 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakResource.h" +#include "FlatpakBackend.h" + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static QString iconCachePath(const AppStream::Icon &icon) +{ + Q_ASSERT(icon.kind() == AppStream::Icon::KindRemote); + return QStringLiteral("%1/icons/%2").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)).arg(icon.url().fileName()); +} + +FlatpakResource::FlatpakResource(const AppStream::Component &component, FlatpakInstallation* installation, FlatpakBackend *parent) + : AbstractResource(parent) + , m_appdata(component) + , m_id({installation, QString(), FlatpakResource::DesktopApp, component.id(), QString(), QString() }) + , m_downloadSize(0) + , m_installedSize(0) + , m_propertyStates({{DownloadSize, NotKnownYet}, {InstalledSize, NotKnownYet},{RequiredRuntime, NotKnownYet}}) + , m_state(AbstractResource::None) +{ + setObjectName(packageName()); + + // Start fetching remote icons during initialization + const auto icons = m_appdata.icons(); + if (!icons.isEmpty()) { + foreach (const AppStream::Icon &icon, icons) { + if (icon.kind() == AppStream::Icon::KindRemote) { + const QString fileName = iconCachePath(icon); + if (!QFileInfo::exists(fileName)) { + const QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); + // Create $HOME/.cache/discover/icons folder + cacheDir.mkdir(QStringLiteral("icons")); + QNetworkAccessManager *manager = new QNetworkAccessManager(this); + connect(manager, &QNetworkAccessManager::finished, [this, icon, fileName, manager] (QNetworkReply *reply) { + if (reply->error() == QNetworkReply::NoError) { + QByteArray iconData = reply->readAll(); + QFile file(fileName); + if (file.open(QIODevice::WriteOnly)) { + file.write(iconData); + } + file.close(); + Q_EMIT iconChanged(); + } + manager->deleteLater(); + }); + manager->get(QNetworkRequest(icon.url())); + } + } + } + } +} + +AppStream::Component FlatpakResource::appstreamComponent() const +{ + return m_appdata; +} + +QList FlatpakResource::addonsInformation() +{ + return {}; +} + +QString FlatpakResource::availableVersion() const +{ + QString theBranch = branch(); + if (theBranch.isEmpty()) { + theBranch = i18n("Unknown"); + } + + if (!m_appdata.releases().isEmpty()) { + auto release = m_appdata.releases().constFirst(); + return i18n("%1 (%2)", release.version(), theBranch); + } + + return theBranch; +} + +QString FlatpakResource::appstreamId() const +{ + return m_id.id; +} + +QString FlatpakResource::arch() const +{ + return m_id.arch; +} + +QString FlatpakResource::branch() const +{ + return m_id.branch; +} + +bool FlatpakResource::canExecute() const +{ + return (m_id.type == DesktopApp && (m_state == AbstractResource::Installed || m_state == AbstractResource::Upgradeable)); +} + +void FlatpakResource::updateFromRef(FlatpakRef* ref) +{ + setArch(QString::fromUtf8(flatpak_ref_get_arch(ref))); + setBranch(QString::fromUtf8(flatpak_ref_get_branch(ref))); + setCommit(QString::fromUtf8(flatpak_ref_get_commit(ref))); + setFlatpakName(QString::fromUtf8(flatpak_ref_get_name(ref))); + setType(flatpak_ref_get_kind(ref) == FLATPAK_REF_KIND_APP ? FlatpakResource::DesktopApp : FlatpakResource::Runtime); + setObjectName(packageName()); +} + +QStringList FlatpakResource::categories() +{ + auto cats = m_appdata.categories(); + if (m_appdata.kind() != AppStream::Component::KindAddon) + cats.append(QStringLiteral("Application")); + return cats; +} + +QString FlatpakResource::comment() +{ + const auto summary = m_appdata.summary(); + if (!summary.isEmpty()) { + return summary; + } + + return QString(); +} + +QString FlatpakResource::commit() const +{ + return m_commit; +} + +int FlatpakResource::downloadSize() const +{ + return m_downloadSize; +} + +QVariant FlatpakResource::icon() const +{ + QIcon ret; + const auto icons = m_appdata.icons(); + + if (!m_bundledIcon.isNull()) { + ret = QIcon(m_bundledIcon); + } else if (icons.isEmpty()) { + ret = QIcon::fromTheme(QStringLiteral("package-x-generic")); + } else foreach(const AppStream::Icon &icon, icons) { + switch (icon.kind()) { + case AppStream::Icon::KindLocal: + case AppStream::Icon::KindCached: { + const QString path = m_iconPath + icon.url().path(); + if (QFileInfo::exists(path)) { + ret.addFile(path, icon.size()); + } else { + const QString altPath = m_iconPath + QStringLiteral("%1x%2/").arg(icon.size().width()).arg(icon.size().height()) + icon.url().path(); + if (QFileInfo::exists(altPath)) { + ret.addFile(altPath, icon.size()); + } + } + } break; + case AppStream::Icon::KindStock: { + const auto ret = QIcon::fromTheme(icon.name()); + if (!ret.isNull()) + return ret; + break; + } + case AppStream::Icon::KindRemote: { + const QString fileName = iconCachePath(icon); + if (QFileInfo::exists(fileName)) { + ret.addFile(fileName, icon.size()); + } + break; + } + case AppStream::Icon::KindUnknown: + break; + } + } + + if (ret.isNull()) { + ret = QIcon::fromTheme(QStringLiteral("package-x-generic")); + } + + return ret; +} + +QString FlatpakResource::installedVersion() const +{ + // TODO check if there is actually version available + QString version = branch(); + if (version.isEmpty()) { + version = i18n("Unknown"); + } + + return version; +} + +int FlatpakResource::installedSize() const +{ + return m_installedSize; +} + +bool FlatpakResource::isTechnical() const +{ + return m_id.type == FlatpakResource::Runtime; +} + +QUrl FlatpakResource::homepage() +{ + return m_appdata.url(AppStream::Component::UrlKindHomepage); +} + +QUrl FlatpakResource::helpURL() +{ + return m_appdata.url(AppStream::Component::UrlKindHelp); +} + +QUrl FlatpakResource::bugURL() +{ + return m_appdata.url(AppStream::Component::UrlKindBugtracker); +} + +QUrl FlatpakResource::donationURL() +{ + return m_appdata.url(AppStream::Component::UrlKindDonation); +} + +QString FlatpakResource::flatpakFileType() const +{ + return m_flatpakFileType; +} + +QString FlatpakResource::flatpakName() const +{ + // If the flatpak name is not known (known only for installed apps), then use + // appstream id instead; + if (m_flatpakName.isEmpty()) { + return m_id.id; + } + + return m_flatpakName; +} + +QString FlatpakResource::license() +{ + return m_appdata.projectLicense(); +} + +QString FlatpakResource::longDescription() +{ + return m_appdata.description(); +} + +QString FlatpakResource::name() const +{ + QString name = m_appdata.name(); + if (name.isEmpty()) { + name = flatpakName(); + } + + if (name.startsWith(QLatin1String("(Nightly) "))) { + return name.mid(10); + } + + return name; +} + +QString FlatpakResource::origin() const +{ + return m_id.origin; +} + +QString FlatpakResource::packageName() const +{ + return flatpakName() + QLatin1Char('/') + arch() + QLatin1Char('/') + branch(); +} + +FlatpakResource::PropertyState FlatpakResource::propertyState(FlatpakResource::PropertyKind kind) const +{ + return m_propertyStates[kind]; +} + +QUrl FlatpakResource::resourceFile() const +{ + return m_resourceFile; +} + +QString FlatpakResource::runtime() const +{ + return m_runtime; +} + +QString FlatpakResource::section() +{ + return QString(); +} + +int FlatpakResource::size() +{ + if (m_state == Installed) { + return m_installedSize; + } else { + return m_downloadSize; + } +} + +QString FlatpakResource::sizeDescription() +{ + KFormat f; + if (!isInstalled() || canUpgrade()) { + if (propertyState(DownloadSize) == NotKnownYet || propertyState(InstalledSize) == NotKnownYet) { + return i18n("Retrieving size information"); + } else if (propertyState(DownloadSize) == UnknownOrFailed || propertyState(InstalledSize) == UnknownOrFailed) { + return i18n("Unknown size"); + } else { + return i18nc("@info app size", "%1 to download, %2 on disk", f.formatByteSize(downloadSize()), f.formatByteSize(installedSize())); + } + } else { + if (propertyState(InstalledSize) == NotKnownYet) { + return i18n("Retrieving size information"); + } else if (propertyState(InstalledSize) == UnknownOrFailed) { + return i18n("Unknown size"); + } else { + return i18nc("@info app size", "%1 on disk", f.formatByteSize(installedSize())); + } + } +} + +AbstractResource::State FlatpakResource::state() +{ + return m_state; +} + +FlatpakResource::ResourceType FlatpakResource::type() const +{ + return m_id.type; +} + +QString FlatpakResource::typeAsString() const +{ + switch (m_id.type) { + case FlatpakResource::DesktopApp: + case FlatpakResource::Source: + return QLatin1String("app"); + case FlatpakResource::Runtime: + return QLatin1String("runtime"); + default: + return QLatin1String("app"); + } +} + +FlatpakResource::Id FlatpakResource::uniqueId() const +{ + return m_id; +} + +void FlatpakResource::invokeApplication() const +{ + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GError) localError = nullptr; + + if (!flatpak_installation_launch(m_id.installation, + flatpakName().toUtf8().constData(), + arch().toUtf8().constData(), + branch().toUtf8().constData(), + nullptr, + cancellable, + &localError)) { + qWarning() << "Failed to launch " << m_appdata.name() << ": " << localError->message; + } +} + +void FlatpakResource::fetchChangelog() +{ + emit changelogFetched(AppStreamUtils::changelogToHtml(m_appdata)); +} + +void FlatpakResource::fetchScreenshots() +{ + const auto sc = AppStreamUtils::fetchScreenshots(m_appdata); + Q_EMIT screenshotsFetched(sc.first, sc.second); +} + +void FlatpakResource::setArch(const QString &arch) +{ + m_id.arch = arch; +} + +void FlatpakResource::setBranch(const QString &branch) +{ + m_id.branch = branch; +} + +void FlatpakResource::setBundledIcon(const QPixmap &pixmap) +{ + m_bundledIcon = pixmap; +} + +void FlatpakResource::setCommit(const QString &commit) +{ + m_commit = commit; +} + +void FlatpakResource::setDownloadSize(int size) +{ + m_downloadSize = size; + + setPropertyState(DownloadSize, AlreadyKnown); + + Q_EMIT sizeChanged(); +} + +void FlatpakResource::setFlatpakFileType(const QString &fileType) +{ + m_flatpakFileType = fileType; +} + +void FlatpakResource::setFlatpakName(const QString &name) +{ + m_flatpakName = name; +} + +void FlatpakResource::setIconPath(const QString &path) +{ + m_iconPath = path; +} + +void FlatpakResource::setInstalledSize(int size) +{ + m_installedSize = size; + + setPropertyState(InstalledSize, AlreadyKnown); + + Q_EMIT sizeChanged(); +} + +void FlatpakResource::setOrigin(const QString &origin) +{ + m_id.origin = origin; +} + +void FlatpakResource::setPropertyState(FlatpakResource::PropertyKind kind, FlatpakResource::PropertyState newState) +{ + auto & state = m_propertyStates[kind]; + if (state != newState) { + state = newState; + + Q_EMIT propertyStateChanged(kind, newState); + } +} + +void FlatpakResource::setResourceFile(const QUrl &url) +{ + m_resourceFile = url; +} + +void FlatpakResource::setRuntime(const QString &runtime) +{ + m_runtime = runtime; + + setPropertyState(RequiredRuntime, AlreadyKnown); +} + +void FlatpakResource::setState(AbstractResource::State state) +{ + if (m_state != state) { + m_state = state; + + if (!backend()->isFetching()) + Q_EMIT stateChanged(); + } +} + +void FlatpakResource::setType(FlatpakResource::ResourceType type) +{ + m_id.type = type; +} + +QString FlatpakResource::installationPath() const +{ + return installationPath(m_id.installation); +} + +QString FlatpakResource::installationPath(FlatpakInstallation* flatpakInstallation) +{ + g_autoptr(GFile) path = flatpak_installation_get_path(flatpakInstallation); + return QString::fromUtf8(g_file_get_path(path)); +} + +QUrl FlatpakResource::url() const +{ + return m_resourceFile.isEmpty() ? QUrl(QStringLiteral("appstream://") + appstreamId()) : m_resourceFile; +} + +QDate FlatpakResource::releaseDate() const +{ + if (!m_appdata.releases().isEmpty()) { + auto release = m_appdata.releases().constFirst(); + return release.timestamp().date(); + } + + return {}; +} + +QString FlatpakResource::sourceIcon() const +{ + return QStringLiteral("flatpak-discover"); +} diff --git a/libdiscover/backends/FlatpakBackend/FlatpakResource.h b/libdiscover/backends/FlatpakBackend/FlatpakResource.h new file mode 100644 index 0000000..191c212 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakResource.h @@ -0,0 +1,187 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKRESOURCE_H +#define FLATPAKRESOURCE_H + +#include + +extern "C" { +#include +} + +#include + +#include + +class AddonList; +class FlatpakBackend; +class FlatpakResource : public AbstractResource +{ +Q_OBJECT +public: + explicit FlatpakResource(const AppStream::Component &component, FlatpakInstallation* installation, FlatpakBackend *parent); + + enum PropertyKind { + DownloadSize = 0, + InstalledSize, + RequiredRuntime + }; + + enum PropertyState { + NotKnownYet = 0, + AlreadyKnown, + UnknownOrFailed, + }; + + enum ResourceType { + DesktopApp = 0, + Runtime, + Source + }; + + struct Id { + FlatpakInstallation * installation; + QString origin; + FlatpakResource::ResourceType type; + QString id; + QString branch; + QString arch; + bool operator!=(const Id& other) const { return !operator==(other); } + bool operator==(const Id& other) const { return &other == this || ( + other.installation == installation + && other.origin == origin + && other.type == type + && other.id == id + && other.branch == branch + && other.arch == arch + ); } + }; + + static QString typeAsString(ResourceType type) { + if (type == DesktopApp) { + return QLatin1String("app"); + } + return QLatin1String("runtime"); + } + + QString installationPath() const; + static QString installationPath(FlatpakInstallation* installation); + + AppStream::Component appstreamComponent() const; + QList addonsInformation() override; + QString availableVersion() const override; + QString appstreamId() const override; + QString arch() const; + QString branch() const; + bool canExecute() const override; + QStringList categories() override; + QString comment() override; + QString commit() const; + int downloadSize() const; + QVariant icon() const override; + QString installedVersion() const override; + int installedSize() const; + bool isTechnical() const override; + QUrl homepage() override; + QUrl helpURL() override; + QUrl bugURL() override; + QUrl donationURL() override; + QString flatpakFileType() const; + QString flatpakName() const; + QString license() override; + QString longDescription() override; + QString name() const override; + QString origin() const override; + QString packageName() const override; + PropertyState propertyState(PropertyKind kind) const; + QUrl resourceFile() const; + QString runtime() const; + QString section() override; + int size() override; + QString sizeDescription() override; + AbstractResource::State state() override; + ResourceType type() const; + QString typeAsString() const; + FlatpakResource::Id uniqueId() const; + QUrl url() const override; + QDate releaseDate() const override; + + FlatpakInstallation* installation() const { return m_id.installation; } + + void invokeApplication() const override; + void fetchChangelog() override; + void fetchScreenshots() override; + + void setBranch(const QString &branch); + void setBundledIcon(const QPixmap &pixmap); + void setDownloadSize(int size); + void setIconPath(const QString &path); + void setInstalledSize(int size); + void setFlatpakFileType(const QString &fileType); + void setFlatpakName(const QString &name); + void setOrigin(const QString &origin); + void setPropertyState(PropertyKind kind, PropertyState state); + void setResourceFile(const QUrl &url); + void setRuntime(const QString &runtime); + void setState(State state); + void setType(ResourceType type); +// void setAddons(const AddonList& addons); +// void setAddonInstalled(const QString& addon, bool installed); + + void updateFromRef(FlatpakRef* ref); + QString sourceIcon() const override; + +Q_SIGNALS: + void propertyStateChanged(PropertyKind kind, PropertyState state); + +private: + void setArch(const QString &arch); + void setCommit(const QString &commit); + + const AppStream::Component m_appdata; + FlatpakResource::Id m_id; + FlatpakRefKind m_flatpakRefKind; + QPixmap m_bundledIcon; + QString m_commit; + int m_downloadSize; + QString m_flatpakFileType; + QString m_flatpakName; + QString m_iconPath; + int m_installedSize; + QHash m_propertyStates; + QUrl m_resourceFile; + QString m_runtime; + AbstractResource::State m_state; +}; + +inline uint qHash(const FlatpakResource::Id &key) +{ + return qHash(key.installation) + ^ qHash(key.origin) + ^ qHash(key.type) + ^ qHash(key.id) + ^ qHash(key.branch) + ^ qHash(key.arch) + ; +} + +#endif // FLATPAKRESOURCE_H diff --git a/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp new file mode 100644 index 0000000..ba11f89 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp @@ -0,0 +1,308 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakSourcesBackend.h" +#include "FlatpakResource.h" +#include "FlatpakBackend.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +class FlatpakSourceItem : public QStandardItem +{ +public: + FlatpakSourceItem(const QString &text) : QStandardItem(text) { } + void setFlatpakInstallation(FlatpakInstallation *installation) { m_installation = installation; } + FlatpakInstallation *flatpakInstallation() const { return m_installation; } + +private: + FlatpakInstallation *m_installation; +}; + +FlatpakSourcesBackend::FlatpakSourcesBackend(const QVector &installations, AbstractResourcesBackend * parent) + : AbstractSourcesBackend(parent) + , m_preferredInstallation(installations.constFirst()) + , m_sources(new QStandardItemModel(this)) + , m_flathubAction(new QAction(i18n("Add Flathub"), this)) + , m_noSourcesItem(new QStandardItem(QStringLiteral("-"))) +{ + m_flathubAction->setToolTip(QStringLiteral("flathub")); + connect(m_flathubAction, &QAction::triggered, this, [this](){ + addSource(QStringLiteral("https://flathub.org/repo/flathub.flatpakrepo")); + }); + for (auto installation : installations) { + if (!listRepositories(installation)) { + qWarning() << "Failed to list repositories from installation" << installation; + } + } + + m_noSourcesItem->setEnabled(false); + if (m_sources->rowCount() == 0) { + m_sources->appendRow(m_noSourcesItem); + } +} + +FlatpakSourcesBackend::~FlatpakSourcesBackend() +{ + QStringList ids; + for (int i = 0, c = m_sources->rowCount(); iitem(i); + ids << it->data(IdRole).toString(); + } + + auto conf = KSharedConfig::openConfig(); + KConfigGroup group = conf->group("FlatpakSources"); + group.writeEntry("Sources", ids); +} + +QAbstractItemModel* FlatpakSourcesBackend::sources() +{ + return m_sources; +} + +bool FlatpakSourcesBackend::addSource(const QString &id) +{ + FlatpakBackend* backend = qobject_cast(parent()); + const QUrl flatpakrepoUrl(id); + + if (id.isEmpty() || !flatpakrepoUrl.isValid()) + return false; + + if (flatpakrepoUrl.isLocalFile()) { + auto res = backend->addSourceFromFlatpakRepo(flatpakrepoUrl); + if (res) + backend->installApplication(res); + else + backend->passiveMessage(i18n("Could not add the source %1", flatpakrepoUrl.toDisplayString())); + } else { + AbstractResourcesBackend::Filters filter; + filter.resourceUrl = flatpakrepoUrl; + auto stream = new StoredResultsStream ({backend->search(filter)}); + connect(stream, &StoredResultsStream::finished, this, [backend, stream, flatpakrepoUrl]() { + const auto res = stream->resources(); + if (!res.isEmpty()) { + Q_ASSERT(res.count() == 1); + backend->installApplication(res.first()); + } else { + backend->passiveMessage(i18n("Could not add the source %1", flatpakrepoUrl.toDisplayString())); + } + }); + } + return true; +} + +QStandardItem * FlatpakSourcesBackend::sourceById(const QString& id) const +{ + QStandardItem* sourceIt = nullptr; + for (int i = 0, c = m_sources->rowCount(); iitem(i); + if (it->data(IdRole) == id) { + sourceIt = it; + break; + } + } + return sourceIt; +} + +bool FlatpakSourcesBackend::removeSource(const QString &id) +{ + auto sourceIt = sourceById(id); + if (sourceIt) { + FlatpakSourceItem *sourceItem = static_cast(sourceIt); + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GError) error = nullptr; + if (flatpak_installation_remove_remote(sourceItem->flatpakInstallation(), id.toUtf8().constData(), cancellable, &error)) { + m_sources->removeRow(sourceItem->row()); + + if (m_sources->rowCount() == 0) { + m_sources->appendRow(m_noSourcesItem); + } + return true; + } else { + qWarning() << "Failed to remove " << id << " remote repository:" << error->message; + return false; + } + } else { + qWarning() << "couldn't find " << id; + return false; + } + + return false; +} + +QList FlatpakSourcesBackend::actions() const +{ + return { m_flathubAction }; +} + +bool FlatpakSourcesBackend::listRepositories(FlatpakInstallation* installation) +{ + Q_ASSERT(installation); + + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(GPtrArray) remotes = flatpak_installation_list_remotes(installation, cancellable, nullptr); + + if (!remotes) { + return false; + } + + for (uint i = 0; i < remotes->len; i++) { + FlatpakRemote *remote = FLATPAK_REMOTE(g_ptr_array_index(remotes, i)); + + if (flatpak_remote_get_noenumerate(remote)) { + continue; + } + + addRemote(remote, installation); + } + + return true; +} + +FlatpakRemote * FlatpakSourcesBackend::installSource(FlatpakResource *resource) +{ + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + + auto remote = flatpak_installation_get_remote_by_name(m_preferredInstallation, resource->flatpakName().toUtf8().constData(), cancellable, nullptr); + if (remote) { + qWarning() << "Source " << resource->flatpakName() << " already exists"; + return nullptr; + } + + remote = flatpak_remote_new(resource->flatpakName().toUtf8().constData()); + flatpak_remote_set_url(remote, resource->getMetadata(QStringLiteral("repo-url")).toString().toUtf8().constData()); + flatpak_remote_set_noenumerate(remote, false); + flatpak_remote_set_title(remote, resource->comment().toUtf8().constData()); + + const QString gpgKey = resource->getMetadata(QStringLiteral("gpg-key")).toString(); + if (!gpgKey.isEmpty()) { + gsize dataLen = 0; + g_autofree guchar *data = nullptr; + g_autoptr(GBytes) bytes = nullptr; + data = g_base64_decode(gpgKey.toUtf8().constData(), &dataLen); + bytes = g_bytes_new(data, dataLen); + flatpak_remote_set_gpg_verify(remote, true); + flatpak_remote_set_gpg_key(remote, bytes); + } else { + flatpak_remote_set_gpg_verify(remote, false); + } + + if (!resource->branch().isEmpty()) { + flatpak_remote_set_default_branch(remote, resource->branch().toUtf8().constData()); + } + + if (!flatpak_installation_modify_remote(m_preferredInstallation, remote, cancellable, nullptr)) { + qWarning() << "Failed to add source " << resource->flatpakName(); + return nullptr; + } + + addRemote(remote, m_preferredInstallation); + + return remote; +} + +void FlatpakSourcesBackend::addRemote(FlatpakRemote *remote, FlatpakInstallation *installation) +{ + const QString id = QString::fromUtf8(flatpak_remote_get_name(remote)); + const QString title = QString::fromUtf8(flatpak_remote_get_title(remote)); + const QUrl remoteUrl(QString::fromUtf8(flatpak_remote_get_url(remote))); + + for(QAction *action: actions()) { + if (action->toolTip() == id) { + action->setEnabled(false); + action->setVisible(false); + } + } + + FlatpakSourceItem *it = new FlatpakSourceItem(!title.isEmpty() ? title : id); + it->setCheckState(flatpak_remote_get_disabled(remote) ? Qt::Unchecked : Qt::Checked); + it->setData(remoteUrl.isLocalFile() ? remoteUrl.toLocalFile() : remoteUrl.host(), Qt::ToolTipRole); + it->setData(id, IdRole); + it->setFlatpakInstallation(installation); + + int idx = -1; + { + const auto conf = KSharedConfig::openConfig(); + const KConfigGroup group = conf->group("FlatpakSources"); + const auto ids = group.readEntry("Sources", QStringList()); + + const auto ourIdx = ids.indexOf(id); + if (ourIdx<0) { //If not present, we put it on top + idx = 0; + } else { + idx=0; + for(int c=m_sources->rowCount(); idxitem(idx); + const int compIdx = ids.indexOf(compIt->data(IdRole).toString()); + if (compIdx >= ourIdx) { + break; + } + } + } + } + + m_sources->insertRow(idx, it); + if (m_sources->rowCount() == 1) + Q_EMIT firstSourceIdChanged(); + Q_EMIT lastSourceIdChanged(); + + if (m_sources->rowCount() > 0) { + m_sources->takeRow(m_noSourcesItem->row()); + } +} + +QString FlatpakSourcesBackend::idDescription() +{ + return i18n("Flatpak repository URI (*.flatpakrepo)"); +} + +bool FlatpakSourcesBackend::moveSource(const QString& sourceId, int delta) +{ + auto item = sourceById(sourceId); + if (!item) + return false; + const auto row = item->row(); + auto prevRow = m_sources->takeRow(row); + Q_ASSERT(!prevRow.isEmpty()); + + const auto destRow = row + (delta>0? delta : delta); + m_sources->insertRow(destRow, prevRow); + if (destRow == 0 || row == 0) + Q_EMIT firstSourceIdChanged(); + if (destRow == m_sources->rowCount() - 1 || row == m_sources->rowCount() - 1) + Q_EMIT lastSourceIdChanged(); + return true; +} + +int FlatpakSourcesBackend::originIndex(const QString& sourceId) const +{ + auto item = sourceById(sourceId); + return item ? item->row() : INT_MAX; +} diff --git a/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h new file mode 100644 index 0000000..8ac11e2 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKSOURCESBACKEND_H +#define FLATPAKSOURCESBACKEND_H + +#include +#include + +extern "C" { +#include +} + +class FlatpakResource; +class FlatpakSourcesBackend : public AbstractSourcesBackend +{ +Q_OBJECT +public: + explicit FlatpakSourcesBackend(const QVector& installations, AbstractResourcesBackend *parent); + ~FlatpakSourcesBackend() override; + + QAbstractItemModel* sources() override; + bool addSource(const QString &id) override; + bool removeSource(const QString &id) override; + QString idDescription() override; + QList actions() const override; + bool supportsAdding() const override { return true; } + bool canFilterSources() const override { return true; } + + FlatpakRemote * installSource(FlatpakResource *resource); + bool canMoveSources() const override { return true; } + + bool moveSource(const QString & sourceId, int delta) override; + int originIndex(const QString& sourceId) const; + +private: + QStandardItem* sourceById(const QString & sourceId) const; + bool listRepositories(FlatpakInstallation *installation); + void addRemote(FlatpakRemote *remote, FlatpakInstallation *installation); + + FlatpakInstallation *m_preferredInstallation; + QStandardItemModel* m_sources; + QAction* const m_flathubAction; + QStandardItem* m_noSourcesItem; +}; + +#endif // FLATPAKSOURCESBACKEND_H diff --git a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp new file mode 100644 index 0000000..c8f1293 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp @@ -0,0 +1,179 @@ +/*************************************************************************** + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FlatpakTransactionThread.h" +#include "FlatpakResource.h" + +#include + +static void flatpakInstallationProgressCallback(const gchar *stats, guint progress, gboolean estimating, gpointer userData) +{ + Q_UNUSED(estimating); + Q_UNUSED(stats); + + FlatpakTransactionThread *transactionJob = (FlatpakTransactionThread*)userData; + if (!transactionJob) { + return; + } + + transactionJob->setProgress(progress); +} + +FlatpakTransactionThread::FlatpakTransactionThread(FlatpakResource *app, const QPair &relatedRef, Transaction::Role role) + : QThread() + , m_result(false) + , m_progress(0) + , m_relatedRef(relatedRef.first) + , m_relatedRefKind(relatedRef.second) + , m_app(app) + , m_role(role) +{ + m_cancellable = g_cancellable_new(); +} + +FlatpakTransactionThread::~FlatpakTransactionThread() +{ + g_object_unref(m_cancellable); +} + +void FlatpakTransactionThread::cancel() +{ + g_cancellable_cancel(m_cancellable); +} + +void FlatpakTransactionThread::run() +{ + g_autoptr(GError) localError = nullptr; + g_autoptr(FlatpakInstalledRef) ref = nullptr; + + const QString refName = m_relatedRef.isEmpty() ? m_app->flatpakName() : m_relatedRef; + const uint kind = m_relatedRef.isEmpty() ? (uint)m_app->type() : m_relatedRefKind; + + if (m_role == Transaction::Role::InstallRole) { + bool installRelatedRef = false; + // Before we attempt to upgrade related refs we should verify whether they are installed in first place + if (m_app->state() == AbstractResource::Upgradeable && !m_relatedRef.isEmpty()) { + g_autoptr(GError) installedRefError = nullptr; + FlatpakInstalledRef *installedRef = flatpak_installation_get_installed_ref(m_app->installation(), + kind == FlatpakResource::DesktopApp ? FLATPAK_REF_KIND_APP : FLATPAK_REF_KIND_RUNTIME, + refName.toUtf8().constData(), + m_app->arch().toUtf8().constData(), + m_app->branch().toUtf8().constData(), + m_cancellable, &installedRefError); + if (installedRefError) { + qWarning() << "Failed to check whether related ref is installed: " << installedRefError; + } + installRelatedRef = installedRef == nullptr; + } + + if (m_app->state() == AbstractResource::Upgradeable && !installRelatedRef) { + ref = flatpak_installation_update(m_app->installation(), + FLATPAK_UPDATE_FLAGS_NONE, + kind == FlatpakResource::DesktopApp ? FLATPAK_REF_KIND_APP : FLATPAK_REF_KIND_RUNTIME, + refName.toUtf8().constData(), + m_app->arch().toUtf8().constData(), + m_app->branch().toUtf8().constData(), + flatpakInstallationProgressCallback, + this, + m_cancellable, &localError); + } else { + if (m_app->flatpakFileType() == QStringLiteral("flatpak")) { + g_autoptr(GFile) file = g_file_new_for_path(m_app->resourceFile().toLocalFile().toUtf8().constData()); + if (!file) { + qWarning() << "Failed to install bundled application" << refName; + } + ref = flatpak_installation_install_bundle(m_app->installation(), file, flatpakInstallationProgressCallback, this, m_cancellable, &localError); + } else { + ref = flatpak_installation_install(m_app->installation(), + m_app->origin().toUtf8().constData(), + kind == FlatpakResource::DesktopApp ? FLATPAK_REF_KIND_APP : FLATPAK_REF_KIND_RUNTIME, + refName.toUtf8().constData(), + m_app->arch().toUtf8().constData(), + m_app->branch().toUtf8().constData(), + flatpakInstallationProgressCallback, + this, + m_cancellable, &localError); + } + } + + if (!ref) { + m_result = false; + m_errorMessage = QString::fromUtf8(localError->message); + // We are done so we can set the progress to 100 + setProgress(100); + qWarning() << "Failed to install" << refName << ':' << m_errorMessage; + return; + } + } else if (m_role == Transaction::Role::RemoveRole) { + if (!flatpak_installation_uninstall(m_app->installation(), + kind == FlatpakResource::DesktopApp ? FLATPAK_REF_KIND_APP : FLATPAK_REF_KIND_RUNTIME, + refName.toUtf8().constData(), + m_app->arch().toUtf8().constData(), + m_app->branch().toUtf8().constData(), + flatpakInstallationProgressCallback, + this, + m_cancellable, &localError)) { + m_result = false; + m_errorMessage = QString::fromUtf8(localError->message); + // We are done so we can set the progress to 100 + setProgress(100); + qWarning() << "Failed to uninstall" << refName << ':' << m_errorMessage; + return; + } + } + + // We are done so we can set the progress to 100 + m_result = true; + setProgress(100); +} + +FlatpakResource * FlatpakTransactionThread::app() const +{ + return m_app; +} + +bool FlatpakTransactionThread::isRelated() const +{ + return !m_relatedRef.isEmpty(); +} + +int FlatpakTransactionThread::progress() const +{ + return m_progress; +} + +void FlatpakTransactionThread::setProgress(int progress) +{ + if (m_progress != progress) { + m_progress = progress; + Q_EMIT progressChanged(m_progress); + } +} + +QString FlatpakTransactionThread::errorMessage() const +{ + return m_errorMessage; +} + +bool FlatpakTransactionThread::result() const +{ + return m_result; +} + diff --git a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h new file mode 100644 index 0000000..34c7235 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h @@ -0,0 +1,69 @@ +/*************************************************************************** + * Copyright © 2017 Jan Grulich * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FLATPAKTRANSACTIONTHREAD_H +#define FLATPAKTRANSACTIONTHREAD_H + +extern "C" { +#include +#include +#include +} + +#include +#include + +class FlatpakResource; +class FlatpakTransactionThread : public QThread +{ +Q_OBJECT +public: + FlatpakTransactionThread(FlatpakResource *app, const QPair &relatedRef, Transaction::Role role); + ~FlatpakTransactionThread() override; + + void cancel(); + void run() override; + + FlatpakResource * app() const; + + bool isRelated() const; + + int progress() const; + void setProgress(int progress); + + QString errorMessage() const; + bool result() const; + +Q_SIGNALS: + void progressChanged(int progress); + +private: + bool m_result; + int m_progress; + QString m_errorMessage; + QString m_relatedRef; + uint m_relatedRefKind; + GCancellable *m_cancellable; + FlatpakResource *m_app; + Transaction::Role m_role; +}; + +#endif // FLATPAKTRANSACTIONJOB_H + diff --git a/libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml b/libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml new file mode 100644 index 0000000..e0108f2 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml @@ -0,0 +1,551 @@ + + + + + Applications + applications-internet + pkcategories/applicationcrop.jpg + + + Application + + + + Accessories + applications-utilities + pkcategories/accessoriescrop.jpg + + + Utility + Accessibility + + + + + + Accessibility + preferences-desktop-accessibility + pkcategories/accesscropped.jpg + + + Accessibility + Settings + + + + + + Developer Tools + pkcategories/toolcrop.jpg + applications-development + + + Development + + + + + Debugging + tools-report-bug + + + Debugger + + + + + + Graphic Interface Design + + + GUIDesigner + + + + + + IDEs + + + IDE + + + + + + Localization + preferences-desktop-locale + + + Translation + + + + + + Profiling + + + Profiling + + + + + + Web Development + + + WebDevelopment + + + applications-internet + + + + + + + Education + applications-education + pkcategories/educationcrop.jpg + + + Education + + + + + + + Science and Engineering + pkcategories/sciencecrop.jpg + applications-science + + + Science + Engineering + + + + Astronomy + + + Astronomy + + + + + Biology + + + Biology + + + + + Chemistry + applications-science + + + Chemistry + + + + + Computer Science and Robotics + computer + + + ArtificialIntelligence + ComputerScience + Robotics + + + + + Electronics + audio-card + + + Electronics + + + + + Engineering + applications-engineering + + + Engineering + + + + + Geography + + + Geography + + + + + Geology + + + Geology + Geoscience + + + + + Mathematics + applications-education-mathematics + + + DataVisualization + Math + NumericalAnalysis + + + + + Physics + step + + + Physics + + + + + + + Games + pkcategories/gamecrop.jpg + applications-games + + + Game + + + + + Arcade + applications-games-arcade + + + ArcadeGame + + + + + Board Games + applications-games-board + + + BoardGame + + + + + Card Games + applications-games-card + + + CardGame + + + + + Puzzles + applications-games + + + LogicGame + + + + + Role Playing + applications-games + + + RolePlaying + + + + + Simulation + applications-games-strategy + + + Simulation + + + + + Strategy + applications-games-strategy + + + StrategyGame + + + + + Sports + applications-games + + + SportsGame + + + + + Action + applications-games + + + ActionGame + + + + + Emulators + applications-games + + + Emulator + + + + + + + + + Graphics + pkcategories/graphiccrop.jpg + applications-graphics + + + Graphics + + + + 3D + + + 3DGraphics + + + + + Drawing + draw-freehand + + + VectorGraphics + + Viewer + + + + + + Painting and Editing + draw-brush + + + RasterGraphics + + Viewer + Scanning + + + + + + Photography + image-x-generic + + + Photography + + + + + Publishing + document-export + + + Publishing + + + + + Scanning and OCR + scanner + + + Scanning + OCR + + + + + Viewers + graphics-viewer-document + + + Viewer + + + + + + + + Internet + applications-internet + pkcategories/internetcrop.jpg + + + Network + + + + Chat + kopete + + + InstantMessaging + IRCClient + + + + + File Sharing + ktorrent + + + FileTransfer + + + + + Mail + internet-mail + + + Email + + + + + Web Browsers + internet-web-browser + + + WebBrowser + + + + + + + + Multimedia + pkcategories/multimediacrop.jpg + applications-multimedia + + + AudioVideo + + + + + Audio and Video Editors + edit-cut + + + AudioVideoEditing + + + + + Audio Players + audio-headphones + + + + AudioVideo + Audio + + + Video + AudioVideoEditing + DiscBurning + Music + Sequencer + Mixer + Utility + + + + + + Video Players + emblem-videos-symbolic + + + + AudioVideo + Video + + + Audio + AudioVideoEditing + DiscBurning + Utility + + + + + + CD and DVD + media-optical + + + DiscBurning + + + + + + + + Office + pkcategories/officecrop.jpg + applications-office + + + Office + + + + + + System Settings + pkcategories/settingscrop.jpg + preferences-system + + + Settings + System + + + + + + diff --git a/libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop b/libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop new file mode 100644 index 0000000..cfaec67 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop @@ -0,0 +1,49 @@ +[Desktop Entry] +Name=Discover +Name[ar]=استكشف +Name[ast]=Discover +Name[ca]=Discover +Name[ca@valencia]=Discover +Name[da]=Discover +Name[de]=Discover +Name[el]=Discover +Name[en_GB]=Discover +Name[es]=Discover +Name[et]=Avastusretk +Name[eu]=Discover +Name[fi]=Discover +Name[fr]=Discover +Name[gl]=Descubrir +Name[he]=מרכז התוכנות Discover +Name[hu]=Discover +Name[ia]=Discoperi +Name[id]=Discover +Name[it]=Discover +Name[ko]=발견 +Name[nl]=Ontdekken +Name[nn]=Discover +Name[pa]=ਖੋਜ +Name[pl]=Odkrywca +Name[pt]=Discover +Name[pt_BR]=Discover +Name[ru]=Discover +Name[sk]=Objaviť +Name[sl]=Discover +Name[sr]=Oткривач +Name[sr@ijekavian]=Oткривач +Name[sr@ijekavianlatin]=Otkrivač +Name[sr@latin]=Otkrivač +Name[sv]=Upptäck +Name[tr]=Keşfet +Name[uk]=Discover +Name[x-test]=xxDiscoverxx +Name[zh_CN]=发现 +Name[zh_TW]=Discover +Exec=plasma-discover %U +Icon=plasmadiscover +Type=Application +X-DocPath=plasma-discover/index.html +Categories=Qt;KDE;System; +NoDisplay=true + +MimeType=application/vnd.flatpak.ref;application/vnd.flatpak;application/vnd.flatpak.repo diff --git a/libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml b/libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml new file mode 100644 index 0000000..8fc45c5 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml @@ -0,0 +1,96 @@ + + + org.kde.discover.flatpak + Flatpak backend + سَند فلاتپاك + Dorsal del Flatpak + Dorsal del Flatpak + Podpůrná vrstva Flatpak + Flatpak-Backend + Flatpak backend + Motor Flatpak + Flatpak bizkarraldeakoa + Flatpak-taustaosa + Moteur Flatpak + Infraestrutura de Flatpak + Backend Flatpak + Motore Flatpak + Flatpak 백엔드 + Flatpak-motor + Flatpak-backend + Flatpak-motor + Silnik Flatpak + Infra-estrutura do Flatpak + Infraestrutura Flatpak + Модуль для работы с форматом Flatpak + Backend Flatpak + Zaledje Flatpak + Gränssnitt för Flatpak + Модуль Flatpak + xxFlatpak backendxx + Flatpak 后端 + Flatpak 後端 + Integrates Flatpak applications into Discover + يُكامل تطبيقات ”فلاتپاك“ في «استكشف» + Integra aplicacions del Flatpak al Discover + Integra aplicacions del Flatpak al Discover + Integriert Flatpak-Anwendungen in Discover + Integrates Flatpak applications into Discover + Integra aplicaciones Flatpak en Discover + Flatpak aplikazioak Discover-ren integratzen ditu + Yhdistää Flatpak-sovellukset Discoveriin + Intègre les applications Flatpak au sein de Discover + Integra aplicativos de Flatpak con Discover + Aplikasi Flatpak terintegrasi ke dalam Discover + Integra le applicazioni Flatpak in Discover + Flatpak 프로그램을 발견에 통합 + Integrerer Flatpak-programmer i Discover + Integreert Flatpak-toepassingen in Discover + Integrerer Flatpak-program i Discover + Integruje aplikacje Flatpak w Odkrywcy + Integra as aplicações do Flatpak no Discover + Integra aplicativos Flatpak no Discover + Добавление поддержки формата Flatpak в центр программ Discover + Integruje aplikácie Flatpad do Discoveru + V Discover vgradi programe Flatpack + Integrerar Flatpak-program i Discover + Інтеграція програм Flatpak з Discover + xxIntegrates Flatpak applications into Discoverxx + 将 Flatpak 应用程序集成到发现者中 + 將 Flatpak 應用程式整合進 Discover 商店 + org.kde.discover.desktop + CC0-1.0 + GPL-2.0+ + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol González + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + Aleix Pol Gonzalez + xxAleix Pol Gonzalezxx + Aleix Pol Gonzalez + Aleix Pol Gonzalez + system-software-install + diff --git a/libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg b/libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg new file mode 100644 index 0000000..fc53a65 --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/libdiscover/backends/FlatpakBackend/tests/CMakeLists.txt b/libdiscover/backends/FlatpakBackend/tests/CMakeLists.txt new file mode 100644 index 0000000..306619b --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/tests/CMakeLists.txt @@ -0,0 +1 @@ +add_unit_test(flatpaktest FlatpakTest.cpp) diff --git a/libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp b/libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp new file mode 100644 index 0000000..94751ef --- /dev/null +++ b/libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp @@ -0,0 +1,163 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +class FlatpakTest + : public QObject +{ + Q_OBJECT +public: + AbstractResourcesBackend* backendByName(ResourcesModel* m, const QString& name) + { + QVector backends = m->backends(); + foreach(AbstractResourcesBackend* backend, backends) { + if(QLatin1String(backend->metaObject()->className()) == name) { + return backend; + } + } + return nullptr; + } + + FlatpakTest(QObject* parent = nullptr): QObject(parent) + { + qputenv("FLATPAK_TEST_MODE", "ON"); + m_model = new ResourcesModel(QStringLiteral("flatpak-backend"), this); + m_appBackend = backendByName(m_model, QStringLiteral("FlatpakBackend")); + } + +private Q_SLOTS: + void init() + { + QVERIFY(m_appBackend); + while(m_appBackend->isFetching()) { + QSignalSpy spy(m_appBackend, &AbstractResourcesBackend::fetchingChanged); + QVERIFY(spy.wait()); + } + } + + void testAddSource() + { + auto res = getAllResources(m_appBackend); + QCOMPARE(res.count(), 0); + + auto m = SourcesModel::global(); + auto bk = qobject_cast(m->index(0, 0).data(SourcesModel::SourcesBackend).value()); + + QSignalSpy initializedSpy(m_appBackend, SIGNAL(initialized())); + if (m->rowCount() == 1) { + QSignalSpy spy(m, &SourcesModel::rowsInserted); + bk->actions().constFirst()->trigger(); + QVERIFY(spy.count() || spy.wait()); + } + QVERIFY(initializedSpy.count() || initializedSpy.wait()); + auto resFlathub = getAllResources(m_appBackend); + QVERIFY(resFlathub.count() > 0); + } + + void testListOrigin() + { + AbstractResourcesBackend::Filters f; + f.origin = QStringLiteral("flathub"); + auto resources= getResources(m_appBackend->search(f), true); + QVERIFY(resources.count()>0); + } + + void testInstallApp() + { + AbstractResourcesBackend::Filters f; + f.resourceUrl = QUrl(QStringLiteral("appstream://com.github.rssguard.desktop")); + const auto res = getResources(m_appBackend->search(f)); + QVERIFY(res.count() == 1); + + const auto resRssguard = res.constFirst(); + QCOMPARE(resRssguard->state(), AbstractResource::None); + waitTransaction(m_appBackend->installApplication(resRssguard)); + QCOMPARE(resRssguard->state(), AbstractResource::Installed); + waitTransaction(m_appBackend->removeApplication(resRssguard)); + QCOMPARE(resRssguard->state(), AbstractResource::None); + } + + void testCancelInstallation() + { + AbstractResourcesBackend::Filters f; + f.resourceUrl = QUrl(QStringLiteral("appstream://com.github.rssguard.desktop")); + const auto res = getResources(m_appBackend->search(f)); + QVERIFY(res.count() == 1); + + const auto resRssguard = res.constFirst(); + QCOMPARE(resRssguard->state(), AbstractResource::None); + auto t = m_appBackend->installApplication(resRssguard); + QSignalSpy spy(t, &Transaction::statusChanged); + QVERIFY(spy.wait()); + QCOMPARE(t->status(), Transaction::CommittingStatus); + t->cancel(); + QCOMPARE(t->status(), Transaction::CancelledStatus); + } + +private: + void waitTransaction(Transaction* t) { + QSignalSpy spyInstalled(t->resource(), &AbstractResource::stateChanged); + QSignalSpy destructionSpy(t, &QObject::destroyed); + while (t && spyInstalled.count() == 0) { + qDebug() << t->status() << t->progress(); + spyInstalled.wait(100); + } + QVERIFY(destructionSpy.count() || destructionSpy.wait()); + } + + QVector getResources(ResultsStream* stream, bool canBeEmpty = true) + { + Q_ASSERT(stream); + QSignalSpy spyResources(stream, &ResultsStream::destroyed); + QVector resources; + connect(stream, &ResultsStream::resourcesFound, this, [&resources](const QVector& res) { resources += res; }); + Q_ASSERT(spyResources.wait(10000)); + Q_ASSERT(!resources.isEmpty() || canBeEmpty); + return resources; + } + + QVector getAllResources(AbstractResourcesBackend* backend) + { + AbstractResourcesBackend::Filters f; + if (CategoryModel::global()->rootCategories().isEmpty()) + CategoryModel::global()->populateCategories(); + f.category = CategoryModel::global()->rootCategories().constFirst(); + return getResources(backend->search(f), true); + } + + ResourcesModel* m_model; + AbstractResourcesBackend* m_appBackend; +}; + +QTEST_MAIN(FlatpakTest) + +#include "FlatpakTest.moc" diff --git a/libdiscover/backends/FwupdBackend/CMakeLists.txt b/libdiscover/backends/FwupdBackend/CMakeLists.txt new file mode 100644 index 0000000..b46a7ee --- /dev/null +++ b/libdiscover/backends/FwupdBackend/CMakeLists.txt @@ -0,0 +1,14 @@ +add_definitions( -DPROJECT_NAME=${PROJECT_NAME} -DPROJECT_VERSION=${PROJECT_VERSION}) + +set(fwupd-backend_SRCS + FwupdResource.cpp + FwupdBackend.cpp + FwupdTransaction.cpp + FwupdSourcesBackend.cpp +) + +add_library(fwupd-backend MODULE ${fwupd-backend_SRCS}) +target_link_libraries(fwupd-backend Qt5::Core Qt5::Widgets Qt5::Concurrent KF5::CoreAddons KF5::ConfigCore Discover::Common PkgConfig::Fwupd) + +install(TARGETS fwupd-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) + diff --git a/libdiscover/backends/FwupdBackend/FwupdBackend.cpp b/libdiscover/backends/FwupdBackend/FwupdBackend.cpp new file mode 100644 index 0000000..93acee6 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdBackend.cpp @@ -0,0 +1,566 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FwupdBackend.h" +#include "FwupdResource.h" +#include "FwupdTransaction.h" +#include "FwupdSourcesBackend.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +DISCOVER_BACKEND_PLUGIN(FwupdBackend) + +FwupdBackend::FwupdBackend(QObject* parent) + : AbstractResourcesBackend(parent) + , client(fwupd_client_new()) + , m_updater(new StandardBackendUpdater(this)) + , m_cancellable(g_cancellable_new()) +{ + connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &FwupdBackend::updatesCountChanged); + + SourcesModel::global()->addSourcesBackend(new FwupdSourcesBackend(this)); + QTimer::singleShot(0, this, &FwupdBackend::checkForUpdates); +} + +QMap FwupdBackend::gchecksumToQChryptographicHash() +{ + static QMap map; + if (map.isEmpty()) { + map.insert(G_CHECKSUM_SHA1,QCryptographicHash::Sha1); + map.insert(G_CHECKSUM_SHA256,QCryptographicHash::Sha256); + map.insert(G_CHECKSUM_SHA512,QCryptographicHash::Sha512); + map.insert(G_CHECKSUM_MD5,QCryptographicHash::Md5); + } + return map; +} + +FwupdBackend::~FwupdBackend() +{ + g_cancellable_cancel(m_cancellable); + m_threadPool.waitForDone(200); + m_threadPool.clear(); + g_object_unref(m_cancellable); + + g_object_unref(client); +} + +void FwupdBackend::addResourceToList(FwupdResource* res) +{ + res->setParent(this); + auto &r = m_resources[res->packageName()]; + if (r) { + Q_EMIT resourceRemoved(r); + delete r; + } + r = res; + Q_ASSERT(m_resources.value(res->packageName()) == res); +} + +FwupdResource * FwupdBackend::createDevice(FwupdDevice *device) +{ + const QString name = QString::fromUtf8(fwupd_device_get_name(device)); + FwupdResource* res = new FwupdResource(name, this); + + const QString deviceID = QString::fromUtf8(fwupd_device_get_id(device)); + res->setId(QStringLiteral("org.fwupd.%1.device").arg(QString(deviceID).replace(QLatin1Char('/'),QLatin1Char('_')))); + res->setDeviceId(deviceID); + res->setDeviceDetails(device); + return res; +} + +FwupdResource * FwupdBackend::createRelease(FwupdDevice *device) +{ + FwupdResource* res = createDevice(device); + + FwupdRelease *release = fwupd_device_get_release_default(device); + res->setId(QString::fromUtf8(fwupd_release_get_appstream_id(release))); + res->setReleaseDetails(release); + + /* the same as we have already */ + if (qstrcmp(fwupd_device_get_version(device), fwupd_release_get_version(release)) == 0) + { + qWarning() << "Fwupd Error: same firmware version as installed"; + } + + return res; + +} + +void FwupdBackend::addUpdates() +{ + g_autoptr(GError) error = nullptr; + g_autoptr(GPtrArray) devices = fwupd_client_get_devices(client, nullptr, &error); + + if (!devices) + { + if (g_error_matches(error, FWUPD_ERROR, FWUPD_ERROR_NOTHING_TO_DO)) + qDebug() << "Fwupd Info: No Devices Found"; + else + handleError(error); + return; + } + + for(uint i = 0; i < devices->len; i++) + { + FwupdDevice *device = (FwupdDevice *)g_ptr_array_index(devices, i); + + if (!fwupd_device_has_flag(device, FWUPD_DEVICE_FLAG_SUPPORTED)) + continue; + + if (fwupd_device_has_flag(device, FWUPD_DEVICE_FLAG_LOCKED)) + continue; + + if (!fwupd_device_has_flag(device, FWUPD_DEVICE_FLAG_UPDATABLE)) + continue; + + g_autoptr(GError) error2 = nullptr; + g_autoptr(GPtrArray) rels = fwupd_client_get_upgrades(client, fwupd_device_get_id(device), nullptr, &error2); + if (rels) { + fwupd_device_add_release(device, (FwupdRelease *)g_ptr_array_index(rels, 0)); + auto res = createApp(device); + if (!res) + { + qWarning() << "Fwupd Error: Cannot Create App From Device" << fwupd_device_get_name(device); + } + else + { + QString longdescription; + for(uint j = 0; j < rels->len; j++) + { + FwupdRelease *release = (FwupdRelease *)g_ptr_array_index(rels, j); + if (!fwupd_release_get_description(release)) + continue; + longdescription += QStringLiteral("Version %1\n").arg(QString::fromUtf8(fwupd_release_get_version(release))); + longdescription += QString::fromUtf8(fwupd_release_get_description(release)) + QLatin1Char('\n'); + } + res->setDescription(longdescription); + addResourceToList(res); + } + } else { + if (!g_error_matches(error2, FWUPD_ERROR, FWUPD_ERROR_NOTHING_TO_DO)) + { + handleError(error2); + } + } + } +} + +QByteArray FwupdBackend::getChecksum(const QString &filename, QCryptographicHash::Algorithm hashAlgorithm) +{ + QFile f(filename); + if (!f.open(QFile::ReadOnly)) { + qWarning() << "could not open to check" << filename; + return {}; + } + + QCryptographicHash hash(hashAlgorithm); + if (!hash.addData(&f)) { + qWarning() << "could not read to check" << filename; + return {}; + } + + return hash.result().toHex(); +} + +FwupdResource* FwupdBackend::createApp(FwupdDevice *device) +{ + FwupdRelease *release = fwupd_device_get_release_default(device); + QScopedPointer app(createRelease(device)); + + if (!app->isLiveUpdatable()) { + qWarning() << "Fwupd Error: " << app->name() << "[" << app->id() << "]" << "cannot be updated "; + return nullptr; + } + + if (app->id().isNull()) { + qWarning() << "Fwupd Error: No id for firmware"; + return nullptr; + } + + if (app->availableVersion().isNull()) { + qWarning() << "Fwupd Error: No version! for " << app->id(); + return nullptr; + } + + GPtrArray *checksums = fwupd_release_get_checksums(release); + if (checksums->len == 0) { + qWarning() << "Fwupd Error: " << app->name() << "[" << app->id() << "] has no checksums, ignoring as unsafe"; + return nullptr; + } + + const QUrl update_uri(QString::fromUtf8(fwupd_release_get_uri(release))); + if (!update_uri.isValid()) { + qWarning() << "Fwupd Error: No Update URI available for" << app->name() << "[" << app->id() << "]"; + return nullptr; + } + + /* Checking for firmware in the cache? */ + const QString filename_cache = app->cacheFile(); + if (QFile::exists(filename_cache)) { + /* Currently LVFS supports SHA1 only*/ + const QByteArray checksum_tmp(fwupd_checksum_get_by_kind(checksums, G_CHECKSUM_SHA1)); + const QByteArray checksum = getChecksum(filename_cache, QCryptographicHash::Sha1); + if (checksum_tmp != checksum) { + QFile::remove(filename_cache); + } + } + + if (!app->needsReboot()) + app->setState(AbstractResource::Upgradeable); + return app.take(); +} + +bool FwupdBackend::downloadFile(const QUrl &uri, const QString &filename) +{ + Q_ASSERT(QThread::currentThread() != QCoreApplication::instance()->thread()); + + QScopedPointer manager(new QNetworkAccessManager); + QEventLoop loop; + QTimer getTimer; + connect(&getTimer, &QTimer::timeout, &loop, &QEventLoop::quit); + connect(manager.data(), &QNetworkAccessManager::finished, &loop, &QEventLoop::quit); + QScopedPointer reply(manager->get(QNetworkRequest(uri))); + getTimer.start(600000); // 60 Seconds TimeOout Period + loop.exec(); + if (!reply) + { + return false; + } else if (QNetworkReply::NoError != reply->error() ) { + qWarning() << "error fetching" << uri; + return false; + } else if (reply->error() == QNetworkReply::NoError) { + QFile file(filename); + if (file.open(QIODevice::WriteOnly)) { + file.write(reply->readAll()); + } else { + qWarning() << "Fwupd Error: Cannot Open File to write Data" << filename; + } + } + return true; +} + +void FwupdBackend::refreshRemote(FwupdBackend* backend, FwupdRemote* remote, quint64 cacheAge, GCancellable *cancellable) +{ + if (!fwupd_remote_get_filename_cache_sig(remote)) + { + qWarning() << "Fwupd Error: " << "Remote " << fwupd_remote_get_id(remote) << "has no cache signature!"; + return; + } + + /* check cache age */ + if (cacheAge > 0) + { + const quint64 age = fwupd_remote_get_age(remote); + if (age < cacheAge) + { +// qDebug() << "Fwupd Info:" << fwupd_remote_get_id(remote) << "is only" << age << "seconds old, so ignoring refresh! "; + return; + } + } + + const QString cacheId = QStringLiteral("fwupd/remotes.d/%1").arg(QString::fromUtf8(fwupd_remote_get_id(remote))); + const auto basenameSig = QString::fromUtf8(g_path_get_basename(fwupd_remote_get_filename_cache_sig(remote))); + const QString filenameSig = cacheFile(cacheId, basenameSig); + + if (filenameSig.isEmpty()) + return; + + /* download the signature first*/ + const QUrl urlSig(QString::fromUtf8(fwupd_remote_get_metadata_uri_sig(remote))); + const QString filenameSigTmp(filenameSig + QStringLiteral(".tmp")); + + if (!downloadFile(urlSig, filenameSigTmp)) { + qWarning() << "failed to download" << urlSig; + return; + } + Q_ASSERT(QFile::exists(filenameSigTmp)); + + const auto checksum = fwupd_remote_get_checksum(remote); + const QCryptographicHash::Algorithm hashAlgorithm = gchecksumToQChryptographicHash()[fwupd_checksum_guess_kind(checksum)]; + const QByteArray hash = getChecksum(filenameSigTmp, hashAlgorithm); + + const QByteArray oldHash = getChecksum(filenameSig, hashAlgorithm); + if (oldHash == hash) { + qDebug() << "remote hasn't changed:" << fwupd_remote_get_id(remote); + QFile::remove(filenameSigTmp); + return; + } + + QFile::remove(filenameSig); + + if (!QFile::rename(filenameSigTmp, filenameSig)) { + QFile::remove(filenameSigTmp); + qWarning() << "Fwupd Error: cannot save remote signature" << filenameSigTmp << "to" << filenameSig; + return; + } + QFile::remove(filenameSigTmp); + + const auto basename = QString::fromUtf8(g_path_get_basename(fwupd_remote_get_filename_cache(remote))); + const QString filename = cacheFile(cacheId, basename); + + if (filename.isEmpty()) + return; + + qDebug() << "Fwupd Info: saving new firmware metadata to:" << filename; + + const QUrl url(QString::fromUtf8(fwupd_remote_get_metadata_uri(remote))); + if (!downloadFile(url, filename)) + { + qWarning() << "Fwupd Error: cannot download file:" << filename; + return; + } + + g_autoptr(GError) error = nullptr; + if (!fwupd_client_update_metadata(backend->client, fwupd_remote_get_id(remote), filename.toUtf8().constData(), filenameSig.toUtf8().constData(), cancellable, &error)) + { + backend->handleError(error); + } +} + +void FwupdBackend::handleError(GError *perror) +{ + //TODO: localise the error message + if (!g_error_matches(perror, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE) && !g_error_matches(perror, FWUPD_ERROR, FWUPD_ERROR_NOTHING_TO_DO)) { + const QString msg = QString::fromUtf8(perror->message); + QTimer::singleShot(0, this, [this, msg](){ + Q_EMIT passiveMessage(msg); + }); + qWarning() << "Fwupd Error" << perror->code << perror->message; + } +// else +// qDebug() << "Fwupd skipped" << perror->code << perror->message; +} + +QString FwupdBackend::cacheFile(const QString &kind, const QString &basename) +{ + const QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); + const QString cacheDirFile = cacheDir.filePath(kind); + + if (!QFileInfo::exists(cacheDirFile) && !cacheDir.mkpath(kind)) + { + qWarning() << "Fwupd Error: cannot make cache directory!"; + return {}; + } + + return cacheDir.filePath(kind + QLatin1Char('/') + basename); +} + +void FwupdBackend::checkForUpdates() +{ + if (m_fetching) + return; + + auto fw = new QFutureWatcher(this); + connect(fw, &QFutureWatcher::finished, this, [this, fw]() { + m_fetching = true; + emit fetchingChanged(); + + auto devices = fw->result(); + for(uint i = 0; devices && i < devices->len; i++) { + FwupdDevice *device = (FwupdDevice *) g_ptr_array_index(devices, i); + + if (!fwupd_device_has_flag (device, FWUPD_DEVICE_FLAG_SUPPORTED)) + continue; + + g_autoptr(GError) error = nullptr; + g_autoptr(GPtrArray) releases = fwupd_client_get_releases(client, fwupd_device_get_id(device), nullptr, &error); + + if (error) { + if (g_error_matches(error, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE)) { + continue; + } + + handleError(error); + } + + auto res = createDevice(device); + for (uint i=0; releases && ilen; ++i) { + FwupdRelease *release = (FwupdRelease *)g_ptr_array_index(releases, i); + if (res->installedVersion().toUtf8() == fwupd_release_get_version(release)) { + res->setReleaseDetails(release); + break; + } + } + addResourceToList(res); + } + g_ptr_array_unref(devices); + + addUpdates(); + + m_fetching = false; + emit fetchingChanged(); + emit initialized(); + fw->deleteLater(); + }); + fw->setFuture(QtConcurrent::run(&m_threadPool, [this] () -> GPtrArray* + { + const uint cacheAge = (24*60*60); // Check for updates every day + g_autoptr(GError) error = nullptr; + + /* get devices */ + GPtrArray* devices = fwupd_client_get_devices(client, m_cancellable, nullptr); + + + g_autoptr(GPtrArray) remotes = fwupd_client_get_remotes(client, m_cancellable, &error); + for(uint i = 0; remotes && i < remotes->len; i++) + { + FwupdRemote *remote = (FwupdRemote *)g_ptr_array_index(remotes, i); + if (!fwupd_remote_get_enabled(remote)) + continue; + + if (fwupd_remote_get_kind(remote) == FWUPD_REMOTE_KIND_LOCAL) + continue; + + refreshRemote(this, remote, cacheAge, m_cancellable); + } + return devices; + } + )); +} + +int FwupdBackend::updatesCount() const +{ + return m_updater->updatesCount(); +} + +ResultsStream* FwupdBackend::search(const AbstractResourcesBackend::Filters& filter) +{ + if (filter.resourceUrl.scheme() == QLatin1String("fwupd")) { + return findResourceByPackageName(filter.resourceUrl); + } else if (!filter.resourceUrl.isEmpty()) { + return new ResultsStream(QStringLiteral("FwupdStream-void"), {}); + } + + auto stream = new ResultsStream(QStringLiteral("FwupdStream")); + auto f = [this, stream, filter] () { + QVector ret; + foreach(AbstractResource* r, m_resources) { + if (r->state() < filter.state) + continue; + + if (filter.search.isEmpty() || r->name().contains(filter.search, Qt::CaseInsensitive) || r->comment().contains(filter.search, Qt::CaseInsensitive)) { + ret += r; + } + } + if (!ret.isEmpty()) + Q_EMIT stream->resourcesFound(ret); + stream->finish(); + }; + if (isFetching()) { + connect(this, &FwupdBackend::initialized, stream, f); + } else { + QTimer::singleShot(0, this, f); + } + return stream; +} + +ResultsStream * FwupdBackend::findResourceByPackageName(const QUrl& search) +{ + auto res = search.scheme() == QLatin1String("fwupd") ? m_resources.value(search.host().replace(QLatin1Char('.'), QLatin1Char(' '))) : nullptr; + if (!res) + { + return new ResultsStream(QStringLiteral("FwupdStream"), {}); + } + else + return new ResultsStream(QStringLiteral("FwupdStream"), { res }); +} + +AbstractBackendUpdater* FwupdBackend::backendUpdater() const +{ + return m_updater; +} + +AbstractReviewsBackend* FwupdBackend::reviewsBackend() const +{ + return nullptr; +} + +Transaction* FwupdBackend::installApplication(AbstractResource* app, const AddonList& addons) +{ + Q_ASSERT(addons.isEmpty()); + return installApplication(app); +} + +Transaction* FwupdBackend::installApplication(AbstractResource* app) +{ + return new FwupdTransaction(qobject_cast(app), this); +} + +Transaction* FwupdBackend::removeApplication(AbstractResource* /*app*/) +{ + qWarning() << "should not have reached here, it's not possible to uninstall a firmware"; + return nullptr; +} + +AbstractResource * FwupdBackend::resourceForFile(const QUrl& path) +{ + g_autoptr(GError) error = nullptr; + + QMimeDatabase db; + QMimeType type = db.mimeTypeForFile(path.fileName()); + FwupdResource* app = nullptr; + + if (type.isValid() && type.inherits(QStringLiteral("application/vnd.ms-cab-compressed"))) + { + g_autofree gchar *filename = path.fileName().toUtf8().data(); + g_autoptr(GPtrArray) devices = fwupd_client_get_details(client, filename, nullptr, &error); + + if (devices) + { + FwupdDevice *device = (FwupdDevice *)g_ptr_array_index(devices, 0); + app = createRelease(device); + app->setState(AbstractResource::None); + for(uint i = 1; i < devices->len; i++) + { + FwupdDevice *device = (FwupdDevice *)g_ptr_array_index(devices, i); + FwupdResource* app_ = createRelease(device); + app_->setState(AbstractResource::None); + } + addResourceToList(app); + connect(app, &FwupdResource::stateChanged, this, &FwupdBackend::updatesCountChanged); + } + else + { + handleError(error); + } + } + return app; +} + +QString FwupdBackend::displayName() const +{ + return QStringLiteral("Firmware Updates"); +} + +bool FwupdBackend::hasApplications() const +{ + return false; +} + +#include "FwupdBackend.moc" diff --git a/libdiscover/backends/FwupdBackend/FwupdBackend.h b/libdiscover/backends/FwupdBackend/FwupdBackend.h new file mode 100644 index 0000000..dec0314 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdBackend.h @@ -0,0 +1,110 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FWUPDBACKEND_H +#define FWUPDBACKEND_H + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +extern "C" { +#include +} +#include + +class QAction; +class StandardBackendUpdater; +class FwupdResource; +class FwupdBackend : public AbstractResourcesBackend +{ +Q_OBJECT +Q_PROPERTY(int startElements MEMBER m_startElements) +Q_ENUMS(Modes) +public: + explicit FwupdBackend(QObject* parent = nullptr); + ~FwupdBackend(); + + int updatesCount() const override; + AbstractBackendUpdater* backendUpdater() const override; + AbstractReviewsBackend* reviewsBackend() const override; + ResultsStream* search(const AbstractResourcesBackend::Filters & search) override; + ResultsStream * findResourceByPackageName(const QUrl& search) ; + QHash resources() const { return m_resources; } + bool isValid() const override { return true; } // No external file dependencies that could cause runtime errors + + Transaction* installApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app, const AddonList& addons) override; + Transaction* removeApplication(AbstractResource* app) override; + bool isFetching() const override { return m_fetching; } + AbstractResource * resourceForFile(const QUrl & ) override; + void checkForUpdates() override; + QString displayName() const override; + bool hasApplications() const override; + FwupdClient *client; + void handleError(GError *perror); + + static QString cacheFile(const QString &kind, const QString &baseName); + +Q_SIGNALS: + void initialized(); + +private: + void refreshRemotes(); + void addUpdates(); + void addResourceToList(FwupdResource *res); + QSet getAllUpdates(); + + static QMap gchecksumToQChryptographicHash(); + static void refreshRemote(FwupdBackend* backend, FwupdRemote *remote, quint64 cacheAge, GCancellable *cancellable); + static QByteArray getChecksum(const QString &filename, QCryptographicHash::Algorithm hashAlgorithm); + static bool downloadFile(const QUrl &uri, const QString &filename); + + FwupdResource * createDevice(FwupdDevice *device); + FwupdResource * createRelease(FwupdDevice *device); + FwupdResource * createApp(FwupdDevice *device); + + QHash m_resources; + StandardBackendUpdater* m_updater; + bool m_fetching = false; + int m_startElements; + QList m_toUpdate; + GCancellable *m_cancellable; + QThreadPool m_threadPool; +}; + +#endif // FWUPDBACKEND_H diff --git a/libdiscover/backends/FwupdBackend/FwupdResource.cpp b/libdiscover/backends/FwupdBackend/FwupdResource.cpp new file mode 100644 index 0000000..049e656 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdResource.cpp @@ -0,0 +1,208 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FwupdResource.h" + + +#include +#include +#include +#include + +FwupdResource::FwupdResource(QString name, AbstractResourcesBackend* parent) + : AbstractResource(parent) + , m_name(std::move(name)) +{ + Q_ASSERT(!m_name.isEmpty()); + setObjectName(m_name); +} + +QString FwupdResource::availableVersion() const +{ + return m_version; +} + +QStringList FwupdResource::categories() +{ + return m_categories; +} + +QString FwupdResource::comment() +{ + return m_summary; +} + +int FwupdResource::size() +{ + return m_size; +} + +QUrl FwupdResource::homepage() +{ + return m_homepage; +} + +QUrl FwupdResource::helpURL() +{ + return {}; +} + +QUrl FwupdResource::bugURL() +{ + return {}; +} + +QUrl FwupdResource::donationURL() +{ + return {}; +} + +QVariant FwupdResource::icon() const +{ + return m_iconName; +} + +QString FwupdResource::installedVersion() const +{ + return m_version; +} + +QString FwupdResource::license() +{ + return m_license; +} + +QString FwupdResource::longDescription() +{ + return m_description; +} + +QString FwupdResource::name() const +{ + return m_displayName.isEmpty() ? m_name : m_displayName; +} + +QString FwupdResource::vendor() const +{ + return m_vendor; +} + +QString FwupdResource::origin() const +{ + return m_origin; +} + +QString FwupdResource::packageName() const +{ + return m_name; +} + +QString FwupdResource::section() +{ + return QStringLiteral("Firmware Updates"); +} + +AbstractResource::State FwupdResource::state() +{ + return m_state; +} + +void FwupdResource::fetchChangelog() +{ + QString log = longDescription(); + log.replace(QLatin1Char('\n'), QLatin1String("
")); + + emit changelogFetched(log); +} + +void FwupdResource::setState(AbstractResource::State state) +{ + if(m_state != state) + { + m_state = state; + emit stateChanged(); + } + +} + +void FwupdResource::invokeApplication() const +{ + qWarning() << "Not Launchable"; +} + +QUrl FwupdResource::url() const +{ + return m_homepage; +} + +QString FwupdResource::executeLabel() const +{ + return QStringLiteral("Not Invokable"); +} + +void FwupdResource::setReleaseDetails(FwupdRelease* release) +{ + m_origin = QString::fromUtf8(fwupd_release_get_remote_id(release)); + m_summary = QString::fromUtf8(fwupd_release_get_summary(release)); + m_vendor = QString::fromUtf8(fwupd_release_get_vendor(release)); + m_size = fwupd_release_get_size(release); + m_version = QString::fromUtf8(fwupd_release_get_version(release)); + m_description = QString::fromUtf8((fwupd_release_get_description(release))); + m_homepage = QUrl(QString::fromUtf8(fwupd_release_get_homepage(release))); + m_license = QString::fromUtf8(fwupd_release_get_license(release)); + m_updateURI = QString::fromUtf8(fwupd_release_get_uri(release)); +} + +void FwupdResource::setDeviceDetails(FwupdDevice* dev) +{ + m_isLiveUpdatable = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_UPDATABLE); + m_isOnlyOffline = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_ONLY_OFFLINE); + m_needsReboot = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_NEEDS_REBOOT); + m_isDeviceRemoval = !fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_INTERNAL); + m_needsBootLoader = fwupd_device_has_flag(dev, FWUPD_DEVICE_FLAG_NEEDS_BOOTLOADER); + + if (fwupd_device_get_name(dev)) + { + QString vendorDesc = QString::fromUtf8(fwupd_device_get_name(dev)); + const QString vendorName = QString::fromUtf8(fwupd_device_get_vendor(dev)); + + if (!vendorDesc.startsWith(vendorName)) + vendorDesc = vendorName + QLatin1Char(' ') + vendorDesc; + m_displayName = vendorDesc; + } + m_summary = QString::fromUtf8(fwupd_device_get_summary(dev)); + m_vendor = QString::fromUtf8(fwupd_device_get_vendor(dev)); + m_releaseDate = QDateTime::fromSecsSinceEpoch(fwupd_device_get_created(dev)).date(); + m_version = QString::fromUtf8(fwupd_device_get_version(dev)); + m_description = QString::fromUtf8((fwupd_device_get_description(dev))); + + if (fwupd_device_get_icons(dev)->len >= 1) + m_iconName = QString::fromUtf8((const gchar *)g_ptr_array_index(fwupd_device_get_icons(dev), 0));// Check wether given icon exists or not! + else + m_iconName = QString::fromUtf8("device-notifier"); +} + +QString FwupdResource::cacheFile() const +{ + const auto filename_cache = FwupdBackend::cacheFile(QStringLiteral("fwupd"), QFileInfo(QUrl(m_updateURI).path()).fileName()); + Q_ASSERT(!filename_cache.isEmpty()); + return filename_cache; +} diff --git a/libdiscover/backends/FwupdBackend/FwupdResource.h b/libdiscover/backends/FwupdBackend/FwupdResource.h new file mode 100644 index 0000000..f418122 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdResource.h @@ -0,0 +1,112 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FWUPDRESOURCE_H +#define FWUPDRESOURCE_H + +#include "FwupdBackend.h" + +#include +#include + +class AddonList; +class FwupdResource : public AbstractResource +{ +Q_OBJECT +public: + explicit FwupdResource(QString name, AbstractResourcesBackend* parent); + + QList addonsInformation() override { return {}; } + QString section() override; + QString origin() const override; + QString longDescription() override; + QString availableVersion() const override; + QString installedVersion() const override; + QString license() override; + int size() override; + QUrl homepage() override; + QUrl helpURL() override; + QUrl bugURL() override; + QUrl donationURL() override; + QStringList categories() override; + AbstractResource::State state() override; + QVariant icon() const override; + QString comment() override; + QString name() const override; + QString packageName() const override; + QString vendor() const; + bool isTechnical() const override { return true; } + bool canExecute() const override { return false; } + void invokeApplication() const override; + void fetchChangelog() override; + QUrl url() const override; + QString executeLabel() const override; + QDate releaseDate() const override { return m_releaseDate; } + QString sourceIcon() const override { return {}; } + + void setDeviceId(const QString &deviceId) { m_deviceID = deviceId; } + void setIsDeviceLocked(bool locked) { m_isDeviceLocked = locked; } + void setDescription(const QString &description) { m_description = description; } + void setId(const QString &id) { m_id = id; } + + void setState(AbstractResource::State state); + void setReleaseDetails(FwupdRelease *release); + void setDeviceDetails(FwupdDevice* device); + + QString id() const { return m_id; } + QString deviceId() const { return m_deviceID; } + QUrl updateURI() const { return QUrl(m_updateURI); } + bool isDeviceLocked() const { return m_isDeviceLocked; } + bool isOnlyOffline() const { return m_isOnlyOffline; } + bool isLiveUpdatable() const { return m_isLiveUpdatable; } + bool needsReboot() const { return m_needsReboot; } + + QString cacheFile() const; + +private: + QString m_id; + const QString m_name; + QString m_summary; + QString m_description; + QString m_version; + QString m_vendor; + QStringList m_categories; + QString m_license; + QString m_displayName; + QDate m_releaseDate; + + AbstractResource::State m_state = None; + QUrl m_homepage; + QString m_iconName; + int m_size = 0; + + QString m_deviceID; + QString m_updateURI; + bool m_isDeviceLocked = false; // True if device is locked! + bool m_isOnlyOffline = false; // True if only offline updates + bool m_isLiveUpdatable = false; // True if device is live updatable + bool m_needsReboot = false; // True if device needs Reboot + bool m_isDeviceRemoval = false; //True if device is Removal + bool m_needsBootLoader = false; //True if BootLoader Required + QString m_origin; +}; + +#endif // FWUPDRESOURCE_H diff --git a/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp b/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp new file mode 100644 index 0000000..82ee247 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp @@ -0,0 +1,146 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FwupdSourcesBackend.h" + +#include +#include +#include + + +class FwupdSourcesModel : public QStandardItemModel +{ +Q_OBJECT +public: + FwupdSourcesModel(FwupdSourcesBackend* backend) + : QStandardItemModel(backend) + , m_backend(backend) {} + + bool setData(const QModelIndex & index, const QVariant & value, int role) override { + auto item = itemFromIndex(index); + if(!item) + return false; + remote = fwupd_client_get_remote_by_id(m_backend->backend->client, item->data(AbstractSourcesBackend::IdRole).toString().toUtf8().constData(),nullptr,nullptr); + status = fwupd_remote_get_enabled(remote); + switch(role) + { + case Qt::CheckStateRole: + { + if((value.toInt() == Qt::Checked) ) + { + auto proceedFunction = [this, item, value, role]() { + if(fwupd_client_modify_remote(m_backend->backend->client, fwupd_remote_get_id(remote), "Enabled", "true", nullptr, nullptr)) + item->setData(value, role); + }; +#if FWUPD_CHECK_VERSION(1,0,7) + m_backend->eulaRequired(QString::fromUtf8(fwupd_remote_get_title(remote)),QString::fromUtf8(fwupd_remote_get_agreement(remote))); +#else + proceedFunction(); +#endif + connect(m_backend,&FwupdSourcesBackend::proceed,this, proceedFunction); + connect(m_backend,&FwupdSourcesBackend::cancel,this, [this, item, index]() { + item->setCheckState(Qt::Unchecked); + Q_EMIT dataChanged(index,index,{}); + return false; + }); + } + else if(value.toInt() == Qt::Unchecked) + { + if(fwupd_client_modify_remote(m_backend->backend->client,fwupd_remote_get_id(remote),QString(QLatin1String("Enabled")).toUtf8().constData(),(QString(QLatin1String("false")).toUtf8().constData()),nullptr,nullptr)) + item->setData(value, role); + } + + } + } + Q_EMIT dataChanged(index, index, {Qt::CheckStateRole}); + return true; + } + +private: + FwupdSourcesBackend* m_backend; + FwupdRemote* remote; + bool status; +}; + +FwupdSourcesBackend::FwupdSourcesBackend(AbstractResourcesBackend * parent) + : AbstractSourcesBackend(parent) + , backend(qobject_cast(parent)) + , m_sources(new FwupdSourcesModel(this)) +{ + populateSources(); +} + +void FwupdSourcesBackend::populateSources() +{ + /* find all remotes */ + g_autoptr(GPtrArray) remotes = fwupd_client_get_remotes(backend->client,nullptr,nullptr); + if(remotes != nullptr) + { + for(uint i = 0; i < remotes->len; i++) + { + FwupdRemote *remote = (FwupdRemote *)g_ptr_array_index(remotes, i); + if(fwupd_remote_get_kind(remote) == FWUPD_REMOTE_KIND_LOCAL) + continue; + const QString id = QString::fromUtf8(fwupd_remote_get_id(remote)); + if(id.isEmpty()) + continue; + bool status = !fwupd_remote_get_enabled(remote); + QStandardItem* it = new QStandardItem(id); + it->setData(id, AbstractSourcesBackend::IdRole); + it->setData(QVariant(QString::fromUtf8(fwupd_remote_get_title(remote))), Qt::ToolTipRole); + it->setCheckable(true); + it->setCheckState(status ? Qt::Unchecked : Qt::Checked); + m_sources->appendRow(it); + } + } +} + +QAbstractItemModel* FwupdSourcesBackend::sources() +{ + return m_sources; +} + +void FwupdSourcesBackend::eulaRequired( const QString& remoteName, const QString& licenseAgreement) +{ + Q_EMIT proceedRequest(i18n("Accept EULA"), i18n("The remote %1 require that you accept their license:\n %2", + remoteName, licenseAgreement)); +} + +bool FwupdSourcesBackend::addSource(const QString& id) +{ + qWarning() << "Fwupd Error: Custom Addition of Sources Not Allowed" << "Remote-ID" << id; + return false; +} + +bool FwupdSourcesBackend::removeSource(const QString& id) +{ + qWarning() << "Fwupd Error: Removal of Sources Not Allowed" << "Remote-ID" << id; + return false; +} + +QList FwupdSourcesBackend::actions() const +{ + return {} ; +} + +#include "FwupdSourcesBackend.moc" + + diff --git a/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h b/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h new file mode 100644 index 0000000..e3b0198 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright © 2014 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FWUPDSOURCESBACKEND_H +#define FWUPDSOURCESBACKEND_H + +#include +#include "FwupdBackend.h" +#include + +#include "FwupdBackend.h" + +class FwupdSourcesModel; + +class FwupdSourcesBackend : public AbstractSourcesBackend +{ + Q_OBJECT +public: + explicit FwupdSourcesBackend(AbstractResourcesBackend * parent); + + FwupdBackend* backend ; + QAbstractItemModel* sources() override; + bool addSource(const QString& id) override; + bool removeSource(const QString& id) override; + QString idDescription() override { return QString(); } + QList actions() const override; + bool supportsAdding() const override { return false; } + void eulaRequired(const QString& remoteName, const QString& licenseAgreement); + void populateSources(); +Q_SIGNALS: + void proceed() override; + void cancel() override; + +private: + FwupdSourcesModel* m_sources; +}; + +#endif // FWUPDSOURCESBACKEND_H diff --git a/libdiscover/backends/FwupdBackend/FwupdTransaction.cpp b/libdiscover/backends/FwupdBackend/FwupdTransaction.cpp new file mode 100644 index 0000000..533ee14 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdTransaction.cpp @@ -0,0 +1,133 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "FwupdTransaction.h" + +#include + +FwupdTransaction::FwupdTransaction(FwupdResource* app, FwupdBackend* backend) + : Transaction(backend, app, Transaction::InstallRole, {}) + , m_app(app) + , m_backend(backend) +{ + setCancellable(true); + setStatus(QueuedStatus); + + Q_ASSERT(!m_app->deviceId().isEmpty()); + QTimer::singleShot(0, this, &FwupdTransaction::install); +} + +FwupdTransaction::~FwupdTransaction() = default; + +void FwupdTransaction::install() +{ + g_autoptr(GError) error = nullptr; + + if(m_app->isDeviceLocked()) + { + QString device_id = m_app->deviceId(); + if(device_id.isNull()) { + qWarning() << "Fwupd Error: No Device ID set, cannot unlock device " << this << m_app->name(); + } else if(!fwupd_client_unlock(m_backend->client, device_id.toUtf8().constData(),nullptr, &error)) { + m_backend->handleError(error); + } + setStatus(DoneWithErrorStatus); + return; + } + + const QString fileName = m_app->cacheFile(); + if(!QFileInfo::exists(fileName)) { + const QUrl uri(m_app->updateURI()); + setStatus(DownloadingStatus); + QNetworkAccessManager *manager = new QNetworkAccessManager(this); + auto reply = manager->get(QNetworkRequest(uri)); + QFile* file = new QFile(fileName); + + connect(reply, &QNetworkReply::finished, this, [this, file, reply](){ + file->close(); + file->deleteLater(); + + if(reply->error() != QNetworkReply::NoError) { + qWarning() << "Fwupd Error: Could not download" << reply->url() << reply->errorString(); + file->remove(); + setStatus(DoneWithErrorStatus); + } else { + fwupdInstall(file->fileName()); + } + }); + connect(reply, &QNetworkReply::readyRead, this, [file, reply](){ + file->write(reply->readAll()); + }); + } + else + { + fwupdInstall(fileName); + } +} + +void FwupdTransaction::fwupdInstall(const QString &file) +{ + FwupdInstallFlags install_flags = FWUPD_INSTALL_FLAG_NONE; + g_autoptr(GError) error = nullptr; + + /* only offline supported */ + if(m_app->isOnlyOffline()) + install_flags = static_cast(install_flags | FWUPD_INSTALL_FLAG_OFFLINE); + + if(!fwupd_client_install(m_backend->client, m_app->deviceId().toUtf8().constData(), file.toUtf8().constData(), install_flags, nullptr, &error)) + { + m_backend->handleError(error); + setStatus(DoneWithErrorStatus); + } else + finishTransaction(); +} + +void FwupdTransaction::updateProgress() +{ + setProgress(fwupd_client_get_percentage(m_backend->client)); +} + +void FwupdTransaction::proceed() +{ + finishTransaction(); +} + +void FwupdTransaction::cancel() +{ + setStatus(CancelledStatus); +} + +void FwupdTransaction::finishTransaction() +{ + AbstractResource::State newState; + switch(role()) { + case InstallRole: + case ChangeAddonsRole: + newState = AbstractResource::Installed; + break; + case RemoveRole: + newState = AbstractResource::None; + break; + } + m_app->setState(newState); + setStatus(DoneStatus); + deleteLater(); +} diff --git a/libdiscover/backends/FwupdBackend/FwupdTransaction.h b/libdiscover/backends/FwupdBackend/FwupdTransaction.h new file mode 100644 index 0000000..4b67a31 --- /dev/null +++ b/libdiscover/backends/FwupdBackend/FwupdTransaction.h @@ -0,0 +1,52 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * Copyright © 2018 Abhijeet Sharma * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef FWUPDTRANSACTION_H +#define FWUPDTRANSACTION_H + +#include +#include "FwupdBackend.h" +#include "FwupdResource.h" + + +class FwupdResource; +class FwupdTransaction : public Transaction +{ + Q_OBJECT + public: + FwupdTransaction(FwupdResource* app, FwupdBackend* backend); + ~FwupdTransaction(); + void cancel() override; + void proceed() override; + + private Q_SLOTS: + void updateProgress(); + void finishTransaction(); + void fwupdInstall(const QString &file); + + private: + void install(); + + FwupdResource* const m_app; + FwupdBackend* const m_backend; +}; + +#endif // FWUPDTRANSACTION_H diff --git a/libdiscover/backends/KNSBackend/CMakeLists.txt b/libdiscover/backends/KNSBackend/CMakeLists.txt new file mode 100644 index 0000000..43af528 --- /dev/null +++ b/libdiscover/backends/KNSBackend/CMakeLists.txt @@ -0,0 +1,11 @@ +add_subdirectory(tests) + +add_library(kns-backend MODULE + KNSBackend.cpp + KNSResource.cpp + KNSReviews.cpp) + +target_link_libraries(kns-backend Discover::Common KF5::ConfigCore KF5::Attica KF5::NewStuffCore KF5::WidgetsAddons Qt5::Xml) + +install(TARGETS kns-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) +install(FILES custom/discover_ktexteditor_codesnippets_core.knsrc DESTINATION ${KDE_INSTALL_CONFDIR}) diff --git a/libdiscover/backends/KNSBackend/KNSBackend.cpp b/libdiscover/backends/KNSBackend/KNSBackend.cpp new file mode 100644 index 0000000..2b01e5a --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSBackend.cpp @@ -0,0 +1,475 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +// Qt includes +#include +#include +#include +#include +#include +#include + +// Attica includes +#include +#include + +// KDE includes +#include +#include +#include +#include +#include +#include + +// DiscoverCommon includes +#include "Transaction/Transaction.h" +#include "Transaction/TransactionModel.h" +#include "Category/Category.h" + +// Own includes +#include "KNSBackend.h" +#include "KNSResource.h" +#include "KNSReviews.h" +#include +#include "utils.h" + +class KNSBackendFactory : public AbstractResourcesBackendFactory { + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.muon.AbstractResourcesBackendFactory") + Q_INTERFACES(AbstractResourcesBackendFactory) + public: + KNSBackendFactory() { + connect(KNSCore::QuestionManager::instance(), &KNSCore::QuestionManager::askQuestion, this, [](KNSCore::Question* q) { + qWarning() << q->question() << q->questionType(); + q->setResponse(KNSCore::Question::InvalidResponse); + }); + } + + QVector newInstance(QObject* parent, const QString &/*name*/) const override + { + QVector ret; + for (const QString &path: QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation)) { + QDirIterator dirIt(path, {QStringLiteral("*.knsrc")}, QDir::Files); + for(; dirIt.hasNext(); ) { + dirIt.next(); + + auto bk = new KNSBackend(parent, QStringLiteral("plasma"), dirIt.filePath()); + if (bk->isValid()) + ret += bk; + else + delete bk; + } + } + return ret; + } +}; + +Q_DECLARE_METATYPE(KNSCore::EntryInternal) + +KNSBackend::KNSBackend(QObject* parent, const QString& iconName, const QString &knsrc) + : AbstractResourcesBackend(parent) + , m_fetching(false) + , m_isValid(true) + , m_reviews(new KNSReviews(this)) + , m_name(knsrc) + , m_iconName(iconName) + , m_updater(new StandardBackendUpdater(this)) +{ + const QString fileName = QFileInfo(m_name).fileName(); + setName(fileName); + setObjectName(knsrc); + + const KConfig conf(m_name); + if (!conf.hasGroup("KNewStuff3")) { + markInvalid(QStringLiteral("Config group not found! Check your KNS3 installation.")); + return; + } + + m_categories = QStringList{ fileName }; + + const KConfigGroup group = conf.group("KNewStuff3"); + m_extends = group.readEntry("Extends", QStringList()); + m_reviews->setProviderUrl(QUrl(group.readEntry("ProvidersUrl", QString()))); + + setFetching(true); + + m_engine = new KNSCore::Engine(this); + m_engine->init(m_name); + m_engine->setPageSize(100); + // Setting setFetching to false when we get an error ensures we don't end up in an eternally-fetching state + connect(m_engine, &KNSCore::Engine::signalError, this, [this](const QString &_error) { + QString error = _error; + bool invalidFile = false; + if(error == QLatin1Literal("All categories are missing")) { + markInvalid(error); + error = i18n("Invalid %1 backend, contact your distributor.", m_displayName); + invalidFile = true; + } + m_responsePending = false; + Q_EMIT searchFinished(); + Q_EMIT availableForQueries(); + this->setFetching(false); + qWarning() << "kns error" << objectName() << error; + if (!invalidFile) + Q_EMIT passiveMessage(i18n("%1: %2", name(), error)); + }); + connect(m_engine, &KNSCore::Engine::signalEntriesLoaded, this, &KNSBackend::receivedEntries, Qt::QueuedConnection); + connect(m_engine, &KNSCore::Engine::signalEntryChanged, this, &KNSBackend::statusChanged, Qt::QueuedConnection); + connect(m_engine, &KNSCore::Engine::signalEntryDetailsLoaded, this, &KNSBackend::statusChanged); + connect(m_engine, &KNSCore::Engine::signalProvidersLoaded, this, &KNSBackend::fetchInstalled); + + // This ensures we have something to track when checking after the initialization timeout + connect(this, &KNSBackend::initialized, this, [this](){ m_initialized = true; }); + // If we have not initialized in 60 seconds, consider this KNS backend invalid + QTimer::singleShot(60000, this, [this](){ + if(!m_initialized) { + markInvalid(i18n("Backend %1 took too long to initialize", m_displayName)); + m_responsePending = false; + Q_EMIT searchFinished(); + Q_EMIT availableForQueries(); + } + }); + + const QVector> filters = { {CategoryFilter, fileName } }; + const QSet backendName = { name() }; + m_displayName = group.readEntry("Name", QString()); + if (m_displayName.isEmpty()) { + m_displayName = fileName.mid(0, fileName.indexOf(QLatin1Char('.'))); + m_displayName[0] = m_displayName[0].toUpper(); + } + + static const QSet knsrcPlasma = { + QStringLiteral("aurorae.knsrc"), QStringLiteral("icons.knsrc"), QStringLiteral("kfontinst.knsrc"), QStringLiteral("lookandfeel.knsrc"), QStringLiteral("plasma-themes.knsrc"), QStringLiteral("plasmoids.knsrc"), + QStringLiteral("wallpaper.knsrc"), QStringLiteral("xcursor.knsrc"), + + QStringLiteral("cgcgtk3.knsrc"), QStringLiteral("cgcicon.knsrc"), QStringLiteral("cgctheme.knsrc"), //GTK integration + QStringLiteral("kwinswitcher.knsrc"), QStringLiteral("kwineffect.knsrc"), QStringLiteral("kwinscripts.knsrc"), //KWin + QStringLiteral("comic.knsrc"), QStringLiteral("colorschemes.knsrc"), + QStringLiteral("emoticons.knsrc"), QStringLiteral("plymouth.knsrc"), + QStringLiteral("sddmtheme.knsrc") + }; + auto actualCategory = new Category(m_displayName, QStringLiteral("plasma"), filters, backendName, {}, QUrl(), true); + + const auto topLevelName = knsrcPlasma.contains(fileName)? i18n("Plasma Addons") : i18n("Application Addons"); + const QUrl decoration(knsrcPlasma.contains(fileName)? QStringLiteral("https://c2.staticflickr.com/4/3148/3042248532_20bd2e38f4_b.jpg") : QStringLiteral("https://c2.staticflickr.com/8/7067/6847903539_d9324dcd19_o.jpg")); + auto addonsCategory = new Category(topLevelName, QStringLiteral("plasma"), filters, backendName, {actualCategory}, decoration, true); + m_rootCategories = { addonsCategory }; +} + +KNSBackend::~KNSBackend() +{ + qDeleteAll(m_rootCategories); +} + +void KNSBackend::markInvalid(const QString &message) +{ + qWarning() << "invalid kns backend!" << m_name << "because:" << message; + m_isValid = false; + setFetching(false); + Q_EMIT initialized(); +} + +void KNSBackend::fetchInstalled() +{ + auto search = new OneTimeAction([this]() { + Q_EMIT startingSearch(); + m_onePage = true; + m_responsePending = true; + m_engine->checkForInstalled(); + }, this); + + if (m_responsePending) { + connect(this, &KNSBackend::availableForQueries, search, &OneTimeAction::trigger, Qt::QueuedConnection); + } else { + search->trigger(); + } +} + +void KNSBackend::setFetching(bool f) +{ + if(m_fetching!=f) { + m_fetching = f; + emit fetchingChanged(); + + if (!m_fetching) { + Q_EMIT initialized(); + } + } + +} + +bool KNSBackend::isValid() const +{ + return m_isValid; +} + +KNSResource* KNSBackend::resourceForEntry(const KNSCore::EntryInternal& entry) +{ + KNSResource* r = static_cast(m_resourcesByName.value(entry.uniqueId())); + if (!r) { + r = new KNSResource(entry, m_categories, this); + m_resourcesByName.insert(entry.uniqueId(), r); + } else { + r->setEntry(entry); + } + return r; +} + +void KNSBackend::receivedEntries(const KNSCore::EntryInternal::List& entries) +{ + m_responsePending = false; + + const auto resources = kTransform>(entries, [this](const KNSCore::EntryInternal& entry){ return resourceForEntry(entry); }); + if (!resources.isEmpty()) { + Q_EMIT receivedResources(resources); + } + + if(resources.isEmpty()) { + Q_EMIT searchFinished(); + Q_EMIT availableForQueries(); + setFetching(false); + return; + } +// qDebug() << "received" << objectName() << this << m_resourcesByName.count(); + if (!m_responsePending && !m_onePage) { + // We _have_ to set this first. If we do not, we may run into a situation where the + // data request will conclude immediately, causing m_responsePending to remain true + // for perpetuity as the slots will be called before the function returns. + m_responsePending = true; + m_engine->requestMoreData(); + } else { + Q_EMIT availableForQueries(); + setFetching(false); + } +} + +void KNSBackend::statusChanged(const KNSCore::EntryInternal& entry) +{ + resourceForEntry(entry); +} + +class KNSTransaction : public Transaction +{ +public: + KNSTransaction(QObject* parent, KNSResource* res, Transaction::Role role) + : Transaction(parent, res, role) + , m_id(res->entry().uniqueId()) + { + setCancellable(false); + + auto manager = res->knsBackend()->engine(); + connect(manager, &KNSCore::Engine::signalEntryChanged, this, &KNSTransaction::anEntryChanged); + TransactionModel::global()->addTransaction(this); + + std::function actionFunction; + auto engine = res->knsBackend()->engine(); + if(role == RemoveRole) + actionFunction = [res, engine]() { + engine->uninstall(res->entry()); + }; + else if (res->linkIds().isEmpty()) + actionFunction = [res, engine]() { + engine->install(res->entry()); + }; + else + actionFunction = [res, engine]() { + for(auto i : res->linkIds()) + engine->install(res->entry(), i); + }; + QTimer::singleShot(0, res, actionFunction); + } + + void anEntryChanged(const KNSCore::EntryInternal& entry) { + if (entry.uniqueId() == m_id) { + switch (entry.status()) { + case KNS3::Entry::Invalid: + qWarning() << "invalid status for" << entry.uniqueId() << entry.status(); + break; + case KNS3::Entry::Installing: + case KNS3::Entry::Updating: + setStatus(CommittingStatus); + break; + case KNS3::Entry::Downloadable: + case KNS3::Entry::Installed: + case KNS3::Entry::Deleted: + case KNS3::Entry::Updateable: + if (status() != DoneStatus) { + setStatus(DoneStatus); + } + break; + } + } + } + + void cancel() override {} + +private: + const QString m_id; +}; + +Transaction* KNSBackend::removeApplication(AbstractResource* app) +{ + auto res = qobject_cast(app); + return new KNSTransaction(this, res, Transaction::RemoveRole); +} + +Transaction* KNSBackend::installApplication(AbstractResource* app) +{ + auto res = qobject_cast(app); + return new KNSTransaction(this, res, Transaction::InstallRole); +} + +Transaction* KNSBackend::installApplication(AbstractResource* app, const AddonList& /*addons*/) +{ + return installApplication(app); +} + +int KNSBackend::updatesCount() const +{ + return m_updater->updatesCount(); +} + +AbstractReviewsBackend* KNSBackend::reviewsBackend() const +{ + return m_reviews; +} + +static ResultsStream* voidStream() +{ + return new ResultsStream(QStringLiteral("KNS-void"), {}); +} + +ResultsStream* KNSBackend::search(const AbstractResourcesBackend::Filters& filter) +{ + if (!m_isValid || (!filter.resourceUrl.isEmpty() && filter.resourceUrl.scheme() != QLatin1String("kns")) || !filter.mimetype.isEmpty()) + return voidStream(); + + if (filter.resourceUrl.scheme() == QLatin1String("kns")) { + return findResourceByPackageName(filter.resourceUrl); + } else if (filter.state >= AbstractResource::Installed) { + auto stream = new ResultsStream(QStringLiteral("KNS-installed")); + + const auto start = [this, stream, filter]() { + if (m_isValid) { + auto filterFunction = [&filter](AbstractResource* r) { return r->state()>=filter.state && (r->name().contains(filter.search, Qt::CaseInsensitive) || r->comment().contains(filter.search, Qt::CaseInsensitive)); }; + const auto ret = kFilter>(m_resourcesByName, filterFunction); + + if (!ret.isEmpty()) + Q_EMIT stream->resourcesFound(ret); + } + stream->finish(); + }; + if (isFetching()) { + connect(this, &KNSBackend::initialized, stream, start); + } else { + QTimer::singleShot(0, stream, start); + } + + return stream; + } else if ((!filter.category && !filter.search.isEmpty()) || (filter.category && filter.category->matchesCategoryName(m_categories.constFirst()))) { + auto r = new ResultsStream(QStringLiteral("KNS-search-")+name()); + searchStream(r, filter.search); + return r; + } + return voidStream(); +} + +void KNSBackend::searchStream(ResultsStream* stream, const QString &searchText) +{ + Q_EMIT startingSearch(); + + auto start = [this, stream, searchText]() { + Q_ASSERT(!isFetching()); + if (!m_isValid) { + stream->finish(); + return; + } + // No need to explicitly launch a search, setting the search term already does that for us + m_engine->setSearchTerm(searchText); + m_onePage = false; + m_responsePending = true; + + connect(this, &KNSBackend::receivedResources, stream, &ResultsStream::resourcesFound); + connect(this, &KNSBackend::searchFinished, stream, &ResultsStream::finish); + connect(this, &KNSBackend::startingSearch, stream, &ResultsStream::finish); + }; + + if (m_responsePending) { + connect(this, &KNSBackend::availableForQueries, stream, start, Qt::QueuedConnection); + } else if (isFetching()) { + connect(this, &KNSBackend::initialized, stream, start); + } else { + QTimer::singleShot(0, stream, start); + } +} + +ResultsStream * KNSBackend::findResourceByPackageName(const QUrl& search) +{ + if (search.scheme() != QLatin1String("kns") || search.host() != name()) + return voidStream(); + + const auto pathParts = search.path().split(QLatin1Char('/'), QString::SkipEmptyParts); + if (pathParts.size() != 2) { + Q_EMIT passiveMessage(i18n("Wrong KNewStuff URI: %1", search.toString())); + return voidStream(); + } + const auto providerid = pathParts.at(0); + const auto entryid = pathParts.at(1); + + auto stream = new ResultsStream(QStringLiteral("KNS-byname-")+entryid); + auto start = [this, entryid, stream, providerid]() { + m_responsePending = true; + m_engine->fetchEntryById(entryid); + m_onePage = false; + connect(m_engine, &KNSCore::Engine::signalError, stream, &ResultsStream::finish); + connect(m_engine, &KNSCore::Engine::signalEntryDetailsLoaded, stream, [this, stream, entryid, providerid](const KNSCore::EntryInternal &entry) { + if (entry.uniqueId() == entryid && providerid == QUrl(entry.providerId()).host()) { + Q_EMIT stream->resourcesFound({resourceForEntry(entry)}); + } else + qWarning() << "found invalid" << entryid << entry.uniqueId() << providerid << QUrl(entry.providerId()).host(); + m_responsePending = false; + QTimer::singleShot(0, this, &KNSBackend::availableForQueries); + stream->finish(); + }); + }; + if (m_responsePending) { + connect(this, &KNSBackend::availableForQueries, stream, start); + } else { + start(); + } + return stream; +} + +bool KNSBackend::isFetching() const +{ + return m_fetching; +} + +AbstractBackendUpdater* KNSBackend::backendUpdater() const +{ + return m_updater; +} + +QString KNSBackend::displayName() const +{ + return QStringLiteral("KNewStuff"); +} + +#include "KNSBackend.moc" diff --git a/libdiscover/backends/KNSBackend/KNSBackend.h b/libdiscover/backends/KNSBackend/KNSBackend.h new file mode 100644 index 0000000..7adb9f3 --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSBackend.h @@ -0,0 +1,103 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef KNSBACKEND_H +#define KNSBACKEND_H + +#include + +#include +#include "Transaction/AddonList.h" +#include "discovercommon_export.h" + +class KConfigGroup; +class KNSReviews; +class KNSResource; +class StandardBackendUpdater; + +namespace KNSCore { class Engine; } + +class DISCOVERCOMMON_EXPORT KNSBackend : public AbstractResourcesBackend +{ +Q_OBJECT +public: + explicit KNSBackend(QObject* parent, const QString& iconName, const QString &knsrc); + ~KNSBackend() override; + + Transaction* removeApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app, const AddonList& addons) override; + int updatesCount() const override; + AbstractReviewsBackend* reviewsBackend() const override; + AbstractBackendUpdater* backendUpdater() const override; + bool isFetching() const override; + ResultsStream* search(const AbstractResourcesBackend::Filters & filter) override; + ResultsStream* findResourceByPackageName(const QUrl & search); + + QVector category() const override { return m_rootCategories; } + + bool isValid() const override; + + QStringList extends() const override { return m_extends; } + + QString iconName() const { return m_iconName; } + + KNSCore::Engine* engine() const { return m_engine; } + + void checkForUpdates() override {} + + QString displayName() const override; + +Q_SIGNALS: + void receivedResources(const QVector &resources); + void searchFinished(); + void startingSearch(); + void availableForQueries(); + void initialized(); + +public Q_SLOTS: + void receivedEntries(const KNSCore::EntryInternal::List& entries); + void statusChanged(const KNSCore::EntryInternal& entry); + +private: + void fetchInstalled(); + KNSResource* resourceForEntry(const KNSCore::EntryInternal& entry); + void setFetching(bool f); + void markInvalid(const QString &message); + void searchStream(ResultsStream* stream, const QString &searchText); + + bool m_onePage = false; + bool m_responsePending = false; + bool m_fetching; + bool m_isValid; + KNSCore::Engine* m_engine; + QHash m_resourcesByName; + KNSReviews* const m_reviews; + QString m_name; + QString m_iconName; + StandardBackendUpdater* const m_updater; + QStringList m_extends; + QStringList m_categories; + QVector m_rootCategories; + QString m_displayName; + bool m_initialized = false; +}; + +#endif // KNSBACKEND_H diff --git a/libdiscover/backends/KNSBackend/KNSResource.cpp b/libdiscover/backends/KNSBackend/KNSResource.cpp new file mode 100644 index 0000000..c8dc2c1 --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSResource.cpp @@ -0,0 +1,268 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "KNSResource.h" +#include "KNSBackend.h" +#include +#include +#include +#include +#include + +#include "ReviewsBackend/Rating.h" +#include + +KNSResource::KNSResource(const KNSCore::EntryInternal& entry, QStringList categories, KNSBackend* parent) + : AbstractResource(parent) + , m_categories(std::move(categories)) + , m_entry(entry) + , m_lastStatus(entry.status()) +{ + connect(this, &KNSResource::stateChanged, parent, &KNSBackend::updatesCountChanged); +} + +KNSResource::~KNSResource() = default; + +AbstractResource::State KNSResource::state() +{ + switch(m_entry.status()) { + case KNS3::Entry::Invalid: + return Broken; + case KNS3::Entry::Downloadable: + return None; + case KNS3::Entry::Installed: + return Installed; + case KNS3::Entry::Updateable: + return Upgradeable; + case KNS3::Entry::Deleted: + case KNS3::Entry::Installing: + case KNS3::Entry::Updating: + return None; + } + return None; +} + +KNSBackend * KNSResource::knsBackend() const +{ + return qobject_cast(parent()); +} + +QVariant KNSResource::icon() const +{ + const QString thumbnail = m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall1); + return thumbnail.isEmpty() ? knsBackend()->iconName() : m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall1); +} + +QString KNSResource::comment() +{ + QString ret = m_entry.shortSummary(); + if(ret.isEmpty()) { + ret = m_entry.summary(); + int newLine = ret.indexOf(QLatin1Char('\n')); + if(newLine>0) { + ret=ret.left(newLine); + } + ret = ret.replace(QRegularExpression(QStringLiteral("\\[/?[a-z]*\\]")), QString()); + ret = ret.remove(QRegularExpression(QStringLiteral("<[^>]*>"))); + } + return ret; +} + +QString KNSResource::longDescription() +{ + QString ret = m_entry.summary(); + if (m_entry.shortSummary().isEmpty()) { + const int newLine = ret.indexOf(QLatin1Char('\n')); + if (newLine<0) + ret.clear(); + else + ret = ret.mid(newLine+1).trimmed(); + } + ret = ret.replace(QLatin1Char('\r'), QString()); + ret = ret.replace(QStringLiteral("[li]"), QStringLiteral("\n* ")); + ret = ret.replace(QRegularExpression(QStringLiteral("\\[/?[a-z]*\\]")), QString()); + return ret; +} + +QString KNSResource::name() const +{ + return m_entry.name(); +} + +QString KNSResource::packageName() const +{ + return m_entry.uniqueId(); +} + +QStringList KNSResource::categories() +{ + return m_categories; +} + +QUrl KNSResource::homepage() +{ + return m_entry.homepage(); +} + +void KNSResource::setEntry(const KNSCore::EntryInternal& entry) +{ + const bool diff = entry.status() != m_lastStatus; + m_entry = entry; + if (diff) { + m_lastStatus = entry.status(); + Q_EMIT stateChanged(); + } +} + +KNSCore::EntryInternal KNSResource::entry() const +{ + return m_entry; +} + +QString KNSResource::license() +{ + return m_entry.license(); +} + +int KNSResource::size() +{ + const auto downloadInfo = m_entry.downloadLinkInformationList(); + return downloadInfo.isEmpty() ? 0 : downloadInfo.at(0).size; +} + +QString KNSResource::installedVersion() const +{ + return m_entry.version(); +} + +QString KNSResource::availableVersion() const +{ + return !m_entry.updateVersion().isEmpty() ? m_entry.updateVersion() : m_entry.version(); +} + +QString KNSResource::origin() const +{ + return m_entry.providerId(); +} + +QString KNSResource::section() +{ + return m_entry.category(); +} + +static void appendIfValid(QList& list, const QUrl &value, const QUrl &fallback = {}) +{ + if (!list.contains(value)) { + if (value.isValid() && !value.isEmpty()) + list << value; + else if (!fallback.isEmpty()) + appendIfValid(list, fallback); + } +} + +void KNSResource::fetchScreenshots() +{ + QList preview; + appendIfValid(preview, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall1))); + appendIfValid(preview, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall2))); + appendIfValid(preview, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall3))); + + QList screenshots; + appendIfValid(screenshots, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewBig1)), QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall1))); + appendIfValid(screenshots, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewBig2)), QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall2))); + appendIfValid(screenshots, QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewBig3)), QUrl(m_entry.previewUrl(KNSCore::EntryInternal::PreviewSmall3))); + + emit screenshotsFetched(preview, screenshots); +} + +void KNSResource::fetchChangelog() +{ + emit changelogFetched(m_entry.changelog()); +} + +QStringList KNSResource::extends() const +{ + return knsBackend()->extends(); +} + +QStringList KNSResource::executables() const +{ + if (knsBackend()->engine()->hasAdoptionCommand()) + return {knsBackend()->engine()->adoptionCommand(m_entry)}; + else + return {}; +} + +QUrl KNSResource::url() const +{ + return QUrl(QStringLiteral("kns://")+knsBackend()->name() + QLatin1Char('/') + QUrl(m_entry.providerId()).host() + QLatin1Char('/') + m_entry.uniqueId()); +} + +void KNSResource::invokeApplication() const +{ + QStringList exes = executables(); + if(!exes.isEmpty()) { + const QString exe = exes.constFirst(); + auto args = KShell::splitArgs(exe); + QProcess::startDetached(args.takeFirst(), args); + } else { + qWarning() << "cannot execute" << packageName(); + } +} + +QString KNSResource::executeLabel() const +{ + return i18n("Use"); +} + +QDate KNSResource::releaseDate() const +{ + return m_entry.updateReleaseDate().isNull() ? m_entry.releaseDate() : m_entry.updateReleaseDate(); +} + +QVector KNSResource::linkIds() const +{ + QVector ids; + for(const auto &e : m_entry.downloadLinkInformationList()) { + if (e.isDownloadtypeLink) + ids << e.id; + } + return ids; +} + +QUrl KNSResource::donationURL() +{ + return QUrl(m_entry.donationLink()); +} + +Rating * KNSResource::ratingInstance() +{ + if (!m_rating) { + const int noc = m_entry.numberOfComments(); + const int rating = m_entry.rating(); + Q_ASSERT(rating <= 100); + return new Rating( + packageName(), + noc, + { { QStringLiteral("star5"), rating } } + ); + } + return m_rating; +} diff --git a/libdiscover/backends/KNSBackend/KNSResource.h b/libdiscover/backends/KNSBackend/KNSResource.h new file mode 100644 index 0000000..720eff7 --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSResource.h @@ -0,0 +1,83 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef KNSRESOURCE_H +#define KNSRESOURCE_H + +#include +#include +#include +#include + +#include "discovercommon_export.h" + +class KNSBackend; +class DISCOVERCOMMON_EXPORT KNSResource : public AbstractResource +{ +Q_OBJECT +public: + explicit KNSResource(const KNSCore::EntryInternal & c, QStringList categories, KNSBackend* parent); + ~KNSResource() override; + + AbstractResource::State state() override; + QVariant icon() const override; + QString comment() override; + QString name() const override; + QString packageName() const override; + QStringList categories() override; + QUrl homepage() override; + QString license() override; + QString longDescription() override; + QList addonsInformation() override { return QList(); } + QString availableVersion() const override; + QString installedVersion() const override; + QString origin() const override; + QString section() override; + void fetchScreenshots() override; + int size() override; + void fetchChangelog() override; + QStringList extends() const override; + + KNSBackend* knsBackend() const; + + void setEntry(const KNSCore::EntryInternal& entry); + KNSCore::EntryInternal entry() const; + + bool canExecute() const override { return !executables().isEmpty(); } + QStringList executables() const; + void invokeApplication() const override; + + QUrl url() const override; + QString executeLabel() const override; + QString sourceIcon() const override { return QStringLiteral("get-hot-new-stuff"); } + QDate releaseDate() const override; + QVector linkIds() const; + QUrl donationURL() override; + + Rating* ratingInstance(); + +private: + const QStringList m_categories; + KNSCore::EntryInternal m_entry; + KNS3::Entry::Status m_lastStatus; + QPointer m_rating; +}; + +#endif // KNSRESOURCE_H diff --git a/libdiscover/backends/KNSBackend/KNSReviews.cpp b/libdiscover/backends/KNSBackend/KNSReviews.cpp new file mode 100644 index 0000000..c594477 --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSReviews.cpp @@ -0,0 +1,183 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "KNSReviews.h" +#include "KNSBackend.h" +#include "KNSResource.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class SharedManager : public QObject +{ +Q_OBJECT +public: + SharedManager() { + atticaManager.loadDefaultProviders(); + } + +public: + Attica::ProviderManager atticaManager; +}; + +Q_GLOBAL_STATIC(SharedManager, s_shared) + +KNSReviews::KNSReviews(KNSBackend* backend) + : AbstractReviewsBackend(backend) + , m_backend(backend) +{ +} + +Rating* KNSReviews::ratingForApplication(AbstractResource* app) const +{ + KNSResource *resource = qobject_cast(app); + if (!resource) + { + qDebug() << app->packageName() << "<= couldn't find resource"; + return nullptr; + } + + return resource->ratingInstance(); +} + +void KNSReviews::fetchReviews(AbstractResource* app, int page) +{ + Attica::ListJob< Attica::Comment >* job = + provider().requestComments(Attica::Comment::ContentComment, app->packageName(), QStringLiteral("0"), page, 10); + if (!job) { + emit reviewsReady(app, {}, false); + return; + } + job->setProperty("app", qVariantFromValue(app)); + connect(job, &Attica::BaseJob::finished, this, &KNSReviews::commentsReceived); + job->start(); + m_fetching++; +} + +void KNSReviews::commentsReceived(Attica::BaseJob* j) +{ + m_fetching--; + Attica::ListJob* job = static_cast*>(j); + Attica::Comment::List comments = job->itemList(); + + QVector reviews; + AbstractResource* app = job->property("app").value(); + foreach(const Attica::Comment& comment, comments) { + //TODO: language lookup? + ReviewPtr r(new Review(app->name(), app->packageName(), QStringLiteral("en"), comment.subject(), comment.text(), comment.user(), + comment.date(), true, comment.id().toInt(), comment.score()/10, 0, 0, QString() + )); + reviews += r; + } + + emit reviewsReady(app, reviews, !reviews.isEmpty()); +} + +bool KNSReviews::isFetching() const +{ + return m_fetching > 0; +} + +void KNSReviews::flagReview(Review* /*r*/, const QString& /*reason*/, const QString& /*text*/) +{ + qWarning() << "cannot flag reviews"; +} + +void KNSReviews::deleteReview(Review* /*r*/) +{ + qWarning() << "cannot delete comments"; +} + +void KNSReviews::submitReview(AbstractResource* app, const QString& summary, const QString& review_text, const QString& rating) +{ + provider().voteForContent(app->packageName(), rating.toUInt() * 20); + if (!summary.isEmpty()) + provider().addNewComment(Attica::Comment::ContentComment, app->packageName(), QString(), QString(), summary, review_text); +} + +void KNSReviews::submitUsefulness(Review* r, bool useful) +{ + provider().voteForComment(QString::number(r->id()), useful*5); +} + +void KNSReviews::logout() +{ + bool b = provider().saveCredentials(QString(), QString()); + if (!b) + qWarning() << "couldn't log out"; +} + +void KNSReviews::registerAndLogin() +{ + QDesktopServices::openUrl(provider().baseUrl()); +} + +void KNSReviews::login() +{ + KPasswordDialog* dialog = new KPasswordDialog; + dialog->setPrompt(i18n("Log in information for %1", provider().name())); + connect(dialog, &KPasswordDialog::gotUsernameAndPassword, this, &KNSReviews::credentialsReceived); +} + +void KNSReviews::credentialsReceived(const QString& user, const QString& password) +{ + bool b = provider().saveCredentials(user, password); + if (!b) + qWarning() << "couldn't save" << user << "credentials for" << provider().name(); +} + +bool KNSReviews::hasCredentials() const +{ + return provider().hasCredentials(); +} + +QString KNSReviews::userName() const +{ + QString user, password; + provider().loadCredentials(user, password); + return user; +} + +void KNSReviews::setProviderUrl(const QUrl& url) +{ + m_providerUrl = url; + if(!m_providerUrl.isEmpty() && !s_shared->atticaManager.providerFiles().contains(url)) { + s_shared->atticaManager.addProviderFile(url); + } +} + +Attica::Provider KNSReviews::provider() const +{ + return s_shared->atticaManager.providerFor(m_providerUrl); +} + +bool KNSReviews::isResourceSupported(AbstractResource* res) const +{ + return qobject_cast(res); +} + +#include "KNSReviews.moc" diff --git a/libdiscover/backends/KNSBackend/KNSReviews.h b/libdiscover/backends/KNSBackend/KNSReviews.h new file mode 100644 index 0000000..8da15b2 --- /dev/null +++ b/libdiscover/backends/KNSBackend/KNSReviews.h @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef KNSREVIEWS_H +#define KNSREVIEWS_H + +#include +#include + +class KNSBackend; +class QUrl; +namespace Attica { +class ProviderManager; +class BaseJob; +} + +class KNSReviews : public AbstractReviewsBackend +{ + Q_OBJECT + public: + explicit KNSReviews(KNSBackend* backend); + + void fetchReviews(AbstractResource* app, int page = 1) override; + bool isFetching() const override; + void flagReview(Review* r, const QString& reason, const QString& text) override; + void deleteReview(Review* r) override; + void submitReview(AbstractResource* app, const QString& summary, const QString& review_text, const QString& rating) override; + void submitUsefulness(Review* r, bool useful) override; + void logout() override; + void registerAndLogin() override; + void login() override; + Rating* ratingForApplication(AbstractResource* app) const override; + bool hasCredentials() const override; + QString userName() const override; + + void setProviderUrl(const QUrl &url); + bool isResourceSupported(AbstractResource * res) const override; + + private Q_SLOTS: + void commentsReceived(Attica::BaseJob* job); + void credentialsReceived(const QString& user, const QString& password); + + private: + Attica::Provider provider() const; + KNSBackend* const m_backend; + QUrl m_providerUrl; + int m_fetching = 0; +}; + +#endif // KNSREVIEWS_H diff --git a/libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc b/libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc new file mode 100644 index 0000000..aef74e6 --- /dev/null +++ b/libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc @@ -0,0 +1,66 @@ +[KNewStuff3] +Name=Kate Snippets +Name[ar]=قصاصات كيت +Name[ca]=Retalls del Kate +Name[ca@valencia]=Retalls del Kate +Name[cs]=Ústřižky Kate +Name[da]=Kate-tekststumper +Name[de]=Kate-Textbausteine +Name[el]=Τμήματα κώδικα Kate +Name[en_GB]=Kate Snippets +Name[es]=Fragmentos de código de Kate +Name[eu]=Katen mozkinak +Name[fi]=Kate-katkelmat +Name[fr]=Fragments Kate +Name[gl]=Fragmentos de código para Kate +Name[hu]=Kate Snippets +Name[id]=Kate Snippets +Name[it]=Frammenti di Kate +Name[ko]=Kate 스니펫 +Name[nl]=Kate-fragmenten +Name[nn]=Kate-tekstbitar +Name[pl]=Wstawki Kate +Name[pt]=Excertos do Kate +Name[pt_BR]=Trechos do Kate +Name[ru]=Фрагменты текста Kate +Name[sk]=Úryvky Kate +Name[sl]=Izrezki za Kate +Name[sr]=Кејтини исечци +Name[sr@ijekavian]=Кејтини исјечци +Name[sr@ijekavianlatin]=Kateini isječci +Name[sr@latin]=Kateini isečci +Name[sv]=Kate-textsnuttar +Name[tr]=Kate Kod Parçaları +Name[uk]=Фрагменти Kate +Name[x-test]=xxKate Snippetsxx +Name[zh_CN]=Kate 代码片断 +Name[zh_TW]=Kate 片段 + +#ProvidersUrl=http://.../provider.xml +ProvidersUrl=http://download.kde.org/ocs/providers.xml +Categories=KTextEditor Snippet +UploadCategories=KTextEditor Snippet + +# # How to check? Any number of the lines below, 'ifpossible' is default +# ChecksumPolicy=... # never/ifpossible/always +# SignaturePolicy=... # never/ifpossible/always + +# # Where to install? Exactly one of the lines below +# # Note: if all three are missing, entry is considered remote resource +# StandardResource=wallpapers # becomes $KDEHOME/share/wallpapers +# becomes $KDEHOME/share/apps/appname/datadir +TargetDir=/ktexteditor_snippets/ghns +# InstallPath=.dir/subdir # becomes $HOME/.dir/subdir + +# # How to name the files? + #doesn't use payload file name + +CustomName=true + +# # What to do after installation? Any number of the lines below +# # unpack the downloaded archive +# Uncompress=true +# # post-installation command +# InstallationCommand=dbus-send ... %f ... + +Extends=org.kde.kate.desktop diff --git a/libdiscover/backends/KNSBackend/tests/CMakeLists.txt b/libdiscover/backends/KNSBackend/tests/CMakeLists.txt new file mode 100644 index 0000000..4fabe5e --- /dev/null +++ b/libdiscover/backends/KNSBackend/tests/CMakeLists.txt @@ -0,0 +1,11 @@ +include_directories(..) + +add_executable(knsbackendtest KNSBackendTest.cpp) +add_test(knsbackendtest knsbackendtest) +ecm_mark_as_test(knsbackendtest) +target_link_libraries(knsbackendtest + Discover::Common + + Qt5::Test Qt5::Core + KF5::NewStuff KF5::Attica +) diff --git a/libdiscover/backends/KNSBackend/tests/KNSBackendTest.cpp b/libdiscover/backends/KNSBackend/tests/KNSBackendTest.cpp new file mode 100644 index 0000000..058c9b0 --- /dev/null +++ b/libdiscover/backends/KNSBackend/tests/KNSBackendTest.cpp @@ -0,0 +1,166 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "KNSBackendTest.h" +#include "utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +QTEST_MAIN( KNSBackendTest ) + +KNSBackendTest::KNSBackendTest(QObject* parent) + : QObject(parent) + , m_r(nullptr) +{ + QStandardPaths::setTestModeEnabled(true); + ResourcesModel* model = new ResourcesModel(QLatin1String("kns-backend"), this); + Q_ASSERT(!model->backends().isEmpty()); + auto findTestBackend = [](AbstractResourcesBackend* backend) { + return backend->name() == QLatin1String("discover_ktexteditor_codesnippets_core.knsrc"); + }; + m_backend = kFilter>(model->backends(), findTestBackend).at(0); + + if (!m_backend->isValid()) { + qWarning() << "couldn't run the test"; + exit(0); + } + + connect(m_backend->reviewsBackend(), &AbstractReviewsBackend::reviewsReady, this, &KNSBackendTest::reviewsArrived); +} + +QVector KNSBackendTest::getResources(ResultsStream* stream, bool canBeEmpty) +{ + Q_ASSERT(stream); + Q_ASSERT(stream->objectName() != QLatin1String("KNS-void")); + QSignalSpy spyResources(stream, &ResultsStream::destroyed); + QVector resources; + connect(stream, &ResultsStream::resourcesFound, this, [&resources](const QVector& res) { resources += res; }); + Q_ASSERT(spyResources.wait(10000)); + Q_ASSERT(!resources.isEmpty() || canBeEmpty); + return resources; +} + +QVector KNSBackendTest::getAllResources(AbstractResourcesBackend* backend) +{ + AbstractResourcesBackend::Filters f; + if (CategoryModel::global()->rootCategories().isEmpty()) + CategoryModel::global()->populateCategories(); + f.category = CategoryModel::global()->rootCategories().constFirst(); + return getResources(backend->search(f)); +} + +void KNSBackendTest::testRetrieval() +{ + QVERIFY(m_backend->backendUpdater()); + QCOMPARE(m_backend->updatesCount(), m_backend->backendUpdater()->toUpdate().count()); + + QSignalSpy spy(m_backend, &AbstractResourcesBackend::fetchingChanged); + QVERIFY(!m_backend->isFetching() || spy.wait()); + + const auto resources = getAllResources(m_backend); + foreach(AbstractResource* res, resources) { + QVERIFY(!res->name().isEmpty()); + QVERIFY(!res->categories().isEmpty()); + QVERIFY(!res->origin().isEmpty()); + QVERIFY(!res->icon().isNull()); +// QVERIFY(!res->comment().isEmpty()); +// QVERIFY(!res->longDescription().isEmpty()); +// QVERIFY(!res->license().isEmpty()); + QVERIFY(res->homepage().isValid() && !res->homepage().isEmpty()); + QVERIFY(res->state() > AbstractResource::Broken); + QVERIFY(res->addonsInformation().isEmpty()); + + QSignalSpy spy(res, &AbstractResource::screenshotsFetched); + res->fetchScreenshots(); + QVERIFY(spy.count() || spy.wait()); + + QSignalSpy spy1(res, &AbstractResource::changelogFetched); + res->fetchChangelog(); + QVERIFY(spy1.count() || spy1.wait()); + } +} + +void KNSBackendTest::testReviews() +{ + const QVector resources = getAllResources(m_backend); + AbstractReviewsBackend* rev = m_backend->reviewsBackend(); + QVERIFY(!rev->hasCredentials()); + foreach(AbstractResource* res, resources) { + Rating* r = rev->ratingForApplication(res); + QVERIFY(r); + QCOMPARE(r->packageName(), res->packageName()); + QVERIFY(r->rating()>0 && r->rating()<=10); + } + + auto res = resources.first(); + QSignalSpy spy(rev, &AbstractReviewsBackend::reviewsReady); + rev->fetchReviews(res); + QVERIFY(spy.count() || spy.wait()); +} + +void KNSBackendTest::reviewsArrived(AbstractResource* r, const QVector& revs) +{ + m_r = r; + m_revs = revs; +} + +void KNSBackendTest::testResourceByUrl() +{ + AbstractResourcesBackend::Filters f; + f.resourceUrl = QUrl(QStringLiteral("kns://") + m_backend->name() + QStringLiteral("/api.kde-look.org/1136471")); + const QVector resources = getResources(m_backend->search(f)); + const QVector res = kTransform>(resources, [](AbstractResource* res){ return res->url(); }); + QCOMPARE(res.count(), 1); + QCOMPARE(f.resourceUrl, res.constFirst()); + + auto resource = resources.constFirst(); + QVERIFY(!resource->isInstalled()); //Make sure .qttest is clean before running the test + + QSignalSpy spy(resource, &AbstractResource::stateChanged); + auto b = resource->backend(); + b->installApplication(resource); + QVERIFY(spy.wait()); + b->removeApplication(resource); + QVERIFY(spy.wait()); + QCOMPARE(spy.count(), 2); + QVERIFY(!resource->isInstalled()); +} + +void KNSBackendTest::testResourceByUrlResourcesModel() +{ + AbstractResourcesBackend::Filters filter; + filter.resourceUrl = QUrl(QStringLiteral("kns://plasmoids.knsrc/store.kde.org/1169537")); //Wrong domain + + auto resources = getResources(ResourcesModel::global()->search(filter), true); + const QVector res = kTransform>(resources, [](AbstractResource* res){ return res->url(); }); + QCOMPARE(res.count(), 0); +} diff --git a/libdiscover/backends/KNSBackend/tests/KNSBackendTest.h b/libdiscover/backends/KNSBackend/tests/KNSBackendTest.h new file mode 100644 index 0000000..b244feb --- /dev/null +++ b/libdiscover/backends/KNSBackend/tests/KNSBackendTest.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef KNSBACKENDTEST_H +#define KNSBACKENDTEST_H + +#include +#include +#include "ReviewsBackend/ReviewsModel.h" + +class AbstractResourcesBackend; +class AbstractResource; +class ResultsStream; +class Category; + +class KNSBackendTest : public QObject +{ + Q_OBJECT + public: + explicit KNSBackendTest(QObject* parent = nullptr); + + private Q_SLOTS: + void testRetrieval(); + void testReviews(); + void testResourceByUrl(); + void testResourceByUrlResourcesModel(); + + public Q_SLOTS: + void reviewsArrived(AbstractResource *r, const QVector& revs); + + private: + QVector getResources(ResultsStream* stream, bool canBeEmpty = false); + QVector getAllResources(AbstractResourcesBackend* backend); + QPointer m_backend; + QPointer m_r; + QVector m_revs; +}; + +#endif // KNSBACKENDTEST_H diff --git a/libdiscover/backends/KNSBackend/tests/testplasmoids.knsrc b/libdiscover/backends/KNSBackend/tests/testplasmoids.knsrc new file mode 100644 index 0000000..19293b5 --- /dev/null +++ b/libdiscover/backends/KNSBackend/tests/testplasmoids.knsrc @@ -0,0 +1,6 @@ +[KNewStuff3] +ProvidersUrl=http://download.kde.org/ocs/providers.xml +Categories=Plasma 5 Plasmoid +StandardResource=tmp +InstallationCommand=plasmapkg2 -i %f +UninstallCommand=plasmapkg2 -r %f diff --git a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp new file mode 100644 index 0000000..8c5ec76 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp @@ -0,0 +1,240 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "AppPackageKitResource.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "config-paths.h" +#include "utils.h" + +AppPackageKitResource::AppPackageKitResource(const AppStream::Component& data, const QString &packageName, PackageKitBackend* parent) + : PackageKitResource(packageName, QString(), parent) + , m_appdata(data) +{ + Q_ASSERT(data.isValid()); +} + +QString AppPackageKitResource::name() const +{ + QString ret; + if (!m_appdata.extends().isEmpty()) { + auto components = backend()->componentsById(m_appdata.extends().constFirst()); + + if (components.isEmpty()) + qWarning() << "couldn't find" << m_appdata.extends() << "which is supposedly extended by" << m_appdata.id(); + else + ret = components.constFirst().name() + QStringLiteral(" - ") + m_appdata.name(); + } + + if (ret.isEmpty()) + ret = m_appdata.name(); + return ret; +} + +QString AppPackageKitResource::longDescription() +{ + const auto desc = m_appdata.description(); + if (!desc.isEmpty()) + return desc; + + return PackageKitResource::longDescription(); +} + +static QIcon componentIcon(const AppStream::Component &comp) +{ + QIcon ret; + foreach(const AppStream::Icon &icon, comp.icons()) { + QStringList stock; + switch(icon.kind()) { + case AppStream::Icon::KindLocal: + ret.addFile(icon.url().toLocalFile(), icon.size()); + break; + case AppStream::Icon::KindCached: + ret.addFile(icon.url().toLocalFile(), icon.size()); + break; + case AppStream::Icon::KindStock: { + const auto ret = QIcon::fromTheme(icon.name()); + if (!ret.isNull()) + return ret; + break; + } + default: + break; + } + } + if (ret.isNull()) { + ret = QIcon::fromTheme(QStringLiteral("package-x-generic")); + } + return ret; +} + +QVariant AppPackageKitResource::icon() const +{ + return componentIcon(m_appdata); +} + +QString AppPackageKitResource::license() +{ + const auto license = m_appdata.projectLicense(); + return license.isEmpty() ? PackageKitResource::license() : license; +} + +QStringList AppPackageKitResource::mimetypes() const +{ + return m_appdata.provided(AppStream::Provided::KindMimetype).items(); +} + +QStringList AppPackageKitResource::categories() +{ + auto cats = m_appdata.categories(); + if (m_appdata.kind() != AppStream::Component::KindAddon) + cats.append(QStringLiteral("Application")); + return cats; +} + +QString AppPackageKitResource::comment() +{ + const auto summary = m_appdata.summary(); + if (!summary.isEmpty()) + return summary; + + return PackageKitResource::comment(); +} + +QString AppPackageKitResource::appstreamId() const +{ + return m_appdata.id(); +} + +QUrl AppPackageKitResource::homepage() +{ + return m_appdata.url(AppStream::Component::UrlKindHomepage); +} + +QUrl AppPackageKitResource::helpURL() +{ + return m_appdata.url(AppStream::Component::UrlKindHelp); +} + +QUrl AppPackageKitResource::bugURL() +{ + return m_appdata.url(AppStream::Component::UrlKindBugtracker); +} + +QUrl AppPackageKitResource::donationURL() +{ + return m_appdata.url(AppStream::Component::UrlKindDonation); +} + +bool AppPackageKitResource::isTechnical() const +{ + static QString desktop = QString::fromUtf8(qgetenv("XDG_CURRENT_DESKTOP")); + const auto desktops = m_appdata.compulsoryForDesktops(); + return (!desktops.isEmpty() && !desktops.contains(desktop)) || m_appdata.kind() == AppStream::Component::KindAddon; +} + +void AppPackageKitResource::fetchScreenshots() +{ + const auto sc = AppStreamUtils::fetchScreenshots(m_appdata); + Q_EMIT screenshotsFetched(sc.first, sc.second); +} + +QStringList AppPackageKitResource::allPackageNames() const +{ + auto ret = m_appdata.packageNames(); + if (ret.isEmpty()) { + ret = QStringList{ PackageKit::Daemon::packageName(availablePackageId()) }; + } + return ret; +} + +QList AppPackageKitResource::addonsInformation() +{ + return kTransform>( + backend()->extendedBy(m_appdata.id()), + [](AppPackageKitResource* r) { return PackageState(r->appstreamId(), r->name(), r->comment(), r->isInstalled()); } + ); +} + +QStringList AppPackageKitResource::extends() const +{ + return m_appdata.extends(); +} + +QString AppPackageKitResource::changelog() const +{ + return AppStreamUtils::changelogToHtml(m_appdata); +} + +void AppPackageKitResource::invokeApplication() const +{ + auto trans = PackageKit::Daemon::getFiles({installedPackageId()}); + connect(trans, &PackageKit::Transaction::files, this, [this](const QString &/*packageID*/, const QStringList &filenames) { + const auto allServices = QStandardPaths::locateAll(QStandardPaths::ApplicationsLocation, m_appdata.id()); + if (!allServices.isEmpty()) { + const auto packageServices = kFilter(allServices, [filenames](const QString &file) { return filenames.contains(file); }); + QProcess::startDetached(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/discover/runservice"), {packageServices}); + } else { + const QStringList exes = m_appdata.provided(AppStream::Provided::KindBinary).items(); + const auto packageExecutables = kFilter(allServices, [filenames](const QString &exe) { return filenames.contains(QLatin1Char('/') + exe); }); + if (!packageExecutables.isEmpty()) { + QProcess::startDetached(exes.constFirst()); + } else { + const auto locations = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation); + const auto desktopFiles = kFilter(filenames, [locations](const QString &exe) { + for (const auto &location: locations) { + if (exe.startsWith(location)) + return exe.contains(QLatin1String(".desktop")); + } + return false; + }); + if (!desktopFiles.isEmpty()) { + QProcess::startDetached(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/discover/runservice"), { desktopFiles }); + } + } + qWarning() << "Could not find any executables" << exes << filenames; + } + }); +} + +QDate AppPackageKitResource::releaseDate() const +{ + if (!m_appdata.releases().isEmpty()) { + auto release = m_appdata.releases().constFirst(); + return release.timestamp().date(); + } + + return {}; +} + +void AppPackageKitResource::fetchChangelog() +{ + emit changelogFetched(changelog()); +} diff --git a/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h new file mode 100644 index 0000000..3084ee1 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef APPPACKAGEKITRESOURCE_H +#define APPPACKAGEKITRESOURCE_H + +#include "PackageKitResource.h" +#include "PackageKitBackend.h" + +class AppPackageKitResource : public PackageKitResource +{ + Q_OBJECT + public: + explicit AppPackageKitResource(const AppStream::Component& data, const QString &packageName, PackageKitBackend* parent); + + QString appstreamId() const override; + + bool isTechnical() const override; + QString name() const override; + QVariant icon() const override; + QStringList mimetypes() const override; + QStringList categories() override; + QString longDescription() override; + QUrl homepage() override; + QUrl helpURL() override; + QUrl bugURL() override; + QUrl donationURL() override; + QString comment() override; + QString license() override; + QStringList allPackageNames() const override; + QList addonsInformation() override; + QStringList extends() const override; + void fetchScreenshots() override; + void invokeApplication() const override; + bool canExecute() const override { return true; } + QDate releaseDate() const override; + QString changelog() const override; + + void fetchChangelog() override; + + private: + const AppStream::Component m_appdata; +}; + +#endif // APPPACKAGEKITRESOURCE_H diff --git a/libdiscover/backends/PackageKitBackend/CMakeLists.txt b/libdiscover/backends/PackageKitBackend/CMakeLists.txt new file mode 100644 index 0000000..9e1b343 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/CMakeLists.txt @@ -0,0 +1,38 @@ +find_package(KF5 REQUIRED Notifications) + +add_subdirectory(runservice) + +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-paths.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-paths.h) + +add_library(packagekit-backend MODULE PackageKitBackend.cpp + PackageKitResource.cpp + AppPackageKitResource.cpp + PKTransaction.cpp + PackageKitUpdater.cpp + PackageKitMessages.cpp + PackageKitSourcesBackend.cpp + LocalFilePKResource.cpp + TransactionSet.cpp + pkui.qrc +) + +target_link_libraries(packagekit-backend PRIVATE Discover::Common Qt5::Core PK::packagekitqt5 KF5::ConfigGui KF5::KIOCore KF5::Archive AppStreamQt) + +install(TARGETS packagekit-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) + +#notifier +add_library(DiscoverPackageKitNotifier MODULE PackageKitNotifier.cpp) +target_link_libraries(DiscoverPackageKitNotifier PRIVATE PK::packagekitqt5 Discover::Notifiers KF5::I18n KF5::Notifications KF5::ConfigCore) +set_target_properties(DiscoverPackageKitNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover) + +install(TARGETS DiscoverPackageKitNotifier DESTINATION ${PLUGIN_INSTALL_DIR}/discover-notifier) + +install(FILES packagekit-backend-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libdiscover/categories) +add_subdirectory(categoryimages) + +if(packagekitqt5_VERSION VERSION_GREATER 1.0.1 OR packagekitqt5_VERSION VERSION_EQUAL 1.0.1) + target_compile_definitions(packagekit-backend PUBLIC -DPKQT_1_0) + target_compile_definitions(DiscoverPackageKitNotifier PUBLIC -DPKQT_1_0) +endif() + +install( FILES org.kde.discover.packagekit.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} ) diff --git a/libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp new file mode 100644 index 0000000..4615051 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp @@ -0,0 +1,57 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "LocalFilePKResource.h" +#include +#include + +LocalFilePKResource::LocalFilePKResource(QUrl path, PackageKitBackend* parent) + : PackageKitResource(path.toString(), path.toString(), parent) + , m_path(std::move(path)) +{ +} + +int LocalFilePKResource::size() +{ + const QFileInfo info(m_path.toLocalFile()); + return info.size(); +} + +QString LocalFilePKResource::name() const +{ + const QFileInfo info(m_path.toLocalFile()); + return info.baseName(); +} + +QString LocalFilePKResource::comment() +{ + return m_path.toLocalFile(); +} + +void LocalFilePKResource::markInstalled() +{ + m_state = AbstractResource::Installed; + Q_EMIT stateChanged(); +} + +QString LocalFilePKResource::origin() const +{ + return m_path.toLocalFile(); +} diff --git a/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h new file mode 100644 index 0000000..4683b54 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef LOCALFILEPKRESOURCE_H +#define LOCALFILEPKRESOURCE_H + +#include "PackageKitResource.h" + +class LocalFilePKResource : public PackageKitResource +{ + Q_OBJECT + public: + LocalFilePKResource(QUrl path, PackageKitBackend* parent); + + QString name() const override; + QString comment() override; + + AbstractResource::State state() override { return m_state; } + int size() override; + void markInstalled(); + QString origin() const override; + + private: + AbstractResource::State m_state = AbstractResource::None; + QUrl m_path; +}; + +#endif // LOCALFILEPKRESOURCE_H diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.cpp b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp new file mode 100644 index 0000000..fbf854f --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PKTransaction.cpp @@ -0,0 +1,294 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PKTransaction.h" +#include "PackageKitBackend.h" +#include "PackageKitResource.h" +#include "PackageKitMessages.h" +#include "utils.h" +#include "LocalFilePKResource.h" +#include +#include +#include +#include +#include +#include +#include + +PKTransaction::PKTransaction(const QVector& apps, Transaction::Role role) + : Transaction(apps.first(), apps.first(), role) + , m_apps(apps) +{ + Q_ASSERT(!apps.contains(nullptr)); + foreach(auto r, apps) { + PackageKitResource* res = qobject_cast(r); + m_pkgnames.unite(res->allPackageNames().toSet()); + } + + QTimer::singleShot(0, this, &PKTransaction::start); +} + +static QStringList packageIds(const QVector& res, std::function func) +{ + QStringList ret; + foreach(auto r, res) { + ret += func(qobject_cast(r)); + } + ret.removeDuplicates(); + return ret; +} + +void PKTransaction::start() +{ + trigger(PackageKit::Transaction::TransactionFlagSimulate); +} + +void PKTransaction::trigger(PackageKit::Transaction::TransactionFlags flags) +{ + if (m_trans) + m_trans->deleteLater(); + m_newPackageStates.clear(); + + if (m_apps.size() == 1 && qobject_cast(m_apps.at(0))) { + auto app = qobject_cast(m_apps.at(0)); + m_trans = PackageKit::Daemon::installFile(QUrl(app->packageName()).toLocalFile(), flags); + connect(m_trans.data(), &PackageKit::Transaction::finished, this, [this, app](PackageKit::Transaction::Exit status) { + const bool simulate = m_trans->transactionFlags() & PackageKit::Transaction::TransactionFlagSimulate; + if (!simulate && status == PackageKit::Transaction::ExitSuccess) { + app->markInstalled(); + } + }); + } else switch (role()) { + case Transaction::ChangeAddonsRole: + case Transaction::InstallRole: + m_trans = PackageKit::Daemon::installPackages(packageIds(m_apps, [](PackageKitResource* r){return r->availablePackageId(); }), flags); + break; + case Transaction::RemoveRole: + //see bug #315063 + m_trans = PackageKit::Daemon::removePackages(packageIds(m_apps, [](PackageKitResource* r){return r->installedPackageId(); }), true /*allowDeps*/, false, flags); + break; + }; + Q_ASSERT(m_trans); + +// connect(m_trans.data(), &PackageKit::Transaction::statusChanged, this, [this]() { qDebug() << "state..." << m_trans->status(); }); + connect(m_trans.data(), &PackageKit::Transaction::package, this, &PKTransaction::packageResolved); + connect(m_trans.data(), &PackageKit::Transaction::finished, this, &PKTransaction::cleanup); + connect(m_trans.data(), &PackageKit::Transaction::errorCode, this, &PKTransaction::errorFound); + connect(m_trans.data(), &PackageKit::Transaction::mediaChangeRequired, this, &PKTransaction::mediaChange); + connect(m_trans.data(), &PackageKit::Transaction::requireRestart, this, &PKTransaction::requireRestart); + connect(m_trans.data(), &PackageKit::Transaction::repoSignatureRequired, this, &PKTransaction::repoSignatureRequired); + connect(m_trans.data(), &PackageKit::Transaction::percentageChanged, this, &PKTransaction::progressChanged); + connect(m_trans.data(), &PackageKit::Transaction::statusChanged, this, &PKTransaction::statusChanged); + connect(m_trans.data(), &PackageKit::Transaction::eulaRequired, this, &PKTransaction::eulaRequired); + connect(m_trans.data(), &PackageKit::Transaction::allowCancelChanged, this, &PKTransaction::cancellableChanged); + connect(m_trans.data(), &PackageKit::Transaction::speedChanged, this, [this]() { + setDownloadSpeed(m_trans->speed()); + }); + + setCancellable(m_trans->allowCancel()); +} + +void PKTransaction::statusChanged() +{ + setStatus(m_trans->status() == PackageKit::Transaction::StatusDownload ? Transaction::DownloadingStatus : Transaction::CommittingStatus); + progressChanged(); +} + +int percentageWithStatus(PackageKit::Transaction::Status status, uint percentage); + +void PKTransaction::progressChanged() +{ + auto percent = m_trans->percentage(); + if (percent == 101) { + qWarning() << "percentage cannot be calculated"; + percent = 50; + } + + const auto processedPercentage = percentageWithStatus(m_trans->status(), qBound(0, percent, 100)); + if (processedPercentage >= 0) + setProgress(processedPercentage); +} + +void PKTransaction::cancellableChanged() +{ + setCancellable(m_trans->allowCancel()); +} + +void PKTransaction::cancel() +{ + if (!m_trans) { + setStatus(CancelledStatus); + } else if (m_trans->allowCancel()) { + m_trans->cancel(); + } else { + qWarning() << "trying to cancel a non-cancellable transaction: " << resource()->name(); + } +} + +void PKTransaction::cleanup(PackageKit::Transaction::Exit exit, uint runtime) +{ + Q_UNUSED(runtime) + const bool cancel = !m_proceedFunctions.isEmpty() || exit == PackageKit::Transaction::ExitCancelled; + const bool failed = exit == PackageKit::Transaction::ExitFailed || exit == PackageKit::Transaction::ExitUnknown; + const bool simulate = m_trans->transactionFlags() & PackageKit::Transaction::TransactionFlagSimulate; + + disconnect(m_trans, nullptr, this, nullptr); + m_trans = nullptr; + + const auto backend = qobject_cast(resource()->backend()); + + if (!cancel && !failed && simulate) { + auto packagesToRemove = m_newPackageStates.value(PackageKit::Transaction::InfoRemoving); + QMutableListIterator i(packagesToRemove); + QSet removedResources; + while (i.hasNext()) { + const auto pkgname = PackageKit::Daemon::packageName(i.next()); + removedResources.unite(backend->resourcesByPackageName(pkgname)); + + if (m_pkgnames.contains(pkgname)) { + i.remove(); + } + } + removedResources.subtract(kVectorToSet(m_apps)); + + if (!packagesToRemove.isEmpty() || !removedResources.isEmpty()) { + QString msg = QStringLiteral("
  • ") + PackageKitResource::joinPackages(packagesToRemove, QStringLiteral("
  • "), {}); + if (!removedResources.isEmpty()) { + const QStringList removedResourcesStr = kTransform(removedResources, [](AbstractResource* a) { return a->name(); }); + msg += QLatin1Char('\n'); + msg += removedResourcesStr.join(QStringLiteral("
  • ")); + } + msg += QStringLiteral("
"); + + Q_EMIT proceedRequest(i18n("Confirm package removal"), i18np("This action will also remove the following package:\n%2", "This action will also remove the following packages:\n%2", packagesToRemove.count(), msg)); + } else { + proceed(); + } + return; + } + + if (failed && m_newPackageStates.isEmpty()) + m_newPackageStates.insert(PackageKit::Transaction::InfoAvailable, kTransform(m_apps, [](AbstractResource* res) { return res->packageName(); })); + + this->submitResolve(); + if (failed) + setStatus(Transaction::DoneWithErrorStatus); + else if (cancel) + setStatus(Transaction::CancelledStatus); + else + setStatus(Transaction::DoneStatus); +} + +void PKTransaction::processProceedFunction() +{ + auto t = m_proceedFunctions.takeFirst()(); + connect(t, &PackageKit::Transaction::finished, this, [this](PackageKit::Transaction::Exit status) { + if (status != PackageKit::Transaction::Exit::ExitSuccess) { + qWarning() << "transaction failed" << sender() << status; + cancel(); + return; + } + + if (!m_proceedFunctions.isEmpty()) { + processProceedFunction(); + } else { + start(); + } + }); +} + +void PKTransaction::proceed() +{ + if (!m_proceedFunctions.isEmpty()) { + processProceedFunction(); + } else { + trigger(PackageKit::Transaction::TransactionFlagOnlyTrusted); + } +} + +void PKTransaction::packageResolved(PackageKit::Transaction::Info info, const QString& packageId) +{ + m_newPackageStates[info].append(packageId); +} + +void PKTransaction::submitResolve() +{ + QStringList needResolving; + foreach(const auto &pkgids, m_newPackageStates) { + foreach(const auto &pkgid, pkgids) { + needResolving += PackageKit::Daemon::packageName(pkgid); + } + } + + if (!needResolving.isEmpty()) { + needResolving.removeDuplicates(); + const auto backend = qobject_cast(resource()->backend()); + backend->clearPackages(needResolving); + backend->resolvePackages(needResolving); + backend->fetchUpdates(); + } +} + +PackageKit::Transaction* PKTransaction::transaction() +{ + return m_trans; +} + +void PKTransaction::eulaRequired(const QString& eulaID, const QString& packageID, const QString& vendor, const QString& licenseAgreement) +{ + m_proceedFunctions << [eulaID](){ + return PackageKit::Daemon::acceptEula(eulaID); + }; + + Q_EMIT proceedRequest(i18n("Accept EULA"), i18n("The package %1 and its vendor %2 require that you accept their license:\n %3", + PackageKit::Daemon::packageName(packageID), vendor, licenseAgreement)); +} + +void PKTransaction::errorFound(PackageKit::Transaction::Error err, const QString& error) +{ + if (err == PackageKit::Transaction::ErrorNoLicenseAgreement) + return; + qWarning() << "PackageKit error:" << err << PackageKitMessages::errorMessage(err) << error; + Q_EMIT passiveMessage(PackageKitMessages::errorMessage(err)); +} + +void PKTransaction::mediaChange(PackageKit::Transaction::MediaType media, const QString& type, const QString& text) +{ + Q_UNUSED(media) + Q_EMIT passiveMessage(i18n("Media Change of type '%1' is requested.\n%2", type, text)); +} + +void PKTransaction::requireRestart(PackageKit::Transaction::Restart restart, const QString& pkgid) +{ + Q_EMIT passiveMessage(PackageKitMessages::restartMessage(restart, pkgid)); +} + +void PKTransaction::repoSignatureRequired(const QString& packageID, const QString& repoName, const QString& keyUrl, + const QString& keyUserid, const QString& keyId, const QString& keyFingerprint, + const QString& keyTimestamp, PackageKit::Transaction::SigType type) +{ + Q_EMIT proceedRequest(i18n("Missing signature for %1 in %2", packageID, repoName), + i18n("Do you trust the following key?\n\nUrl: %1\nUser: %2\nKey: %3\nFingerprint: %4\nTimestamp: %4\n", + keyUrl, keyUserid, keyFingerprint, keyTimestamp)); + + m_proceedFunctions << [type, keyId, packageID](){ + return PackageKit::Daemon::installSignature(type, keyId, packageID); + }; +} diff --git a/libdiscover/backends/PackageKitBackend/PKTransaction.h b/libdiscover/backends/PackageKitBackend/PKTransaction.h new file mode 100644 index 0000000..e3b4189 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PKTransaction.h @@ -0,0 +1,73 @@ +/*************************************************************************** + * Copyright © 2013 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef PKTRANSACTION_H +#define PKTRANSACTION_H + +#include +#include +#include +#include + +class PKTransaction : public Transaction +{ + Q_OBJECT + public: + explicit PKTransaction(const QVector& app, Transaction::Role role); + PackageKit::Transaction* transaction(); + + void cancel() override; + void proceed() override; + + public Q_SLOTS: + void start(); + + private: + void processProceedFunction(); + void statusChanged(); + + void cleanup(PackageKit::Transaction::Exit, uint); + void errorFound(PackageKit::Transaction::Error err, const QString& error); + void mediaChange(PackageKit::Transaction::MediaType media, const QString& type, const QString& text); + void requireRestart(PackageKit::Transaction::Restart restart, const QString& p); + void progressChanged(); + void eulaRequired(const QString &eulaID, const QString &packageID, const QString &vendor, const QString &licenseAgreement); + void cancellableChanged(); + void packageResolved(PackageKit::Transaction::Info info, const QString& packageId); + void submitResolve(); + void repoSignatureRequired(const QString &packageID, + const QString &repoName, + const QString &keyUrl, + const QString &keyUserid, + const QString &keyId, + const QString &keyFingerprint, + const QString &keyTimestamp, + PackageKit::Transaction::SigType type); + + void trigger(PackageKit::Transaction::TransactionFlags flags); + QPointer m_trans; + const QVector m_apps; + QSet m_pkgnames; + QVector> m_proceedFunctions; + + QMap m_newPackageStates; +}; + +#endif // PKTRANSACTION_H diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp new file mode 100644 index 0000000..f445b58 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp @@ -0,0 +1,668 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PackageKitBackend.h" +#include "PackageKitSourcesBackend.h" +#include "PackageKitResource.h" +#include "PackageKitUpdater.h" +#include "AppPackageKitResource.h" +#include "PKTransaction.h" +#include "LocalFilePKResource.h" +#include "TransactionSet.h" +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "utils.h" +#include "config-paths.h" + +DISCOVER_BACKEND_PLUGIN(PackageKitBackend) + +template +static void setWhenAvailable(const QDBusPendingReply& pending, W func, QObject* parent) +{ + QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(pending, parent); + QObject::connect(watcher, &QDBusPendingCallWatcher::finished, + parent, [func](QDBusPendingCallWatcher* watcher) { + watcher->deleteLater(); + QDBusPendingReply reply = *watcher; + func(reply.value()); + }); +} + +QString PackageKitBackend::locateService(const QString &filename) +{ + return QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("applications/")+filename); +} + +PackageKitBackend::PackageKitBackend(QObject* parent) + : AbstractResourcesBackend(parent) + , m_appdata(new AppStream::Pool) + , m_updater(new PackageKitUpdater(this)) + , m_refresher(nullptr) + , m_isFetching(0) + , m_reviews(AppStreamIntegration::global()->reviews()) +{ + QTimer* t = new QTimer(this); + connect(t, &QTimer::timeout, this, &PackageKitBackend::checkForUpdates); + t->setInterval(60 * 60 * 1000); + t->setSingleShot(false); + t->start(); + + m_delayedDetailsFetch.setSingleShot(true); + m_delayedDetailsFetch.setInterval(100); + connect(&m_delayedDetailsFetch, &QTimer::timeout, this, &PackageKitBackend::performDetailsFetch); + + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::updatesChanged, this, &PackageKitBackend::fetchUpdates); + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::isRunningChanged, this, &PackageKitBackend::checkDaemonRunning); + connect(m_reviews.data(), &OdrsReviewsBackend::ratingsReady, this, &AbstractResourcesBackend::emitRatingsReady); + + SourcesModel::global()->addSourcesBackend(new PackageKitSourcesBackend(this)); + + reloadPackageList(); + + setWhenAvailable(PackageKit::Daemon::getTimeSinceAction(PackageKit::Transaction::RoleRefreshCache), [this](uint timeSince) { + if (timeSince > 3600) + checkForUpdates(); + else + fetchUpdates(); + }, this); +} + +PackageKitBackend::~PackageKitBackend() = default; + +bool PackageKitBackend::isFetching() const +{ + return m_isFetching; +} + +void PackageKitBackend::acquireFetching(bool f) +{ + if (f) + m_isFetching++; + else + m_isFetching--; + + if ((!f && m_isFetching==0) || (f && m_isFetching==1)) { + emit fetchingChanged(); + } + Q_ASSERT(m_isFetching>=0); +} + +void PackageKitBackend::reloadPackageList() +{ + acquireFetching(true); + if (m_refresher) { + disconnect(m_refresher.data(), &PackageKit::Transaction::finished, this, &PackageKitBackend::reloadPackageList); + } + + QString error; + m_appdata.reset(new AppStream::Pool); + const bool b = m_appdata->load(&error); + if (!b && m_packages.packages.isEmpty()) { + qWarning() << "Could not open the AppStream metadata pool" << error; + + QTimer::singleShot(0, this, [this]() { + Q_EMIT passiveMessage(i18n("Please make sure that Appstream is properly set up on your system")); + }); + } + + const auto components = m_appdata->components(); + QStringList neededPackages; + neededPackages.reserve(components.size()); + foreach(const AppStream::Component& component, components) { + if (component.kind() == AppStream::Component::KindFirmware) + continue; + + const auto pkgNames = component.packageNames(); + if (pkgNames.isEmpty()) { + auto launchable = component.launchable(AppStream::Launchable::KindDesktopId); + if (component.kind() == AppStream::Component::KindDesktopApp && !launchable.entries().isEmpty()) { + const QString file = locateService(launchable.entries().constFirst()); + if (!file.isEmpty()) { + acquireFetching(true); + auto trans = PackageKit::Daemon::searchFiles(file); + connect(trans, &PackageKit::Transaction::package, this, [trans](PackageKit::Transaction::Info info, const QString &packageID){ + if (info == PackageKit::Transaction::InfoInstalled) + trans->setProperty("installedPackage", packageID); + }); + connect(trans, &PackageKit::Transaction::finished, this, [this, trans, component](PackageKit::Transaction::Exit status) { + const auto pkgidVal = trans->property("installedPackage"); + if (status == PackageKit::Transaction::ExitSuccess && !pkgidVal.isNull()) { + const auto pkgid = pkgidVal.toString(); + auto res = addComponent(component, {PackageKit::Daemon::packageName(pkgid)}); + res->clearPackageIds(); + res->addPackageId(PackageKit::Transaction::InfoInstalled, pkgid, true); + } + acquireFetching(false); + }); + continue; + } + } + + qDebug() << "no packages for" << component.id(); + continue; + } + neededPackages += pkgNames; + + addComponent(component, pkgNames); + } + + acquireFetching(false); + if (!neededPackages.isEmpty()) { + neededPackages.removeDuplicates(); + resolvePackages(neededPackages); + } else { + qDebug() << "empty appstream db"; + if (PackageKit::Daemon::backendName() == QLatin1String("aptcc") || PackageKit::Daemon::backendName().isEmpty()) { + checkForUpdates(); + } + } +} + +AppPackageKitResource* PackageKitBackend::addComponent(const AppStream::Component& component, const QStringList& pkgNames) +{ + Q_ASSERT(isFetching()); + Q_ASSERT(!pkgNames.isEmpty()); + + + AppPackageKitResource* res = qobject_cast(m_packages.packages[component.id()]); + if (!res) { + res = new AppPackageKitResource(component, pkgNames.at(0), this); + m_packages.packages[component.id()] = res; + } else { + res->clearPackageIds(); + } + foreach (const QString& pkg, pkgNames) { + m_packages.packageToApp[pkg] += component.id(); + } + + foreach (const QString& pkg, component.extends()) { + m_packages.extendedBy[pkg] += res; + } + return res; +} + +void PackageKitBackend::clearPackages(const QStringList& packageNames) +{ + const auto resources = resourcesByPackageNames>(packageNames); + for(auto res: resources) { + qobject_cast(res)->clearPackageIds(); + } +} + +void PackageKitBackend::resolvePackages(const QStringList &packageNames) +{ + PackageKit::Transaction * tArch = PackageKit::Daemon::resolve(packageNames, PackageKit::Transaction::FilterArch); + connect(tArch, &PackageKit::Transaction::package, this, &PackageKitBackend::addPackageArch); + connect(tArch, &PackageKit::Transaction::errorCode, this, &PackageKitBackend::transactionError); + + PackageKit::Transaction * tNotArch = PackageKit::Daemon::resolve(packageNames, PackageKit::Transaction::FilterNotArch); + connect(tNotArch, &PackageKit::Transaction::package, this, &PackageKitBackend::addPackageNotArch); + connect(tNotArch, &PackageKit::Transaction::errorCode, this, &PackageKitBackend::transactionError); + + TransactionSet* merge = new TransactionSet({tArch, tNotArch}); + connect(merge, &TransactionSet::allFinished, this, &PackageKitBackend::getPackagesFinished); +} + +void PackageKitBackend::fetchUpdates() +{ + if (m_updater->isProgressing()) + return; + + PackageKit::Transaction * tUpdates = PackageKit::Daemon::getUpdates(); + connect(tUpdates, &PackageKit::Transaction::finished, this, &PackageKitBackend::getUpdatesFinished); + connect(tUpdates, &PackageKit::Transaction::package, this, &PackageKitBackend::addPackageToUpdate); + connect(tUpdates, &PackageKit::Transaction::errorCode, this, &PackageKitBackend::transactionError); + m_updatesPackageId.clear(); + m_hasSecurityUpdates = false; + + m_updater->setProgressing(true); +} + +void PackageKitBackend::addPackageArch(PackageKit::Transaction::Info info, const QString& packageId, const QString& summary) +{ + addPackage(info, packageId, summary, true); +} + +void PackageKitBackend::addPackageNotArch(PackageKit::Transaction::Info info, const QString& packageId, const QString& summary) +{ + addPackage(info, packageId, summary, false); +} + +void PackageKitBackend::addPackage(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary, bool arch) +{ + const QString packageName = PackageKit::Daemon::packageName(packageId); + QSet r = resourcesByPackageName(packageName); + if (r.isEmpty()) { + auto pk = new PackageKitResource(packageName, summary, this); + r = { pk }; + m_packagesToAdd.insert(pk); + } + foreach(auto res, r) + static_cast(res)->addPackageId(info, packageId, arch); +} + +void PackageKitBackend::getPackagesFinished() +{ + for(auto it = m_packages.packages.cbegin(); it != m_packages.packages.cend(); ++it) { + auto pkr = qobject_cast(it.value()); + if (pkr->packages().isEmpty()) { +// qWarning() << "Failed to find package for" << it.key(); + m_packagesToDelete += pkr; + } + } + includePackagesToAdd(); +} + +void PackageKitBackend::includePackagesToAdd() +{ + if (m_packagesToAdd.isEmpty() && m_packagesToDelete.isEmpty()) + return; + + acquireFetching(true); + foreach(PackageKitResource* res, m_packagesToAdd) { + m_packages.packages[res->packageName()] = res; + } + foreach(PackageKitResource* res, m_packagesToDelete) { + const auto pkgs = m_packages.packageToApp.value(res->packageName(), {res->packageName()}); + foreach(const auto &pkg, pkgs) { + auto res = m_packages.packages.take(pkg); + if (res) { + if (AppPackageKitResource* ares = qobject_cast(res)) { + for(const auto &ext: res->extends()) + m_packages.extendedBy[ext].removeAll(ares); + } + + emit resourceRemoved(res); + res->deleteLater(); + } + } + } + m_packagesToAdd.clear(); + m_packagesToDelete.clear(); + acquireFetching(false); +} + +void PackageKitBackend::transactionError(PackageKit::Transaction::Error, const QString& message) +{ + qWarning() << "Transaction error: " << message << sender(); + Q_EMIT passiveMessage(message); +} + +void PackageKitBackend::packageDetails(const PackageKit::Details& details) +{ + const QSet resources = resourcesByPackageName(PackageKit::Daemon::packageName(details.packageId())); + if (resources.isEmpty()) + qWarning() << "couldn't find package for" << details.packageId(); + + foreach(AbstractResource* res, resources) { + qobject_cast(res)->setDetails(details); + } +} + +QSet PackageKitBackend::resourcesByPackageName(const QString& name) const +{ + return resourcesByPackageNames>({name}); +} + +template +T PackageKitBackend::resourcesByPackageNames(const QStringList &pkgnames) const +{ + T ret; + ret.reserve(pkgnames.size()); + for(const QString &name : pkgnames) { + const QStringList names = m_packages.packageToApp.value(name, QStringList(name)); + foreach(const QString& name, names) { + AbstractResource* res = m_packages.packages.value(name); + if (res) + ret += res; + } + } + return ret; +} + +void PackageKitBackend::checkForUpdates() +{ + if (!m_refresher) { + acquireFetching(true); + m_refresher = PackageKit::Daemon::refreshCache(false); + connect(m_refresher.data(), &PackageKit::Transaction::errorCode, this, &PackageKitBackend::transactionError); + connect(m_refresher.data(), &PackageKit::Transaction::finished, this, [this]() { + m_refresher = nullptr; + reloadPackageList(); + acquireFetching(false); + }); + } else { + qWarning() << "already resetting"; + } +} + +QList PackageKitBackend::componentsById(const QString& id) const +{ + return m_appdata->componentsById(id); +} + +ResultsStream* PackageKitBackend::search(const AbstractResourcesBackend::Filters& filter) +{ + if (!filter.resourceUrl.isEmpty()) { + return findResourceByPackageName(filter.resourceUrl); + } else if (!filter.extends.isEmpty()) { + const auto ext = kTransform>(m_packages.extendedBy[filter.extends], [](AppPackageKitResource* a){ return a; }); + return new ResultsStream(QStringLiteral("PackageKitStream-extends"), ext); + } else if (filter.search.isEmpty()) { + return new ResultsStream(QStringLiteral("PackageKitStream-all"), kFilter>(m_packages.packages, [](AbstractResource* res) { return !res->isTechnical(); })); + } else { + const QList components = m_appdata->search(filter.search); + const QStringList ids = kTransform(components, [](const AppStream::Component& comp) { return comp.id(); }); + auto stream = new ResultsStream(QStringLiteral("PackageKitStream-search")); + if (!ids.isEmpty()) { + const auto resources = resourcesByPackageNames>(ids); + QTimer::singleShot(0, this, [stream, resources] () { + Q_EMIT stream->resourcesFound(resources); + }); + } + + PackageKit::Transaction * tArch = PackageKit::Daemon::resolve(filter.search, PackageKit::Transaction::FilterArch); + connect(tArch, &PackageKit::Transaction::package, this, &PackageKitBackend::addPackageArch); + connect(tArch, &PackageKit::Transaction::package, stream, [stream](PackageKit::Transaction::Info /*info*/, const QString &packageId){ + stream->setProperty("packageId", packageId); + }); + connect(tArch, &PackageKit::Transaction::finished, stream, [stream, ids, this](PackageKit::Transaction::Exit status) { + getPackagesFinished(); + if (status == PackageKit::Transaction::Exit::ExitSuccess) { + const auto packageId = stream->property("packageId"); + if (!packageId.isNull()) { + const auto res = resourcesByPackageNames>({PackageKit::Daemon::packageName(packageId.toString())}); + Q_EMIT stream->resourcesFound(kFilter>(res, [ids](AbstractResource* res){ return !ids.contains(res->appstreamId()); })); + } + } + stream->finish(); + }, Qt::QueuedConnection); + return stream; + } +} + +ResultsStream * PackageKitBackend::findResourceByPackageName(const QUrl& url) +{ + AbstractResource* pkg = nullptr; + if (url.host().isEmpty()) + Q_EMIT passiveMessage(i18n("Malformed appstream url '%1'", url.toDisplayString())); + else if (url.scheme() == QLatin1String("appstream")) { + static const QMap deprecatedAppstreamIds = { + { QStringLiteral("org.kde.krita.desktop"), QStringLiteral("krita.desktop") }, + { QStringLiteral("org.kde.digikam.desktop"), QStringLiteral("digikam.desktop") }, + { QStringLiteral("org.kde.ktorrent.desktop"), QStringLiteral("ktorrent.desktop") }, + { QStringLiteral("org.kde.gcompris.desktop"), QStringLiteral("gcompris.desktop") }, + { QStringLiteral("org.kde.kmymoney.desktop"), QStringLiteral("kmymoney.desktop") }, + { QStringLiteral("org.kde.kolourpaint.desktop"), QStringLiteral("kolourpaint.desktop") }, + { QStringLiteral("org.blender.blender.desktop"), QStringLiteral("blender.desktop") }, + }; + + const auto host = url.host(); + if (host.isEmpty()) + Q_EMIT passiveMessage(i18n("Malformed appstream url '%1'", url.toDisplayString())); + else { + const auto deprecatedHost = deprecatedAppstreamIds.value(host); //try this as fallback + for (auto it = m_packages.packages.constBegin(), itEnd = m_packages.packages.constEnd(); it != itEnd; ++it) { + if (it.key().compare(host, Qt::CaseInsensitive) == 0 + || it.key().compare(deprecatedHost, Qt::CaseInsensitive) == 0 + || (host.endsWith(QLatin1String(".desktop")) && host.compare(it.key()+QLatin1String(".desktop"), Qt::CaseInsensitive) == 0)) { + pkg = it.value(); + break; + } + } + if (!pkg) + qDebug() << "could not find" << host << deprecatedHost; + } + } + return new ResultsStream(QStringLiteral("PackageKitStream-url"), pkg ? QVector{pkg} : QVector{}); +} + +bool PackageKitBackend::hasSecurityUpdates() const +{ + return m_hasSecurityUpdates; +} + +int PackageKitBackend::updatesCount() const +{ + int ret = 0; + QSet packages; + for(auto res: upgradeablePackages()) { + const auto packageName = res->packageName(); + if (packages.contains(packageName)) { + continue; + } + packages.insert(packageName); + ret += 1; + } + return ret; +} + +Transaction* PackageKitBackend::installApplication(AbstractResource* app, const AddonList& addons) +{ + Transaction* t = nullptr; + if(!addons.addonsToInstall().isEmpty()) + { + QVector appsToInstall; + + if(!app->isInstalled()) + appsToInstall << app; + + foreach(const QString& toInstall, addons.addonsToInstall()) { + appsToInstall += m_packages.packages.value(toInstall); + Q_ASSERT(appsToInstall.last()); + } + t = new PKTransaction(appsToInstall, Transaction::ChangeAddonsRole); + } + + if (!addons.addonsToRemove().isEmpty()) { + QVector appsToRemove = kTransform>(addons.addonsToRemove(), [this](const QString& toRemove){ return m_packages.packages.value(toRemove); }); + t = new PKTransaction(appsToRemove, Transaction::RemoveRole); + } + + if (!app->isInstalled()) + t = installApplication(app); + + return t; +} + +Transaction* PackageKitBackend::installApplication(AbstractResource* app) +{ + return new PKTransaction({app}, Transaction::InstallRole); +} + +Transaction* PackageKitBackend::removeApplication(AbstractResource* app) +{ + Q_ASSERT(!isFetching()); + return new PKTransaction({app}, Transaction::RemoveRole); +} + +QSet PackageKitBackend::upgradeablePackages() const +{ + if (isFetching() || !m_packagesToAdd.isEmpty()) { + return {}; + } + + QSet ret; + ret.reserve(m_updatesPackageId.size()); + Q_FOREACH (const QString& pkgid, m_updatesPackageId) { + const QString pkgname = PackageKit::Daemon::packageName(pkgid); + const auto pkgs = resourcesByPackageName(pkgname); + if (pkgs.isEmpty()) { + qWarning() << "couldn't find resource for" << pkgid; + } + ret.unite(pkgs); + } + return ret; +} + +void PackageKitBackend::addPackageToUpdate(PackageKit::Transaction::Info info, const QString& packageId, const QString& summary) +{ + if (info == PackageKit::Transaction::InfoBlocked) { + return; + } + + if (info == PackageKit::Transaction::InfoSecurity) + m_hasSecurityUpdates = true; + + m_updatesPackageId += packageId; + addPackage(info, packageId, summary, true); +} + +void PackageKitBackend::getUpdatesFinished(PackageKit::Transaction::Exit, uint) +{ + if (!m_updatesPackageId.isEmpty()) { + fetchDetails(m_updatesPackageId); + } + + m_updater->setProgressing(false); + + includePackagesToAdd(); + emit updatesCountChanged(); +} + +bool PackageKitBackend::isPackageNameUpgradeable(const PackageKitResource* res) const +{ + return !upgradeablePackageId(res).isEmpty(); +} + +QString PackageKitBackend::upgradeablePackageId(const PackageKitResource* res) const +{ + QString name = res->packageName(); + foreach (const QString& pkgid, m_updatesPackageId) { + if (PackageKit::Daemon::packageName(pkgid) == name) + return pkgid; + } + return QString(); +} + +void PackageKitBackend::fetchDetails(const QSet& pkgid) +{ + if (!m_delayedDetailsFetch.isActive()) { + m_delayedDetailsFetch.start(); + } + + m_packageNamesToFetchDetails += pkgid; +} + +void PackageKitBackend::performDetailsFetch() +{ + Q_ASSERT(!m_packageNamesToFetchDetails.isEmpty()); + const auto ids = m_packageNamesToFetchDetails.toList(); + + PackageKit::Transaction* transaction = PackageKit::Daemon::getDetails(ids); + connect(transaction, &PackageKit::Transaction::details, this, &PackageKitBackend::packageDetails); + connect(transaction, &PackageKit::Transaction::errorCode, this, &PackageKitBackend::transactionError); + m_packageNamesToFetchDetails.clear(); +} + +void PackageKitBackend::checkDaemonRunning() +{ + if (!PackageKit::Daemon::isRunning()) { + qWarning() << "PackageKit stopped running!"; + } +} + +AbstractBackendUpdater* PackageKitBackend::backendUpdater() const +{ + return m_updater; +} + +QVector PackageKitBackend::extendedBy(const QString& id) const +{ + return m_packages.extendedBy[id]; +} + +AbstractReviewsBackend* PackageKitBackend::reviewsBackend() const +{ + return m_reviews.data(); +} + +AbstractResource * PackageKitBackend::resourceForFile(const QUrl& file) +{ + QMimeDatabase db; + const auto mime = db.mimeTypeForUrl(file); + if ( mime.inherits(QLatin1String("application/vnd.debian.binary-package")) + || mime.inherits(QLatin1String("application/x-rpm")) + || mime.inherits(QLatin1String("application/x-tar")) + || mime.inherits(QLatin1String("application/x-xz-compressed-tar")) + ) { + return new LocalFilePKResource(file, this); + } + return nullptr; +} + +static QString readDistroName() +{ + const QStringList osreleasenames = (QStringList() << QStringLiteral("/etc/os-release") + << QStringLiteral("/usr/lib/os-release")); + foreach (QString osrelease, osreleasenames) + { + QFile file(osrelease); + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + QByteArray line; + while (!file.atEnd()) { + line = file.readLine().trimmed(); + if (line.startsWith("NAME=")) { + auto output = line.right(line.length()-5); + output = output.replace('\"',""); + return QString::fromLocal8Bit(output); + } + } + } + } + + QProcess process; + process.setEnvironment({QStringLiteral("LC_ALL=C")}); + process.start(QStringLiteral("lsb_release"), {QStringLiteral("-sd")}); + process.waitForFinished(); + auto output = process.readAll().trimmed(); + if (output.startsWith('\"') && output.endsWith('\"')) + output = output.mid(1, output.length()-2); + return QString::fromLocal8Bit(output); +} + +QString PackageKitBackend::displayName() const +{ + static const QString distro = readDistroName(); + return distro; +} + +#include "PackageKitBackend.moc" diff --git a/libdiscover/backends/PackageKitBackend/PackageKitBackend.h b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h new file mode 100644 index 0000000..091377f --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitBackend.h @@ -0,0 +1,126 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef PACKAGEKITBACKEND_H +#define PACKAGEKITBACKEND_H + +#include "PackageKitResource.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class AppPackageKitResource; +class PackageKitUpdater; +class PKTransaction; +class OdrsReviewsBackend; +class DISCOVERCOMMON_EXPORT PackageKitBackend : public AbstractResourcesBackend +{ + Q_OBJECT + public: + explicit PackageKitBackend(QObject* parent = nullptr); + ~PackageKitBackend() override; + + AbstractBackendUpdater* backendUpdater() const override; + AbstractReviewsBackend* reviewsBackend() const override; + QSet resourcesByPackageName(const QString& name) const; + + ResultsStream* search(const AbstractResourcesBackend::Filters & search) override; + ResultsStream* findResourceByPackageName(const QUrl& search); + int updatesCount() const override; + bool hasSecurityUpdates() const override; + + Transaction* installApplication(AbstractResource* app) override; + Transaction* installApplication(AbstractResource* app, const AddonList& addons) override; + Transaction* removeApplication(AbstractResource* app) override; + bool isValid() const override { return true; } + QSet upgradeablePackages() const; + bool isFetching() const override; + + bool isPackageNameUpgradeable(const PackageKitResource* res) const; + QString upgradeablePackageId(const PackageKitResource* res) const; + QVector extendedBy(const QString& id) const; + + void clearPackages(const QStringList &packageNames); + void resolvePackages(const QStringList &packageNames); + void fetchDetails(const QString& pkgid) { fetchDetails(QSet{pkgid}); } + void fetchDetails(const QSet& pkgid); + + AbstractResource * resourceForFile(const QUrl & ) override; + void checkForUpdates() override; + QString displayName() const override; + + bool hasApplications() const override { return true; } + static QString locateService(const QString &filename); + + QList componentsById(const QString &id) const; + void fetchUpdates(); + + public Q_SLOTS: + void reloadPackageList(); + void transactionError(PackageKit::Transaction::Error, const QString& message); + + private Q_SLOTS: + void getPackagesFinished(); + void addPackage(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary, bool arch); + void addPackageArch(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary); + void addPackageNotArch(PackageKit::Transaction::Info info, const QString &packageId, const QString &summary); + void packageDetails(const PackageKit::Details& details); + void addPackageToUpdate(PackageKit::Transaction::Info, const QString& pkgid, const QString& summary); + void getUpdatesFinished(PackageKit::Transaction::Exit,uint); + + private: + template + T resourcesByPackageNames(const QStringList& names) const; + + void checkDaemonRunning(); + void acquireFetching(bool f); + void includePackagesToAdd(); + void performDetailsFetch(); + AppPackageKitResource* addComponent(const AppStream::Component& component, const QStringList& pkgNames); + + QScopedPointer m_appdata; + PackageKitUpdater* m_updater; + QPointer m_refresher; + int m_isFetching; + QSet m_updatesPackageId; + bool m_hasSecurityUpdates = false; + QSet m_packagesToAdd; + QSet m_packagesToDelete; + + struct Packages { + QHash packages; + QHash packageToApp; + QHash> extendedBy; + void clear() { *this = {}; } + }; + + QTimer m_delayedDetailsFetch; + QSet m_packageNamesToFetchDetails; + Packages m_packages; + QSharedPointer m_reviews; +}; + +#endif // PACKAGEKITBACKEND_H diff --git a/libdiscover/backends/PackageKitBackend/PackageKitMessages.cpp b/libdiscover/backends/PackageKitBackend/PackageKitMessages.cpp new file mode 100644 index 0000000..ee82ef8 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitMessages.cpp @@ -0,0 +1,333 @@ +/*************************************************************************** + * Copyright © 2012-2014 Aleix Pol Gonzalez * + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PackageKitMessages.h" +#include +#include +#include + +namespace PackageKitMessages +{ + +QString errorMessage(PackageKit::Transaction::Error error) +{ + switch(error) { + case PackageKit::Transaction::ErrorOom: + return i18n("Out of memory"); + case PackageKit::Transaction::ErrorNoNetwork: + return i18n("No network connection available"); + case PackageKit::Transaction::ErrorNotSupported: + return i18n("Operation not supported"); + case PackageKit::Transaction::ErrorInternalError: + return i18n("Internal error"); + case PackageKit::Transaction::ErrorGpgFailure: + return i18n("GPG failure"); + case PackageKit::Transaction::ErrorPackageIdInvalid: + return i18n("PackageID invalid"); + case PackageKit::Transaction::ErrorPackageNotInstalled: + return i18n("Package not installed"); + case PackageKit::Transaction::ErrorPackageNotFound: + return i18n("Package not found"); + case PackageKit::Transaction::ErrorPackageAlreadyInstalled: + return i18n("Package is already installed"); + case PackageKit::Transaction::ErrorPackageDownloadFailed: + return i18n("Package download failed"); + case PackageKit::Transaction::ErrorGroupNotFound: + return i18n("Package group not found"); + case PackageKit::Transaction::ErrorGroupListInvalid: + return i18n("Package group list invalid"); + case PackageKit::Transaction::ErrorDepResolutionFailed: + return i18n("Dependency resolution failed"); + case PackageKit::Transaction::ErrorFilterInvalid: + return i18n("Filter invalid"); + case PackageKit::Transaction::ErrorCreateThreadFailed: + return i18n("Failed while creating a thread"); + case PackageKit::Transaction::ErrorTransactionError: + return i18n("Transaction failure"); + case PackageKit::Transaction::ErrorTransactionCancelled: + return i18n("Transaction canceled"); + case PackageKit::Transaction::ErrorNoCache: + return i18n("No Cache available"); + case PackageKit::Transaction::ErrorRepoNotFound: + return i18n("Cannot find repository"); + case PackageKit::Transaction::ErrorCannotRemoveSystemPackage: + return i18n("Cannot remove system package"); + case PackageKit::Transaction::ErrorProcessKill: + return i18n("The PackageKit daemon has crashed"); + case PackageKit::Transaction::ErrorFailedInitialization: + return i18n("Initialization failure"); + case PackageKit::Transaction::ErrorFailedFinalise: + return i18n("Failed to finalize transaction"); + case PackageKit::Transaction::ErrorFailedConfigParsing: + return i18n("Config parsing failed"); + case PackageKit::Transaction::ErrorCannotCancel: + return i18n("Cannot cancel transaction"); + case PackageKit::Transaction::ErrorCannotGetLock: + return i18n("Cannot obtain lock"); + case PackageKit::Transaction::ErrorNoPackagesToUpdate: + return i18n("No packages to update"); + case PackageKit::Transaction::ErrorCannotWriteRepoConfig: + return i18n("Cannot write repo config"); + case PackageKit::Transaction::ErrorLocalInstallFailed: + return i18n("Local install failed"); + case PackageKit::Transaction::ErrorBadGpgSignature: + return i18n("Bad GPG signature found"); + case PackageKit::Transaction::ErrorMissingGpgSignature: + return i18n("No GPG signature found"); + case PackageKit::Transaction::ErrorCannotInstallSourcePackage: + return i18n("Cannot install source package"); + case PackageKit::Transaction::ErrorRepoConfigurationError: + return i18n("Repo configuration error"); + case PackageKit::Transaction::ErrorNoLicenseAgreement: + return i18n("No license agreement"); + case PackageKit::Transaction::ErrorFileConflicts: + return i18n("File conflicts found"); + case PackageKit::Transaction::ErrorPackageConflicts: + return i18n("Package conflict found"); + case PackageKit::Transaction::ErrorRepoNotAvailable: + return i18n("Repo not available"); + case PackageKit::Transaction::ErrorInvalidPackageFile: + return i18n("Invalid package file"); + case PackageKit::Transaction::ErrorPackageInstallBlocked: + return i18n("Package install blocked"); + case PackageKit::Transaction::ErrorPackageCorrupt: + return i18n("Corrupt package found"); + case PackageKit::Transaction::ErrorAllPackagesAlreadyInstalled: + return i18n("All packages already installed"); + case PackageKit::Transaction::ErrorFileNotFound: + return i18n("File not found"); + case PackageKit::Transaction::ErrorNoMoreMirrorsToTry: + return i18n("No more mirrors available"); + case PackageKit::Transaction::ErrorNoDistroUpgradeData: + return i18n("No distro upgrade data"); + case PackageKit::Transaction::ErrorIncompatibleArchitecture: + return i18n("Incompatible architecture"); + case PackageKit::Transaction::ErrorNoSpaceOnDevice: + return i18n("No space on device left"); + case PackageKit::Transaction::ErrorMediaChangeRequired: + return i18n("A media change is required"); + case PackageKit::Transaction::ErrorNotAuthorized: + return i18n("You have no authorization to execute this operation"); + case PackageKit::Transaction::ErrorUpdateNotFound: + return i18n("Update not found"); + case PackageKit::Transaction::ErrorCannotInstallRepoUnsigned: + return i18n("Cannot install from unsigned repo"); + case PackageKit::Transaction::ErrorCannotUpdateRepoUnsigned: + return i18n("Cannot update from unsigned repo"); + case PackageKit::Transaction::ErrorCannotGetFilelist: + return i18n("Cannot get file list"); + case PackageKit::Transaction::ErrorCannotGetRequires: + return i18n("Cannot get requires"); + case PackageKit::Transaction::ErrorCannotDisableRepository: + return i18n("Cannot disable repository"); + case PackageKit::Transaction::ErrorRestrictedDownload: + return i18n("Restricted download detected"); + case PackageKit::Transaction::ErrorPackageFailedToConfigure: + return i18n("Package failed to configure"); + case PackageKit::Transaction::ErrorPackageFailedToBuild: + return i18n("Package failed to build"); + case PackageKit::Transaction::ErrorPackageFailedToInstall: + return i18n("Package failed to install"); + case PackageKit::Transaction::ErrorPackageFailedToRemove: + return i18n("Package failed to remove"); + case PackageKit::Transaction::ErrorUpdateFailedDueToRunningProcess: + return i18n("Update failed due to running process"); + case PackageKit::Transaction::ErrorPackageDatabaseChanged: + return i18n("The package database changed"); + case PackageKit::Transaction::ErrorProvideTypeNotSupported: + return i18n("The provided type is not supported"); + case PackageKit::Transaction::ErrorInstallRootInvalid: + return i18n("Install root is invalid"); + case PackageKit::Transaction::ErrorCannotFetchSources: + return i18n("Cannot fetch sources"); + case PackageKit::Transaction::ErrorCancelledPriority: + return i18n("Canceled priority"); + case PackageKit::Transaction::ErrorUnfinishedTransaction: + return i18n("Unfinished transaction"); + case PackageKit::Transaction::ErrorLockRequired: + return i18n("Lock required"); + case PackageKit::Transaction::ErrorUnknown: + default: { + int idx = PackageKit::Transaction::staticMetaObject.indexOfEnumerator("Error"); + QMetaEnum metaenum = PackageKit::Transaction::staticMetaObject.enumerator(idx); + return i18n("Unknown error %1.", QString::fromLatin1(metaenum.valueToKey(error))); + } + } +} + +QString restartMessage(PackageKit::Transaction::Restart restart, const QString& pkgid) +{ + switch (restart) { + case PackageKit::Transaction::RestartApplication: + return i18n("'%1' was changed and suggests to be restarted.", PackageKit::Daemon::packageName(pkgid)); + case PackageKit::Transaction::RestartSession: + return i18n("A change by '%1' suggests your session to be restarted.", PackageKit::Daemon::packageName(pkgid)); + case PackageKit::Transaction::RestartSecuritySession: + return i18n("'%1' was updated for security reasons, a restart of the session is recommended.", PackageKit::Daemon::packageName(pkgid)); + case PackageKit::Transaction::RestartSecuritySystem: + return i18n("'%1' was updated for security reasons, a restart of the system is recommended.", PackageKit::Daemon::packageName(pkgid)); + case PackageKit::Transaction::RestartSystem: + case PackageKit::Transaction::RestartUnknown: + case PackageKit::Transaction::RestartNone: + default: + return i18n("A change by '%1' suggests your system to be rebooted.", PackageKit::Daemon::packageName(pkgid)); + } +} + +QString restartMessage(PackageKit::Transaction::Restart restart) +{ + switch (restart) { + case PackageKit::Transaction::RestartApplication: + return i18n("The application will have to be restarted."); + case PackageKit::Transaction::RestartSession: + return i18n("The session will have to be restarted"); + case PackageKit::Transaction::RestartSystem: + return i18n("The system will have to be rebooted."); + case PackageKit::Transaction::RestartSecuritySession: + return i18n("For security, the session will have to be restarted."); + case PackageKit::Transaction::RestartSecuritySystem: + return i18n("For security, the system will have to be restarted."); + case PackageKit::Transaction::RestartUnknown: + case PackageKit::Transaction::RestartNone: + default: + return QString(); + } +} + +QString statusMessage(PackageKit::Transaction::Status status) +{ + switch (status) { + case PackageKit::Transaction::StatusWait: + return i18n("Waiting..."); + case PackageKit::Transaction::StatusRefreshCache: + return i18n("Refreshing Cache..."); + case PackageKit::Transaction::StatusSetup: + return i18n("Setup..."); + case PackageKit::Transaction::StatusRunning: + return i18n("Processing..."); + case PackageKit::Transaction::StatusRemove: + return i18n("Remove..."); + case PackageKit::Transaction::StatusDownload: + return i18n("Downloading..."); + case PackageKit::Transaction::StatusInstall: + return i18n("Installing..."); + case PackageKit::Transaction::StatusUpdate: + return i18n("Updating..."); + case PackageKit::Transaction::StatusCleanup: + return i18n("Cleaning up..."); +// case PackageKit::Transaction::StatusObsolete: + case PackageKit::Transaction::StatusDepResolve: + return i18n("Resolving dependencies..."); + case PackageKit::Transaction::StatusSigCheck: + return i18n("Checking signatures..."); + case PackageKit::Transaction::StatusTestCommit: + return i18n("Test committing..."); + case PackageKit::Transaction::StatusCommit: + return i18n("Committing..."); + //StatusRequest, + case PackageKit::Transaction::StatusFinished: + return i18n("Finished"); + case PackageKit::Transaction::StatusCancel: + return i18n("Canceled"); + case PackageKit::Transaction::StatusWaitingForLock: + return i18n("Waiting for lock..."); + case PackageKit::Transaction::StatusWaitingForAuth: + return i18n("Waiting for authorization..."); + //StatusScanProcessList, + //StatusCheckExecutableFiles, + //StatusCheckLibraries, + case PackageKit::Transaction::StatusCopyFiles: + return i18n("Copying files..."); + case PackageKit::Transaction::StatusUnknown: + default: + return i18n("Unknown Status"); + } +} + +QString statusDetail(PackageKit::Transaction::Status status) +{ + switch (status) { + case PackageKit::Transaction::StatusWait: + return i18n("We are waiting for something."); + case PackageKit::Transaction::StatusSetup: + return i18n("Setting up transaction..."); + case PackageKit::Transaction::StatusRunning: + return i18n("The transaction is currently working..."); + case PackageKit::Transaction::StatusRemove: + return i18n("The transaction is currently removing packages..."); + case PackageKit::Transaction::StatusDownload: + return i18n("The transaction is currently downloading packages..."); + case PackageKit::Transaction::StatusInstall: + return i18n("The transactions is currently installing packages..."); + case PackageKit::Transaction::StatusUpdate: + return i18n("The transaction is currently updating packages..."); + case PackageKit::Transaction::StatusCleanup: + return i18n("The transaction is currently cleaning up..."); + //case PackageKit::Transaction::StatusObsolete, + case PackageKit::Transaction::StatusDepResolve: + return i18n("The transaction is currently resolving the dependencies of the packages it will install..."); + case PackageKit::Transaction::StatusSigCheck: + return i18n("The transaction is currently checking the signatures of the packages..."); + case PackageKit::Transaction::StatusTestCommit: + return i18n("The transaction is currently testing the commit of this set of packages..."); + case PackageKit::Transaction::StatusCommit: + return i18n("The transaction is currently committing its set of packages..."); + //StatusRequest, + case PackageKit::Transaction::StatusFinished: + return i18n("The transaction has finished!"); + case PackageKit::Transaction::StatusCancel: + return i18n("The transaction was canceled"); + case PackageKit::Transaction::StatusWaitingForLock: + return i18n("The transaction is currently waiting for the lock..."); + case PackageKit::Transaction::StatusWaitingForAuth: + return i18n("Waiting for the user to authorize the transaction..."); + //StatusScanProcessList, + //StatusCheckExecutableFiles, + //StatusCheckLibraries, + case PackageKit::Transaction::StatusCopyFiles: + return i18n("The transaction is currently copying files..."); + case PackageKit::Transaction::StatusRefreshCache: + return i18n("Currently refreshing the repository cache..."); + case PackageKit::Transaction::StatusUnknown: + default: { + int idx = PackageKit::Transaction::staticMetaObject.indexOfEnumerator("Status"); + QMetaEnum metaenum = PackageKit::Transaction::staticMetaObject.enumerator(idx); + return i18n("Unknown status %1.", QString::fromLatin1(metaenum.valueToKey(status))); + } + } +} + +QString updateStateMessage(PackageKit::Transaction::UpdateState state) +{ + switch(state) { + case PackageKit::Transaction::UpdateStateUnknown: + return QString(); + case PackageKit::Transaction::UpdateStateStable: + return i18nc("update state", "Stable"); + case PackageKit::Transaction::UpdateStateUnstable: + return i18nc("update state", "Unstable"); + case PackageKit::Transaction::UpdateStateTesting: + return i18nc("update state", "Testing"); + } + return QString(); +} + +} diff --git a/libdiscover/backends/PackageKitBackend/PackageKitMessages.h b/libdiscover/backends/PackageKitBackend/PackageKitMessages.h new file mode 100644 index 0000000..66400f9 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitMessages.h @@ -0,0 +1,36 @@ +/*************************************************************************** + * Copyright © 2012-2014 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef PACKAGEKITMESSAGES_H +#define PACKAGEKITMESSAGES_H + +#include + +namespace PackageKitMessages +{ + QString errorMessage(PackageKit::Transaction::Error error); + QString restartMessage(PackageKit::Transaction::Restart restart, const QString& p); + QString restartMessage(PackageKit::Transaction::Restart restart); + QString statusMessage(PackageKit::Transaction::Status status); + QString statusDetail(PackageKit::Transaction::Status status); + QString updateStateMessage(PackageKit::Transaction::UpdateState state); +} + +#endif // PACKAGEKITMESSAGES_H diff --git a/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp new file mode 100644 index 0000000..9db54d0 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp @@ -0,0 +1,318 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * Copyright © 2015 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PackageKitNotifier.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "pk-offline-private.h" + +PackageKitNotifier::PackageKitNotifier(QObject* parent) + : BackendNotifierModule(parent) + , m_securityUpdates(0) + , m_normalUpdates(0) +{ + if (PackageKit::Daemon::global()->isRunning()) { + recheckSystemUpdateNeeded(); + } + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::networkStateChanged, this, &PackageKitNotifier::recheckSystemUpdateNeeded); + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::updatesChanged, this, &PackageKitNotifier::recheckSystemUpdateNeeded); + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::isRunningChanged, this, &PackageKitNotifier::recheckSystemUpdateNeeded); + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::transactionListChanged, this, &PackageKitNotifier::transactionListChanged); + + //Check if there's packages after 5' + QTimer::singleShot(5 * 60 * 1000, this, &PackageKitNotifier::refreshDatabase); + + QTimer *regularCheck = new QTimer(this); + connect(regularCheck, &QTimer::timeout, this, &PackageKitNotifier::refreshDatabase); + + const QString aptconfig = QStandardPaths::findExecutable(QStringLiteral("apt-config")); + if (!aptconfig.isEmpty()) { + checkAptVariable(aptconfig, QLatin1String("Apt::Periodic::Update-Package-Lists"), [regularCheck](const QStringRef& value) { + bool ok; + const int days = value.toInt(&ok); + if (!ok || days == 0) { + regularCheck->setInterval(24 * 60 * 60 * 1000); //refresh at least once every day + regularCheck->start(); + qWarning() << "couldn't understand value for timer:" << value; + } + + //if the setting is not empty, refresh will be carried out by unattended-upgrade + //https://wiki.debian.org/UnattendedUpgrades + }); + } else { + regularCheck->setInterval(24 * 60 * 60 * 1000); //refresh at least once every day + regularCheck->start(); + } + + QTimer::singleShot(3000, this, &PackageKitNotifier::checkOfflineUpdates); + + m_recheckTimer = new QTimer(this); + m_recheckTimer->setInterval(200); + m_recheckTimer->setSingleShot(true); + connect(m_recheckTimer, &QTimer::timeout, this, &PackageKitNotifier::recheckSystemUpdate); + + QFileSystemWatcher* watcher = new QFileSystemWatcher(this); + watcher->addPath(QStringLiteral(PK_OFFLINE_ACTION_FILENAME)); + connect(watcher, &QFileSystemWatcher::fileChanged, this, &PackageKitNotifier::nowNeedsReboot); + + QTimer::singleShot(100, this, [this](){ + if (QFile::exists(QStringLiteral(PK_OFFLINE_ACTION_FILENAME))) + nowNeedsReboot(); + }); +} + +PackageKitNotifier::~PackageKitNotifier() +{ +} + +void PackageKitNotifier::checkOfflineUpdates() +{ + if (!QFile::exists(QStringLiteral(PK_OFFLINE_RESULTS_FILENAME))) { + return; + } + qDebug() << "found offline update results at " << PK_OFFLINE_RESULTS_FILENAME; + + KDesktopFile file(QStringLiteral(PK_OFFLINE_RESULTS_FILENAME)); + KConfigGroup group(&file, PK_OFFLINE_RESULTS_GROUP); + + const bool success = group.readEntry("Success", false); + const QString packagesJoined = group.readEntry("Packages"); + const auto packages = packagesJoined.splitRef(QLatin1Char(',')); + if (!success) { + const QString errorDetails = group.readEntry("ErrorDetails"); + + KNotification *notification = new KNotification(QLatin1String("offlineupdate-failed"), KNotification::Persistent | KNotification::DefaultEvent); + notification->setIconName(QStringLiteral("error")); + notification->setText(i18n("Offline Updates")); + notification->setText(i18n("Failed to update %1 packages\n%2", packages.count(), errorDetails)); + notification->setActions(QStringList{QLatin1String("Open Discover")}); + + connect(notification, &KNotification::action1Activated, this, [] () { + QProcess::startDetached(QStringLiteral("plasma-discover")); + }); + + notification->sendEvent(); + } else { + KNotification *notification = new KNotification(QLatin1String("offlineupdate-successful")); + notification->setIconName(QStringLiteral("system-software-update")); + notification->setTitle(i18n("Offline Updates")); + notification->setText(i18n("Successfully updated %1 packages", packages.count())); + notification->setActions(QStringList{QLatin1String("Open Discover")}); + + connect(notification, &KNotification::action1Activated, this, [] () { + QProcess::startDetached(QStringLiteral("plasma-discover")); + }); + + notification->sendEvent(); + } +} + +void PackageKitNotifier::recheckSystemUpdateNeeded() +{ + m_recheckTimer->start(); +} + +void PackageKitNotifier::recheckSystemUpdate() +{ + if (PackageKit::Daemon::global()->isRunning()) { + PackageKit::Daemon::getUpdates(); + } +} + +void PackageKitNotifier::setupGetUpdatesTransaction(PackageKit::Transaction* trans) +{ + qDebug() << "using..." << trans << trans->tid().path(); + + trans->setProperty("normalUpdates", 0); + trans->setProperty("securityUpdates", 0); + connect(trans, &PackageKit::Transaction::package, this, &PackageKitNotifier::package); + connect(trans, &PackageKit::Transaction::finished, this, &PackageKitNotifier::finished); +} + +void PackageKitNotifier::package(PackageKit::Transaction::Info info, const QString &/*packageID*/, const QString &/*summary*/) +{ + PackageKit::Transaction * trans = qobject_cast(sender()); + + switch (info) { + case PackageKit::Transaction::InfoBlocked: + break; //skip, we ignore blocked updates + case PackageKit::Transaction::InfoSecurity: + trans->setProperty("securityUpdates", trans->property("securityUpdates").toInt()+1); + break; + default: + trans->setProperty("normalUpdates", trans->property("normalUpdates").toInt()+1); + break; + } +} + +void PackageKitNotifier::finished(PackageKit::Transaction::Exit /*exit*/, uint) +{ + const PackageKit::Transaction * trans = qobject_cast(sender()); + + const uint normalUpdates = trans->property("normalUpdates").toInt(); + const uint securityUpdates = trans->property("securityUpdates").toInt(); + const bool changed = normalUpdates != m_normalUpdates || securityUpdates != m_securityUpdates; + + m_normalUpdates = normalUpdates; + m_securityUpdates = securityUpdates; + + if (changed) { + Q_EMIT foundUpdates(); + } +} + +uint PackageKitNotifier::securityUpdatesCount() +{ + return m_securityUpdates; +} + +uint PackageKitNotifier::updatesCount() +{ + return m_normalUpdates; +} + +void PackageKitNotifier::onDistroUpgrade(PackageKit::Transaction::DistroUpgrade type, const QString& name, const QString& description) +{ +#ifdef PKQT_1_0 + KNotification *notification = new KNotification(QLatin1String("distupgrade-notification"), KNotification::Persistent | KNotification::DefaultEvent); + notification->setIconName(QStringLiteral("system-software-update")); + notification->setActions(QStringList{QLatin1String("Upgrade")}); + notification->setTitle(i18n("Upgrade available")); + switch(type) { + case PackageKit::Transaction::DistroUpgradeUnknown: + case PackageKit::Transaction::DistroUpgradeUnstable: + notification->setText(i18n("New unstable version: %1", description)); + break; + case PackageKit::Transaction::DistroUpgradeStable: + notification->setText(i18n("New version: %1", description)); + break; + } + + connect(notification, &KNotification::action1Activated, this, [name] () { + PackageKit::Daemon::upgradeSystem(name, PackageKit::Transaction::UpgradeKindDefault); + }); + + notification->sendEvent(); +#else + Q_UNUSED(type) + Q_UNUSED(name) + Q_UNUSED(description) +#endif +} + +void PackageKitNotifier::refreshDatabase() +{ + if (!m_refresher) { + m_refresher = PackageKit::Daemon::refreshCache(false); + connect(m_refresher.data(), &PackageKit::Transaction::finished, this, [this]() { + recheckSystemUpdateNeeded(); + }); + } + +#ifdef PKQT_1_0 + if (!m_distUpgrades && (PackageKit::Daemon::roles() & PackageKit::Transaction::RoleUpgradeSystem)) { + m_distUpgrades = PackageKit::Daemon::getDistroUpgrades(); + connect(m_distUpgrades, &PackageKit::Transaction::distroUpgrade, this, &PackageKitNotifier::onDistroUpgrade); + } +#endif +} + +QProcess* PackageKitNotifier::checkAptVariable(const QString &aptconfig, const QLatin1String& varname, std::function func) +{ + QProcess* process = new QProcess; + process->start(aptconfig, {QStringLiteral("dump")}); + connect(process, static_cast(&QProcess::finished), this, [func, process, varname](int code) { + if (code != 0) + return; + + QRegularExpression rx(QLatin1Char('^') + varname + QStringLiteral(" \"(.*?)\"$")); + QTextStream stream(process); + QString line; + while (stream.readLineInto(&line)) { + const auto match = rx.match(line); + if (match.hasMatch()) { + func(match.capturedRef(1)); + return; + } + } + func({}); + }); + connect(process, static_cast(&QProcess::finished), process, &QObject::deleteLater); + return process; +} + +void PackageKitNotifier::transactionListChanged(const QStringList& tids) +{ + for (const auto &tid: tids) { + if (m_transactions.contains(tid)) + continue; + + auto t = new PackageKit::Transaction(QDBusObjectPath(tid)); + + connect(t, &PackageKit::Transaction::roleChanged, this, [this, t]() { + if (t->role() == PackageKit::Transaction::RoleGetUpdates) { + setupGetUpdatesTransaction(t); + } + }); + connect(t, &PackageKit::Transaction::requireRestart, this, &PackageKitNotifier::onRequireRestart); + connect(t, &PackageKit::Transaction::finished, this, [this, t](){ + auto restart = t->property("requireRestart"); + if (!restart.isNull()) { + auto restartEvent = PackageKit::Transaction::Restart(restart.toInt()); + if (restartEvent >= PackageKit::Transaction::RestartSession) { + nowNeedsReboot(); + } + } + m_transactions.remove(t->tid().path()); + t->deleteLater(); + }); + m_transactions.insert(tid, t); + } +} + +void PackageKitNotifier::nowNeedsReboot() +{ + if (!m_needsReboot) { + m_needsReboot = true; + Q_EMIT needsRebootChanged(); + } +} + +void PackageKitNotifier::onRequireRestart(PackageKit::Transaction::Restart type, const QString &packageID) +{ + PackageKit::Transaction* t = qobject_cast(sender()); + t->setProperty("requireRestart", qMax(t->property("requireRestart").toInt(), type)); + qDebug() << "RESTART" << type << "is required for package" << packageID; +} diff --git a/libdiscover/backends/PackageKitBackend/PackageKitNotifier.h b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.h new file mode 100644 index 0000000..9df25d4 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitNotifier.h @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#ifndef PACKAGEKITNOTIFIER_H +#define PACKAGEKITNOTIFIER_H + +#include +#include +#include +#include +#include + +class QTimer; +class QProcess; + +class PackageKitNotifier : public BackendNotifierModule +{ +Q_OBJECT +Q_PLUGIN_METADATA(IID "org.kde.discover.BackendNotifierModule") +Q_INTERFACES(BackendNotifierModule) +public: + explicit PackageKitNotifier(QObject* parent = nullptr); + ~PackageKitNotifier() override; + + uint securityUpdatesCount() override; + uint updatesCount() override; + void recheckSystemUpdateNeeded() override; + void refreshDatabase(); + bool needsReboot() const override { return m_needsReboot; } + +private Q_SLOTS: + void package(PackageKit::Transaction::Info info, const QString &packageID, const QString &summary); + void finished(PackageKit::Transaction::Exit exit, uint); + void onRequireRestart(PackageKit::Transaction::Restart type, const QString &packageID); + void transactionListChanged(const QStringList &tids); + void onDistroUpgrade(PackageKit::Transaction::DistroUpgrade type, const QString &name, const QString &description); + +private: + void nowNeedsReboot(); + void recheckSystemUpdate(); + void checkOfflineUpdates(); + void setupGetUpdatesTransaction(PackageKit::Transaction* transaction); + QProcess* checkAptVariable(const QString &aptconfig, const QLatin1String& varname, std::function func); + + bool m_needsReboot = false; + uint m_securityUpdates; + uint m_normalUpdates; + QPointer m_refresher; + QPointer m_distUpgrades; + QTimer* m_recheckTimer; + + QHash m_transactions; +}; + +#endif diff --git a/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp b/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp new file mode 100644 index 0000000..8a03daa --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp @@ -0,0 +1,309 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PackageKitResource.h" +#include "PackageKitBackend.h" +#include "PackageKitMessages.h" +#include +#include +#include +#include +#include + +const QStringList PackageKitResource::m_objects({ QStringLiteral("qrc:/qml/DependenciesButton.qml") }); + +PackageKitResource::PackageKitResource(QString packageName, QString summary, PackageKitBackend* parent) + : AbstractResource(parent) + , m_summary(std::move(summary)) + , m_name(std::move(packageName)) +{ + setObjectName(m_name); + + connect(this, &PackageKitResource::dependenciesFound, this, [this](const QJsonObject& obj) { setDependenciesCount(obj.size()); }); +} + +QString PackageKitResource::name() const +{ + return m_name; +} + +QString PackageKitResource::packageName() const +{ + return m_name; +} + +QStringList PackageKitResource::allPackageNames() const +{ + return { m_name }; +} + +QString PackageKitResource::availablePackageId() const +{ + //First we check if it's upgradeable and use this version to display + const QString pkgid = backend()->upgradeablePackageId(this); + if (!pkgid.isEmpty()) + return pkgid; + + QMap::const_iterator it = m_packages.constFind(PackageKit::Transaction::InfoAvailable); + if (it != m_packages.constEnd()) + return it->last(); + return installedPackageId(); +} + +QString PackageKitResource::installedPackageId() const +{ + const auto installed = m_packages[PackageKit::Transaction::InfoInstalled]; + return installed.isEmpty() ? QString() : installed.last(); +} + +QString PackageKitResource::comment() +{ + return m_summary; +} + +QString PackageKitResource::longDescription() +{ + fetchDetails(); + return m_details.description(); +} + +QUrl PackageKitResource::homepage() +{ + fetchDetails(); + return QUrl(m_details.url()); +} + +QVariant PackageKitResource::icon() const +{ + return QStringLiteral("applications-other"); +} + +QString PackageKitResource::license() +{ + fetchDetails(); + return m_details.license().isEmpty() ? i18n("Unknown") : m_details.license(); +} + +QList PackageKitResource::addonsInformation() +{ + return QList(); +} + +QString PackageKitResource::availableVersion() const +{ + return PackageKit::Daemon::packageVersion(availablePackageId()); +} + +QString PackageKitResource::installedVersion() const +{ + return PackageKit::Daemon::packageVersion(installedPackageId()); +} + +int PackageKitResource::size() +{ + fetchDetails(); + return m_details.size(); +} + +QString PackageKitResource::origin() const +{ + auto pkgid = availablePackageId(); + return PackageKit::Daemon::packageData(pkgid); +} + +QString PackageKitResource::section() +{ + return QString(); +} + +AbstractResource::State PackageKitResource::state() +{ + if (backend()->isPackageNameUpgradeable(this)) + return Upgradeable; + else if(m_packages.contains(PackageKit::Transaction::InfoInstalled)) + return Installed; + else if(m_packages.contains(PackageKit::Transaction::InfoAvailable)) + return None; + else + return Broken; +} + +void PackageKitResource::addPackageId(PackageKit::Transaction::Info info, const QString &packageId, bool arch) +{ + if (arch) + m_packages[info].append(packageId); + else + m_packages[info].prepend(packageId); + emit stateChanged(); +} + +QStringList PackageKitResource::categories() +{ + return { QStringLiteral("Unknown") }; +} + +bool PackageKitResource::isTechnical() const +{ + return true; +} + +void PackageKitResource::fetchDetails() +{ + const QString pkgid = availablePackageId(); + if (!m_details.isEmpty() || pkgid.isEmpty()) + return; + m_details.insert(QStringLiteral("fetching"), true);//we add an entry so it's not re-fetched. + + backend()->fetchDetails(pkgid); +} + +void PackageKitResource::failedFetchingDetails(PackageKit::Transaction::Error, const QString& msg) +{ + qWarning() << "error fetching details" << msg; +} + +void PackageKitResource::setDependenciesCount(int deps) +{ + if (deps != m_dependenciesCount) { + m_dependenciesCount = deps; + Q_EMIT sizeChanged(); + } +} + +void PackageKitResource::setDetails(const PackageKit::Details & details) +{ + const bool ourDetails = details.packageId() == availablePackageId(); + if (!ourDetails) + return; + + if (m_details != details) { + m_details = details; + emit stateChanged(); + + if (!backend()->isFetching()) + Q_EMIT backend()->resourcesChanged(this, {"size", "homepage", "license"}); + } +} + +void PackageKitResource::fetchChangelog() +{ +} + +void PackageKitResource::fetchUpdateDetails() +{ + const auto pkgid = availablePackageId(); + if (pkgid.isEmpty()) { + connect(this, &PackageKitResource::stateChanged, this, &PackageKitResource::fetchUpdateDetails); + return; + } + PackageKit::Transaction* t = PackageKit::Daemon::getUpdateDetail(availablePackageId()); + connect(t, &PackageKit::Transaction::updateDetail, this, &PackageKitResource::updateDetail); + connect(t, &PackageKit::Transaction::errorCode, this, [this](PackageKit::Transaction::Error err, const QString & error) { qWarning() << "error fetching updates:" << err << error; emit changelogFetched(QString()); }); +} + +static void addIfNotEmpty(const QString& title, const QString& content, QString& where) +{ + if (!content.isEmpty()) + where += QStringLiteral("

") + title + QStringLiteral(" ") + QString(content).replace(QStringLiteral("\n"), QStringLiteral("
")) + QStringLiteral("

"); +} + +QString PackageKitResource::joinPackages(const QStringList& pkgids, const QString &_sep, const QString &shadowPackage) +{ + QStringList ret; + foreach(const QString& pkgid, pkgids) { + const auto pkgname = PackageKit::Daemon::packageName(pkgid); + if (pkgname == shadowPackage) + ret += PackageKit::Daemon::packageVersion(pkgid); + else + ret += i18nc("package-name (version)", "%1 (%2)", pkgname, PackageKit::Daemon::packageVersion(pkgid)); + } + const QString sep = _sep.isEmpty() ? i18nc("comma separating package names", ", ") : _sep; + return ret.join(sep); +} + +static QStringList urlToLinks(const QStringList& urls) +{ + QStringList ret; + foreach(const QString& in, urls) + ret += QStringLiteral("%1").arg(in); + return ret; +} + +void PackageKitResource::updateDetail(const QString& packageID, const QStringList& updates, const QStringList& obsoletes, const QStringList& vendorUrls, + const QStringList& /*bugzillaUrls*/, const QStringList& /*cveUrls*/, PackageKit::Transaction::Restart restart, const QString& updateText, + const QString& /*changelog*/, PackageKit::Transaction::UpdateState state, const QDateTime& /*issued*/, const QDateTime& /*updated*/) +{ + const auto name = PackageKit::Daemon::packageName(packageID); + + QString info; + addIfNotEmpty(i18n("Current Version:"), joinPackages(updates, {}, name), info); + addIfNotEmpty(i18n("Obsoletes:"), joinPackages(obsoletes, {}, name), info); + addIfNotEmpty(i18n("New Version:"), updateText, info); + addIfNotEmpty(i18n("Update State:"), PackageKitMessages::updateStateMessage(state), info); + addIfNotEmpty(i18n("Restart:"), PackageKitMessages::restartMessage(restart), info); + + if (!vendorUrls.isEmpty()) + addIfNotEmpty(i18n("Vendor:"), urlToLinks(vendorUrls).join(QStringLiteral(", ")), info); + + emit changelogFetched(changelog() + info); +} + +PackageKitBackend* PackageKitResource::backend() const +{ + return qobject_cast(parent()); +} + +QString PackageKitResource::sizeDescription() +{ + if (m_dependenciesCount < 0) { + fetchDetails(); + fetchDependencies(); + } + + if (m_dependenciesCount <= 0) + return AbstractResource::sizeDescription(); + else + return i18np("%2 (plus %1 dependency)", "%2 (plus %1 dependencies)", m_dependenciesCount, AbstractResource::sizeDescription()); +} + +QString PackageKitResource::sourceIcon() const +{ + return QStringLiteral("package-available"); +} + +void PackageKitResource::fetchDependencies() +{ + const auto id = isInstalled() ? installedPackageId() : availablePackageId(); + if (id.isEmpty()) + return; + m_dependenciesCount = 0; + + QSharedPointer packageDependencies(new QJsonObject); + + auto trans = PackageKit::Daemon::dependsOn(id); + connect(trans, &PackageKit::Transaction::errorCode, this, [this](PackageKit::Transaction::Error, const QString& message) { qWarning() << "Transaction error: " << message << sender(); }); + connect(trans, &PackageKit::Transaction::package, this, [packageDependencies](PackageKit::Transaction::Info /*info*/, const QString &packageID, const QString &summary) { + (*packageDependencies)[PackageKit::Daemon::packageName(packageID)] = summary ; + }); + connect(trans, &PackageKit::Transaction::finished, this, [this, packageDependencies](PackageKit::Transaction::Exit /*status*/) { + Q_EMIT dependenciesFound(*packageDependencies); + }); +} diff --git a/libdiscover/backends/PackageKitBackend/PackageKitResource.h b/libdiscover/backends/PackageKitBackend/PackageKitResource.h new file mode 100644 index 0000000..5c9781c --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitResource.h @@ -0,0 +1,116 @@ +/*************************************************************************** + * Copyright © 2012 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef PACKAGEKITRESOURCE_H +#define PACKAGEKITRESOURCE_H + +#include +#include +#include + +class PackageKitBackend; + +class PackageKitResource : public AbstractResource +{ + Q_OBJECT + Q_PROPERTY(QStringList objects MEMBER m_objects CONSTANT) + public: + explicit PackageKitResource(QString packageName, QString summary, PackageKitBackend* parent); + QString packageName() const override; + QString name() const override; + QString comment() override; + QString longDescription() override; + QUrl homepage() override; + QVariant icon() const override; + QStringList categories() override; + QString license() override; + QString origin() const override; + QString section() override; + bool isTechnical() const override; + int size() override; + void fetchChangelog() override; + void fetchUpdateDetails() override; + + QList addonsInformation() override; + State state() override; + + QString installedVersion() const override; + QString availableVersion() const override; + virtual QStringList allPackageNames() const; + QString installedPackageId() const; + QString availablePackageId() const; + + void clearPackageIds() { m_packages.clear(); } + + QMap packages() const { return m_packages; } + + PackageKitBackend* backend() const; + + static QString joinPackages(const QStringList& pkgids, const QString &_sep, const QString &shadowPackageName); + + void invokeApplication() const override {} + bool canExecute() const override { return false; } + + QString sizeDescription() override; + void setDependenciesCount(int count); + + QString sourceIcon() const override; + + QDate releaseDate() const override { return {}; } + + virtual QString changelog() const { return {}; } + + Q_SIGNALS: + void dependenciesFound(const QJsonObject& dependencies); + + public Q_SLOTS: + void addPackageId(PackageKit::Transaction::Info info, const QString &packageId, bool arch); + void setDetails(const PackageKit::Details& details); + + void updateDetail(const QString &packageID, + const QStringList &updates, + const QStringList &obsoletes, + const QStringList &vendorUrls, + const QStringList &bugzillaUrls, + const QStringList &cveUrls, + PackageKit::Transaction::Restart restart, + const QString &updateText, + const QString &changelog, + PackageKit::Transaction::UpdateState state, + const QDateTime &issued, + const QDateTime &updated); + + private Q_SLOTS: + void failedFetchingDetails(PackageKit::Transaction::Error, const QString& msg); + + private: + void fetchDependencies(); + /** fetches details individually, it's better if done in batch, like for updates */ + void fetchDetails(); + + QMap m_packages; + const QString m_summary; + const QString m_name; + PackageKit::Details m_details; + int m_dependenciesCount = -1; + static const QStringList m_objects; +}; + +#endif // PACKAGEKITRESOURCE_H diff --git a/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp b/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp new file mode 100644 index 0000000..87069b0 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp @@ -0,0 +1,175 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "PackageKitSourcesBackend.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "PackageKitBackend.h" +#include "config-paths.h" + +class PKSourcesModel : public QStandardItemModel +{ +public: + PKSourcesModel(PackageKitSourcesBackend* backend) + : QStandardItemModel(backend) + , m_backend(backend) {} + + bool setData(const QModelIndex & index, const QVariant & value, int role) override { + auto item = itemFromIndex(index); + if (!item) + return false; + + switch(role) { + case Qt::CheckStateRole: { + auto transaction = PackageKit::Daemon::global()->repoEnable(item->data(AbstractSourcesBackend::IdRole).toString(), value.toInt() == Qt::Checked); + connect(transaction, &PackageKit::Transaction::errorCode, m_backend, &PackageKitSourcesBackend::transactionError); + return true; + } + } + item->setData(value, role); + return true; + } + +private: + PackageKitSourcesBackend* m_backend; +}; + +static QAction* createActionForService(const QString &servicePath, QObject* parent) +{ + QAction* action = new QAction(parent); + KDesktopFile parser(servicePath); + action->setIcon(QIcon::fromTheme(parser.readIcon())); + action->setText(parser.readName()); + action->setToolTip(parser.readComment()); + QObject::connect(action, &QAction::triggered, action, [servicePath](){ + bool b = QProcess::startDetached(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/discover/runservice"), {servicePath}); + if (!b) + qWarning() << "Could not start" << servicePath; + }); + return action; +} + +PackageKitSourcesBackend::PackageKitSourcesBackend(AbstractResourcesBackend* parent) + : AbstractSourcesBackend(parent) + , m_sources(new PKSourcesModel(this)) +{ + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::repoListChanged, this, &PackageKitSourcesBackend::resetSources); + resetSources(); + + // Kubuntu-based + auto addNativeSourcesManager = [this](const QString &file){ + auto service = PackageKitBackend::locateService(file); + if (!service.isEmpty()) + m_actions += createActionForService(service, this); + }; + + //New Ubuntu + addNativeSourcesManager(QStringLiteral("software-properties-qt.desktop")); + + //Old Ubuntu + addNativeSourcesManager(QStringLiteral("software-properties-kde.desktop")); + + //OpenSuse + addNativeSourcesManager(QStringLiteral("YaST2/sw_source.desktop")); +} + +QString PackageKitSourcesBackend::idDescription() +{ + return i18n("Repository URL:"); +} + +QStandardItem* PackageKitSourcesBackend::findItemForId(const QString &id) const +{ + for(int i=0, c=m_sources->rowCount(); iitem(i); + if (it->data(AbstractSourcesBackend::IdRole).toString() == id) + return it; + } + return nullptr; +} + +void PackageKitSourcesBackend::addRepositoryDetails(const QString &id, const QString &description, bool enabled) +{ + bool add = false; + QStandardItem* item = findItemForId(id); + + if (!item) { + item = new QStandardItem(description); + if (PackageKit::Daemon::backendName() == QLatin1String("aptcc")) { + QRegularExpression exp(QStringLiteral("^/etc/apt/sources.list.d/(.+?).list:.*")); + + auto matchIt = exp.globalMatch(id); + if (matchIt.hasNext()) { + auto match = matchIt.next(); + item->setData(match.captured(1), Qt::ToolTipRole); + } + } + add = true; + } + item->setData(id, IdRole); + item->setCheckState(enabled ? Qt::Checked : Qt::Unchecked); + + if (add) + m_sources->appendRow(item); +} + +QAbstractItemModel * PackageKitSourcesBackend::sources() +{ + return m_sources; +} + +bool PackageKitSourcesBackend::addSource(const QString& /*id*/) +{ + return false; +} + +bool PackageKitSourcesBackend::removeSource(const QString& id) +{ + auto transaction = PackageKit::Daemon::global()->repoRemove(id, false); + connect(transaction, &PackageKit::Transaction::errorCode, this, &PackageKitSourcesBackend::transactionError); + return false; +} + +QList PackageKitSourcesBackend::actions() const +{ + return m_actions; +} + +void PackageKitSourcesBackend::resetSources() +{ + m_sources->clear(); + auto transaction = PackageKit::Daemon::global()->getRepoList(); + connect(transaction, &PackageKit::Transaction::repoDetail, this, &PackageKitSourcesBackend::addRepositoryDetails); + connect(transaction, &PackageKit::Transaction::errorCode, this, &PackageKitSourcesBackend::transactionError); +} + +void PackageKitSourcesBackend::transactionError(PackageKit::Transaction::Error error, const QString& message) +{ + Q_EMIT passiveMessage(message); + qWarning() << "Transaction error: " << error << message << sender(); +} diff --git a/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h b/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h new file mode 100644 index 0000000..abe1d89 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright © 2016 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef PACKAGEKITSOURCESBACKEND_H +#define PACKAGEKITSOURCESBACKEND_H + +#include +#include + +class QStandardItem; +class PKSourcesModel; + +class PackageKitSourcesBackend : public AbstractSourcesBackend +{ + Q_OBJECT + public: + PackageKitSourcesBackend(AbstractResourcesBackend* parent); + + QString idDescription() override; + + bool supportsAdding() const override { return false; } + bool addSource(const QString& id) override; + bool removeSource(const QString& id) override; + + QAbstractItemModel* sources() override; + QList actions() const override; + + void transactionError(PackageKit::Transaction::Error, const QString& message); + + private: + void resetSources(); + void addRepositoryDetails(const QString &id, const QString &description, bool enabled); + QStandardItem* findItemForId(const QString &id) const; + + PKSourcesModel* m_sources; + QList m_actions; +}; + +#endif // PACKAGEKITSOURCESBACKEND_H diff --git a/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp new file mode 100644 index 0000000..d452032 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp @@ -0,0 +1,413 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#include "PackageKitUpdater.h" +#include "PackageKitMessages.h" + +#include +#ifdef PKQT_1_0 +#include +#endif +#include +#include +#include + +#include + +int percentageWithStatus(PackageKit::Transaction::Status status, uint percentage) +{ + const auto was = percentage; + if (status != PackageKit::Transaction::StatusUnknown) { + static const QMap statuses = { + { PackageKit::Transaction::Status::StatusDownload, 0 }, + { PackageKit::Transaction::Status::StatusInstall, 1}, + { PackageKit::Transaction::Status::StatusRemove, 1}, + { PackageKit::Transaction::Status::StatusUpdate, 1} + }; + const auto idx = statuses.value(status, -1); + if (idx < 0) { + qDebug() << "Status not present" << status << "among" << statuses .keys() << percentage; + return -1; + } + percentage = (idx * 100 + percentage) / 2 /*the maximum in statuses*/; + } + qDebug() << "reporting progress with status:" << status << percentage << was; + return percentage; +} + +PackageKitUpdater::PackageKitUpdater(PackageKitBackend * parent) + : AbstractBackendUpdater(parent), + m_transaction(nullptr), + m_backend(parent), + m_isCancelable(false), + m_isProgressing(false), + m_percentage(0), + m_lastUpdate() +{ + fetchLastUpdateTime(); +} + +PackageKitUpdater::~PackageKitUpdater() +{ +} + +void PackageKitUpdater::prepare() +{ + Q_ASSERT(!m_transaction); + m_toUpgrade = m_backend->upgradeablePackages(); + m_allUpgradeable = m_toUpgrade; +} + +void PackageKitUpdater::setupTransaction(PackageKit::Transaction::TransactionFlags flags) +{ + m_packagesModified.clear(); + auto pkgs = involvedPackages(m_toUpgrade).toList(); + pkgs.sort(); + m_transaction = PackageKit::Daemon::updatePackages(pkgs, flags); + m_isCancelable = m_transaction->allowCancel(); + + connect(m_transaction.data(), &PackageKit::Transaction::finished, this, &PackageKitUpdater::finished); + connect(m_transaction.data(), &PackageKit::Transaction::package, this, &PackageKitUpdater::packageResolved); + connect(m_transaction.data(), &PackageKit::Transaction::errorCode, this, &PackageKitUpdater::errorFound); + connect(m_transaction.data(), &PackageKit::Transaction::mediaChangeRequired, this, &PackageKitUpdater::mediaChange); + connect(m_transaction.data(), &PackageKit::Transaction::requireRestart, this, &PackageKitUpdater::requireRestart); + connect(m_transaction.data(), &PackageKit::Transaction::eulaRequired, this, &PackageKitUpdater::eulaRequired); + connect(m_transaction.data(), &PackageKit::Transaction::repoSignatureRequired, this, &PackageKitUpdater::repoSignatureRequired); + connect(m_transaction.data(), &PackageKit::Transaction::allowCancelChanged, this, &PackageKitUpdater::cancellableChanged); + connect(m_transaction.data(), &PackageKit::Transaction::percentageChanged, this, &PackageKitUpdater::percentageChanged); + connect(m_transaction.data(), &PackageKit::Transaction::itemProgress, this, &PackageKitUpdater::itemProgress); + connect(m_transaction.data(), &PackageKit::Transaction::speedChanged, this, [this] { + Q_EMIT downloadSpeedChanged(downloadSpeed()); + }); +} + +QSet PackageKitUpdater::packagesForPackageId(const QSet& pkgids) const +{ + QSet packages; + packages.reserve(pkgids.size()); + foreach(const QString& pkgid, pkgids) { + packages += PackageKit::Daemon::packageName(pkgid); + } + + QSet ret; + foreach (AbstractResource * res, m_allUpgradeable) { + PackageKitResource* pres = qobject_cast(res); + if (packages.contains(pres->allPackageNames().toSet())) { + ret.insert(res); + } + } + + return ret; +} + +QSet PackageKitUpdater::involvedPackages(const QSet& packages) const +{ + QSet packageIds; + packageIds.reserve(packages.size()); + foreach (AbstractResource * res, packages) { + PackageKitResource * app = qobject_cast(res); + QString pkgid = m_backend->upgradeablePackageId(app); + + if (pkgid.isEmpty()) { + qWarning() << "no upgradeablePackageId for" << app; + continue; + } + + packageIds.insert(pkgid); + } + return packageIds; +} + +void PackageKitUpdater::processProceedFunction() +{ + auto t = m_proceedFunctions.takeFirst()(); + connect(t, &PackageKit::Transaction::finished, this, [this](PackageKit::Transaction::Exit status) { + if (status != PackageKit::Transaction::Exit::ExitSuccess) { + qWarning() << "transaction failed" << sender() << status; + cancel(); + return; + } + + if (!m_proceedFunctions.isEmpty()) { + processProceedFunction(); + } else { + start(); + } + }); +} + +void PackageKitUpdater::proceed() +{ + if (!m_proceedFunctions.isEmpty()) + processProceedFunction(); +#ifdef PKQT_1_0 + else if (qEnvironmentVariableIsSet("PK_OFFLINE_UPDATE")) + setupTransaction(PackageKit::Transaction::TransactionFlagOnlyTrusted | PackageKit::Transaction::TransactionFlagOnlyDownload); +#endif + else + setupTransaction(PackageKit::Transaction::TransactionFlagOnlyTrusted); +} + +void PackageKitUpdater::start() +{ + Q_ASSERT(!isProgressing()); + + setupTransaction(PackageKit::Transaction::TransactionFlagSimulate); + setProgressing(true); +} + +void PackageKitUpdater::finished(PackageKit::Transaction::Exit exit, uint /*time*/) +{ +// qDebug() << "update finished!" << exit << time; + if (!m_proceedFunctions.isEmpty()) + return; + const bool cancel = exit == PackageKit::Transaction::ExitCancelled; + const bool simulate = m_transaction->transactionFlags() & PackageKit::Transaction::TransactionFlagSimulate; + + disconnect(m_transaction, nullptr, this, nullptr); + m_transaction = nullptr; + + if (!cancel && simulate) { + const auto toremove = m_packagesModified.value(PackageKit::Transaction::InfoRemoving); + if (!toremove.isEmpty()) { + const auto toinstall = QStringList() << m_packagesModified.value(PackageKit::Transaction::InfoInstalling) << m_packagesModified.value(PackageKit::Transaction::InfoUpdating); + Q_EMIT proceedRequest(i18n("Packages to remove"), i18n("The following packages will be removed by the update:\n
  • %1
\nin order to install:\n
  • %2
", + PackageKitResource::joinPackages(toremove, QStringLiteral("
  • "), {}), + PackageKitResource::joinPackages(toinstall, QStringLiteral("
  • "), {}) + )); + } else { + proceed(); + } + return; + } + + setProgressing(false); + m_backend->fetchUpdates(); + fetchLastUpdateTime(); + + if (qEnvironmentVariableIsSet("PK_OFFLINE_UPDATE")) { +#ifdef PKQT_1_0 + PackageKit::Daemon::global()->offline()->trigger(PackageKit::Offline::ActionReboot); + Q_EMIT passiveMessage(i18n("Please restart the computer to finish the installation")); +#else + qWarning() << "PK_OFFLINE_UPDATE is set but discover was built against an old version of PackageKitQt that didn't support offline updates"; +#endif + } +} + +void PackageKitUpdater::cancellableChanged() +{ + if (m_isCancelable != m_transaction->allowCancel()) { + m_isCancelable = m_transaction->allowCancel(); + emit cancelableChanged(m_isCancelable); + } +} + +void PackageKitUpdater::percentageChanged() +{ + const auto actualPercentage = percentageWithStatus(m_transaction->status(), m_transaction->percentage()); + if (actualPercentage >= 0 && m_percentage != actualPercentage) { + m_percentage = actualPercentage; + emit progressChanged(m_percentage); + } +} + +bool PackageKitUpdater::hasUpdates() const +{ + return m_backend->updatesCount() > 0; +} + +qreal PackageKitUpdater::progress() const +{ + return m_percentage; +} + +void PackageKitUpdater::removeResources(const QList& apps) +{ + QSet pkgs = involvedPackages(apps.toSet()); + m_toUpgrade.subtract(packagesForPackageId(pkgs)); +} + +void PackageKitUpdater::addResources(const QList& apps) +{ + QSet pkgs = involvedPackages(apps.toSet()); + m_toUpgrade.unite(packagesForPackageId(pkgs)); +} + +QList PackageKitUpdater::toUpdate() const +{ + return m_toUpgrade.toList(); +} + +bool PackageKitUpdater::isMarked(AbstractResource* res) const +{ + return m_toUpgrade.contains(res); +} + +QDateTime PackageKitUpdater::lastUpdate() const +{ + return m_lastUpdate; +} + +bool PackageKitUpdater::isCancelable() const +{ + return m_isCancelable; +} + +bool PackageKitUpdater::isProgressing() const +{ + return m_isProgressing; +} + +void PackageKitUpdater::cancel() +{ + if (m_transaction) + m_transaction->cancel(); + else + setProgressing(false); +} + +void PackageKitUpdater::errorFound(PackageKit::Transaction::Error err, const QString& error) +{ + if (err == PackageKit::Transaction::ErrorNoLicenseAgreement) + return; + Q_EMIT passiveMessage(QStringLiteral("%1\n%2").arg(PackageKitMessages::errorMessage(err), error)); + qWarning() << "Error happened" << err << error; +} + +void PackageKitUpdater::mediaChange(PackageKit::Transaction::MediaType media, const QString& type, const QString& text) +{ + Q_UNUSED(media) + Q_EMIT passiveMessage(i18n("Media Change of type '%1' is requested.\n%2", type, text)); +} + +void PackageKitUpdater::requireRestart(PackageKit::Transaction::Restart restart, const QString& pkgid) +{ + Q_EMIT passiveMessage(PackageKitMessages::restartMessage(restart, pkgid)); +} + +void PackageKitUpdater::eulaRequired(const QString& eulaID, const QString& packageID, const QString& vendor, const QString& licenseAgreement) +{ + m_proceedFunctions << [eulaID](){ + return PackageKit::Daemon::acceptEula(eulaID); + }; + Q_EMIT proceedRequest(i18n("Accept EULA"), i18n("The package %1 and its vendor %2 require that you accept their license:\n %3", + PackageKit::Daemon::packageName(packageID), vendor, licenseAgreement)); +} + +void PackageKitUpdater::setProgressing(bool progressing) +{ + if (m_isProgressing != progressing) { + m_isProgressing = progressing; + emit progressingChanged(m_isProgressing); + } +} + +void PackageKitUpdater::fetchLastUpdateTime() +{ + QDBusPendingReply transaction = PackageKit::Daemon::global()->getTimeSinceAction(PackageKit::Transaction::RoleGetUpdates); + QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(transaction, this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, &PackageKitUpdater::lastUpdateTimeReceived); +} + +void PackageKitUpdater::lastUpdateTimeReceived(QDBusPendingCallWatcher* w) +{ + QDBusPendingReply reply = w->reply(); + if (reply.isError()) { + qWarning() << "Error when fetching the last update time" << reply.error(); + } else { + m_lastUpdate = QDateTime::currentDateTime().addSecs(-int(reply.value())); + } + w->deleteLater(); +} + +void PackageKitUpdater::itemProgress(const QString& itemID, PackageKit::Transaction::Status status, uint percentage) +{ + auto res = packagesForPackageId({itemID}); + + const auto actualPercentage = percentageWithStatus(status, percentage); + if (actualPercentage<0) + return; + + foreach(auto r, res) { + Q_EMIT resourceProgressed(r, actualPercentage); + } +} + +void PackageKitUpdater::fetchChangelog() const +{ + QStringList pkgids; + foreach(AbstractResource* res, m_allUpgradeable) { + pkgids += static_cast(res)->availablePackageId(); + } + Q_ASSERT(!pkgids.isEmpty()); + + PackageKit::Transaction* t = PackageKit::Daemon::getUpdatesDetails(pkgids); + connect(t, &PackageKit::Transaction::updateDetail, this, &PackageKitUpdater::updateDetail); + connect(t, &PackageKit::Transaction::errorCode, this, &PackageKitUpdater::errorFound); +} + +void PackageKitUpdater::updateDetail(const QString& packageID, const QStringList& updates, const QStringList& obsoletes, const QStringList& vendorUrls, + const QStringList& bugzillaUrls, const QStringList& cveUrls, PackageKit::Transaction::Restart restart, const QString& updateText, + const QString& changelog, PackageKit::Transaction::UpdateState state, const QDateTime& issued, const QDateTime& updated) +{ + auto res = packagesForPackageId({packageID}); + foreach(auto r, res) { + static_cast(r)->updateDetail(packageID, updates, obsoletes, vendorUrls, bugzillaUrls, + cveUrls, restart, updateText, changelog, state, issued, updated); + } +} + +void PackageKitUpdater::packageResolved(PackageKit::Transaction::Info info, const QString& packageId) +{ + m_packagesModified[info] << packageId; +} + +void PackageKitUpdater::repoSignatureRequired(const QString& packageID, const QString& repoName, const QString& keyUrl, + const QString& keyUserid, const QString& keyId, const QString& keyFingerprint, + const QString& keyTimestamp, PackageKit::Transaction::SigType type) +{ + Q_EMIT proceedRequest(i18n("Missing signature for %1 in %2", packageID, repoName), + i18n("Do you trust the following key?\n\nUrl: %1\nUser: %2\nKey: %3\nFingerprint: %4\nTimestamp: %4\n", + keyUrl, keyUserid, keyFingerprint, keyTimestamp)); + + m_proceedFunctions << [type, keyId, packageID](){ + return PackageKit::Daemon::installSignature(type, keyId, packageID); + }; +} + +double PackageKitUpdater::updateSize() const +{ + double ret = 0.; + QSet donePkgs; + for (AbstractResource * res : m_toUpgrade) { + PackageKitResource * app = qobject_cast(res); + QString pkgid = m_backend->upgradeablePackageId(app); + if (!donePkgs.contains(pkgid)) { + donePkgs.insert(pkgid); + ret += app->size(); + } + } + return ret; +} + +quint64 PackageKitUpdater::downloadSpeed() const +{ + return m_transaction ? m_transaction->speed() : 0; +} diff --git a/libdiscover/backends/PackageKitBackend/PackageKitUpdater.h b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.h new file mode 100644 index 0000000..179a3d7 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/PackageKitUpdater.h @@ -0,0 +1,102 @@ +/*************************************************************************** + * Copyright © 2013 Lukas Appelhans * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ +#ifndef PACKAGEKITUPDATER_H +#define PACKAGEKITUPDATER_H + +#include +#include "PackageKitBackend.h" +#include + +class PackageKitUpdater : public AbstractBackendUpdater +{ + Q_OBJECT + public: + explicit PackageKitUpdater(PackageKitBackend * parent = nullptr); + ~PackageKitUpdater() override; + + void prepare() override; + + bool hasUpdates() const override; + qreal progress() const override; + + void setProgressing(bool progressing); + + void removeResources(const QList& apps) override; + void addResources(const QList& apps) override; + QList toUpdate() const override; + bool isMarked(AbstractResource* res) const override; + QDateTime lastUpdate() const override; + bool isCancelable() const override; + bool isProgressing() const override; + void fetchChangelog() const override; + double updateSize() const override; + quint64 downloadSpeed() const override; + + void proceed() override; + + public Q_SLOTS: + ///must be implemented if ever isCancelable is true + void cancel() override; + void start() override; + + private Q_SLOTS: + void errorFound(PackageKit::Transaction::Error err, const QString& error); + void mediaChange(PackageKit::Transaction::MediaType media, const QString& type, const QString& text); + void requireRestart(PackageKit::Transaction::Restart restart, const QString& p); + void eulaRequired(const QString &eulaID, const QString &packageID, const QString &vendor, const QString &licenseAgreement); + void finished(PackageKit::Transaction::Exit exit, uint); + void cancellableChanged(); + void percentageChanged(); + void updateDetail(const QString& packageID, const QStringList& updates, const QStringList& obsoletes, const QStringList& vendorUrls, + const QStringList& bugzillaUrls, const QStringList& cveUrls, PackageKit::Transaction::Restart restart, const QString& updateText, + const QString& changelog, PackageKit::Transaction::UpdateState state, const QDateTime& issued, const QDateTime& updated); + void packageResolved(PackageKit::Transaction::Info info, const QString& packageId); + void repoSignatureRequired(const QString &packageID, + const QString &repoName, + const QString &keyUrl, + const QString &keyUserid, + const QString &keyId, + const QString &keyFingerprint, + const QString &keyTimestamp, + PackageKit::Transaction::SigType type); + + private: + void processProceedFunction(); + void itemProgress(const QString &itemID, PackageKit::Transaction::Status status, uint percentage); + void fetchLastUpdateTime(); + void lastUpdateTimeReceived(QDBusPendingCallWatcher* w); + void setupTransaction(PackageKit::Transaction::TransactionFlags flags); + QSet involvedPackages(const QSet& packages) const; + QSet packagesForPackageId(const QSet& packages) const; + + QPointer m_transaction; + PackageKitBackend * const m_backend; + QSet m_toUpgrade; + QSet m_allUpgradeable; + bool m_isCancelable; + bool m_isProgressing; + int m_percentage; + QDateTime m_lastUpdate; + QMap m_packagesModified; + QVector> m_proceedFunctions; +}; + + +#endif diff --git a/libdiscover/backends/PackageKitBackend/TransactionSet.cpp b/libdiscover/backends/PackageKitBackend/TransactionSet.cpp new file mode 100644 index 0000000..8f2f3f2 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/TransactionSet.cpp @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#include "TransactionSet.h" + +#include + +TransactionSet::TransactionSet(const QVector &transactions) + : m_transactions(transactions) +{ + foreach(PackageKit::Transaction* t, transactions) { + connect(t, &PackageKit::Transaction::finished, this, &TransactionSet::transactionFinished); + } +} + +void TransactionSet::transactionFinished(PackageKit::Transaction::Exit exit) +{ + PackageKit::Transaction* t = qobject_cast(sender()); + if (exit != PackageKit::Transaction::ExitSuccess) { + qWarning() << "failed" << exit << t; + } + + m_transactions.removeAll(t); + if (m_transactions.isEmpty()) { + Q_EMIT allFinished(); + deleteLater(); + } +} diff --git a/libdiscover/backends/PackageKitBackend/TransactionSet.h b/libdiscover/backends/PackageKitBackend/TransactionSet.h new file mode 100644 index 0000000..8067b93 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/TransactionSet.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright © 2017 Aleix Pol Gonzalez * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation; either version 2 of * + * the License or (at your option) version 3 or any later version * + * accepted by the membership of KDE e.V. (or its successor approved * + * by the membership of KDE e.V.), which shall act as a proxy * + * defined in Section 14 of version 3 of the license. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + ***************************************************************************/ + +#ifndef TRANSACTIONSET_H +#define TRANSACTIONSET_H + +#include +#include +#include + +class TransactionSet : public QObject +{ + Q_OBJECT + public: + TransactionSet(const QVector &transactions); + + void transactionFinished(PackageKit::Transaction::Exit exit); + + Q_SIGNALS: + void allFinished(); + + private: + QVector m_transactions; + +}; + +#endif diff --git a/libdiscover/backends/PackageKitBackend/categoryimages/CMakeLists.txt b/libdiscover/backends/PackageKitBackend/categoryimages/CMakeLists.txt new file mode 100644 index 0000000..aa72a70 --- /dev/null +++ b/libdiscover/backends/PackageKitBackend/categoryimages/CMakeLists.txt @@ -0,0 +1,18 @@ +install( FILES + educationcrop.jpg + fontcrop.jpg + gamecrop.jpg + graphiccrop.jpg +# multimedia2.jpg + multimediacrop.jpg +# music.jpe + officecrop.jpg + sciencecrop.jpg + accesscropped.jpg + toolcrop.jpg + accesscropped.jpg + accessoriescrop.jpg + applicationcrop.jpg + internetcrop.jpg + settingscrop.jpg + DESTINATION ${KDE_INSTALL_FULL_DATAROOTDIR}/discover/pkcategories) diff --git a/libdiscover/backends/PackageKitBackend/categoryimages/accesscropped.jpg b/libdiscover/backends/PackageKitBackend/categoryimages/accesscropped.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dacf9eb0f49d4dd3d04fe561870fdcabaefdec59 GIT binary patch literal 804054 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
  • My6i^KF)_J@X;ABE8>xy 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 literal 0 HcmV?d00001 diff --git a/discover/main.cpp b/discover/main.cpp new file mode 100644 index 0000000..aae6274 --- /dev/null +++ b/discover/main.cpp @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2012 Aleix Pol Gonzalez + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library/Lesser General Public License + * version 2, or (at your option) any later version, as published by the + * Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library/Lesser General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +// #define QT_QML_DEBUG + +#include +#include +#include +#include +#include +#include +#include +#include "DiscoverObject.h" +#include +#include "DiscoverVersion.h" +#include +#include + +typedef QHash StringCompactMode; +Q_GLOBAL_STATIC_WITH_ARGS(StringCompactMode, s_decodeCompactMode, (StringCompactMode { + { QLatin1String("auto"), DiscoverObject::Auto }, + { QLatin1String("compact"), DiscoverObject::Compact }, + { QLatin1String("full"), DiscoverObject::Full } +})) + +QCommandLineParser* createParser() +{ + QCommandLineParser* parser = new QCommandLineParser; + parser->addOption(QCommandLineOption(QStringLiteral("application"), i18n("Directly open the specified application by its package name."), QStringLiteral("name"))); + parser->addOption(QCommandLineOption(QStringLiteral("mime"), i18n("Open with a program that can deal with the given mimetype."), QStringLiteral("name"))); + parser->addOption(QCommandLineOption(QStringLiteral("category"), i18n("Display a list of entries with a category."), QStringLiteral("name"))); + parser->addOption(QCommandLineOption(QStringLiteral("mode"), i18n("Open Discover in a said mode. Modes correspond to the toolbar buttons."), QStringLiteral("name"))); + parser->addOption(QCommandLineOption(QStringLiteral("listmodes"), i18n("List all the available modes."))); + parser->addOption(QCommandLineOption(QStringLiteral("compact"), i18n("Compact Mode (auto/compact/full)."), QStringLiteral("mode"), QStringLiteral("auto"))); + parser->addOption(QCommandLineOption(QStringLiteral("local-filename"), i18n("Local package file to install"), QStringLiteral("package"))); + parser->addOption(QCommandLineOption(QStringLiteral("listbackends"), i18n("List all the available backends."))); + parser->addOption(QCommandLineOption(QStringLiteral("test"), QStringLiteral("Test file"), QStringLiteral("file.qml"))); + parser->addPositionalArgument(QStringLiteral("urls"), i18n("Supports appstream: url scheme")); + DiscoverBackendsFactory::setupCommandLine(parser); + KAboutData::applicationData().setupCommandLine(parser); + parser->addHelpOption(); + parser->addVersionOption(); + return parser; +} + +void processArgs(QCommandLineParser* parser, DiscoverObject* mainWindow) +{ + if(parser->isSet(QStringLiteral("application"))) + mainWindow->openApplication(QUrl(parser->value(QStringLiteral("application")))); + else if(parser->isSet(QStringLiteral("mime"))) + mainWindow->openMimeType(parser->value(QStringLiteral("mime"))); + else if(parser->isSet(QStringLiteral("category"))) + mainWindow->openCategory(parser->value(QStringLiteral("category"))); + + if(parser->isSet(QStringLiteral("mode"))) + mainWindow->openMode(parser->value(QStringLiteral("mode"))); + + if(parser->isSet(QStringLiteral("local-filename"))) + mainWindow->openLocalPackage(QUrl::fromUserInput(parser->value(QStringLiteral("local-filename")), {}, QUrl::AssumeLocalFile)); + + foreach(const QString &arg, parser->positionalArguments()) { + const QUrl url = QUrl::fromUserInput(arg, {}, QUrl::AssumeLocalFile); + if (url.isLocalFile()) + mainWindow->openLocalPackage(url); + else if (url.scheme() == QLatin1String("apt")) + Q_EMIT mainWindow->openSearch(url.host()); + else + mainWindow->openApplication(url); + } +} + +int main(int argc, char** argv) +{ + QApplication app(argc, argv); + app.setWindowIcon(QIcon::fromTheme(QStringLiteral("plasmadiscover"))); + app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); + app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + KCrash::initialize(); + KLocalizedString::setApplicationDomain("plasma-discover"); + KAboutData about(QStringLiteral("discover"), i18n("Discover"), version, i18n("An application explorer"), + KAboutLicense::GPL, i18n("© 2010-2018 Plasma Development Team")); + about.addAuthor(i18n("Aleix Pol Gonzalez"), QString(), QStringLiteral("aleixpol@blue-systems.com")); + about.addAuthor(i18n("Jonathan Thomas"), QString(), QStringLiteral("echidnaman@kubuntu.org")); + about.setProductName("discover/discover"); + KAboutData::setApplicationData(about); + + DiscoverObject *mainWindow = nullptr; + { + QScopedPointer parser(createParser()); + parser->process(app); + about.processCommandLine(parser.data()); + DiscoverBackendsFactory::processCommandLine(parser.data(), parser->isSet(QStringLiteral("test"))); + + if(parser->isSet(QStringLiteral("listbackends"))) { + QTextStream(stdout) << i18n("Available backends:\n"); + DiscoverBackendsFactory f; + foreach(const QString& name, f.allBackendNames(false, true)) + QTextStream(stdout) << " * " << name << '\n'; + return 0; + } + + if (parser->isSet(QStringLiteral("test"))) { + QStandardPaths::setTestModeEnabled(true); + } + + KDBusService* service = new KDBusService(KDBusService::Unique, &app); + + mainWindow = new DiscoverObject(s_decodeCompactMode->value(parser->value(QStringLiteral("compact")), DiscoverObject::Full)); + QObject::connect(&app, &QCoreApplication::aboutToQuit, mainWindow, &DiscoverObject::deleteLater); + QObject::connect(service, &KDBusService::activateRequested, mainWindow, [mainWindow](const QStringList &arguments, const QString &/*workingDirectory*/){ + if (!mainWindow->rootObject()) + QCoreApplication::instance()->quit(); + + mainWindow->rootObject()->raise(); + if (arguments.isEmpty()) + return; + QScopedPointer parser(createParser()); + parser->parse(arguments); + processArgs(parser.data(), mainWindow); + }); + + processArgs(parser.data(), mainWindow); + + if(parser->isSet(QStringLiteral("listmodes"))) { + QTextStream(stdout) << i18n("Available modes:\n"); + foreach(const QString& mode, mainWindow->modes()) + QTextStream(stdout) << " * " << mode << '\n'; + delete mainWindow; + return 0; + } + + if (parser->isSet(QStringLiteral("test"))) { + const QUrl testFile = QUrl::fromUserInput(parser->value(QStringLiteral("test")), {}, QUrl::AssumeLocalFile); + Q_ASSERT(!testFile.isEmpty() && testFile.isLocalFile()); + + mainWindow->loadTest(testFile); + } + } + + return app.exec(); +} diff --git a/discover/org.kde.discover.appdata.xml b/discover/org.kde.discover.appdata.xml new file mode 100644 index 0000000..20d6298 --- /dev/null +++ b/discover/org.kde.discover.appdata.xml @@ -0,0 +1,194 @@ + + + org.kde.discover.desktop + CC0-1.0 + GPL-2.0+ + Discover + استكشف + Discover + Discover + Discover + Discover + Discover + Discover + Discover + Discover + Avastusretk + Discover + Discover + Discover + Discover + Discoperi + Discover + Discover + 발견 + Ontdekken + Discover + Odkrywca + Discover + Discover + Центр приложений Discover + ObjaviÅ¥ + Discover + Oткривач + Otkrivač + Oткривач + Otkrivač + Discover + Keşfet + Discover + xxDiscoverxx + 发现 + Discover +

    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Ⓢu{SbBud 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