Add another status menu button icon for the disabled state
authorPhilipp Zabel <philipp.zabel@gmail.com>
Sun, 24 Jan 2010 22:48:46 +0000 (23:48 +0100)
committerPhilipp Zabel <philipp.zabel@gmail.com>
Mon, 25 Jan 2010 18:10:20 +0000 (19:10 +0100)
Makefile.am
data/statusarea_tor_disabled.png [new file with mode: 0644]
data/statusarea_tor_enabled.png [new file with mode: 0644]
data/tor_onion.png [deleted file]
src/status-area-applet-tor.vala

index c138b7e..a0aaec9 100644 (file)
@@ -14,7 +14,8 @@ hildonstatusmenudesktopentry_DATA = \
        data/status-area-applet-tor.desktop
 
 icon48_DATA = \
-       data/tor_onion.png
+       data/statusarea_tor_enabled.png \
+       data/statusarea_tor_disabled.png
 
 icon18_DATA = \
        data/statusarea_tor_connected.png \
diff --git a/data/statusarea_tor_disabled.png b/data/statusarea_tor_disabled.png
new file mode 100644 (file)
index 0000000..f3deccc
Binary files /dev/null and b/data/statusarea_tor_disabled.png differ
diff --git a/data/statusarea_tor_enabled.png b/data/statusarea_tor_enabled.png
new file mode 100644 (file)
index 0000000..29935de
Binary files /dev/null and b/data/statusarea_tor_enabled.png differ
diff --git a/data/tor_onion.png b/data/tor_onion.png
deleted file mode 100644 (file)
index 29935de..0000000
Binary files a/data/tor_onion.png and /dev/null differ
index b503232..8461817 100644 (file)
@@ -55,6 +55,8 @@ class TorStatusMenuItem : HD.StatusMenuItem {
        // Icons
        Gdk.Pixbuf icon_connecting;
        Gdk.Pixbuf icon_connected;
+       Gtk.Image icon_enabled;
+       Gtk.Image icon_disabled;
 
        // ConIc, GConf and Osso context
        Osso.Context osso;
@@ -74,36 +76,51 @@ class TorStatusMenuItem : HD.StatusMenuItem {
         * Update status area icon and status menu button value
         */
        private void update_status () {
-               Gtk.IconTheme icon_theme;
-               Gdk.Pixbuf pixbuf;
-
                if (tor_enabled && tor_connected && icon_connected == null) try {
-                       icon_theme = Gtk.IconTheme.get_default ();
-                       pixbuf = icon_theme.load_icon ("statusarea_tor_connected",
-                                                      STATUS_AREA_ICON_SIZE,
-                                                      Gtk.IconLookupFlags.NO_SVG);
+                       var icon_theme = Gtk.IconTheme.get_default ();
+                       var pixbuf = icon_theme.load_icon ("statusarea_tor_connected",
+                                                          STATUS_AREA_ICON_SIZE,
+                                                          Gtk.IconLookupFlags.NO_SVG);
                        icon_connected = pixbuf;
                } catch (Error e) {
                        error (e.message);
                }
                if (tor_enabled && !tor_connected && icon_connecting == null) try {
-                       icon_theme = Gtk.IconTheme.get_default ();
-                       pixbuf = icon_theme.load_icon ("statusarea_tor_connecting",
-                                                      STATUS_AREA_ICON_SIZE,
-                                                      Gtk.IconLookupFlags.NO_SVG);
+                       var icon_theme = Gtk.IconTheme.get_default ();
+                       var pixbuf = icon_theme.load_icon ("statusarea_tor_connecting",
+                                                          STATUS_AREA_ICON_SIZE,
+                                                          Gtk.IconLookupFlags.NO_SVG);
                        icon_connecting = pixbuf;
                } catch (Error e) {
                        error (e.message);
                }
+               if (tor_enabled && icon_enabled == null) try {
+                       var icon_theme = Gtk.IconTheme.get_default();
+                       var pixbuf = icon_theme.load_icon ("statusarea_tor_enabled",
+                                                          STATUS_MENU_ICON_SIZE,
+                                                          Gtk.IconLookupFlags.NO_SVG);
+                       icon_enabled = new Gtk.Image.from_pixbuf (pixbuf);
+               } catch (Error e) {
+                       error (e.message);
+               }
+               if (!tor_enabled && icon_disabled == null) try {
+                       var icon_theme = Gtk.IconTheme.get_default();
+                       var pixbuf = icon_theme.load_icon ("statusarea_tor_disabled",
+                                                          STATUS_MENU_ICON_SIZE,
+                                                          Gtk.IconLookupFlags.NO_SVG);
+                       icon_disabled = new Gtk.Image.from_pixbuf (pixbuf);
+               } catch (Error e) {
+                       error (e.message);
+               }
 
                if (conic_connected && tor_enabled) {
-                       pixbuf = tor_connected ? icon_connected : icon_connecting;
+                       set_status_area_icon (tor_connected ? icon_connected : icon_connecting);
                        button.set_value (tor_connected ? _("Connected") : _("Connecting ..."));
                } else {
-                       pixbuf = null;
+                       set_status_area_icon (null);
                        button.set_value (tor_enabled ? _("Disconnected") : _("Disabled"));
                }
-               set_status_area_icon (pixbuf);
+               button.set_image (tor_enabled ? icon_enabled : icon_disabled);
        }
 
        /**
@@ -344,25 +361,11 @@ class TorStatusMenuItem : HD.StatusMenuItem {
        }
 
        private void create_widgets () {
-               Gtk.IconTheme icon_theme;
-               Gdk.Pixbuf pixbuf;
-               Gtk.Image image;
-
                // Status menu button
                button = new Hildon.Button.with_text (Hildon.SizeType.FINGER_HEIGHT,
                                                      Hildon.ButtonArrangement.VERTICAL,
                                                      _("The Onion Router"),
                                                      tor_enabled ? _("Enabled") : _("Disabled"));
-               icon_theme = Gtk.IconTheme.get_default();
-               try {
-                       pixbuf = icon_theme.load_icon ("tor_onion",
-                                                      STATUS_MENU_ICON_SIZE,
-                                                      Gtk.IconLookupFlags.NO_SVG);
-                       image = new Gtk.Image.from_pixbuf (pixbuf);
-                       button.set_image (image);
-               } catch (Error e) {
-                       error (e.message);
-               }
                button.set_alignment (0.0f, 0.5f, 1.0f, 1.0f);
                button.set_style (Hildon.ButtonStyle.PICKER);
                button.clicked.connect (button_clicked_cb);