File indexing completed on 2024-10-13 13:24:59
0001 /*************************************************************************** 0002 * Copyright (C) 2009-2011 by Daniel Nicoletti * 0003 * dantti12@gmail.com * 0004 * Copyright (C) 2011 Kevin Kofler <kevin.kofler@chello.at> * 0005 * * 0006 * This program is free software; you can redistribute it and/or modify * 0007 * it under the terms of the GNU General Public License as published by * 0008 * the Free Software Foundation; either version 2 of the License, or * 0009 * (at your option) any later version. * 0010 * * 0011 * This program is distributed in the hope that it will be useful, * 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0014 * GNU General Public License for more details. * 0015 * * 0016 * You should have received a copy of the GNU General Public License * 0017 * along with this program; see the file COPYING. If not, write to * 0018 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * 0019 * Boston, MA 02110-1301, USA. * 0020 ***************************************************************************/ 0021 0022 #include "PkInstallPlasmaResources.h" 0023 0024 #include "IntroDialog.h" 0025 0026 #include <Daemon> 0027 #include <PkStrings.h> 0028 0029 #include <QStandardItemModel> 0030 #include <KLocalizedString> 0031 0032 #include <QLoggingCategory> 0033 0034 PkInstallPlasmaResources::PkInstallPlasmaResources(uint xid, 0035 const QStringList &resources, 0036 const QString &interaction, 0037 const QDBusMessage &message, 0038 QWidget *parent) 0039 : SessionTask(xid, interaction, message, parent) 0040 { 0041 setWindowTitle(i18n("Install Plasma Resources")); 0042 0043 auto introDialog = new IntroDialog(this); 0044 auto model = new QStandardItemModel(this); 0045 introDialog->setModel(model); 0046 connect(introDialog, &IntroDialog::continueChanged, this, &PkInstallPlasmaResources::enableButtonOk); 0047 setMainWidget(introDialog); 0048 0049 // Resources are strings like "dataengine-weather" 0050 for (const QString &service : resources) { 0051 QString prettyService = service; 0052 if (service.startsWith(QLatin1String("dataengine-"))) { 0053 prettyService = i18n("%1 data engine", service.mid(11)); 0054 } else if (service.startsWith(QLatin1String("scriptengine-"))) { 0055 prettyService = i18n("%1 script engine", service.mid(13)); 0056 } 0057 0058 auto item = new QStandardItem(prettyService); 0059 item->setIcon(QIcon::fromTheme(QLatin1String("application-x-plasma")).pixmap(32, 32)); 0060 item->setFlags(Qt::ItemIsEnabled); 0061 model->appendRow(item); 0062 0063 m_resources << service; 0064 } 0065 0066 if (m_resources.isEmpty()) { 0067 introDialog->setDescription(i18n("No supported resources were provided")); 0068 } else { 0069 QString description = i18np("The following service is required. " 0070 "Do you want to search for this now?", 0071 "The following services are required. " 0072 "Do you want to search for these now?", 0073 m_resources.size()); 0074 introDialog->setDescription(description); 0075 enableButtonOk(true); 0076 } 0077 0078 QString title = i18np("Plasma requires an additional service for this operation", 0079 "Plasma requires additional services for this operation", 0080 m_resources.size()); 0081 0082 setTitle(title); 0083 } 0084 0085 PkInstallPlasmaResources::~PkInstallPlasmaResources() 0086 { 0087 } 0088 0089 void PkInstallPlasmaResources::search() 0090 { 0091 auto transaction = new PkTransaction(this); 0092 Transaction *t; 0093 t = Daemon::whatProvides(m_resources, 0094 Transaction::FilterNotInstalled | Transaction::FilterArch | Transaction::FilterNewest); 0095 transaction->setupTransaction(t); 0096 setTransaction(Transaction::RoleWhatProvides, transaction); 0097 connect(transaction, &PkTransaction::finished, this, &PkInstallPlasmaResources::searchFinished, Qt::UniqueConnection); 0098 connect(transaction, &PkTransaction::package, this, &PkInstallPlasmaResources::addPackage); 0099 } 0100 0101 void PkInstallPlasmaResources::notFound() 0102 { 0103 QString msg = i18n("Failed to search for Plasma service"); 0104 if (showWarning()) { 0105 setInfo(msg, 0106 i18n("Could not find service " 0107 "in any configured software source")); 0108 } 0109 sendErrorFinished(NoPackagesFound, msg); 0110 } 0111 0112 #include "moc_PkInstallPlasmaResources.cpp"