diff --git a/plotjuggler_app/CMakeLists.txt b/plotjuggler_app/CMakeLists.txt index b2839740a..5dd0970ee 100644 --- a/plotjuggler_app/CMakeLists.txt +++ b/plotjuggler_app/CMakeLists.txt @@ -15,6 +15,7 @@ QT5_WRAP_UI ( UI_SRC preferences_dialog.ui suggest_dialog.ui new_release_dialog.ui + changelog_dialog.ui multifile_prefix.ui colormap_editor.ui colormap_selector.ui @@ -101,7 +102,7 @@ add_executable(plotjuggler ${PLOtJUGGLER_SRC} ${RES_SRC} ${UI_SRC} - ${BACKWARD_ENABLE} ) + ${BACKWARD_ENABLE}) if (NOT WIN32) add_backward(plotjuggler) diff --git a/plotjuggler_app/changelog_dialog.ui b/plotjuggler_app/changelog_dialog.ui new file mode 100644 index 000000000..03a1c6a7f --- /dev/null +++ b/plotjuggler_app/changelog_dialog.ui @@ -0,0 +1,100 @@ + + + ChangelogDialog + + + + 0 + 0 + 500 + 300 + + + + + 500 + 300 + + + + + 500 + 300 + + + + Dialog + + + + + + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:700;">New Version Installed<br/><br/></span><span style=" font-size:12pt;">The latest release of PlotJuggler includes several bug fixed and new features.</span></p></body></html> + + + true + + + + + + + See changelog + + + + + + + Don't show again + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel + + + + + + + + + buttonBox + accepted() + ChangelogDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ChangelogDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/plotjuggler_app/main.cpp b/plotjuggler_app/main.cpp index 96bcb53dc..bdce31001 100644 --- a/plotjuggler_app/main.cpp +++ b/plotjuggler_app/main.cpp @@ -13,11 +13,14 @@ #include #include #include +#include #include #include #include #include +#include #include +#include #include "PlotJuggler/transform_function.h" #include "transforms/first_derivative.h" @@ -30,6 +33,7 @@ #include "transforms/absolute_transform.h" #include "new_release_dialog.h" +#include "ui_changelog_dialog.h" #ifdef COMPILED_WITH_CATKIN #include @@ -54,6 +58,27 @@ inline int GetVersionNumber(QString str) return major * 10000 + minor * 100 + patch; } +void ShowChangelogDialog() +{ + QDialog* dialog = new QDialog(); + auto ui = new Ui::ChangelogDialog(); + ui->setupUi(dialog); + + QObject::connect(ui->buttonChangelog, &QPushButton::clicked, dialog, [](bool) { + QDesktopServices::openUrl(QUrl("https://bit.ly/plotjuggler-update")); + QSettings settings; + settings.setValue("Changelog/first", false); + }); + + + QObject::connect(ui->checkBox, &QCheckBox::toggled, dialog, [](bool toggle) { + QSettings settings; + settings.setValue("Changelog/dont", toggle); + }); + + dialog->exec(); +} + void OpenNewReleaseDialog(QNetworkReply* reply) { if (reply->error()) @@ -75,19 +100,10 @@ void OpenNewReleaseDialog(QNetworkReply* reply) int dontshow_number = GetVersionNumber(dont_show); int current_number = GetVersionNumber(VERSION_STRING); - bool rr = settings.value("NewRelease/rickrolled", false).toBool(); - if(!rr) { - url = "https://bit.ly/plotjuggler-update"; - } - if (online_number > current_number && online_number > dontshow_number) { NewReleaseDialog* dialog = new NewReleaseDialog(nullptr, tag_name, name, url); dialog->exec(); - if(dialog->link_opened) - { - settings.setValue("NewRelease/rickrolled", true); - } } } @@ -383,8 +399,14 @@ int main(int argc, char* argv[]) * data. Please don't do it. */ - if (!parser.isSet(nosplash_option) && - !(parser.isSet(loadfile_option) || parser.isSet(layout_option))) + bool first_changelog = settings.value("Changelog/first", true).toBool(); + bool dont_changelog = settings.value("Changelog/dont", false).toBool(); + + if(first_changelog && !dont_changelog) { + ShowChangelogDialog(); + } + else if (!parser.isSet(nosplash_option) && + !(parser.isSet(loadfile_option) || parser.isSet(layout_option))) // if(false) // if you uncomment this line, a kitten will die somewhere in the world. { QPixmap main_pixmap; @@ -403,6 +425,7 @@ int main(int argc, char* argv[]) { main_pixmap = getFunnySplashscreen(); } + QSplashScreen splash(main_pixmap, Qt::WindowStaysOnTopHint); QDesktopWidget* desktop = QApplication::desktop(); const int scrn = desktop->screenNumber(); @@ -415,7 +438,7 @@ int main(int argc, char* argv[]) auto deadline = QDateTime::currentDateTime().addMSecs(500); while (QDateTime::currentDateTime() < deadline) { - app.processEvents(); + app.processEvents(); } w = new MainWindow(parser);