changeset 1787:d678b723460b

quick_frontend, primitivus: mechanism to signal a new message reception when the window is hidden (even if the message is actually displayed): - for now this is only used by Libervia
author souliane <souliane@mailoo.org>
date Tue, 12 Jan 2016 17:54:38 +0100
parents 104874018ab0
children 526e4145253c
files frontends/src/primitivus/primitivus frontends/src/quick_frontend/quick_app.py
diffstat 2 files changed, 21 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/src/primitivus/primitivus	Tue Jan 12 17:52:17 2016 +0100
+++ b/frontends/src/primitivus/primitivus	Tue Jan 12 17:54:38 2016 +0100
@@ -479,6 +479,13 @@
         else:
             del self._early_popup
 
+    def isHidden(self):
+        """Tells if the frontend window is hidden.
+
+        @return bool
+        """
+        return False  # FIXME: implement when necessary
+
     def alert(self, title, message):
         """Shortcut method to create an alert message
 
--- a/frontends/src/quick_frontend/quick_app.py	Tue Jan 12 17:52:17 2016 +0100
+++ b/frontends/src/quick_frontend/quick_app.py	Tue Jan 12 17:54:38 2016 +0100
@@ -516,7 +516,10 @@
                 if isinstance(widget, quick_chat.QuickChat) and widget.manageMessage(from_jid, type_):
                     visible = True
                     break
-            if not visible:
+            if visible:
+                if self.isHidden():  # the window is hidden
+                    self.updateAlertsCounter(extra_inc=1)
+            else:
                 contact_list.addAlert(from_jid.bare if type_ == C.MESS_TYPE_GROUPCHAT else from_jid)
 
     def sendMessage(self, to_jid, message, subject='', mess_type="auto", extra={}, callback=None, errback=None, profile_key=C.PROF_KEY_NONE):
@@ -701,9 +704,17 @@
         """Callback used when an action result in a progress id"""
         log.info(u"Progress ID received: {}".format(progress_id))
 
-    def updateAlertsCounter(self):
-        """Update the over whole alerts counter
+    def isHidden(self):
+        """Tells if the frontend window is hidden.
 
+        @return bool
+        """
+        raise NotImplementedError
+
+    def updateAlertsCounter(self, extra_inc=0):
+        """Update the over whole alerts counter.
+
+        @param extra_inc (int): extra counter
         """
         pass