File indexing completed on 2024-03-24 17:22:08
0001 /*************************************************************************** 0002 * Copyright (C) 2009-2011 by Daniel Nicoletti * 0003 * dantti12@gmail.com * 0004 * * 0005 * This program is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; see the file COPYING. If not, write to * 0017 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * 0018 * Boston, MA 02110-1301, USA. * 0019 ***************************************************************************/ 0020 0021 #include "PkInstallMimeTypes.h" 0022 #include "IntroDialog.h" 0023 #include "FilesModel.h" 0024 0025 #include <Daemon> 0026 0027 #include <PkStrings.h> 0028 0029 #include <KLocalizedString> 0030 0031 #include <QLoggingCategory> 0032 0033 PkInstallMimeTypes::PkInstallMimeTypes(uint xid, 0034 const QStringList &mime_types, 0035 const QString &interaction, 0036 const QDBusMessage &message, 0037 QWidget *parent) 0038 : SessionTask(xid, interaction, message, parent), 0039 m_mimeTypes(mime_types) 0040 { 0041 setWindowTitle(i18n("Install Support for File Types")); 0042 0043 auto introDialog = new IntroDialog(this); 0044 m_model = new FilesModel(QStringList(), mime_types, this); 0045 introDialog->setModel(m_model); 0046 connect(introDialog, &IntroDialog::continueChanged, this, &PkInstallMimeTypes::enableButtonOk); 0047 setMainWidget(introDialog); 0048 0049 QString description; 0050 if (m_model->rowCount()) { 0051 description = i18np("Do you want to search for a program that can open this file type?", 0052 "Do you want to search for a program that can open these file types?", 0053 m_model->rowCount()); 0054 enableButtonOk(true); 0055 } else { 0056 description = i18n("No valid file types were provided"); 0057 } 0058 introDialog->setDescription(description); 0059 0060 QString title; 0061 // this will come from DBus interface 0062 if (parentTitle.isNull()) { 0063 title = i18np("A program is requiring support to open this kind of files", 0064 "A program is requiring support to open these kinds of files", 0065 m_model->rowCount()); 0066 } else { 0067 title = i18np("The application %2 is requiring support to open this kind of files", 0068 "The application %2 is requiring support to open these kinds of files", 0069 m_model->rowCount(), 0070 parentTitle); 0071 } 0072 setTitle(title); 0073 } 0074 0075 PkInstallMimeTypes::~PkInstallMimeTypes() 0076 { 0077 } 0078 0079 void PkInstallMimeTypes::search() 0080 { 0081 QStringList mimeTypes = m_model->files(); 0082 auto transaction = new PkTransaction(this); 0083 Transaction *t; 0084 t = Daemon::whatProvides(mimeTypes, 0085 Transaction::FilterNotInstalled | Transaction::FilterArch | Transaction::FilterNewest); 0086 transaction->setupTransaction(t); 0087 setTransaction(Transaction::RoleWhatProvides, transaction); 0088 connect(transaction, &PkTransaction::finished, this, &PkInstallMimeTypes::searchFinished, Qt::UniqueConnection); 0089 connect(transaction, &PkTransaction::package, this, &PkInstallMimeTypes::addPackage); 0090 } 0091 0092 void PkInstallMimeTypes::notFound() 0093 { 0094 QString msg = i18n("Could not find software"); 0095 if (showWarning()) { 0096 setInfo(msg, i18n("No new applications can be found " 0097 "to handle this type of file")); 0098 } 0099 sendErrorFinished(NoPackagesFound, QLatin1String("nothing was found to handle mime type")); 0100 } 0101 0102 //setTitle(i18np("Application that can open this type of file", 0103 // "Applications that can open this type of file", 0104 // m_foundPackages.size())); 0105 0106 #include "moc_PkInstallMimeTypes.cpp"