Skip to content
Snippets Groups Projects
Commit b9cce33d authored by inso's avatar inso
Browse files

Fix display of available version + display a toast when a new one is available

parent 023b0bca
No related branches found
No related tags found
No related merge requests found
...@@ -45,11 +45,12 @@ class Application(QObject): ...@@ -45,11 +45,12 @@ class Application(QObject):
self.accounts = {} self.accounts = {}
self.current_account = None self.current_account = None
self.monitor = None self.monitor = None
self.available_version = __version__ self.available_version = (True,
__version__,
"")
config.parse_arguments(argv) config.parse_arguments(argv)
self._network_manager = QNetworkAccessManager() self._network_manager = QNetworkAccessManager()
self._network_manager.finished.connect(self.read_available_version) self._network_manager.finished.connect(self.read_available_version)
self.get_last_version()
self.preferences = {'account': "", self.preferences = {'account': "",
'lang': 'en_GB', 'lang': 'en_GB',
'ref': 'Units' 'ref': 'Units'
...@@ -403,24 +404,26 @@ class Application(QObject): ...@@ -403,24 +404,26 @@ class Application(QObject):
request = QNetworkRequest(url) request = QNetworkRequest(url)
self._network_manager.get(request) self._network_manager.get(request)
@pyqtSlot(QNetworkReply) @pyqtSlot(QNetworkReply)
def read_available_version(self, reply): def read_available_version(self, reply):
latest = None latest = None
releases = reply.readAll().data().decode('utf-8') releases = reply.readAll().data().decode('utf-8')
logging.debug(releases) logging.debug(releases)
for r in json.loads(releases): if reply.error == QNetworkReply.NoError:
if not latest: for r in json.loads(releases):
latest = r if not latest:
else:
latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ")
date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ")
if latest_date < date:
latest = r latest = r
latest_version = latest["tag_name"] else:
version = (__version__ == latest_version, latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ")
latest_version, date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ")
latest["html_url"]) if latest_date < date:
logging.debug("Found version : {0}".format(latest_version)) latest = r
logging.debug("Current version : {0}".format(__version__)) latest_version = latest["tag_name"]
self.available_version = version version = (__version__ == latest_version,
latest_version,
latest["html_url"])
logging.debug("Found version : {0}".format(latest_version))
logging.debug("Current version : {0}".format(__version__))
self.available_version = version
self.version_requested.emit() self.version_requested.emit()
...@@ -7,6 +7,7 @@ Created on 31 janv. 2015 ...@@ -7,6 +7,7 @@ Created on 31 janv. 2015
from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QWidget
from ..gen_resources.homescreen_uic import Ui_HomeScreenWidget from ..gen_resources.homescreen_uic import Ui_HomeScreenWidget
from ..__init__ import __version__ from ..__init__ import __version__
from . import toast
class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): class HomeScreenWidget(QWidget, Ui_HomeScreenWidget):
...@@ -30,7 +31,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): ...@@ -30,7 +31,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget):
version_url = "" version_url = ""
if not latest[0]: if not latest[0]:
version_info = self.tr("Please get the latest release {version}") \ version_info = self.tr("Please get the latest release {version}") \
.format(version='.'.join(latest[1])) .format(version=latest[1])
version_url = latest[2] version_url = latest[2]
self.label_welcome.setText( self.label_welcome.setText(
...@@ -38,6 +39,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): ...@@ -38,6 +39,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget):
<h1>Welcome to Cutecoin {version}</h1> <h1>Welcome to Cutecoin {version}</h1>
<h2>{version_info}</h2> <h2>{version_info}</h2>
<h3><a href={version_url}>Download link</a></h3> <h3><a href={version_url}>Download link</a></h3>
""").format(version=__version__, """).format(version=latest[1],
version_info=version_info, version_info=version_info,
version_url=version_url)) version_url=version_url))
...@@ -8,7 +8,7 @@ from ..gen_resources.about_uic import Ui_AboutPopup ...@@ -8,7 +8,7 @@ from ..gen_resources.about_uic import Ui_AboutPopup
from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QProgressBar, \ from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QProgressBar, \
QMessageBox, QLabel, QComboBox, QDialog, QApplication QMessageBox, QLabel, QComboBox, QDialog, QApplication
from PyQt5.QtCore import QSignalMapper, QObject, QThread, \ from PyQt5.QtCore import QSignalMapper, QObject, \
pyqtSlot, pyqtSignal, QDate, QDateTime, QTimer, QUrl, Qt pyqtSlot, pyqtSignal, QDate, QDateTime, QTimer, QUrl, Qt
from PyQt5.QtGui import QIcon, QDesktopServices, QPixmap from PyQt5.QtGui import QIcon, QDesktopServices, QPixmap
...@@ -24,6 +24,7 @@ from .preferences import PreferencesDialog ...@@ -24,6 +24,7 @@ from .preferences import PreferencesDialog
from .homescreen import HomeScreenWidget from .homescreen import HomeScreenWidget
from ..core.account import Account from ..core.account import Account
from ..__init__ import __version__ from ..__init__ import __version__
from . import toast
import logging import logging
import requests import requests
...@@ -59,13 +60,15 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -59,13 +60,15 @@ class MainWindow(QMainWindow, Ui_MainWindow):
""" """
Init Init
:param cutecoin.core.app.Application app: application :param cutecoin.core.app.Application app: application
:type: cutecoin.core.app.Application
""" """
# Set up the user interface from Designer. # Set up the user interface from Designer.
super().__init__() super().__init__()
self.setupUi(self) self.setupUi(self)
QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo")) QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo"))
self.app = app self.app = app
""":type: cutecoin.core.app.Application""" logging.debug(app.thread())
logging.debug(self.thread())
self.password_asker = None self.password_asker = None
self.initialized = False self.initialized = False
...@@ -75,6 +78,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -75,6 +78,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.busybar.setValue(-1) self.busybar.setValue(-1)
self.statusbar.addWidget(self.busybar) self.statusbar.addWidget(self.busybar)
self.busybar.hide() self.busybar.hide()
self.app.version_requested.connect(self.latest_version_requested)
self.app.get_last_version()
self.combo_referential = QComboBox(self) self.combo_referential = QComboBox(self)
self.combo_referential.setEnabled(False) self.combo_referential.setEnabled(False)
...@@ -172,7 +177,6 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -172,7 +177,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.status_label.setText(self.tr("Loading account {0}").format(account_name)) self.status_label.setText(self.tr("Loading account {0}").format(account_name))
self.loader.set_account_name(account_name) self.loader.set_account_name(account_name)
QTimer.singleShot(10, self.loader.load) QTimer.singleShot(10, self.loader.load)
#self.loader_thread.start(QThread.LowPriority)
self.homescreen.button_new.hide() self.homescreen.button_new.hide()
self.homescreen.button_import.hide() self.homescreen.button_import.hide()
...@@ -182,7 +186,11 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -182,7 +186,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.refresh() self.refresh()
self.busybar.hide() self.busybar.hide()
QApplication.setOverrideCursor(Qt.ArrowCursor) QApplication.setOverrideCursor(Qt.ArrowCursor)
self.app.disconnect() try:
self.app.disconnect()
except:
logging.debug("Disconnect of app failed")
self.app.monitor.start_network_watchers() self.app.monitor.start_network_watchers()
QApplication.processEvents() QApplication.processEvents()
...@@ -259,6 +267,22 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -259,6 +267,22 @@ class MainWindow(QMainWindow, Ui_MainWindow):
aboutUi.label.setText(text) aboutUi.label.setText(text)
aboutDialog.show() aboutDialog.show()
@pyqtSlot()
def latest_version_requested(self):
latest = self.app.available_version
version_info = ""
version_url = ""
logging.debug("Latest version requested")
if not latest[0]:
version_info = self.tr("Please get the latest release {version}") \
.format(version=latest[1])
version_url = latest[2]
toast.display("Cutecoin", """<p>{version_info}</br>
<a href={version_url}>Download link</a></p>""".format(
version_info=version_info,
version_url=version_url))
def refresh_wallets(self): def refresh_wallets(self):
currency_tab = self.currencies_tabwidget.currentWidget() currency_tab = self.currencies_tabwidget.currentWidget()
if currency_tab: if currency_tab:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment