Updating branch refs/heads/master
to 4cab780af66d7fe6c66ff3d3937db2ab5795003d (commit)
from 3b330fa77b47566d565203c29b718d2a530dfb4d (commit)
commit 4cab780af66d7fe6c66ff3d3937db2ab5795003d
Author: Christian Dywan <[email protected]>
Date: Mon Aug 15 23:18:40 2011 +0200
Refactor notifications and mockup unread notification
Define POSTLER_PERSISTENCE to enable an icon with a badge on
a system with persistent notifications. The result appears to
be unreadably small by default and is not used in the tray.
postler/postler-app.vala | 32 +++++++++++++++++++++++++++++---
postler/postler-bureau.vala | 3 ++-
postler/postler-service.vala | 5 +----
3 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/postler/postler-app.vala b/postler/postler-app.vala
index e37f44b..7c221c9 100644
--- a/postler/postler-app.vala
+++ b/postler/postler-app.vala
@@ -219,7 +219,8 @@ public class Postler.App : Unique.App {
}
static Notify.Notification? notification = null;
- public static void send_notification (string message) {
+ static bool persistence = false;
+ public static void send_notification (string message, int count, string
sound) {
try {
if (!Notify.is_initted ()) {
if (!Notify.init ("Postler"))
@@ -229,8 +230,7 @@ public class Postler.App : Unique.App {
notification = (Notify.Notification)GLib.Object.new (
typeof (Notify.Notification),
"summary", GLib.Environment.get_application_name (),
- "body", message,
- "icon-name", STOCK_INTERNET_MAIL);
+ "body", message);
unowned List<string> caps = Notify.get_server_caps ();
foreach (string cap in caps) {
@@ -241,16 +241,42 @@ public class Postler.App : Unique.App {
}
else if (cap == "sound")
notification.set_hint_uint32 ("suppress-sound", 1);
+ else if (cap == "persistence") {
+ if (Environment.get_variable ("POSTLER_PERSISTENCE")
!= null)
+ persistence = true;
+ }
}
+ if (!persistence)
+ notification.set ("icon-name", STOCK_INTERNET_MAIL);
}
else
notification.set ("body", message);
+ if (persistence) {
+#if HAVE_GTK3
+ var icon = new Gtk.NumerableIcon (new GLib.ThemedIcon
(STOCK_INTERNET_MAIL));
+ icon.count = count;
+ var icon_theme = Gtk.IconTheme.get_default ();
+ var icon_info = icon_theme.lookup_by_gicon (icon, 48, 0);
+ var pixbuf = icon_info.load_icon ();
+ notification.set_image_from_pixbuf (pixbuf);
+#else
+ notification.set ("icon-name", STOCK_INTERNET_MAIL);
+#endif
+ }
notification.show ();
+ Postler.App.play_sound (sound);
} catch (Error error) {
GLib.warning (_("Failed to send notification: %s"), error.message);
}
}
+ public static void send_unread_notification (int count) {
+ send_notification (ngettext ("You have %d new message",
+ "You have %d new messages", count).printf
(count),
+ count,
+ "message-new-email");
+ }
+
static Canberra.Context sound_context = null;
public static void play_sound (string sound) {
if (sound_context == null)
diff --git a/postler/postler-bureau.vala b/postler/postler-bureau.vala
index b42475f..daeb3c9 100644
--- a/postler/postler-bureau.vala
+++ b/postler/postler-bureau.vala
@@ -957,7 +957,7 @@ public class Postler.Bureau : Gtk.Window {
if (Environment.get_variable ("POSTLER_MOCKUP") != null) {
progressbar.fraction = 0.7;
- statuslabel.label = "Receiving 4 of 7 - Inbox";
+ statuslabel.label = _("Receiving %d of %d in %s").printf (4, 7,
_("Inbox"));
statusitem.get_child ().show ();
search.set_text ("elementary");
search_apply ();
@@ -987,6 +987,7 @@ public class Postler.Bureau : Gtk.Window {
content.display (message);
}
catch (GLib.Error error) { GLib.error ("Failed to render
mockup"); }
+ Postler.App.send_unread_notification (4);
});
}
}
diff --git a/postler/postler-service.vala b/postler/postler-service.vala
index dd0b325..bcc9e2c 100644
--- a/postler/postler-service.vala
+++ b/postler/postler-service.vala
@@ -475,10 +475,7 @@ namespace Postler {
try {
if ((unread = unread_messages ("%/INBOX/%")[0]) >
0) {
GLib.debug ("Done: %d new messages",
(int)unread);
- Postler.App.send_notification (
- ngettext ("You have %d new message",
- "You have %d new messages",
(int)unread).printf ((int)unread));
- Postler.App.play_sound ("message-new-email");
+ Postler.App.send_unread_notification
((int)unread);
}
}
catch (GLib.Error error) {
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits