DBLSQD Qt SDK
update_dialog.h
1 #ifndef DBLSQD_UPDATE_DIALOG_H
2 #define DBLSQD_UPDATE_DIALOG_H
3 
4 #include "dblsqd/feed.h"
5 #include "ui_update_dialog.h"
6 #include <QSettings>
7 #include <QTemporaryFile>
8 #include <QFile>
9 #include <QMessageBox>
10 #include <QDesktopServices>
11 
12 namespace dblsqd {
13 
14 class UpdateDialog : public QDialog
15 {
16  Q_OBJECT
17 
18 public:
19  enum Type {OnUpdateAvailable, OnLastWindowClosed, Manual, ManualChangelog};
20  explicit UpdateDialog(Feed* feed, int = OnUpdateAvailable, QWidget* parent = 0, QSettings* settings = new QSettings());
21  ~UpdateDialog();
22 
23  void setIcon(QString fileName);
24  void setIcon(QPixmap pixmap);
25  void addInstallButton(QAbstractButton* button);
26 
27  void setMinVersion(QString version);
28  void setMaxVersion(QString version);
29  void setPreviousVersion(QString version);
30 
31  static bool autoDownloadEnabled(QVariant defaultValue, QSettings* settings = new QSettings);
32  static bool autoDownloadEnabled(QSettings *settings = new QSettings());
33  static void enableAutoDownload(bool enabled, QSettings* settings = new QSettings);
34 
35  void setOpenExternalLinks(bool open);
36  bool openExternalLinks();
37 
38 signals:
39  void ready();
40  void installButtonClicked(QAbstractButton* button, QString filePath);
41  void linkActivated(QString link);
42 
43 public slots:
44  void onButtonInstall();
45  void onButtonCustomInstall();
46  void skip();
49 
50 private:
51  Ui::UpdateDialog* ui;
52  Feed* feed;
53  int type;
54 
55  QSettings* settings;
56  void replaceAppVars(QString& string);
57  QString generateChangelogDocument();
58 
59  void disableButtons(bool disable = true);
60  void resetUi();
61  void setupLoadingUi();
62  void setupUpdateUi();
63  void setupChangelogUi();
64  void setupNoUpdatesUi();
65  void adjustDialogSize();
66 
67  void startDownload();
68  virtual void startUpdate();
69 
70  bool accepted;
71  bool isDownloadFinished;
72  QString updateFilePath;
73  QList<Release> releases;
74  QList<Release> updates;
75  Release latestRelease;
76  QList<QAbstractButton*> installButtons;
77  QAbstractButton* acceptedInstallButton;
78  bool _openExternalLinks;
79  QString _minVersion;
80  QString _maxVersion;
81  QString _previousVersion;
82 
83  static void setSettingsValue(QString key, QVariant value, QSettings* settings = new QSettings());
84  static QVariant settingsValue(QString key, QVariant defaultValue = QVariant(), QSettings* settings = new QSettings());
85  static void removeSetting(QString key, QSettings* settings = new QSettings());
86  static void setDefaultSettingsValue(QString key, QVariant value, QSettings* settings = new QSettings());
87 
88 private slots:
89  void handleFeedReady();
90  void handleDownloadFinished();
91  void handleDownloadError(QString);
92  void updateProgressBar(qint64, qint64);
93  void autoDownloadCheckboxToggled(bool enabled = true);
94  void onLinkActivated(QString link);
95 };
96 
97 } //namespace dblsqd
98 
99 #endif // DBLSQD_UPDATE_DIALOG_H
Type
This flag determines the if and when the UpdateDialog is displayed automatically. ...
Definition: update_dialog.h:19
A dialog class for displaying and downloading update information.
Definition: update_dialog.h:14
The Feed class provides methods for accessing DBLSQD Feeds and downloading Releases.
Definition: feed.h:10
void addInstallButton(QAbstractButton *button)
Adds a custom button for handling update installation.
Definition: update_dialog.cpp:175
void skip()
Skips the latest retrieved Release.
Definition: update_dialog.cpp:245
void showIfUpdatesAvailableOrQuit()
Shows the dialog if there are updates available or quits the application.
Definition: update_dialog.cpp:269
Definition: ui_update_dialog.h:311
bool openExternalLinks()
Definition: update_dialog.cpp:193
void onButtonInstall()
Default handler for the install button.
Definition: update_dialog.cpp:215
void setPreviousVersion(QString version)
Convenience method for setting minimum and maximum version to be displayed in the changelog...
Definition: update_dialog.cpp:160
void showIfUpdatesAvailable()
Shows the dialog if there are available updates.
Definition: update_dialog.cpp:258
static bool autoDownloadEnabled(QVariant defaultValue, QSettings *settings=new QSettings)
Returns true if automatic downloads are enabled.
Definition: update_dialog.cpp:317
static void enableAutoDownload(bool enabled, QSettings *settings=new QSettings)
Enables or disables automatic downloads.
Definition: update_dialog.cpp:308
Definition: feed.cpp:3
void setMinVersion(QString version)
Sets the minimum version to be displayed in the changelog. Defaults to QApplication::applicationVersi...
Definition: update_dialog.cpp:141
void setOpenExternalLinks(bool open)
Definition: update_dialog.cpp:200
void setMaxVersion(QString version)
Sets the maximum version to be displayed in the changelog.
Definition: update_dialog.cpp:150
This class is used to represent information about a single Release from a Feed.
Definition: release.h:10
UpdateDialog(Feed *feed, int=OnUpdateAvailable, QWidget *parent=0, QSettings *settings=new QSettings())
Constructs a new UpdateDialog.
Definition: update_dialog.cpp:63