Browse Source

qml: ensure that the slider neutral position is in the middle of the screen

master
ThomasV 3 years ago
parent
commit
5b8fdacac9
  1. 5
      electrum/gui/qml/components/SwapDialog.qml
  2. 35
      electrum/gui/qml/qeswaphelper.py

5
electrum/gui/qml/components/SwapDialog.qml

@ -159,8 +159,9 @@ ElDialog {
id: swapslider
Layout.topMargin: constants.paddingLarge
Layout.bottomMargin: constants.paddingLarge
Layout.leftMargin: constants.paddingXXLarge
Layout.rightMargin: constants.paddingXXLarge
Layout.leftMargin: constants.paddingXXLarge + (parent.width - 2 * constants.paddingXXLarge) * swaphelper.leftVoid
Layout.rightMargin: constants.paddingXXLarge + (parent.width - 2 * constants.paddingXXLarge) * swaphelper.rightVoid
Layout.fillWidth: true
from: swaphelper.rangeMin

35
electrum/gui/qml/qeswaphelper.py

@ -45,6 +45,9 @@ class QESwapHelper(AuthMixin, QObject):
self._send_amount = 0
self._receive_amount = 0
self._leftVoid = 0
self._rightVoid = 0
walletChanged = pyqtSignal()
@pyqtProperty(QEWallet, notify=walletChanged)
def wallet(self):
@ -91,6 +94,28 @@ class QESwapHelper(AuthMixin, QObject):
self._rangeMax = rangeMax
self.rangeMaxChanged.emit()
leftVoidChanged = pyqtSignal()
@pyqtProperty(float, notify=leftVoidChanged)
def leftVoid(self):
return self._leftVoid
@leftVoid.setter
def leftVoid(self, leftVoid):
if self._leftVoid != leftVoid:
self._leftVoid = leftVoid
self.leftVoidChanged.emit()
rightVoidChanged = pyqtSignal()
@pyqtProperty(float, notify=rightVoidChanged)
def rightVoid(self):
return self._rightVoid
@rightVoid.setter
def rightVoid(self, rightVoid):
if self._rightVoid != rightVoid:
self._rightVoid = rightVoid
self.rightVoidChanged.emit()
validChanged = pyqtSignal()
@pyqtProperty(bool, notify=validChanged)
def valid(self):
@ -215,6 +240,16 @@ class QESwapHelper(AuthMixin, QObject):
self._logger.debug(f'Slider range {-reverse} - {forward}')
self.rangeMin = -reverse
self.rangeMax = forward
# percentage of void, right or left
if reverse < forward:
self.leftVoid = 0.5 * (forward - reverse) / forward
self.rightVoid = 0
elif reverse > forward:
self.leftVoid = 0
self.rightVoid = - 0.5 * (forward - reverse) / reverse
else:
self.leftVoid = 0
self.rightVoid = 0
self.swap_slider_moved()

Loading…
Cancel
Save