mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-22 05:30:44 +00:00
Update notifier for Mac/Linux platforms
This commit is contained in:
parent
1be257bca2
commit
b0ca456410
@ -9,6 +9,7 @@
|
|||||||
#include <QNetworkRequest>
|
#include <QNetworkRequest>
|
||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QDesktopServices>
|
||||||
#include <QResource>
|
#include <QResource>
|
||||||
#include <QProgressBar>
|
#include <QProgressBar>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
@ -71,21 +72,46 @@ UpdaterWindow::~UpdaterWindow()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString platformStr()
|
||||||
|
{
|
||||||
|
static QString platform;
|
||||||
|
|
||||||
|
#if defined(Q_OS_WIN)
|
||||||
|
platform="win32";
|
||||||
|
#elif defined(Q_OS_MAC)
|
||||||
|
platform="mac";
|
||||||
|
#elif defined(Q_OS_LINUX)
|
||||||
|
platform="ubuntu";
|
||||||
|
#else
|
||||||
|
platform="unknown";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return platform;
|
||||||
|
}
|
||||||
|
|
||||||
void UpdaterWindow::checkForUpdates()
|
void UpdaterWindow::checkForUpdates()
|
||||||
{
|
{
|
||||||
QString filename = QApplication::applicationDirPath() + "/Updates.xml";
|
QString platform=platformStr();
|
||||||
|
|
||||||
|
#ifdef Q_OS_WINDOWS
|
||||||
|
QString filename = QApplication::applicationDirPath() + "/Updates.xml";
|
||||||
|
#else
|
||||||
|
QString filename = QApplication::applicationDirPath() + QString("/LatestVersion-%1").arg(platform);
|
||||||
|
#endif
|
||||||
// Check updates.xml file if it's still recent..
|
// Check updates.xml file if it's still recent..
|
||||||
if (QFile::exists(filename)) {
|
if (QFile::exists(filename)) {
|
||||||
QFileInfo fi(filename);
|
QFileInfo fi(filename);
|
||||||
QDateTime created = fi.created();
|
QDateTime created = fi.created();
|
||||||
int age = created.secsTo(QDateTime::currentDateTime());
|
int age = created.secsTo(QDateTime::currentDateTime());
|
||||||
|
|
||||||
if (age < 0) { // 7200) {
|
if (age < 900) {
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
file.open(QFile::ReadOnly);
|
file.open(QFile::ReadOnly);
|
||||||
ParseUpdateXML(&file);
|
#ifdef Q_OS_WINDOWS
|
||||||
|
ParseUpdatesXML(&file);
|
||||||
|
#else
|
||||||
|
ParseLatestVersion(&file);
|
||||||
|
#endif
|
||||||
file.close();
|
file.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -93,14 +119,12 @@ void UpdaterWindow::checkForUpdates()
|
|||||||
|
|
||||||
mainwin->Notify(tr("Checking for SleepyHead Updates"));
|
mainwin->Notify(tr("Checking for SleepyHead Updates"));
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#ifdef Q_OS_WINDOWS
|
||||||
// language code?
|
update_url = QUrl(QString("http://sleepyhead.jedimark.net/packages/%1/Updates.xml").arg(platform));
|
||||||
update_url = QUrl(QString("http://sleepyhead.jedimark.net/packages/win32/Updates.xml");
|
#else
|
||||||
downloadUpdateXML();
|
update_url = QUrl(QString("http://sleepyhead.jedimark.net/releases/LatestVersion-%1").arg(platform));
|
||||||
#elif defined(Q_OS_MAC)
|
|
||||||
update_url = QUrl(QString("http://sleepyhead.jedimark.net/packages/mac/Updates.xml"));
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
downloadUpdateXML();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdaterWindow::downloadUpdateXML()
|
void UpdaterWindow::downloadUpdateXML()
|
||||||
@ -143,15 +167,25 @@ void UpdaterWindow::updateFinished(QNetworkReply *reply)
|
|||||||
|
|
||||||
|
|
||||||
ui->plainTextEdit->appendPlainText(tr("%1 bytes received").arg(reply->size()));
|
ui->plainTextEdit->appendPlainText(tr("%1 bytes received").arg(reply->size()));
|
||||||
|
|
||||||
|
#ifdef Q_OS_WINDOWS
|
||||||
QString filename = QApplication::applicationDirPath() + "/Updates.xml";
|
QString filename = QApplication::applicationDirPath() + "/Updates.xml";
|
||||||
|
#else
|
||||||
|
QString filename = QApplication::applicationDirPath() + QString("/LatestVersion-%1").arg(platformStr());
|
||||||
|
#endif
|
||||||
|
|
||||||
qDebug() << filename;
|
qDebug() << filename;
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
file.open(QFile::WriteOnly);
|
file.open(QFile::WriteOnly);
|
||||||
file.write(reply->readAll());
|
file.write(reply->readAll());
|
||||||
file.close();
|
file.close();
|
||||||
file.open(QFile::ReadOnly);
|
file.open(QFile::ReadOnly);
|
||||||
//QTextStream ts(&file);
|
|
||||||
|
#ifdef Q_OS_WINDOWS
|
||||||
ParseUpdatesXML(&file);
|
ParseUpdatesXML(&file);
|
||||||
|
#else
|
||||||
|
ParseLatestVersion(&file);
|
||||||
|
#endif
|
||||||
file.close();
|
file.close();
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
}
|
}
|
||||||
@ -403,6 +437,22 @@ void StartMaintenanceTool()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdaterWindow::ParseLatestVersion(QIODevice *file)
|
||||||
|
{
|
||||||
|
// Temporary Cheat.. for linux & mac, just check the latest version number
|
||||||
|
QTextStream text(file);
|
||||||
|
|
||||||
|
QString version=text.readAll().trimmed();
|
||||||
|
qDebug() << "Latest version is" << version;
|
||||||
|
int i=compareVersion(version);
|
||||||
|
if (i>0) {
|
||||||
|
mainwin->Notify(tr("Version %1 of SleepyHead is available, opening link to download site.").arg(version), STR_TR_SleepyHead);
|
||||||
|
QDesktopServices::openUrl(QUrl(QString("http://sleepyhead.jedimark.net")));
|
||||||
|
} else {
|
||||||
|
mainwin->Notify(tr("You are already running the latest version."), STR_TR_SleepyHead);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//New, Qt Installer framework version
|
//New, Qt Installer framework version
|
||||||
void UpdaterWindow::ParseUpdatesXML(QIODevice *dev)
|
void UpdaterWindow::ParseUpdatesXML(QIODevice *dev)
|
||||||
{
|
{
|
||||||
|
@ -52,6 +52,7 @@ class UpdaterWindow : public QMainWindow
|
|||||||
*/
|
*/
|
||||||
void ParseUpdateXML(QIODevice *dev);
|
void ParseUpdateXML(QIODevice *dev);
|
||||||
void ParseUpdatesXML(QIODevice *dev);
|
void ParseUpdatesXML(QIODevice *dev);
|
||||||
|
void ParseLatestVersion(QIODevice *dev);
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void updateFinished(QNetworkReply *reply);
|
void updateFinished(QNetworkReply *reply);
|
||||||
|
@ -506,7 +506,7 @@ retry_directory:
|
|||||||
|
|
||||||
loadChannels(changing_language);
|
loadChannels(changing_language);
|
||||||
|
|
||||||
// if (check_updates) { mainwin->CheckForUpdates(); }
|
if (check_updates) { mainwin->CheckForUpdates(); }
|
||||||
|
|
||||||
w.show();
|
w.show();
|
||||||
|
|
||||||
|
@ -2795,5 +2795,6 @@ void MainWindow::on_actionReport_a_Bug_triggered()
|
|||||||
{
|
{
|
||||||
QSettings settings(getDeveloperName(), getAppName());
|
QSettings settings(getDeveloperName(), getAppName());
|
||||||
QString language = settings.value(LangSetting).toString();
|
QString language = settings.value(LangSetting).toString();
|
||||||
|
|
||||||
QDesktopServices::openUrl(QUrl(QString("http://sleepyhead.jedimark.net/report_bugs.php?lang=%1&version=%2&platform=%3").arg(language).arg(VersionString).arg(PlatformString)));
|
QDesktopServices::openUrl(QUrl(QString("http://sleepyhead.jedimark.net/report_bugs.php?lang=%1&version=%2&platform=%3").arg(language).arg(VersionString).arg(PlatformString)));
|
||||||
}
|
}
|
||||||
|
@ -154,5 +154,4 @@ class UpdatesParser
|
|||||||
QString currentTag;
|
QString currentTag;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // UPDATEPARSER_H
|
#endif // UPDATEPARSER_H
|
||||||
|
Loading…
Reference in New Issue
Block a user