fa0eafbb0669cd36cfd8a3d813b747fe61345b3f
[fapman] / package.h
1 /*
2         This file is part of Faster Application Manager.
3
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.
8
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.
13
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/>.
16
17         (C) Heikki Holstila 2010
18 */
19
20 #ifndef PACKAGE_H
21 #define PACKAGE_H
22
23 #include <QtCore>
24 #include "blacklistselect.h"
25
26 class AAptInterface;
27 class Repository;
28
29 class Package
30 {
31 public:
32         enum operation { PkgOpNone, PkgOpInstallUpgrade, PkgOpRemove };
33
34         // the order must match status filter strings
35         enum packageStatus { PkgStatUnknown, PkgStatNotInstalled, PkgStatUpgradeable, PkgStatInstalled };
36
37         Package(QByteArray name_, AAptInterface* apt_);
38         ~Package();
39         inline void setName(QByteArray n_) { iName=n_; }
40         inline void setMaemoDisplayName(QByteArray n_) { iMaemoDisplayName=n_; }
41         inline void setInstalled(bool i_) { iIsInstalled=i_; }
42         void setMarkedForOperation(operation op_);
43         inline void setVersion(QByteArray v_) { iVersion=v_; }
44         inline void setDescShort(QByteArray d_) { iDescriptionShort=d_; }
45         inline void appendDescLong(QByteArray d_) { iDescriptionLong.append(d_); }
46         inline void setSection(QByteArray s_) { iSection=s_; }
47         inline void setSize(int i_) { iSize=i_; }
48         inline void setInstalledSize(int i_) { iInstalledSize=i_; }
49         inline void appendIconData(QByteArray d_) { iIconData.append(d_); }
50         inline void addFullFileName(QString f_) { iFullFileNames.append(f_); }
51         void updateStatus();
52         inline void addRepository(Repository* r_) { iRepositories.append(r_); }
53         inline void setDate(QDateTime d_) { iDate=d_; }
54         inline void setBlacklisted(BlacklistSelect::blackList bl_) { iBlacklist=bl_; }
55         inline void appendDepends(QByteArray line_) { iDepends << line_.split(','); }
56         inline void appendConflicts(QByteArray line_) { iConflicts << line_.split(','); }
57         inline void appendPreDepends(QByteArray line_) { iPreDepends << line_.split(','); }
58         inline void appendProvides(QByteArray line_) { iProvides << line_.split(','); }
59         inline void appendReplaces(QByteArray line_) { iReplaces << line_.split(','); }
60         inline void appendBreaks(QByteArray line_) { iBreaks << line_.split(','); }
61         inline void appendRecommends(QByteArray line_) { iRecommends << line_.split(','); }
62         inline void appendSuggests(QByteArray line_) { iSuggests << line_.split(','); }
63         inline void appendUpgradeDescription(QByteArray d_) { iUpgradeDescription.append(d_); }
64
65         void convertIcon();
66
67         inline QString name() { return iName; }
68         inline QString maemoDisplayName() { return QString::fromUtf8(iMaemoDisplayName); }
69         QString displayName();
70         inline bool isInstalled() { return iIsInstalled; }
71         inline bool isMarkedForOperation() { return iMarkedForOperation; }
72         inline operation markedOperation() { return iMarkedOperation; }
73         inline QString version() { return iVersion; }
74         inline QString descShort() { return QString::fromUtf8(iDescriptionShort); }
75         inline QString descLong() { return QString::fromUtf8(iDescriptionLong); }
76         inline QString section() { return iSection; }
77         inline int size() { return iSize; }
78         inline int installedSize() { return iInstalledSize; }
79         inline QPixmap* icon() { return iIcon; }
80         bool hasIconData();
81         bool isUpgradeable();
82         QString upgradeableVersion();
83         Package* availablePackage();
84         packageStatus status();
85         QString fileName();
86         inline QStringList fullFileNames() { return iFullFileNames; }
87         inline QDateTime date() { return iDate; }
88         inline QList<Repository*> repositories() { return iRepositories; }
89         inline BlacklistSelect::blackList blacklisted() { return iBlacklist; }
90         inline bool isBlacklisted() { if(iBlacklist==BlacklistSelect::BlacklistNone) return false; else return true; }
91         inline QString upgradeDescription() { return QString::fromUtf8(iUpgradeDescription); }
92         inline QList<QByteArray> depends() { return iDepends; }
93         inline QList<QByteArray> conflicts() { return iConflicts; }
94         inline QList<QByteArray> preDepends() { return iPreDepends; }
95         inline QList<QByteArray> provides() { return iProvides; }
96         inline QList<QByteArray> replaces() { return iReplaces; }
97         inline QList<QByteArray> breaks() { return iBreaks; }
98         inline QList<QByteArray> recommends() { return iRecommends; }
99         inline QList<QByteArray> suggests() { return iSuggests; }
100
101         QStringList checkConflicts_RichText();
102
103         static bool versionCompare(QString isNewer, QString compare);
104         static QStringList toTrimmedRichTextList(QList<QByteArray> list_in);
105
106 private:
107
108         static bool versionConflicts(QString conflictVer, QString operVer);
109
110         AAptInterface* iAptInterface;
111
112         QByteArray iName;
113         QByteArray iMaemoDisplayName;
114         bool iIsInstalled;
115         bool iMarkedForOperation;
116         packageStatus iPkgStatus;
117         QByteArray iVersion;
118         QByteArray iDescriptionShort;
119         QByteArray iDescriptionLong;
120         QByteArray iSection;
121         int iSize;
122         int iInstalledSize;
123         operation iMarkedOperation;
124         QStringList iFullFileNames;
125         QDateTime iDate;
126         QList<Repository*> iRepositories;
127         BlacklistSelect::blackList iBlacklist;
128         QByteArray iUpgradeDescription;
129
130         QByteArray iIconData;
131         QPixmap* iIcon;
132
133         QList<QByteArray> iDepends;
134         QList<QByteArray> iConflicts;
135         QList<QByteArray> iPreDepends;
136         QList<QByteArray> iProvides;
137         QList<QByteArray> iReplaces;
138         QList<QByteArray> iBreaks;
139         QList<QByteArray> iRecommends;
140         QList<QByteArray> iSuggests;
141 };
142
143 #endif // PACKAGE_H