Skip to content

Commit

Permalink
Avoid not required notifiers in config when they are not needed.
Browse files Browse the repository at this point in the history
  • Loading branch information
Littlesat committed May 10, 2024
1 parent aca5e87 commit 9a08bec
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 21 deletions.
33 changes: 19 additions & 14 deletions lib/python/Components/ConfigList.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ def isChanged(self):

return is_changed

def getNotifierNeeded(self):
current = self.getCurrent()
return current and current[1].getNotifierNeeded()

def pageUp(self):
if self.instance is not None:
self.instance.moveSelection(self.instance.pageUp)
Expand Down Expand Up @@ -172,10 +176,7 @@ def __init__(self, list, session=None, on_change=None):
if "key_pvr" not in self:
self["key_pvr"] = StaticText(_("PVR"))

if on_change is not None:
self.__changed = on_change
else:
self.__changed = lambda: None
self.on_change = on_change

if self.handleInputHelpers not in self["config"].onSelectionChanged:
self["config"].onSelectionChanged.append(self.handleInputHelpers)
Expand Down Expand Up @@ -234,46 +235,50 @@ def keyOK(self):

def keyLeft(self):
self["config"].handleKey(KEY_LEFT)
self.__changed()
self.changed()

def keyRight(self):
self["config"].handleKey(KEY_RIGHT)
self.__changed()
self.changed()

def keyHome(self):
self["config"].handleKey(KEY_HOME)
self.__changed()
self.changed()

def keyEnd(self):
self["config"].handleKey(KEY_END)
self.__changed()
self.changed()

def keyDelete(self):
self["config"].handleKey(KEY_DELETE)
self.__changed()
self.changed()

def keyBackspace(self):
self["config"].handleKey(KEY_BACKSPACE)
self.__changed()
self.changed()

def keyToggleOW(self):
self["config"].handleKey(KEY_TOGGLEOW)
self.__changed()
self.changed()

def keyGotAscii(self):
self["config"].handleKey(KEY_ASCII)
self.__changed()
self.changed()

def keyNumberGlobal(self, number):
self["config"].handleKey(KEY_0 + number)
self.__changed()
self.changed()

def keyPageDown(self):
self["config"].pageDown()

def keyPageUp(self):
self["config"].pageUp()

def changed(self):
if self.on_change and self["config"].getNotifierNeeded():
self.on_change()

def keyFile(self):
selection = self["config"].getCurrent()
if selection and selection[1].enabled and hasattr(selection[1], "description"):
Expand All @@ -288,7 +293,7 @@ def handleKeyFileCallback(self, answer):
if answer:
self["config"].getCurrent()[1].value = answer[1]
self["config"].invalidateCurrent()
self.__changed()
self.changed()

def saveAll(self):
for x in self["config"].list:
Expand Down
19 changes: 12 additions & 7 deletions lib/python/Components/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ def setValue(self, value):
self._value = value
self.changed()

def getNotifierNeeded(self):
if self.prev_value != self.value:
self.prev_value = self.value
return True

def getValue(self):
return self._value

Expand Down Expand Up @@ -329,7 +334,7 @@ def __init__(self, choices, default=None, graphic=True):
default = self.choices.default()

self._descr = None
self.default = self._value = self.last_value = default
self.default = self._value = self.last_value = self.prev_value = default
self.graphic = graphic

def setChoices(self, choices, default=None):
Expand Down Expand Up @@ -440,7 +445,7 @@ class ConfigBoolean(ConfigElement):
def __init__(self, default=False, descriptions={False: _("false"), True: _("true")}, graphic=True):
ConfigElement.__init__(self)
self.descriptions = descriptions
self.value = self.last_value = self.default = default
self.value = self.last_value = self.prev_value = self.default = default
self.graphic = graphic

def handleKey(self, key):
Expand Down Expand Up @@ -513,7 +518,7 @@ def __init__(self, default, formatstring, increment=86400):
ConfigElement.__init__(self)
self.increment = increment
self.formatstring = formatstring
self.value = self.last_value = self.default = int(default)
self.value = self.last_value = self.prev_value = self.default = int(default)

def handleKey(self, key):
if key == KEY_LEFT:
Expand Down Expand Up @@ -554,7 +559,7 @@ def __init__(self, seperator, limits, default, censor_char=""):
self.limits = limits
self.censor_char = censor_char

self.last_value = self.default = default
self.last_value = self.prev_value = self.default = default
self.value = copy.copy(default)
self.endNotifier = None

Expand Down Expand Up @@ -915,7 +920,7 @@ def __init__(self, default="", fixed_size=True, visible_width=False):
self.offset = 0
self.overwrite = fixed_size
self.help_window = None
self.value = self.last_value = self.default = default
self.value = self.last_value = self.prev_value = self.default = default

def validateMarker(self):
textlen = len(self.text)
Expand Down Expand Up @@ -1258,7 +1263,7 @@ def onSelect(self, session):
class ConfigSlider(ConfigElement):
def __init__(self, default=0, increment=1, limits=(0, 100)):
ConfigElement.__init__(self)
self.value = self.last_value = self.default = default
self.value = self.last_value = self.prev_value = self.default = default
self.min = limits[0]
self.max = limits[1]
self.increment = increment
Expand Down Expand Up @@ -1322,7 +1327,7 @@ def __init__(self, choices, default=[]):
default = []
self.pos = -1
default.sort()
self.last_value = self.default = default
self.last_value = self.default = self.prev_value = default
self.value = default[:]

def toggleChoice(self, choice):
Expand Down

0 comments on commit 9a08bec

Please sign in to comment.