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
33 class PackageSelector : public QDialog
34 {
35     Q_OBJECT
36
37 public:
38         explicit PackageSelector(Package* pkg, AAptInterface* apt, QWidget *parent);
39     ~PackageSelector();
40
41 #ifdef Q_WS_MAEMO_5             // workaround for buggy Qt autorotation
42         int exec() {
43                 QRect r = dynamic_cast<QWidget*>(this->parent())->rect();
44                 if(r.width() < r.height())
45                         this->setAttribute(Qt::WA_Maemo5PortraitOrientation);
46                 int e = QDialog::exec();
47                 this->setAttribute(Qt::WA_Maemo5AutoOrientation);
48                 return e;
49         }
50 #endif
51
52         Package::operation selectedOperation();
53
54 protected:
55     void changeEvent(QEvent *e);
56
57 private:
58         QString getMaemoOrgUrl(Package* pkg);
59         void updateInfo();
60         void queryChangelog();
61         QString parseChangeTable(QString tabledata);
62
63     Ui::PackageSelector *ui;
64         Package* iPkg;
65         AAptInterface* iAptInterface;
66         QNetworkAccessManager* iNetworkAccessManager;
67         bool iChangelogFetched;
68         QString iChangelog;
69
70 private slots:
71         void on_radioTabDepends_clicked();
72         void on_radioTabChanges_clicked();
73         void on_radioTabBasic_clicked();
74         void on_pushButton_website_clicked();
75         void on_pushButton_blacklist_clicked();
76
77         void changelogFetchNetworkReply(QNetworkReply* reply);
78 };
79
80 #endif // PACKAGESELECTOR_H