changeset 1229:03661d1b216a

primitivus: implement "Show offline contacts" parameter (sync with "DISCONNECTED_HIDE" action key)
author souliane <souliane@mailoo.org>
date Mon, 06 Oct 2014 12:44:58 +0200
parents 2e1b4e7c8eb8
children 3abc6563a0d2
files frontends/src/primitivus/contact_list.py frontends/src/quick_frontend/quick_app.py frontends/src/quick_frontend/quick_contact_list.py
diffstat 3 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/src/primitivus/contact_list.py	Mon Oct 06 12:22:14 2014 +0200
+++ b/frontends/src/primitivus/contact_list.py	Mon Oct 06 12:44:58 2014 +0200
@@ -24,7 +24,7 @@
 from sat_frontends.quick_frontend.quick_utils import unescapePrivate
 from sat_frontends.tools.jid import JID
 from sat_frontends.primitivus.status import StatusBar
-from sat_frontends.primitivus.constants import Const
+from sat_frontends.primitivus.constants import Const as C
 from sat_frontends.primitivus.keys import action_key_map as a_key
 from sat.core import log as logging
 log = logging.getLogger(__name__)
@@ -41,6 +41,7 @@
         self.alert_jid=set()
         self.show_status = False
         self.show_disconnected = False
+        self.host.bridge.asyncGetParamA(C.SHOW_OFFLINE_CONTACTS, "General", profile_key=host.profile, callback=self.showOfflineContacts)
 
         #we now build the widget
         self.host.status_bar = StatusBar(host)
@@ -77,8 +78,7 @@
             self.show_status = not self.show_status
             self.update()
         elif key == a_key['DISCONNECTED_HIDE']: #user wants to (un)hide disconnected contacts
-            self.show_disconnected = not self.show_disconnected
-            self.update()
+            self.host.bridge.setParam(C.SHOW_OFFLINE_CONTACTS, C.str(not self.show_disconnected), "General", profile_key=self.host.profile)
         return super(ContactList, self).keypress(size, key)
 
     def __contains__(self, jid):
@@ -100,7 +100,7 @@
                     # contact group
                     value = widget.getValue()
                 elif isinstance(widget, sat_widgets.SelectableText):
-                    if  widget.data.startswith(Const.PRIVATE_PREFIX):
+                    if  widget.data.startswith(C.PRIVATE_PREFIX):
                         # muc private dialog
                         value = widget.getValue()
                     else:
@@ -150,7 +150,7 @@
         widgets = [] #list of built widgets
 
         for contact in contacts:
-            if contact.startswith(Const.PRIVATE_PREFIX):
+            if contact.startswith(C.PRIVATE_PREFIX):
                 contact_disp = ('alert' if contact in self.alert_jid else "show_normal", unescapePrivate(contact))
                 show_icon = ''
                 status = ''
@@ -165,7 +165,7 @@
                 if (not self.show_disconnected and show == "unavailable"
                     and not contact in self.alert_jid and contact != self.selected):
                     continue
-                show_icon, show_attr = Const.PRESENCE.get(show, ('', 'default'))
+                show_icon, show_attr = C.PRESENCE.get(show, ('', 'default'))
                 contact_disp = ('alert' if contact in self.alert_jid else show_attr, nick or name or jid.node or jid.bare)
             display = [ show_icon + " " , contact_disp]
             if self.show_status:
@@ -319,3 +319,10 @@
         #XXX: for the moment, we ignore presence updates for special entities
         if jid.bare not in self.specials:
             QuickContactList.updatePresence(self, jid, show, priority, statuses)
+
+    def showOfflineContacts(self, show):
+        show = C.bool(show)
+        if self.show_disconnected == show:
+            return
+        self.show_disconnected = show
+        self.update()
--- a/frontends/src/quick_frontend/quick_app.py	Mon Oct 06 12:22:14 2014 +0200
+++ b/frontends/src/quick_frontend/quick_app.py	Mon Oct 06 12:44:58 2014 +0200
@@ -556,6 +556,8 @@
             self.profiles[profile]['whoami'] = JID(value)
         elif (namespace, name) == ("Misc", "Watched"):
             self.profiles[profile]['watched'] = value.split()
+        elif (namespace, name) == ('General', C.SHOW_OFFLINE_CONTACTS):
+            self.contact_list.showOfflineContacts(C.bool(value))
 
     def contactDeletedHandler(self, jid, profile):
         target = JID(jid)
--- a/frontends/src/quick_frontend/quick_contact_list.py	Mon Oct 06 12:22:14 2014 +0200
+++ b/frontends/src/quick_frontend/quick_contact_list.py	Mon Oct 06 12:44:58 2014 +0200
@@ -104,3 +104,6 @@
         self.setCache(jid, 'prority', priority)
         self.setCache(jid, 'statuses', statuses)
         self.update_jid(jid)
+
+    def showOfflineContacts(self, show):
+        pass