diff --git a/Apper/Apper.cpp b/Apper/Apper.cpp index b33bb50..f0d1578 100644 --- a/Apper/Apper.cpp +++ b/Apper/Apper.cpp @@ -1,239 +1,239 @@ /*************************************************************************** * Copyright (C) 2008-2011 by Daniel Nicoletti * * dantti12@gmail.com * * * * 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) 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; see the file COPYING. If not, write to * * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * * Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "Apper.h" #include "BackendDetails.h" #include "MainUi.h" //#include //#include //#include #include #include //#include //#include //#include #include #include #include #include #include #include #include #include #include Apper::Apper(int& argc, char** argv) : QApplication(argc, argv), m_pkUi(0), m_running(0) { setQuitOnLastWindowClosed(false); auto service = new KDBusService(KDBusService::Unique); connect(this, &Apper::aboutToQuit, service, &KDBusService::deleteLater); connect(service, &KDBusService::activateRequested, this, &Apper::activate); } Apper::~Apper() { } void Apper::appClose() { //check whether we can close if (!m_running && !m_pkUi) { quit(); } } void Apper::kcmFinished() { // kcm is finished we set to 0 to be able to quit m_pkUi->deleteLater(); m_pkUi = 0; appClose(); } void Apper::decreaseAndKillRunning() { m_running--; sender()->deleteLater(); appClose(); } void Apper::activate(const QStringList& arguments, const QString& workingDirectory) { Q_UNUSED(workingDirectory); QCommandLineParser parser; parser.addVersionOption(); parser.addHelpOption(); QCommandLineOption updatesOpt(QStringList() << QLatin1String("updates"), i18n("Show updates")); parser.addOption(updatesOpt); QCommandLineOption settingsOpt(QStringList() << QLatin1String("settings"), i18n("Show settings")); parser.addOption(settingsOpt); QCommandLineOption backendOpt(QStringList() << QLatin1String("backend-details"), i18n("Show backend details")); parser.addOption(backendOpt); QCommandLineOption mimeTypeOpt(QStringList() << QLatin1String("install-mime-type"), i18n("Mime type installer"), QLatin1String("mime-type")); parser.addOption(mimeTypeOpt); QCommandLineOption nameOpt(QStringList() << QLatin1String("install-package-name"), i18n("Package name installer"), QLatin1String("name")); parser.addOption(nameOpt); QCommandLineOption fileOpt(QStringList() << QLatin1String("file"), i18n("Single file installer"), QLatin1String("file")); parser.addOption(fileOpt); QCommandLineOption resourceOpt(QStringList() << QLatin1String("resource"), i18n("Font resource installer"), QLatin1String("lang")); parser.addOption(resourceOpt); QCommandLineOption catalogOpt(QStringList() << QLatin1String("install-catalog"), i18n("Catalog installer"), QLatin1String("file")); parser.addOption(catalogOpt); QCommandLineOption removeOpt(QStringList() << QLatin1String("remove-package-by-file"), i18n("Single package remover"), QLatin1String("filename")); parser.addOption(removeOpt); parser.addPositionalArgument(QLatin1String("[package]"), i18n("Package file to install")); KAboutData::applicationData().setupCommandLine(&parser); parser.process(arguments); KAboutData::applicationData().processCommandLine(&parser); auto args = parser.positionalArguments(); if (args.count()) { // grab the list of files // QStringList urls; // for (int i = 0; i < args.count(); i++) { // urls << args[i]; // } // TODO remote files are copied to /tmp // what will happen if we call the other process to // install and this very one closes? will the files // in /tmp be deleted? invoke(QLatin1String("InstallPackageFiles"), args); return; } if (parser.isSet(updatesOpt)) { QTimer::singleShot(0, this, &Apper::showUpdates); return; } if (parser.isSet(settingsOpt)) { QTimer::singleShot(0, this, &Apper::showSettings); return; } if (parser.isSet(mimeTypeOpt)) { invoke(QLatin1String("InstallMimeTypes"), parser.values(mimeTypeOpt)); return; } if (parser.isSet(nameOpt)) { invoke(QLatin1String("InstallPackageNames"), parser.values(nameOpt)); return; } if (parser.isSet(QLatin1String("install-provide-file"))) { invoke(QLatin1String("InstallProvideFiles"), parser.values(QLatin1String("install-provide-file"))); return; } if (parser.isSet(catalogOpt)) { invoke(QLatin1String("InstallCatalogs"), parser.values(catalogOpt)); return; } if (parser.isSet(removeOpt)) { invoke(QLatin1String("RemovePackageByFiles"), parser.values(removeOpt)); return; } if (parser.isSet(backendOpt)) { auto helper = new BackendDetails; connect(helper, &BackendDetails::rejected, this, &Apper::decreaseAndKillRunning); QTimer::singleShot(0, helper, &BackendDetails::show); m_running++; return; } // If we are here, we neet to show/activate the main UI QTimer::singleShot(0, this, &Apper::showUi); } void Apper::showUi() { if (!m_pkUi) { m_pkUi = new MainUi(); connect(m_pkUi, &MainUi::finished, this, &Apper::kcmFinished); } // Show all m_pkUi->showAll(); m_pkUi->show(); // KWindowSystem::forceActiveWindow(m_pkUi->winId()); } void Apper::showUpdates() { if (!m_pkUi) { m_pkUi = new MainUi(); connect(m_pkUi, &MainUi::finished, this, &Apper::kcmFinished); } m_pkUi->showUpdates(); m_pkUi->show(); // KWindowSystem::forceActiveWindow(m_pkUi->winId()); } void Apper::showSettings() { if (!m_pkUi) { m_pkUi = new MainUi(); connect(m_pkUi, &MainUi::finished, this, &Apper::kcmFinished); } m_pkUi->showSettings(); m_pkUi->show(); // KWindowSystem::forceActiveWindow(m_pkUi->winId()); } void Apper::invoke(const QString &method_name, const QStringList &args) { QDBusMessage message; - message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.PackageKit"), - QStringLiteral("/org/freedesktop/PackageKit"), - QStringLiteral("org.freedesktop.PackageKit.Modify"), + message = QDBusMessage::createMethodCall(QLatin1String("org.freedesktop.PackageKit"), + QLatin1String("/org/freedesktop/PackageKit"), + QLatin1String("org.freedesktop.PackageKit.Modify"), method_name); message << uint(0); message << args; message << QString(); // This call must block otherwise this application closes before // smarticon is activated QDBusConnection::sessionBus().call(message, QDBus::BlockWithGui); QTimer::singleShot(0, this, &Apper::appClose); } #include "Apper.moc" diff --git a/Apper/kcm_apper.desktop b/Apper/kcm_apper.desktop deleted file mode 100644 index a9a2b61..0000000 --- a/Apper/kcm_apper.desktop +++ /dev/null @@ -1,138 +0,0 @@ -[Desktop Entry] -Type=Service -Exec=kcmshell5 kcm_apper -Icon=system-software-install - -X-KDE-Library=kcm_apper -X-KDE-ParentApp=kcontrol -X-KDE-ServiceTypes=KCModule -X-KDE-System-Settings-Category=manage-software -X-KDE-System-Settings-Parent-Category=computer-administration -X-KDE-System-Settings-Parent-Category-V2=system-administration - -Name=Software Management -Name[ar]=إدارة البرمجيّات -Name[ast]=Xestión de software -Name[bg]=Управление на софтуер -Name[bs]=Upravljanje softverom -Name[ca]=Gestor de programari -Name[ca@valencia]=Gestor de programari -Name[cs]=Správa softwaru -Name[da]=Håndtering af software -Name[de]=Softwareverwaltung -Name[el]=Διαχείριση λογισμικού -Name[en_GB]=Software Management -Name[es]=Gestión de software -Name[et]=Tarkvarahaldur -Name[fi]=Ohjelmistonhallinta -Name[fr]=Gestion des logiciels -Name[gl]=Xestión do software -Name[hr]=Upravljanje softverom -Name[hu]=Szoftverkezelő -Name[it]=Gestione software -Name[km]=ការ​គ្រប់គ្រង​កម្មវិធី -Name[ko]=소프트웨어 관리 -Name[lt]=Programų tvarkymas -Name[mr]=सॉफ्टवेअर व्यवस्थापन -Name[nb]=Programvarebehandling -Name[nds]=Programmpleeg -Name[nl]=Softwarebeheer -Name[nn]=Programvarehandsaming -Name[pa]=ਸਾਫਟਵੇਅਰ ਪਰਬੰਧ -Name[pl]=Zarządzanie oprogramowaniem -Name[pt]=Gestão de Aplicações -Name[pt_BR]=Gerenciamento de software -Name[ro]=Gestiune programe -Name[ru]=Менеджер программ -Name[sk]=Správa softvéru -Name[sl]=Upravljanje programske opreme -Name[sv]=Programvaruhantering -Name[tr]=Yazılım Yönetimi -Name[ug]=يۇمشاق دېتال باشقۇرۇش -Name[uk]=Керування програмами -Name[wa]=Manaedjmint des programes -Name[x-test]=xxSoftware Managementxx -Name[zh_CN]=软件管理 -Name[zh_TW]=軟體管理 - -Comment=Get, Remove and Update Software -Comment[ar]=اجلب برمجيّات، وأزلها وحدّثها -Comment[ast]=Consigui, desanicia y anueva software -Comment[bg]=Инсталиране, премахване и обновяване на програми -Comment[bs]=Dobavi, ukloni i nadogradi softver -Comment[ca]=Obtén, elimina i actualitza el programari -Comment[ca@valencia]=Obtén, elimina i actualitza el programari -Comment[cs]=Získání, odstranění a aktualizace softwaru -Comment[da]=Hent, fjern og opdatér software -Comment[de]=Beziehen, entfernen und aktualisieren der Software -Comment[el]=Λήψη, κατάργηση και ενημέρωση λογισμικού -Comment[en_GB]=Get, Remove and Update Software -Comment[es]=Añadir, eliminar y actualizar software -Comment[et]=Tarkvara paigaldamine, eemaldamine ja uuendamine -Comment[fi]=Nouda, poista ja päivitä ohjelmia -Comment[fr]=Installe, supprime et met à jour des logiciels -Comment[gl]=Obter, retirar e actualizar software -Comment[hr]=Dohvaćanje, uklanjanje i ažuriranje softvera -Comment[hu]=Szoftverek letöltése, eltávolítása és frissítése -Comment[it]=Aggiungi, rimuovi e aggiorna software -Comment[ko]=소프트웨어 설치, 삭제, 업데이트 -Comment[lt]=Gauti, šalinti ir naujinti programas -Comment[mr]=सॉफ्टवेअर प्रतिष्ठापन करा, काढून टाका व अद्ययावत करा -Comment[nb]=Hent, fjern og oppdater programvare -Comment[nds]=Programmen halen, wegmaken un opfrischen -Comment[nl]=Software verkrijgen, verwijderen en bijwerken -Comment[nn]=Last ned, fjern og oppdater programvare -Comment[pa]=ਸਾਫਟਵੇਅਰ ਲਵੋ, ਹਟਾਓ ਤੇ ਅੱਪਡੇਟ ਕਰੋ -Comment[pl]=Pobieraj, usuwaj i uaktualniaj oprogramowanie -Comment[pt]=Obter, Remover e Actualizar Aplicações -Comment[pt_BR]=Obtém, remove e atualiza aplicativos -Comment[ro]=Obțineți, eliminați și actualizați aplicațiile -Comment[ru]=Установка, удаление и обновление программ -Comment[sk]=Získanie, odstránenie a aktualizácia softvéru -Comment[sl]=Pridobite, odstranite in posodobite programsko opremo -Comment[sv]=Hämta, ta bort och uppdatera programvara -Comment[tr]=Yazılım Ekle, Kaldır ve Güncelle -Comment[uk]=Встановлення, вилучення і оновлення програмного забезпечення -Comment[wa]=Cweri, oister eyet mete a djoû des programes -Comment[x-test]=xxGet, Remove and Update Softwarexx -Comment[zh_CN]=获取、删除和更新软件 -Comment[zh_TW]=取得、移除與更新軟體 - -X-KDE-Keywords=install,uninstall,remove,software,applications,management,packages,packagekit,purge -X-KDE-Keywords[ar]=install,uninstall,remove,software,applications,management,packages,packagekit,purge,تثبيت,إزالة,ازالة,برمجيّة,برمجية,برمجيات,إدارة,ادارة,حزمة,حزم -X-KDE-Keywords[ast]=instalar,instalación,desinstalar,desinstalación,software,aplicación, aplicaciones, packagekit,purgar -X-KDE-Keywords[bs]=install,uninstall,remove,software,applications,management,packages,packagekit,purge,instaliraj,deinstaliraj,aplikacija,upravljanje,paketi -X-KDE-Keywords[ca]=instal·la,desinstal·la,elimina,programari,aplicacions,gestiona,paquets,packagekit,purga -X-KDE-Keywords[ca@valencia]=instal·la,desinstal·la,elimina,programari,aplicacions,gestiona,paquets,packagekit,purga -X-KDE-Keywords[da]=installér,afinstallér,fjern,software,programmer,håndtering,pakker,packagekit,purge -X-KDE-Keywords[de]=Installieren,Deinstallieren,Entfernen,Software,Anwendungen,Programme,Pakete.Packagekit,Löschen -X-KDE-Keywords[el]=εγκατάσταση,απεγκατάσταση,αφαίρεση,λογισμικό,εφαρμογές,διαχείριση,πακέτα,packagekit,διαγραφή -X-KDE-Keywords[en_GB]=install,uninstall,remove,software,applications,management,packages,packagekit,purge -X-KDE-Keywords[es]=instalar,desinstalar,eliminar,software,aplicaciones,gestión,paquetes,packagekit,purgar -X-KDE-Keywords[et]=paigaldamine,eemaldamine,installimine,tarkvara,rakendused,haldamine,haldur,paketid,pakid,packagekit,puhastamine -X-KDE-Keywords[fi]=asenna,poista asennus,poista,ohjelma,ohjelmisto,sovellus,sovellukset,hallinta,paketit,paketti,packagekit,siivoa -X-KDE-Keywords[fr]=installer, désinstaller, supprimer, logiciels, applications, gestion, paquet, PackageKit, purger -X-KDE-Keywords[gl]=instalar,desinstalar,eliminar,software,aplicativos,xestión,paquetes, packagekit,purgar -X-KDE-Keywords[hu]=telepítés,eltávolítás,eltávolítás,szoftver,alkalmazások,kezelés,csomagok,packagekit,teljes eltávolítás -X-KDE-Keywords[it]=installa,disinstalla,rimuovi,software,applicazioni,gestione,pacchetti,packagekit,elimina -X-KDE-Keywords[ko]=install,uninstall,remove,software,applications,management,packages,packagekit,purge,설치,삭제,소프트웨어,프로그램,애플리케이션,관리,패키지 -X-KDE-Keywords[lt]=įdiegti,pašalinti,išimti,programos,valdymas,paketai,packagekit,išvalyti -X-KDE-Keywords[mr]=प्रतिष्ठापन, अप्रतिष्ठापन, काढून टाका, सॉफ़्टवेअर, अनुप्रयोग, व्यवस्थापन,पॅकेजेस, पॅकेजकिट, साफ करा -X-KDE-Keywords[nb]=installer,avinstaller,fjern,programvare,programmer.behandling,pakker,packagekit,slett -X-KDE-Keywords[nds]=installeren,deinstalleren,wegmaken,software,programmen,pleeg,plegen,paketen,packagekit -X-KDE-Keywords[nl]=install,installeren,uninstall,deïnstalleren,remove,verwijderen,software,applications,toepassingen,management,beheer,pakketten,pakketkit,purge,opruimen -X-KDE-Keywords[nn]=installera,avinstallera,fjerna,sletta,program,programvare,appar,handsaming,pakkar,PackageKit,fjerning,sletting -X-KDE-Keywords[pa]=ਇੰਸਟਾਲ,ਅਣ-ਇੰਸਟਾਲ,ਹਟਾਓ,ਸਾਫਟਵੇਅਰ,ਐਪਲੀਕੇਸ਼ਨ,ਪਰਬੰਧ,ਪੈਕੇਜ,ਪੈਕੇਜਕਿੱਟ,ਸਾਫ਼ -X-KDE-Keywords[pl]=instaluj,odinstaluj,usuń,oprogramowanie,programy,aplikacje,zarządzanie,paczki,packagekit,wyczyść -X-KDE-Keywords[pt]=instalar,desinstalar,remover,aplicação,aplicações,gestão,pacotes,packagekit,eliminar -X-KDE-Keywords[pt_BR]=instalar,desinstalar,remover,software,aplicativos,gerenciamento,pacotes,packagekit,eliminar -X-KDE-Keywords[ru]=install,uninstall,remove,software,applications,management,packages,packagekit,purge,установка,удаление,управление,программы,приложения,пакеты, -X-KDE-Keywords[sk]=install,uninstall,remove,software,applications,management,packages,packagekit,purge -X-KDE-Keywords[sl]=namesti,odstrani,programska oprema,programi,upravljanje,paketi,packagekit,počisti -X-KDE-Keywords[sv]=installera,avinstallera,ta bort,programvara,program,hantering,paket,packagekit,rensa -X-KDE-Keywords[tr]=yükle,kaldır,sil,yazılım,uygulamalar,yönetim,paketler,packagekit,temizle -X-KDE-Keywords[uk]=install,uninstall,remove,software,applications,management,packages,packagekit,purge,встановлення,встановити,вилучення,вилучити,програма,програми,програмного забезпечення,керування,пакунки,повне вилучення,остаточне вилучення -X-KDE-Keywords[wa]=astaler,dizastaler,oister,disfacer,porgame,aplicåcions,manaedjmint,pacaedjes,packagekit,purge -X-KDE-Keywords[x-test]=xxinstallxx,xxuninstallxx,xxremovexx,xxsoftwarexx,xxapplicationsxx,xxmanagementxx,xxpackagesxx,xxpackagekitxx,xxpurgexx -X-KDE-Keywords[zh_CN]=install,uninstall,remove,software,applications,management,packages,packagekit,purge -X-KDE-Keywords[zh_TW]=install,uninstall,remove,software,applications,management,packages,packagekit,purge diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d9570f..bd19999 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,148 +1,148 @@ project(Apper) cmake_minimum_required(VERSION 3.0) set(APPER_VERSION 1.0.0) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) include(FindPkgConfig) include(KDEInstallDirs) include(KDECompilerSettings) include(KDECMakeSettings) include(FeatureSummary) include(ECMInstallIcons) find_package(Qt5 5.7.0 CONFIG REQUIRED Core DBus Widgets Quick Sql XmlPatterns) # Load the frameworks we need find_package(KF5 REQUIRED COMPONENTS Config DocTools GuiAddons I18n KCMUtils DBusAddons KIO Notifications IconThemes ) find_package(LibKWorkspace REQUIRED) find_package(KDED REQUIRED) find_package(PackageKitQt5 1.0.0 REQUIRED) # # Options # # The various parts of Apper that can be built, or not. option(BUILD_APPER "Build the Apper application" ON) option(BUILD_APPERD "Build the Apper daemon" ON) option(BUILD_DECLARATIVE "Build the Qt Quick plugins" ON) option(BUILD_PKSESSION "Build the PkSession helper application" ON) option(BUILD_PLASMOID "Build the update notifier plasmoid" ON) # Only for Debian based systems option(DEBCONF_SUPPORT "Build Apper with debconf support" OFF) # Yum does not support this option(AUTOREMOVE "Build Apper with auto remove enabled" OFF) set(HAVE_AUTOREMOVE ${AUTOREMOVE}) message(STATUS "Building Apper with auto remove: " ${AUTOREMOVE}) # AppStream application management support option(APPSTREAM "Build Apper with AppStream support" OFF) set(HAVE_APPSTREAM ${APPSTREAM}) message(STATUS "Building Apper with AppStream support: " ${APPSTREAM}) # Enable support for Limba packages option(LIMBA "Build Apper with Limba bundle support" OFF) set(HAVE_LIMBA ${LIMBA}) message(STATUS "Building Apper with Limba support: " ${LIMBA}) option(MAINTAINER "Enable maintainer mode" OFF) if(DEBCONF_SUPPORT) # Tries to find the package, when it finds it, set HAVE_DEBCONFKDE find_package(DebconfKDE REQUIRED) message(STATUS "Building with Debconf support") set(HAVE_DEBCONF ${DEBCONF_SUPPORT}) endif(DEBCONF_SUPPORT) # command to edit the packages origins set(EDIT_ORIGNS_DESKTOP_NAME "" CACHE STRING "Edit origins desktop name") if (EDIT_ORIGNS_DESKTOP_NAME) message(STATUS "Edit origins desktop name: " ${EDIT_ORIGNS_DESKTOP_NAME}) endif(EDIT_ORIGNS_DESKTOP_NAME) # Generate config.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) # # Add definitions # set(MAINTAINER_CFLAGS "") if(MAINTAINER) set(MAINTAINER_CFLAGS "-Werror -Wall -Wcast-align -Wno-uninitialized -Wempty-body -Wformat-security -Winit-self -Wno-deprecated-declarations") if (CMAKE_COMPILER_IS_GNUCC) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9) set(MAINTAINER_CFLAGS ${MAINTAINER_CFLAGS} "-fdiagnostics-color=auto") endif() endif() endif(MAINTAINER) add_definitions(${MAINTAINER_CFLAGS}) add_definitions( -DQT_USE_QSTRINGBUILDER -DQT_STRICT_ITERATORS -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_USE_FAST_OPERATOR_PLUS -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DISABLE_DEPRECATED_BEFORE=0x050900 ) # # Global includes # include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${PackageKitQt5_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libapper) # # Subcomponents # add_subdirectory(libapper) if(BUILD_APPER) add_subdirectory(Apper) endif(BUILD_APPER) if(BUILD_PKSESSION) add_subdirectory(PkSession) endif(BUILD_PKSESSION) if(BUILD_APPERD) add_subdirectory(apperd) endif(BUILD_APPERD) if(BUILD_DECLARATIVE) - add_subdirectory(declarative-plugins) +# add_subdirectory(declarative-plugins) endif(BUILD_DECLARATIVE) if(BUILD_PLASMOID) - add_subdirectory(plasmoid) +# add_subdirectory(plasmoid) endif(BUILD_PLASMOID) if(LIMBA) add_subdirectory(AppSetup) endif() add_subdirectory(doc) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)