2 This file is part of Faster Application Manager.
4 Faster Application Manager is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 Faster Application Manager is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with Faster Application Manager. If not, see <http://www.gnu.org/licenses/>.
17 (C) Heikki Holstila 2010
22 #include "repository.h"
23 #include "aaptinterface.h"
24 #include "apt-src/debversion.h"
25 #include "blacklistselect.h"
27 Package::Package(QByteArray name_, AAptInterface *apt_)
32 iMarkedForOperation = false;
35 iMarkedOperation = PkgOpNone;
36 iPkgStatus = PkgStatUnknown;
38 iBlacklist = BlacklistSelect::BlacklistNone;
47 QString Package::displayName()
49 QString pkgname = name();
50 if( iMaemoDisplayName!="" )
51 pkgname = maemoDisplayName();
52 QString n( pkgname.at(0) );
54 pkgname.replace(0,1,n);
58 QString Package::fileName()
60 if( iFullFileNames.count()>0 ) {
61 return iFullFileNames.at(0).mid( iFullFileNames.at(0).lastIndexOf('/')+1 );
63 qDebug() << "Warning: package has no file name information";
64 return "unknown_filename";
68 void Package::setMarkedForOperation(operation op_)
70 if( iMarkedOperation != op_ ) {
71 if( op_==PkgOpNone ) {
73 iAptInterface->setNumSelectedPackages( iAptInterface->numSelectedPackages()-1 );
74 } else if( iMarkedOperation==PkgOpNone ) {
76 iAptInterface->setNumSelectedPackages( iAptInterface->numSelectedPackages()+1 );
80 iMarkedOperation = op_;
82 if( op_ == PkgOpNone )
83 iMarkedForOperation = false;
85 iMarkedForOperation = true;
88 void Package::convertIcon()
90 if( iIconData.length() > 0 && iIcon == 0 ) {
91 iIcon = new QPixmap();
92 iIconData = QByteArray::fromBase64( iIconData );
93 if( !iIcon->loadFromData( iIconData ) ) {
94 qDebug() << "Warning: Package" << iName << "has invalid icon data";
100 bool Package::isUpgradeable()
102 if( iSection=="user/hidden" )
107 QString newer = upgradeableVersion();
108 //qDebug() << newer << iVersion << versionCompare(newer,iVersion);
109 return versionCompare(newer,iVersion);
115 QString Package::upgradeableVersion()
118 if( isInstalled() ) {
119 Package* newer = iAptInterface->packagesAvailable()->value(iName,0);
121 ver = newer->version();
126 Package* Package::availablePackage()
131 Package* newer = iAptInterface->packagesAvailable()->value(iName,0);
136 void Package::updateStatus()
139 iPkgStatus = PkgStatInstalled;
140 if( isUpgradeable() )
141 iPkgStatus = PkgStatUpgradeable;
143 iPkgStatus = PkgStatNotInstalled;
147 Package::packageStatus Package::status()
149 updateStatus(); // not optimal, but it's here just in case
153 bool Package::hasIconData()
155 if( iIconData.length()>0 )
161 bool Package::versionCompare(QString isNewer, QString compare)
164 int res = debVS.CmpVersion(isNewer.toStdString(), compare.toStdString());
165 //qDebug() << isNewer << compare << res;
173 void Package::appendDepends(QByteArray line_)
175 iDepends << line_.split(',');
178 void Package::appendConflicts(QByteArray line_)
180 iConflicts << line_.split(',');
183 void Package::appendPreDepends(QByteArray line_)
185 iPreDepends << line_.split(',');
188 void Package::appendProvides(QByteArray line_)
190 iProvides << line_.split(',');
193 void Package::appendReplaces(QByteArray line_)
195 iReplaces << line_.split(',');
198 void Package::appendBreaks(QByteArray line_)
200 iBreaks << line_.split(',');
203 void Package::appendRecommends(QByteArray line_)
205 iRecommends << line_.split(',');
208 void Package::appendSuggests(QByteArray line_)
210 iSuggests << line_.split(',');
213 QStringList Package::dependsRichText()
216 //qDebug() << iDepends;
220 for(int i=0; i<iDepends.count(); i++)
222 QString s = iDepends.at(i).trimmed();
223 s.replace('<',"<");
224 s.replace('>',">");
231 QStringList Package::conflictsRichText()
235 for(int i=0; i<iConflicts.count(); i++)
237 QString s = iConflicts.at(i).trimmed();
238 s.replace('<',"<");
239 s.replace('>',">");
246 QStringList Package::preDependsRichText()
250 for(int i=0; i<iPreDepends.count(); i++)
252 QString s = iPreDepends.at(i).trimmed();
253 s.replace('<',"<");
254 s.replace('>',">");
261 QStringList Package::providesRichText()
265 for(int i=0; i<iProvides.count(); i++)
267 QString s = iProvides.at(i).trimmed();
268 s.replace('<',"<");
269 s.replace('>',">");
276 QStringList Package::replacesRichText()
280 for(int i=0; i<iReplaces.count(); i++)
282 QString s = iReplaces.at(i).trimmed();
283 s.replace('<',"<");
284 s.replace('>',">");
291 QStringList Package::breaksRichText()
295 for(int i=0; i<iBreaks.count(); i++)
297 QString s = iBreaks.at(i).trimmed();
298 s.replace('<',"<");
299 s.replace('>',">");
306 QStringList Package::recommendsRichText()
310 for(int i=0; i<iRecommends.count(); i++)
312 QString s = iRecommends.at(i).trimmed();
313 s.replace('<',"<");
314 s.replace('>',">");
321 QStringList Package::suggestsRichText()
325 for(int i=0; i<iSuggests.count(); i++)
327 QString s = iSuggests.at(i).trimmed();
328 s.replace('<',"<");
329 s.replace('>',">");