1 /*
2 * This file is part of OctoPkg, an open-source GUI for pkgng.
3 * Copyright (C) 2015 Alexandre Albuquerque Arnt
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 *
19 */
20 
21 #include "globals.h"
22 #include "mainwindow.h"
23 
24 #include <QFutureWatcher>
25 #include <QtConcurrent/QtConcurrentMap>
26 
27 /*
28  * Given a packageName, returns its description
29  */
showPackageDescription(QString pkgName)30 QString showPackageDescription(QString pkgName)
31 {
32   MainWindow *mw = MainWindow::returnMainWindow();
33   const PackageRepository::PackageData*const package = mw->getFirstPackageFromRepo(pkgName);
34 
35   if (package == NULL) {
36     return "";
37   }
38 
39   QString description = package->comment.trimmed();
40 
41   if (description.isEmpty())
42   {
43     return "";
44   }
45 
46   int space = description.indexOf(" ");
47   QString desc = description.mid(space+1).trimmed();
48   int size = desc.size();
49 
50   if (desc.size() > 120)
51   {
52     desc.chop(size - 120);
53     desc = desc + " ...";
54   }
55 
56   return desc;
57 }
58 
59 /*
60  * Starts the non blocking search for Pacman packages...
61  */
searchPkgPackages()62 QList<PackageListData> * searchPkgPackages()
63 {
64   return Package::getPackageList("");
65 }
66 
67 /*
68  * Starts the non blocking search for Locked Pkg packages...
69  */
searchLockedPkgPackages()70 QSet<QString> *searchLockedPkgPackages()
71 {
72   return Package::getLockedPackageList();
73 }
74 
75 /*
76  * Starts the non blocking search for Unrequired Pacman packages...
77  */
searchUnrequiredPacmanPackages()78 QSet<QString> *searchUnrequiredPacmanPackages()
79 {
80   return Package::getUnrequiredPackageList();
81 }
82 
83 /*
84  * Starts the non blocking search for a Pacman package that owns the given file...
85  */
searchPacmanPackagesByFile(const QString & file)86 QString searchPacmanPackagesByFile(const QString &file)
87 {
88   QString result;
89 
90   if (!file.isEmpty())
91   {
92     result = UnixCommand::getPackageByFilePath(file);
93   }
94   else
95     result = "";
96 
97   return result;
98 }
99 
100 /*
101  * Starts the non blocking search for Pacman packages...
102  */
searchPacmanPackagesFromGroup(QString groupName)103 GroupMemberPair searchPacmanPackagesFromGroup(QString groupName)
104 {
105   return std::make_pair(groupName, Package::getPackagesOfGroup(groupName));
106 }
107 
108 /*
109  * Starts the non blocking search for AUR packages...
110  */
searchRemotePackages(QString searchString)111 QList<PackageListData> * searchRemotePackages(QString searchString)
112 {
113   return Package::getRemotePackageList(searchString);
114 }
115 
116 /*
117  * Starts the non blocking search for RSS distro news...
118  */
getLatestDistroNews()119 QString getLatestDistroNews()
120 {
121   return utils::retrieveDistroNews(true);
122 }
123 
124 /*
125  * Starts the non blocking search for outdated pkgs
126  */
getOutdatedList()127 QMap<QString, OutdatedPackageInfo> *getOutdatedList()
128 {
129   return Package::getOutdatedStringList();
130 }
131 
132 /*
133  * Starts the non blocking 'pkg upgrade -n'
134  */
getTargetUpgradeList(const QString & pkgName)135 TransactionInfo getTargetUpgradeList(const QString& pkgName)
136 {
137   return Package::getTargetUpgradeList(pkgName);
138 }
139