mirror of
				https://git.wownero.com/wowlet/wowlet.git
				synced 2024-08-15 01:03:14 +00:00 
			
		
		
		
	Merge pull request 'Warn when there is a new version available' (#70) from dsc/wowlet:warn-on-outdated-version into master
Reviewed-on: https://git.wownero.com/wowlet/wowlet/pulls/70
This commit is contained in:
		
						commit
						0d502f0e45
					
				
					 16 changed files with 252 additions and 5 deletions
				
			
		| 
						 | 
					@ -4,8 +4,8 @@ project(wowlet)
 | 
				
			||||||
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
 | 
					message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
					set(THREADS_PREFER_PTHREAD_FLAG ON)
 | 
				
			||||||
set(VERSION_MAJOR "0")
 | 
					set(VERSION_MAJOR "2")
 | 
				
			||||||
set(VERSION_MINOR "2")
 | 
					set(VERSION_MINOR "0")
 | 
				
			||||||
set(VERSION_REVISION "0")
 | 
					set(VERSION_REVISION "0")
 | 
				
			||||||
set(VERSION "beta-2")
 | 
					set(VERSION "beta-2")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define WOWLET_VERSION "@VERSION@"
 | 
					#define WOWLET_VERSION "@VERSION@"
 | 
				
			||||||
#define WOWLET_BRANCH "@WOWLET_BRANCH@"
 | 
					#define WOWLET_BRANCH "@WOWLET_BRANCH@"
 | 
				
			||||||
 | 
					#define WOWLET_VERSION_SEMVER "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_REVISION@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MONERO_VERSION "@MONERO_VERSION@"
 | 
					#define MONERO_VERSION "@MONERO_VERSION@"
 | 
				
			||||||
#define MONERO_BRANCH "@MONERO_BRANCH@"
 | 
					#define MONERO_BRANCH "@MONERO_BRANCH@"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "appcontext.h"
 | 
					#include "appcontext.h"
 | 
				
			||||||
#include "globals.h"
 | 
					#include "globals.h"
 | 
				
			||||||
 | 
					#include "config-wowlet.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// libwalletqt
 | 
					// libwalletqt
 | 
				
			||||||
#include "libwalletqt/TransactionHistory.h"
 | 
					#include "libwalletqt/TransactionHistory.h"
 | 
				
			||||||
| 
						 | 
					@ -457,6 +458,13 @@ void AppContext::onWSMessage(const QJsonObject &msg) {
 | 
				
			||||||
        auto txFiatHistory_data = msg.value("data").toObject();
 | 
					        auto txFiatHistory_data = msg.value("data").toObject();
 | 
				
			||||||
        AppContext::txFiatHistory->onWSData(txFiatHistory_data);
 | 
					        AppContext::txFiatHistory->onWSData(txFiatHistory_data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else if(cmd == "wowlet_releases") {
 | 
				
			||||||
 | 
					        versionPending = msg.value("data").toObject();
 | 
				
			||||||
 | 
					        auto version_str = versionPending.value("version").toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(Utils::versionOutdated(WOWLET_VERSION_SEMVER, version_str))
 | 
				
			||||||
 | 
					            emit versionOutdated(version_str, versionPending);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
#if defined(HAS_OPENVR)
 | 
					#if defined(HAS_OPENVR)
 | 
				
			||||||
    else if(cmd == "requestPIN") {
 | 
					    else if(cmd == "requestPIN") {
 | 
				
			||||||
        auto pin = msg.value("data").toString();
 | 
					        auto pin = msg.value("data").toString();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ public:
 | 
				
			||||||
    bool isMac = false;
 | 
					    bool isMac = false;
 | 
				
			||||||
    bool isWindows = false;
 | 
					    bool isWindows = false;
 | 
				
			||||||
    bool isDebug = false;
 | 
					    bool isDebug = false;
 | 
				
			||||||
 | 
					    static bool isQML;
 | 
				
			||||||
    bool androidDebug = false;
 | 
					    bool androidDebug = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Donation config
 | 
					    // Donation config
 | 
				
			||||||
| 
						 | 
					@ -105,7 +106,7 @@ public:
 | 
				
			||||||
    static QMap<QString, QString> txDescriptionCache;
 | 
					    static QMap<QString, QString> txDescriptionCache;
 | 
				
			||||||
    static QMap<QString, QString> txCache;
 | 
					    static QMap<QString, QString> txCache;
 | 
				
			||||||
    static TxFiatHistory *txFiatHistory;
 | 
					    static TxFiatHistory *txFiatHistory;
 | 
				
			||||||
    static bool isQML;
 | 
					    QJsonObject versionPending;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // libwalletqt
 | 
					    // libwalletqt
 | 
				
			||||||
    bool refreshed = false;
 | 
					    bool refreshed = false;
 | 
				
			||||||
| 
						 | 
					@ -219,6 +220,7 @@ signals:
 | 
				
			||||||
    void initiateTransaction();
 | 
					    void initiateTransaction();
 | 
				
			||||||
    void endTransaction();
 | 
					    void endTransaction();
 | 
				
			||||||
    void setTitle(const QString &title); // set window title
 | 
					    void setTitle(const QString &title); // set window title
 | 
				
			||||||
 | 
					    void versionOutdated(QString version_string, QJsonObject data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
					    WalletKeysFilesModel *m_walletKeysFilesModel;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -186,6 +186,7 @@
 | 
				
			||||||
    <file>assets/images/seal.png</file>
 | 
					    <file>assets/images/seal.png</file>
 | 
				
			||||||
    <file>assets/images/seed.png</file>
 | 
					    <file>assets/images/seed.png</file>
 | 
				
			||||||
    <file>assets/images/speaker.png</file>
 | 
					    <file>assets/images/speaker.png</file>
 | 
				
			||||||
 | 
					    <file>assets/images/pls_update.jpg</file>
 | 
				
			||||||
    <file>assets/images/status_connected_fork.png</file>
 | 
					    <file>assets/images/status_connected_fork.png</file>
 | 
				
			||||||
    <file>assets/images/status_connected.png</file>
 | 
					    <file>assets/images/status_connected.png</file>
 | 
				
			||||||
    <file>assets/images/status_connected_proxy_fork.png</file>
 | 
					    <file>assets/images/status_connected_proxy_fork.png</file>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pls_update.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/images/pls_update.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 30 KiB  | 
							
								
								
									
										44
									
								
								src/dialog/updatedialog.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/dialog/updatedialog.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: BSD-3-Clause
 | 
				
			||||||
 | 
					// Copyright (c) 2020-2021, The Monero Project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QObject>
 | 
				
			||||||
 | 
					#include "updatedialog.h"
 | 
				
			||||||
 | 
					#include "ui_updatedialog.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "config-wowlet.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UpdateDialog::UpdateDialog(AppContext *ctx, QWidget *parent) :
 | 
				
			||||||
 | 
					        QDialog(parent),
 | 
				
			||||||
 | 
					        ctx(ctx),
 | 
				
			||||||
 | 
					        ui(new Ui::UpdateDialog) {
 | 
				
			||||||
 | 
					    ui->setupUi(this);
 | 
				
			||||||
 | 
					    this->setWindowIcon(QIcon("://assets/images/appicons/64x64.png"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto version_str = ctx->versionPending.value("version").toString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QPixmap p(":assets/images/pls_update.jpg");
 | 
				
			||||||
 | 
					    ui->label_image->setPixmap(p.scaled(320, 320, Qt::KeepAspectRatio, Qt::SmoothTransformation));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->info_label->setText("Current version: " + QString(WOWLET_VERSION_SEMVER) + "\n"
 | 
				
			||||||
 | 
					                               "New version: " + version_str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->label_download->setText("Download: <a href=\"https://git.wownero.com/wowlet/wowlet/releases\">git.wownero.com</a>");
 | 
				
			||||||
 | 
					    ui->label_download->setTextInteractionFlags(Qt::TextBrowserInteraction);
 | 
				
			||||||
 | 
					    ui->label_download->setOpenExternalLinks(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // checkbox
 | 
				
			||||||
 | 
					    connect(ui->checkbox_ignore, &QCheckBox::clicked, this, &UpdateDialog::checkboxIgnoreWarning);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this->adjustSize();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void UpdateDialog::checkboxIgnoreWarning(bool checked) {
 | 
				
			||||||
 | 
					    if(checked)
 | 
				
			||||||
 | 
					        config()->set(Config::ignoreUpdateWarning, WOWLET_VERSION_SEMVER);
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        config()->set(Config::ignoreUpdateWarning, "");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UpdateDialog::~UpdateDialog() {
 | 
				
			||||||
 | 
					    delete ui;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								src/dialog/updatedialog.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/dialog/updatedialog.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: BSD-3-Clause
 | 
				
			||||||
 | 
					// Copyright (c) 2020-2021, The Monero Project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef WOWLET_UPDATEDIALOG_H
 | 
				
			||||||
 | 
					#define WOWLET_UPDATEDIALOG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QDialog>
 | 
				
			||||||
 | 
					#include "appcontext.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Ui {
 | 
				
			||||||
 | 
					    class UpdateDialog;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class UpdateDialog : public QDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    explicit UpdateDialog(AppContext *ctx, QWidget *parent = nullptr);
 | 
				
			||||||
 | 
					    ~UpdateDialog() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private slots:
 | 
				
			||||||
 | 
					    void checkboxIgnoreWarning(bool checked);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    AppContext *ctx = nullptr;
 | 
				
			||||||
 | 
					    Ui::UpdateDialog *ui;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //WOWLET_UPDATEDIALOG_H
 | 
				
			||||||
							
								
								
									
										108
									
								
								src/dialog/updatedialog.ui
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								src/dialog/updatedialog.ui
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,108 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<ui version="4.0">
 | 
				
			||||||
 | 
					 <class>UpdateDialog</class>
 | 
				
			||||||
 | 
					 <widget class="QDialog" name="UpdateDialog">
 | 
				
			||||||
 | 
					  <property name="geometry">
 | 
				
			||||||
 | 
					   <rect>
 | 
				
			||||||
 | 
					    <x>0</x>
 | 
				
			||||||
 | 
					    <y>0</y>
 | 
				
			||||||
 | 
					    <width>349</width>
 | 
				
			||||||
 | 
					    <height>189</height>
 | 
				
			||||||
 | 
					   </rect>
 | 
				
			||||||
 | 
					  </property>
 | 
				
			||||||
 | 
					  <property name="windowTitle">
 | 
				
			||||||
 | 
					   <string>Pls update</string>
 | 
				
			||||||
 | 
					  </property>
 | 
				
			||||||
 | 
					  <layout class="QVBoxLayout" name="verticalLayout">
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QLabel" name="label_image">
 | 
				
			||||||
 | 
					     <property name="text">
 | 
				
			||||||
 | 
					      <string>image</string>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QLabel" name="info_label">
 | 
				
			||||||
 | 
					     <property name="text">
 | 
				
			||||||
 | 
					      <string>info_label</string>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QLabel" name="label_download">
 | 
				
			||||||
 | 
					     <property name="text">
 | 
				
			||||||
 | 
					      <string>download_label</string>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					     <property name="textFormat">
 | 
				
			||||||
 | 
					      <enum>Qt::RichText</enum>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QCheckBox" name="checkbox_ignore">
 | 
				
			||||||
 | 
					     <property name="text">
 | 
				
			||||||
 | 
					      <string>Ignore for now</string>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <spacer name="verticalSpacer">
 | 
				
			||||||
 | 
					     <property name="orientation">
 | 
				
			||||||
 | 
					      <enum>Qt::Vertical</enum>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					     <property name="sizeHint" stdset="0">
 | 
				
			||||||
 | 
					      <size>
 | 
				
			||||||
 | 
					       <width>20</width>
 | 
				
			||||||
 | 
					       <height>40</height>
 | 
				
			||||||
 | 
					      </size>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </spacer>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					   <item>
 | 
				
			||||||
 | 
					    <widget class="QDialogButtonBox" name="buttonBox">
 | 
				
			||||||
 | 
					     <property name="orientation">
 | 
				
			||||||
 | 
					      <enum>Qt::Horizontal</enum>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					     <property name="standardButtons">
 | 
				
			||||||
 | 
					      <set>QDialogButtonBox::Ok</set>
 | 
				
			||||||
 | 
					     </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					   </item>
 | 
				
			||||||
 | 
					  </layout>
 | 
				
			||||||
 | 
					 </widget>
 | 
				
			||||||
 | 
					 <resources/>
 | 
				
			||||||
 | 
					 <connections>
 | 
				
			||||||
 | 
					  <connection>
 | 
				
			||||||
 | 
					   <sender>buttonBox</sender>
 | 
				
			||||||
 | 
					   <signal>accepted()</signal>
 | 
				
			||||||
 | 
					   <receiver>UpdateDialog</receiver>
 | 
				
			||||||
 | 
					   <slot>accept()</slot>
 | 
				
			||||||
 | 
					   <hints>
 | 
				
			||||||
 | 
					    <hint type="sourcelabel">
 | 
				
			||||||
 | 
					     <x>248</x>
 | 
				
			||||||
 | 
					     <y>254</y>
 | 
				
			||||||
 | 
					    </hint>
 | 
				
			||||||
 | 
					    <hint type="destinationlabel">
 | 
				
			||||||
 | 
					     <x>157</x>
 | 
				
			||||||
 | 
					     <y>274</y>
 | 
				
			||||||
 | 
					    </hint>
 | 
				
			||||||
 | 
					   </hints>
 | 
				
			||||||
 | 
					  </connection>
 | 
				
			||||||
 | 
					  <connection>
 | 
				
			||||||
 | 
					   <sender>buttonBox</sender>
 | 
				
			||||||
 | 
					   <signal>rejected()</signal>
 | 
				
			||||||
 | 
					   <receiver>UpdateDialog</receiver>
 | 
				
			||||||
 | 
					   <slot>reject()</slot>
 | 
				
			||||||
 | 
					   <hints>
 | 
				
			||||||
 | 
					    <hint type="sourcelabel">
 | 
				
			||||||
 | 
					     <x>316</x>
 | 
				
			||||||
 | 
					     <y>260</y>
 | 
				
			||||||
 | 
					    </hint>
 | 
				
			||||||
 | 
					    <hint type="destinationlabel">
 | 
				
			||||||
 | 
					     <x>286</x>
 | 
				
			||||||
 | 
					     <y>274</y>
 | 
				
			||||||
 | 
					    </hint>
 | 
				
			||||||
 | 
					   </hints>
 | 
				
			||||||
 | 
					  </connection>
 | 
				
			||||||
 | 
					 </connections>
 | 
				
			||||||
 | 
					</ui>
 | 
				
			||||||
| 
						 | 
					@ -19,11 +19,13 @@
 | 
				
			||||||
#include "dialog/viewonlydialog.h"
 | 
					#include "dialog/viewonlydialog.h"
 | 
				
			||||||
#include "dialog/broadcasttxdialog.h"
 | 
					#include "dialog/broadcasttxdialog.h"
 | 
				
			||||||
#include "dialog/tximportdialog.h"
 | 
					#include "dialog/tximportdialog.h"
 | 
				
			||||||
 | 
					#include "dialog/updatedialog.h"
 | 
				
			||||||
#include "dialog/passworddialog.h"
 | 
					#include "dialog/passworddialog.h"
 | 
				
			||||||
#include "dialog/balancedialog.h"
 | 
					#include "dialog/balancedialog.h"
 | 
				
			||||||
#include "dialog/WalletCacheDebugDialog.h"
 | 
					#include "dialog/WalletCacheDebugDialog.h"
 | 
				
			||||||
#include "ui_mainwindow.h"
 | 
					#include "ui_mainwindow.h"
 | 
				
			||||||
#include "globals.h"
 | 
					#include "globals.h"
 | 
				
			||||||
 | 
					#include "config-wowlet.h"
 | 
				
			||||||
#include "utils/ColorScheme.h"
 | 
					#include "utils/ColorScheme.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// libwalletqt
 | 
					// libwalletqt
 | 
				
			||||||
| 
						 | 
					@ -39,6 +41,8 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) :
 | 
				
			||||||
    pMainWindow = this;
 | 
					    pMainWindow = this;
 | 
				
			||||||
    ui->setupUi(this);
 | 
					    ui->setupUi(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ui->label_outdated->setVisible(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_windowSettings = new Settings(this);
 | 
					    m_windowSettings = new Settings(this);
 | 
				
			||||||
    m_aboutDialog = new AboutDialog(this);
 | 
					    m_aboutDialog = new AboutDialog(this);
 | 
				
			||||||
    m_windowCalc = new CalcWindow(this);
 | 
					    m_windowCalc = new CalcWindow(this);
 | 
				
			||||||
| 
						 | 
					@ -337,6 +341,9 @@ MainWindow::MainWindow(AppContext *ctx, QWidget *parent) :
 | 
				
			||||||
    // window title
 | 
					    // window title
 | 
				
			||||||
    connect(m_ctx, &AppContext::setTitle, this, &QMainWindow::setWindowTitle);
 | 
					    connect(m_ctx, &AppContext::setTitle, this, &QMainWindow::setWindowTitle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Version warning
 | 
				
			||||||
 | 
					    connect(m_ctx, &AppContext::versionOutdated, this, &MainWindow::onVersionWarning);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // init touchbar
 | 
					    // init touchbar
 | 
				
			||||||
#ifdef Q_OS_MAC
 | 
					#ifdef Q_OS_MAC
 | 
				
			||||||
    m_touchbar = new KDMacTouchBar(this);
 | 
					    m_touchbar = new KDMacTouchBar(this);
 | 
				
			||||||
| 
						 | 
					@ -428,6 +435,7 @@ void MainWindow::initMenu() {
 | 
				
			||||||
    connect(ui->actionSeed, &QAction::triggered, this, &MainWindow::showSeedDialog);
 | 
					    connect(ui->actionSeed, &QAction::triggered, this, &MainWindow::showSeedDialog);
 | 
				
			||||||
    connect(ui->actionPassword, &QAction::triggered, this, &MainWindow::showPasswordDialog);
 | 
					    connect(ui->actionPassword, &QAction::triggered, this, &MainWindow::showPasswordDialog);
 | 
				
			||||||
    connect(ui->actionKeys, &QAction::triggered, this, &MainWindow::showKeysDialog);
 | 
					    connect(ui->actionKeys, &QAction::triggered, this, &MainWindow::showKeysDialog);
 | 
				
			||||||
 | 
					    connect(this, &MainWindow::updateDialog, this, &MainWindow::showUpdateDialog);
 | 
				
			||||||
    connect(ui->actionViewOnly, &QAction::triggered, this, &MainWindow::showViewOnlyDialog);
 | 
					    connect(ui->actionViewOnly, &QAction::triggered, this, &MainWindow::showViewOnlyDialog);
 | 
				
			||||||
    connect(ui->actionStore_wallet, &QAction::triggered, [this]{
 | 
					    connect(ui->actionStore_wallet, &QAction::triggered, [this]{
 | 
				
			||||||
        m_ctx->currentWallet->store();
 | 
					        m_ctx->currentWallet->store();
 | 
				
			||||||
| 
						 | 
					@ -632,6 +640,8 @@ void MainWindow::onWalletOpened(Wallet *wallet) {
 | 
				
			||||||
    this->updatePasswordIcon();
 | 
					    this->updatePasswordIcon();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_updateBytes.start(100);
 | 
					    m_updateBytes.start(100);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(m_showUpdateWarning == 1) emit updateDialog();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
 | 
					void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
 | 
				
			||||||
| 
						 | 
					@ -886,6 +896,12 @@ void MainWindow::updatePasswordIcon() {
 | 
				
			||||||
    m_statusBtnPassword->setIcon(icon);
 | 
					    m_statusBtnPassword->setIcon(icon);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MainWindow::onVersionWarning(QString current_string, QJsonObject version_data) {
 | 
				
			||||||
 | 
					    if(m_showUpdateWarning != -1)
 | 
				
			||||||
 | 
					        m_showUpdateWarning = 1;
 | 
				
			||||||
 | 
					    ui->label_outdated->setVisible(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MainWindow::showRestoreHeightDialog() {
 | 
					void MainWindow::showRestoreHeightDialog() {
 | 
				
			||||||
    // settings custom restore height is only available for 25 word seeds
 | 
					    // settings custom restore height is only available for 25 word seeds
 | 
				
			||||||
    auto seed = m_ctx->currentWallet->getCacheAttribute("wowlet.seed");
 | 
					    auto seed = m_ctx->currentWallet->getCacheAttribute("wowlet.seed");
 | 
				
			||||||
| 
						 | 
					@ -911,6 +927,17 @@ void MainWindow::showRestoreHeightDialog() {
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void MainWindow::showUpdateDialog() {
 | 
				
			||||||
 | 
					    if(config()->get(Config::ignoreUpdateWarning).toString() == WOWLET_VERSION_SEMVER) {
 | 
				
			||||||
 | 
					        m_showUpdateWarning = -1;
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    auto *dialog = new UpdateDialog(m_ctx, this);
 | 
				
			||||||
 | 
					    dialog->show();
 | 
				
			||||||
 | 
					    m_showUpdateWarning = -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MainWindow::showKeysDialog() {
 | 
					void MainWindow::showKeysDialog() {
 | 
				
			||||||
    auto *dialog = new KeysDialog(m_ctx, this);
 | 
					    auto *dialog = new KeysDialog(m_ctx, this);
 | 
				
			||||||
    dialog->exec();
 | 
					    dialog->exec();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@
 | 
				
			||||||
#include "dialog/verifyproofdialog.h"
 | 
					#include "dialog/verifyproofdialog.h"
 | 
				
			||||||
#include "dialog/seeddialog.h"
 | 
					#include "dialog/seeddialog.h"
 | 
				
			||||||
#include "dialog/passwordchangedialog.h"
 | 
					#include "dialog/passwordchangedialog.h"
 | 
				
			||||||
 | 
					#include "dialog/updatedialog.h"
 | 
				
			||||||
#include "dialog/keysdialog.h"
 | 
					#include "dialog/keysdialog.h"
 | 
				
			||||||
#include "dialog/aboutdialog.h"
 | 
					#include "dialog/aboutdialog.h"
 | 
				
			||||||
#include "dialog/restoredialog.h"
 | 
					#include "dialog/restoredialog.h"
 | 
				
			||||||
| 
						 | 
					@ -115,6 +116,7 @@ public slots:
 | 
				
			||||||
    void showSendScreen(const CCSEntry &entry);
 | 
					    void showSendScreen(const CCSEntry &entry);
 | 
				
			||||||
    void suchDonate(const QString address);
 | 
					    void suchDonate(const QString address);
 | 
				
			||||||
    void skinChanged(const QString &skinName);
 | 
					    void skinChanged(const QString &skinName);
 | 
				
			||||||
 | 
					    void onVersionWarning(QString current_string, QJsonObject data);
 | 
				
			||||||
    void menuTorClicked();
 | 
					    void menuTorClicked();
 | 
				
			||||||
    void onBlockchainSync(int height, int target);
 | 
					    void onBlockchainSync(int height, int target);
 | 
				
			||||||
    void onRefreshSync(int height, int target);
 | 
					    void onRefreshSync(int height, int target);
 | 
				
			||||||
| 
						 | 
					@ -158,6 +160,7 @@ public slots:
 | 
				
			||||||
    void onUpdateXMRWidget();
 | 
					    void onUpdateXMRWidget();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
 | 
					    void updateDialog();
 | 
				
			||||||
    void closed();
 | 
					    void closed();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
| 
						 | 
					@ -173,6 +176,7 @@ private:
 | 
				
			||||||
    void saveGeo();
 | 
					    void saveGeo();
 | 
				
			||||||
    void restoreGeo();
 | 
					    void restoreGeo();
 | 
				
			||||||
    void showDebugInfo();
 | 
					    void showDebugInfo();
 | 
				
			||||||
 | 
					    void showUpdateDialog();
 | 
				
			||||||
    void showNodeExhaustedMessage();
 | 
					    void showNodeExhaustedMessage();
 | 
				
			||||||
    void showWSNodeExhaustedMessage();
 | 
					    void showWSNodeExhaustedMessage();
 | 
				
			||||||
    void createUnsignedTxDialog(UnsignedTransaction *tx);
 | 
					    void createUnsignedTxDialog(UnsignedTransaction *tx);
 | 
				
			||||||
| 
						 | 
					@ -236,6 +240,7 @@ private:
 | 
				
			||||||
    bool m_constructingTransaction = false;
 | 
					    bool m_constructingTransaction = false;
 | 
				
			||||||
    bool m_statusOverrideActive = false;
 | 
					    bool m_statusOverrideActive = false;
 | 
				
			||||||
    QTimer m_txTimer;
 | 
					    QTimer m_txTimer;
 | 
				
			||||||
 | 
					    int m_showUpdateWarning = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
    void menuToggleTabVisible(const QString &key);
 | 
					    void menuToggleTabVisible(const QString &key);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
    <x>0</x>
 | 
					    <x>0</x>
 | 
				
			||||||
    <y>0</y>
 | 
					    <y>0</y>
 | 
				
			||||||
    <width>1156</width>
 | 
					    <width>1156</width>
 | 
				
			||||||
    <height>502</height>
 | 
					    <height>506</height>
 | 
				
			||||||
   </rect>
 | 
					   </rect>
 | 
				
			||||||
  </property>
 | 
					  </property>
 | 
				
			||||||
  <property name="sizePolicy">
 | 
					  <property name="sizePolicy">
 | 
				
			||||||
| 
						 | 
					@ -86,6 +86,13 @@
 | 
				
			||||||
          </item>
 | 
					          </item>
 | 
				
			||||||
         </layout>
 | 
					         </layout>
 | 
				
			||||||
        </item>
 | 
					        </item>
 | 
				
			||||||
 | 
					        <item>
 | 
				
			||||||
 | 
					         <widget class="QLabel" name="label_outdated">
 | 
				
			||||||
 | 
					          <property name="text">
 | 
				
			||||||
 | 
					           <string>Warning: outdated wowlet version</string>
 | 
				
			||||||
 | 
					          </property>
 | 
				
			||||||
 | 
					         </widget>
 | 
				
			||||||
 | 
					        </item>
 | 
				
			||||||
        <item>
 | 
					        <item>
 | 
				
			||||||
         <widget class="Line" name="line">
 | 
					         <widget class="Line" name="line">
 | 
				
			||||||
          <property name="orientation">
 | 
					          <property name="orientation">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,6 +48,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
 | 
				
			||||||
        {Config::hideBalance, {QS("hideBalance"), false}},
 | 
					        {Config::hideBalance, {QS("hideBalance"), false}},
 | 
				
			||||||
        {Config::hideFiatBalance, {QS("hideFiatBalance"), false}},
 | 
					        {Config::hideFiatBalance, {QS("hideFiatBalance"), false}},
 | 
				
			||||||
        {Config::redditFrontend, {QS("redditFrontend"), "old.reddit.com"}},
 | 
					        {Config::redditFrontend, {QS("redditFrontend"), "old.reddit.com"}},
 | 
				
			||||||
 | 
					        {Config::ignoreUpdateWarning, {QS("ignoreUpdateWarning"), ""}},
 | 
				
			||||||
        {Config::showHistorySyncNotice, {QS("showHistorySyncNotice"), true}}
 | 
					        {Config::showHistorySyncNotice, {QS("showHistorySyncNotice"), true}}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +50,8 @@ public:
 | 
				
			||||||
        hideBalance,
 | 
					        hideBalance,
 | 
				
			||||||
        hideFiatBalance,
 | 
					        hideFiatBalance,
 | 
				
			||||||
        redditFrontend,
 | 
					        redditFrontend,
 | 
				
			||||||
        showHistorySyncNotice
 | 
					        showHistorySyncNotice,
 | 
				
			||||||
 | 
					        ignoreUpdateWarning
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ~Config() override;
 | 
					    ~Config() override;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -434,6 +434,16 @@ int Utils::maxLength(const QVector<QString> &array) {
 | 
				
			||||||
    return maxLength;
 | 
					    return maxLength;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Utils::versionOutdated(const QString ¤t_version, const QString &newest_version) {
 | 
				
			||||||
 | 
					    // True when major or minor version changed
 | 
				
			||||||
 | 
					    auto cver = current_version.split('.');
 | 
				
			||||||
 | 
					    auto nver = newest_version.split('.');
 | 
				
			||||||
 | 
					    int cverlist[] = {cver.at(0).toInt(), cver.at(1).toInt()};
 | 
				
			||||||
 | 
					    int nverlist[] = {nver.at(0).toInt(), nver.at(1).toInt()};
 | 
				
			||||||
 | 
					    if(cverlist[0] < nverlist[0] || cverlist[1] < nverlist[1]) return true;
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QString Utils::balanceFormat(quint64 balance) {
 | 
					QString Utils::balanceFormat(quint64 balance) {
 | 
				
			||||||
    QString str = QString::number(balance / globals::cdiv, 'f', 4);
 | 
					    QString str = QString::number(balance / globals::cdiv, 'f', 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,6 +81,7 @@ public:
 | 
				
			||||||
    static QMap<QString, QLocale> localeCache;
 | 
					    static QMap<QString, QLocale> localeCache;
 | 
				
			||||||
    static QString balanceFormat(quint64 balance);
 | 
					    static QString balanceFormat(quint64 balance);
 | 
				
			||||||
    static QTextCharFormat addressTextFormat(const SubaddressIndex &index);
 | 
					    static QTextCharFormat addressTextFormat(const SubaddressIndex &index);
 | 
				
			||||||
 | 
					    static bool versionOutdated(const QString ¤t_version, const QString &newest_version);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    template<typename QEnum>
 | 
					    template<typename QEnum>
 | 
				
			||||||
    static QString QtEnumToString (const QEnum value) {
 | 
					    static QString QtEnumToString (const QEnum value) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue