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