warn about system upgrade, minor fixes, code cleanup
[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         inline void setPinned(bool p_) { iPinned=p_; }
65
66         void convertIcon();
67
68         inline QString name() { return iName; }
69         inline QString maemoDisplayName() { return QString::fromUtf8(iMaemoDisplayName); }
70         QString displayName();
71         inline bool isInstalled() { return iIsInstalled; }
72         inline bool isMarkedForOperation() { return iMarkedForOperation; }
73         inline operation markedOperation() { return iMarkedOperation; }
74         inline QString version() { return iVersion; }
75         inline QString descShort() { return QString::fromUtf8(iDescriptionShort); }
76         inline QString descLong() { return QString::fromUtf8(iDescriptionLong); }
77         inline QString section() { return iSection; }
78         inline int size() { return iSize; }
79         inline int installedSize() { return iInstalledSize; }
80         inline QPixmap* icon() { return iIcon; }
81         bool hasIconData();
82         bool isUpgradeable();
83         QString upgradeableVersion();
84         Package* availablePackage();
85         packageStatus status();
86         QString fileName();
87         inline QStringList fullFileNames() { return iFullFileNames; }
88         inline QDateTime date() { return iDate; }
89         inline QList<Repository*> repositories() { return iRepositories; }
90         inline BlacklistSelect::blackList blacklisted() { return iBlacklist; }
91         inline bool isBlacklisted() { if(iBlacklist==BlacklistSelect::BlacklistNone) return false; else return true; }
92         inline QString upgradeDescription() { return QString::fromUtf8(iUpgradeDescription); }
93         inline QList<QByteArray> depends() { return iDepends; }
94         inline QList<QByteArray> conflicts() { return iConflicts; }
95         inline QList<QByteArray> preDepends() { return iPreDepends; }
96         inline QList<QByteArray> provides() { return iProvides; }
97         inline QList<QByteArray> replaces() { return iReplaces; }
98         inline QList<QByteArray> breaks() { return iBreaks; }
99         inline QList<QByteArray> recommends() { return iRecommends; }
100         inline QList<QByteArray> suggests() { return iSuggests; }
101         inline bool isPinned() { return iPinned; }
102
103         QStringList checkConflicts_RichText();
104
105         static bool versionCompare(QString isNewer, QString compare);
106         static QStringList toTrimmedRichTextList(QList<QByteArray> list_in);
107
108 private:
109
110         static bool versionConflicts(QString conflictVer, QString operVer);
111
112         AAptInterface* iAptInterface;
113
114         QByteArray iName;
115         QByteArray iMaemoDisplayName;
116         bool iIsInstalled;
117         bool iMarkedForOperation;
118         packageStatus iPkgStatus;
119         QByteArray iVersion;
120         QByteArray iDescriptionShort;
121         QByteArray iDescriptionLong;
122         QByteArray iSection;
123         int iSize;
124         int iInstalledSize;
125         operation iMarkedOperation;
126         QStringList iFullFileNames;
127         QDateTime iDate;
128         QList<Repository*> iRepositories;
129         BlacklistSelect::blackList iBlacklist;
130         QByteArray iUpgradeDescription;
131
132         QByteArray iIconData;
133         QPixmap* iIcon;
134
135         QList<QByteArray> iDepends;
136         QList<QByteArray> iConflicts;
137         QList<QByteArray> iPreDepends;
138         QList<QByteArray> iProvides;
139         QList<QByteArray> iReplaces;
140         QList<QByteArray> iBreaks;
141         QList<QByteArray> iRecommends;
142         QList<QByteArray> iSuggests;
143
144         bool iPinned;
145 };
146
147 #endif // PACKAGE_H