0.7.1
[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         explicit Package(QByteArray name_, AAptInterface* apt_);
38         virtual ~Package();
39
40         inline void setName(QByteArray n_) { iName=n_; }
41         inline void setMaemoDisplayName(QByteArray n_) { iMaemoDisplayName=n_; }
42         inline void setInstalled(bool i_) { iIsInstalled=i_; }
43         void setMarkedForOperation(operation op_);
44         inline void setVersion(QByteArray v_) { iVersion=v_; }
45         inline void setDescShort(QByteArray d_) { iDescriptionShort=d_; }
46         inline void appendDescLong(QByteArray d_) { iDescriptionLong.append(d_); }
47         inline void setSection(QByteArray s_) { iSection=s_; }
48         inline void setSize(int i_) { iSize=i_; }
49         inline void setInstalledSize(int i_) { iInstalledSize=i_; }
50         inline void appendIconData(QByteArray d_) { iIconData.append(d_); }
51         inline void addFullFileName(QString f_) { iFullFileNames.append(f_); }
52         void updateStatus();
53         inline void addRepository(Repository* r_) { iRepositories.append(r_); }
54         inline void setDate(QDateTime d_) { iDate=d_; }
55         inline void setBlacklisted(BlacklistSelect::blackList bl_) { iBlacklist=bl_; }
56         inline void appendDepends(QByteArray line_) { iDepends << line_.split(','); }
57         inline void appendConflicts(QByteArray line_) { iConflicts << line_.split(','); }
58         inline void appendPreDepends(QByteArray line_) { iPreDepends << line_.split(','); }
59         inline void appendProvides(QByteArray line_) { iProvides << line_.split(','); }
60         inline void appendReplaces(QByteArray line_) { iReplaces << line_.split(','); }
61         inline void appendBreaks(QByteArray line_) { iBreaks << line_.split(','); }
62         inline void appendRecommends(QByteArray line_) { iRecommends << line_.split(','); }
63         inline void appendSuggests(QByteArray line_) { iSuggests << line_.split(','); }
64         inline void appendUpgradeDescription(QByteArray d_) { iUpgradeDescription.append(d_); }
65         inline void setPinned(bool p_) { iPinned=p_; }
66         inline void setMaintainer(QByteArray m_) { iMaintainer = m_; }
67
68         void convertIcon();
69
70         inline QString name() const { return iName; }
71         inline QString maemoDisplayName() const { return QString::fromUtf8(iMaemoDisplayName); }
72         QString displayName() const;
73         inline bool isInstalled() const { return iIsInstalled; }
74         inline bool isMarkedForOperation() const { return iMarkedForOperation; }
75         inline operation markedOperation() const { return iMarkedOperation; }
76         inline QString version() const { return iVersion; }
77         inline QString descShort() const { return QString::fromUtf8(iDescriptionShort); }
78         inline QString descLong() const { return QString::fromUtf8(iDescriptionLong); }
79         inline QString section() const { return iSection; }
80         inline int size() const { return iSize; }
81         inline int installedSize() const { return iInstalledSize; }
82         inline QPixmap* icon() const { return iIcon; }
83         bool hasIconData() const;
84         bool isUpgradeable() const;
85         QString upgradeableVersion() const;
86         Package* availablePackage() const;
87         packageStatus status();
88         QString fileName() const;
89         inline QStringList fullFileNames() const { return iFullFileNames; }
90         inline QDateTime date() const { return iDate; }
91         inline QList<const Repository*> repositories() const { return iRepositories; }
92         inline BlacklistSelect::blackList blacklisted() const { return iBlacklist; }
93         inline bool isBlacklisted() const { if(iBlacklist==BlacklistSelect::BlacklistNone) return false; else return true; }
94         inline QString upgradeDescription() const { return QString::fromUtf8(iUpgradeDescription); }
95         inline QList<QByteArray> depends() const { return iDepends; }
96         inline QList<QByteArray> conflicts() const { return iConflicts; }
97         inline QList<QByteArray> preDepends() const { return iPreDepends; }
98         inline QList<QByteArray> provides() const { return iProvides; }
99         inline QList<QByteArray> replaces() const { return iReplaces; }
100         inline QList<QByteArray> breaks() const { return iBreaks; }
101         inline QList<QByteArray> recommends() const { return iRecommends; }
102         inline QList<QByteArray> suggests() const { return iSuggests; }
103         inline bool isPinned() const { return iPinned; }
104         QString maintainerRichText() const;
105
106         QStringList checkConflicts_RichText() const;
107
108         static bool versionCompare(QString isNewer, QString compare);
109         static QStringList toTrimmedRichTextList(QList<QByteArray> list_in);
110
111 private:
112         Package(const Package& old);
113         Package operator= (const Package& old);
114
115         static bool versionConflicts(QString conflictVer, QString operVer);
116
117         AAptInterface* iAptInterface;
118
119         QByteArray iName;
120         QByteArray iMaemoDisplayName;
121         bool iIsInstalled;
122         bool iMarkedForOperation;
123         packageStatus iPkgStatus;
124         QByteArray iVersion;
125         QByteArray iDescriptionShort;
126         QByteArray iDescriptionLong;
127         QByteArray iSection;
128         int iSize;
129         int iInstalledSize;
130         operation iMarkedOperation;
131         QStringList iFullFileNames;
132         QDateTime iDate;
133         QList<const Repository*> iRepositories;
134         BlacklistSelect::blackList iBlacklist;
135         QByteArray iUpgradeDescription;
136         QByteArray iMaintainer;
137
138         QByteArray iIconData;
139         QPixmap* iIcon;
140
141         QList<QByteArray> iDepends;
142         QList<QByteArray> iConflicts;
143         QList<QByteArray> iPreDepends;
144         QList<QByteArray> iProvides;
145         QList<QByteArray> iReplaces;
146         QList<QByteArray> iBreaks;
147         QList<QByteArray> iRecommends;
148         QList<QByteArray> iSuggests;
149
150         bool iPinned;
151 };
152
153 #endif // PACKAGE_H