QSimpleUpdater/Example/example.cpp
2014-11-06 19:24:38 -06:00

114 lines
4.5 KiB
C++

#include "example.h"
#include "ui_example.h"
int main (int argc, char *argv[]) {
QApplication app(argc, argv);
// Create the dialog and show it
Example example;
example.show();
// Run the app
return app.exec();
}
Example::Example (QWidget *parent) : QDialog(parent), ui(new Ui::Example) {
// Create and configure the user interface
ui->setupUi(this);
ui->versionLineEdit->setText("0.1");
ui->versionLineEdit->setPlaceholderText("0.1");
ui->changelogTextEdit->setPlainText("Click the \"Check for updates\" button to download the change log");
// Close the dialog when the close button is clicked
connect (ui->closeButton, SIGNAL(clicked()), this, SLOT(close()));
// Check for updates when the updates button is clicked
connect (ui->updatesButton, SIGNAL(clicked()), this, SLOT(checkForUpdates()));
// Initialize the updater
updater = new QSimpleUpdater(this);
// When the updater finishes checking for updates, show a message box
// and show the change log of the latest version
connect (updater, SIGNAL(checkingFinished()), this, SLOT(onCheckingFinished()));
}
Example::~Example() {
delete ui;
}
void Example::checkForUpdates() {
// Disable the check for updates button while the updater
// is checking for updates
ui->updatesButton->setEnabled(false);
ui->updatesButton->setText("Checking for updates...");
// If the user changed the text of the versionLineEdit, then change the
// application version in the updater too
if (!ui->versionLineEdit->text().isEmpty()) {
updater->setApplicationVersion(ui->versionLineEdit->text());
}
// If the versionLineEdit is empty, then set the application version
// to "0.1"
else {
updater->setApplicationVersion("0.1");
}
// Tell the updater where we should download the changelog, note that
// the changelog can be any file you want,
// such as an HTML page or (as in this example), a text file
updater->setChangelogUrl("https://raw.githubusercontent.com/alex-97/"
"QSimpleUpdater/Files-for-example-project/changelog.txt");
// Tell the updater where we can find the file that tells us the latest version
// of the application
updater->setReferenceUrl("https://raw.githubusercontent.com/alex-97/"
"QSimpleUpdater/Files-for-example-project/current_version.txt");
// Tell the updater where to download the update, its recommended to use direct links
updater->setDownloadUrl("https://github.com/alex-97/QSimpleUpdater/archive/master.zip");
// Finally, check for updates...
updater->checkForUpdates();
}
void Example::onCheckingFinished() {
// Enable the updatesButton and change its text to let the user know
// that he/she can check for updates again
ui->updatesButton->setEnabled(true);
ui->updatesButton->setText("Check for updates");
// There's a newer version of the application available, so we inform
// the user that there's a newer version available and we replace the text
// of the changelog text edit with the downloaded change log
if (updater->newerVersionAvailable()) {
ui->changelogTextEdit->setPlainText(updater->changeLog());
// Create and configure a message box
QMessageBox _messagebox;
_messagebox.setIcon(QMessageBox::Information);
_messagebox.setWindowTitle(tr("Update available"));
_messagebox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
_messagebox.setText(tr("There's an update available!"));
_messagebox.setInformativeText(tr("The latest version of the application is") + " " +
updater->latestVersion() + ", " +
tr("do you want to download it?"));
// If the user clicks "yes" open the download dialog
if (_messagebox.exec() == QMessageBox::Yes)
updater->downloadLatestVersion();
}
// The installed version is equal or greater to the "official" latest version,
// so we inform the user and clear the text of the change log text edit
else {
ui->changelogTextEdit->setPlainText("");
ui->changelogTextEdit->setPlainText("The change log was not downloaded because you "
"are running the latest version of the application...");
QMessageBox::information(this, tr("No updates available"),
tr("Congratulations! You are running the latest version of the application!"));
}
}