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
20 #ifndef AAPTINTERFACE_H
21 #define AAPTINTERFACE_H
25 #include "blacklistselect.h"
28 const QString KFapmanDir = "/root/.fapman";
29 const QString KLogFile = "/root/.fapman/lastlog.txt";
30 const QString KBlacklistFile = "/root/.fapman/black.list";
31 const QString KOwnRepoFile = "/root/.fapman/repos.list";
32 const QString KOwnRepoNamesFile = "/root/.fapman/repos.names";
34 const QString KHamRepoListFile = "/etc/apt/sources.list.d/hildon-application-manager.list";
36 const QString KLastUpdateFile = "/opt/fapman-cache/lastupdate";
37 const QString KDateCacheFile = "/opt/fapman-cache/dates.cache";
38 const QString KAptSourceList = "/opt/fapman-cache/sources.list";
39 const QString KAptListDir = "/opt/fapman-cache/lists";
40 const QString KAptArchivePartialDir = "/var/cache/apt/archives/partial";
42 const QString KDpkgStatusFile = "/var/lib/dpkg/status";
43 const QString KDpkgInfoDir = "/var/lib/dpkg/info";
48 class DateFetchThread;
55 class AAptInterface : public QObject
60 enum interfaceMode { ModeNone, ModeReadPackages, ModeFetchDates, ModeAptGetUpdate,
61 ModeAptGetSimulate, ModeAptGetInstall, ModeAptGetClean };
62 enum multiLine { MultiLineNone, MultiLineDesc, MultiLineIcon, MultiLineUpgradeDesc };
64 AAptInterface(QObject* parent);
66 void setSettings(Settings* s_) { iSettings = s_; }
68 void addQueuedOperation(interfaceMode mode_);
69 bool run(dimmer* uiDimmer);
70 void setProcessPackages(QStringList pkgs) { iProcessPackages=pkgs; iProcessPackagesOrig=pkgs; }
71 QStringList processPackages() { return iProcessPackages; }
72 QStringList processPackageVersions() { return iProcessPackageVersions; }
77 int numSelectedPackages() { return iNumSelectedPackages; }
78 void setNumSelectedPackages(int p_) { iNumSelectedPackages=p_; }
80 QHash<QString, Package*>* packagesAvailable() { return &iPackagesAvailable; }
81 QHash<QString, Package*>* packagesInstalled() { return &iPackagesInstalled; }
82 QList<Repository*>* repositories() { return &iRepositories; }
84 QByteArray readLogFile();
85 void readRepositoryInfo();
86 bool writeRepositories();
87 bool needRepoRefresh();
88 void removeFromBlacklist(Package* pkg, BlacklistSelect::blackList oldstate);
89 void writeBlacklist();
91 bool dateCacheExists();
93 void setNeedRefresh(int repos, int lists, int dpkg, int dates);
94 void setSkipListAndDates() { iSkipRefreshListAndDates=true; }
95 bool needListOrDateRefresh();
97 bool loadInstallFiles(QStringList files_);
101 void cleanAfterRunEach();
102 void cleanAfterRunAll();
103 void cleanAfterError();
105 bool startAptGetUpdate();
106 bool startAptGetSimulate();
107 bool startAptGetInstall();
108 bool startAptGetClean();
110 QString setQProcessErrorMessage(QProcess::ProcessError error);
111 QString finishProcessCommonErrorMessages(QByteArray& output);
113 void communicateStatusToUi(bool success, QString title="", QString msg="");
114 void logToFile( QString data, bool logtime=true );
115 void logToFile( QByteArray data, bool logtime=true );
117 void startPkgListRead();
118 void startFetchDates();
120 Package* ReadNextPackage(QFile& f, quint64& currentreaddata);
121 bool processPackageDataLine(Package*& pkg, QByteArray& line);
123 void readBlacklist();
124 void writeDateCache();
125 void readDateCache();
128 void errorAptGetUpdate(QProcess::ProcessError error);
129 void errorAptGetSimulate(QProcess::ProcessError error);
130 void errorAptGetInstall(QProcess::ProcessError error);
131 void errorAptGetClean(QProcess::ProcessError error);
133 void finishedAptGetUpdate(int exitCode, QProcess::ExitStatus exitStatus);
134 void finishedAptGetSimulate(int exitCode, QProcess::ExitStatus exitStatus);
135 void finishedAptGetInstall(int exitCode, QProcess::ExitStatus exitStatus);
136 void finishedAptGetClean(int exitCode, QProcess::ExitStatus exitStatus);
138 void uiUpdaterAptGetUpdate();
139 void uiUpdaterAptGetInstall();
140 void progressCheckTimerCallback();
142 void dateFetchNetworkReply(QNetworkReply* reply);
145 QHash<QString, Package*> iPackagesAvailable;
146 QHash<QString, Package*> iPackagesInstalled;
147 int iNumSelectedPackages;
149 QStringList iProcessPackages;
150 QStringList iProcessPackagesOrig;
151 QStringList iProcessPackageVersions;
152 QList<interfaceMode> iOperationsQueue;
153 QList<Repository*> iRepositories;
154 QStringList iQueueMessages;
156 MainWindow* iMainWindow;
159 QList<interfaceMode> iModeLog;
164 bool iNeedRepoRefresh;
165 bool iNeedListRefresh;
166 bool iNeedDpkgRefresh;
167 bool iNeedDateRefresh;
168 bool iSkipRefreshListAndDates;
170 QProcess* iProcAptGetUpdate;
171 QProcess* iProcAptGetSimulate;
172 QProcess* iProcAptGetInstall;
173 QProcess* iProcAptGetClean;
174 QByteArray iProcAptGetUpdateOutput;
175 QByteArray iProcAptGetInstallOutput;
177 int iAptGetDownloadCount;
178 int iAptGetInstallCount;
179 int iAptGetRemoveCount;
180 int iAptGetInstallTotal;
181 int iAptGetRemoveTotal;
182 qint64 iAptGetCurrentFileDownloadSize;
183 qint64 iAptGetCurrentFileTotalSize;
184 QString iAptGetCurrentDownloadFileName;
185 QTimer* iProgressCheckTimer;
193 QStringList iBlacklist;
195 multiLine iMultiLine;
197 int iDateRequestsWaiting;
198 int iDateRequestsSent;
199 int iDateRequestsReceived;
200 int iDateRequestErrors;
201 QNetworkReply::NetworkError iNetworkError;
205 #endif // AAPTINTERFACE_H