[Pkg-mozext-commits] [firetray] 271/399: display IM icon when IM enabled

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:57 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch dfsg-clean
in repository firetray.

commit ceba669bcd14b402693e91a53f8b21c40708a912
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sat Aug 4 16:29:44 2012 +0200

    display IM icon when IM enabled
---
 README.md                                          |    2 +-
 .../icons/gnome/22x22/status/user-available.png    |    1 +
 .../linux/icons/gnome/22x22/status/user-away.png   |    1 +
 .../linux/icons/gnome/22x22/status/user-busy.png   |    1 +
 .../icons/gnome/22x22/status/user-offline.png      |    1 +
 src/chrome/skin/pidgin-tray-available.png          |  Bin 0 -> 1050 bytes
 src/chrome/skin/pidgin-tray-away.png               |  Bin 0 -> 1066 bytes
 src/chrome/skin/pidgin-tray-busy.png               |  Bin 0 -> 1052 bytes
 src/chrome/skin/pidgin-tray-offline.png            |  Bin 0 -> 1115 bytes
 src/modules/FiretrayInstantMessaging.jsm           |    5 ++
 src/modules/FiretrayMessaging.jsm                  |    2 -
 src/modules/ctypes/linux/gio.jsm                   |    1 +
 src/modules/linux/FiretrayIMStatusIcon.jsm         |   65 ++++++++++++++++++++
 src/modules/linux/FiretrayStatusIcon.jsm           |    1 +
 14 files changed, 77 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 2a543cf..400f9b4 100644
--- a/README.md
+++ b/README.md
@@ -89,4 +89,4 @@ Acknowledgment
   [Nils Maier](https://addons.mozilla.org/fr/firefox/addon/minimizetotray-revived/
   "MinToTrayR addon page").
 * kind support from Neil Deaking, Bobby Holley
-
+* default icons borrowed from Mozilla and Pidgin
diff --git a/src/chrome/skin/linux/icons/gnome/22x22/status/user-available.png b/src/chrome/skin/linux/icons/gnome/22x22/status/user-available.png
new file mode 120000
index 0000000..3329bf8
--- /dev/null
+++ b/src/chrome/skin/linux/icons/gnome/22x22/status/user-available.png
@@ -0,0 +1 @@
+../../../../../pidgin-tray-available.png
\ No newline at end of file
diff --git a/src/chrome/skin/linux/icons/gnome/22x22/status/user-away.png b/src/chrome/skin/linux/icons/gnome/22x22/status/user-away.png
new file mode 120000
index 0000000..5580cb1
--- /dev/null
+++ b/src/chrome/skin/linux/icons/gnome/22x22/status/user-away.png
@@ -0,0 +1 @@
+../../../../../pidgin-tray-away.png
\ No newline at end of file
diff --git a/src/chrome/skin/linux/icons/gnome/22x22/status/user-busy.png b/src/chrome/skin/linux/icons/gnome/22x22/status/user-busy.png
new file mode 120000
index 0000000..84c85ee
--- /dev/null
+++ b/src/chrome/skin/linux/icons/gnome/22x22/status/user-busy.png
@@ -0,0 +1 @@
+../../../../../pidgin-tray-busy.png
\ No newline at end of file
diff --git a/src/chrome/skin/linux/icons/gnome/22x22/status/user-offline.png b/src/chrome/skin/linux/icons/gnome/22x22/status/user-offline.png
new file mode 120000
index 0000000..5df30b0
--- /dev/null
+++ b/src/chrome/skin/linux/icons/gnome/22x22/status/user-offline.png
@@ -0,0 +1 @@
+../../../../../pidgin-tray-offline.png
\ No newline at end of file
diff --git a/src/chrome/skin/pidgin-tray-available.png b/src/chrome/skin/pidgin-tray-available.png
new file mode 100644
index 0000000..ce085bb
Binary files /dev/null and b/src/chrome/skin/pidgin-tray-available.png differ
diff --git a/src/chrome/skin/pidgin-tray-away.png b/src/chrome/skin/pidgin-tray-away.png
new file mode 100644
index 0000000..ab8b077
Binary files /dev/null and b/src/chrome/skin/pidgin-tray-away.png differ
diff --git a/src/chrome/skin/pidgin-tray-busy.png b/src/chrome/skin/pidgin-tray-busy.png
new file mode 100644
index 0000000..aa8982b
Binary files /dev/null and b/src/chrome/skin/pidgin-tray-busy.png differ
diff --git a/src/chrome/skin/pidgin-tray-offline.png b/src/chrome/skin/pidgin-tray-offline.png
new file mode 100644
index 0000000..dd22b27
Binary files /dev/null and b/src/chrome/skin/pidgin-tray-offline.png differ
diff --git a/src/modules/FiretrayInstantMessaging.jsm b/src/modules/FiretrayInstantMessaging.jsm
index c485850..1870569 100644
--- a/src/modules/FiretrayInstantMessaging.jsm
+++ b/src/modules/FiretrayInstantMessaging.jsm
@@ -7,6 +7,7 @@ const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 Cu.import("resource://firetray/commons.js");
+Cu.import("resource://firetray/linux/FiretrayIMStatusIcon.jsm");
 
 firetray.InstantMessaging = {
   initialized: false,
@@ -26,6 +27,8 @@ firetray.InstantMessaging = {
       "visited-status-resolution"
     ]);
 
+    firetray.IMStatusIcon.init();
+
     this.initialized = true;
   },
 
@@ -33,6 +36,8 @@ firetray.InstantMessaging = {
     if (!this.initialized) return;
     F.LOG("Disabling InstantMessaging");
 
+    firetray.IMStatusIcon.shutdown();
+
     firetray.Utils.removeAllObservers(firetray.InstantMessaging);
 
     this.initialized = false;
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index 6ffda93..61e98d5 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -54,10 +54,8 @@ firetray.Messaging = {
     F.LOG("Disabling Messaging");
 
     firetray.InstantMessaging.shutdown();
-    F.LOG("HI THERE");
 
     MailServices.mailSession.RemoveFolderListener(this.mailSessionListener);
-    firetray.Handler.setIconImageDefault();
 
     firetray.Utils.removeAllObservers(firetray.Messaging);
 
diff --git a/src/modules/ctypes/linux/gio.jsm b/src/modules/ctypes/linux/gio.jsm
index f61f47e..c41aca7 100644
--- a/src/modules/ctypes/linux/gio.jsm
+++ b/src/modules/ctypes/linux/gio.jsm
@@ -16,6 +16,7 @@ function gio_defines(lib) {
   this.GIcon = ctypes.StructType("GIcon");
   this.GThemedIcon = ctypes.StructType("GThemedIcon");
 
+  lib.lazy_bind("g_themed_icon_new", this.GIcon.ptr, ctypes.char.ptr);
   lib.lazy_bind("g_themed_icon_new_from_names", this.GIcon.ptr, ctypes.char.ptr.ptr, ctypes.int);
 
 }
diff --git a/src/modules/linux/FiretrayIMStatusIcon.jsm b/src/modules/linux/FiretrayIMStatusIcon.jsm
new file mode 100644
index 0000000..14f5af4
--- /dev/null
+++ b/src/modules/linux/FiretrayIMStatusIcon.jsm
@@ -0,0 +1,65 @@
+/* -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+
+var EXPORTED_SYMBOLS = [ "firetray" ];
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/ctypes.jsm");
+Cu.import("resource://firetray/ctypes/linux/gobject.jsm");
+Cu.import("resource://firetray/ctypes/linux/gio.jsm");
+Cu.import("resource://firetray/ctypes/linux/gtk.jsm");
+Cu.import("resource://firetray/commons.js");
+
+if ("undefined" == typeof(firetray.Handler))
+  F.ERROR("This module MUST be imported from/after FiretrayHandler !");
+
+
+firetray.IMStatusIcon = {
+  GTK_THEME_ICON_PATH: null,
+
+  initialized: false,
+  trayIcon: null,
+  themedIcons: {
+    "user-available": null,
+    "user-away": null,
+    "user-busy": null,
+    "user-offline": null
+  },
+
+  init: function() {
+    if (!firetray.Handler.inMailApp) throw "IMStatusIcon for mail app only";
+    if (!firetray.GtkIcons.initialized) throw "GtkIcons should have been initialized by StatusIcon";
+
+    this.trayIcon = gtk.gtk_status_icon_new();
+    this.loadThemedIcons();
+    this.setIconImageFromGIcon(this.themedIcons["user-offline"]);
+
+    this.initialized = true;
+    return true;
+  },
+
+  shutdown: function() {
+    gtk.gtk_status_icon_set_visible(this.trayIcon, false);
+    // FIXME: tryCloseLibs should be done by Handler only, submodules should
+    // just pass the imported ctypes modules to it
+    // firetray.Utils.tryCloseLibs([gobject, gio, gtk]);
+    this.initialized = false;
+  },
+
+  loadThemedIcons: function() {
+    for (let name in this.themedIcons)
+      this.themedIcons[name] = gio.g_themed_icon_new(name);
+  },
+
+  setIconImageFromGIcon: function(gicon) {
+    if (!firetray.IMStatusIcon.trayIcon || !gicon)
+      F.ERROR("Icon missing");
+    F.LOG(gicon);
+    gtk.gtk_status_icon_set_from_gicon(firetray.IMStatusIcon.trayIcon, gicon);
+  }
+
+}; // firetray.IMStatusIcon
diff --git a/src/modules/linux/FiretrayStatusIcon.jsm b/src/modules/linux/FiretrayStatusIcon.jsm
index 4a7d9db..d38362f 100644
--- a/src/modules/linux/FiretrayStatusIcon.jsm
+++ b/src/modules/linux/FiretrayStatusIcon.jsm
@@ -61,6 +61,7 @@ firetray.StatusIcon = {
   shutdown: function() {
     F.LOG("Disabling StatusIcon");
     firetray.PopupMenu.shutdown();
+    // FIXME: should destroy/hide icon here
     firetray.GtkIcons.shutdown();
     firetray.Utils.tryCloseLibs([cairo, gobject, gdk, gio, gtk, pango, pangocairo]);
     this.initialized = false;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git



More information about the Pkg-mozext-commits mailing list