warn about system upgrade, minor fixes, code cleanup
[fapman] / packageselector.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 PACKAGESELECTOR_H
21 #define PACKAGESELECTOR_H
22
23 #include <QDialog>
24 #include <QtNetwork>
25 #include "package.h"
26
27 namespace Ui {
28     class PackageSelector;
29 }
30
31 class AAptInterface;
32 class Settings;
33
34 class PackageSelector : public QDialog
35 {
36     Q_OBJECT
37
38 public:
39         explicit PackageSelector(Package* pkg, AAptInterface* apt, Settings* set, QWidget *parent);
40     ~PackageSelector();
41
42 #ifdef Q_WS_MAEMO_5             // workaround for buggy Qt autorotation
43         int exec() {
44                 QRect r = dynamic_cast<QWidget*>(this->parent())->rect();
45                 if(r.width() < r.height())
46                         this->setAttribute(Qt::WA_Maemo5PortraitOrientation);
47                 int e = QDialog::exec();
48                 this->setAttribute(Qt::WA_Maemo5AutoOrientation);
49                 return e;
50         }
51 #endif
52
53         Package::operation selectedOperation();
54
55 protected:
56     void changeEvent(QEvent *e);
57
58 private:
59         QString getMaemoOrgUrl(Package* pkg);
60         void updateInfo();
61         void queryChangelog();
62         QString parseChangeTable(QString tabledata);
63
64     Ui::PackageSelector *ui;
65         Package* iPkg;
66         AAptInterface* iAptInterface;
67         Settings* iSettings;
68         QNetworkAccessManager* iNetworkAccessManager;
69         bool iChangelogFetched;
70         bool iFetchInProgress;
71         QString iChangelog;
72
73 private slots:
74         void on_radioTabDepends_clicked();
75         void on_radioTabChanges_clicked();
76         void on_radioTabBasic_clicked();
77         void on_pushButton_website_clicked();
78         void on_pushButton_blacklist_clicked();
79
80         void changelogFetchNetworkReply(QNetworkReply* reply);
81 };
82
83 #endif // PACKAGESELECTOR_H