diff --git a/src/sakia/gui/dialogs/connection_cfg/view.py b/src/sakia/gui/dialogs/connection_cfg/view.py index 102b266f765b712bf9b3961752fda71d72bcf709..9444351e5b68a297c46ff7cc9218616df007e3d7 100644 --- a/src/sakia/gui/dialogs/connection_cfg/view.py +++ b/src/sakia/gui/dialogs/connection_cfg/view.py @@ -1,3 +1,4 @@ +import asyncio from PyQt5.QtWidgets import QDialog from PyQt5.QtCore import pyqtSignal, Qt, QElapsedTimer, QDateTime, QCoreApplication from .connection_cfg_uic import Ui_ConnectionConfigurationDialog @@ -5,6 +6,7 @@ from .congratulation_uic import Ui_CongratulationPopup from duniterpy.key import SigningKey, ScryptParams from math import ceil, log from sakia.gui.widgets import toast +from sakia.decorators import asyncify from sakia.helpers import timestamp_to_dhms from sakia.gui.widgets.dialogs import dialog_async_exec, QAsyncMessageBox from sakia.constants import ROOT_SERVERS, G1_LICENCE @@ -156,18 +158,18 @@ class ConnectionConfigView(QDialog, Ui_ConnectionConfigurationDialog): :param float ratio: the ratio of progress of current step (between 0 and 1) :return: """ - QCoreApplication.processEvents() - value = self.progress_bar.value() - next_value = value + 1000000*step_ratio SMOOTHING_FACTOR = 0.005 - speed_percent_by_ms = (next_value - value) / self.timer.elapsed() - self.average_speed = SMOOTHING_FACTOR * self.last_speed + (1 - SMOOTHING_FACTOR) * self.average_speed - remaining = (self.progress_bar.maximum() - next_value) / self.average_speed - self.last_speed = speed_percent_by_ms - displayed_remaining_time = QDateTime.fromTime_t(remaining).toUTC().toString("hh:mm:ss") - self.progress_bar.setFormat(self.tr("{0} scs remaining...".format(displayed_remaining_time))) - self.progress_bar.setValue(next_value) - self.timer.restart() + if self.timer.elapsed() > 0: + value = self.progress_bar.value() + next_value = value + 1000000*step_ratio + speed_percent_by_ms = (next_value - value) / self.timer.elapsed() + self.average_speed = SMOOTHING_FACTOR * self.last_speed + (1 - SMOOTHING_FACTOR) * self.average_speed + remaining = (self.progress_bar.maximum() - next_value) / self.average_speed + self.last_speed = speed_percent_by_ms + displayed_remaining_time = QDateTime.fromTime_t(remaining).toUTC().toString("hh:mm:ss") + self.progress_bar.setFormat(self.tr("{0} remaining...".format(displayed_remaining_time))) + self.progress_bar.setValue(next_value) + self.timer.restart() def set_progress_steps(self, steps): self.progress_bar.setValue(0)