[balsa/gtk3] Report network availability with a readable time



commit 643e7a12160812fabf708efc0cc9131db666507d
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sun May 26 21:58:08 2013 -0400

    Report network availability with a readable time
    
        * src/main-window.c: report network availability with a
        human-readable time; combine two idle callbacks into one.

 ChangeLog         |    5 +++++
 src/main-window.c |   51 ++++++++++++++++++++++++++-------------------------
 2 files changed, 31 insertions(+), 25 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 8561bfe..83f090f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-05-26  Peter Bloomfield
+
+       * src/main-window.c: report network availability with a
+       human-readable time; combine two idle callbacks into one.
+
 2013-05-22  Peter Bloomfield
 
        Cast new mailboxes as LibBalsaMailbox, to reduce static and
diff --git a/src/main-window.c b/src/main-window.c
index 696c2c5..dac33a2 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -990,10 +990,21 @@ balsa_window_class_init(BalsaWindowClass * klass)
 }
 
 static gboolean bw_change_connection_status_idle(gpointer data);
-#define PRINT_NETWORK_STATUS(available)                 \
-    g_printerr("Network is %s (%u)\n",                  \
-               (available) ? "available" : "unavailable", \
-               (guint) time(NULL))
+static void
+print_network_status(gboolean available)
+{
+    GDateTime *datetime;
+    gchar *datetime_string;
+
+    datetime = g_date_time_new_now_local();
+    datetime_string = g_date_time_format(datetime, "%c");
+    g_date_time_unref(datetime);
+
+    g_printerr("Network is %s (%s)\n",
+               available ? "available  " : "unavailable",
+               datetime_string);
+    g_free(datetime_string);
+}
 
 static void
 bw_network_changed_cb(GNetworkMonitor * monitor,
@@ -1004,9 +1015,8 @@ bw_network_changed_cb(GNetworkMonitor * monitor,
 
     if (window->network_available != available) {
         window->network_available = available;
-        PRINT_NETWORK_STATUS(available);
-        g_idle_add(bw_change_connection_status_idle,
-                   GINT_TO_POINTER(available));
+        print_network_status(available);
+        g_idle_add(bw_change_connection_status_idle, window);
     }
 }
 
@@ -1018,7 +1028,7 @@ balsa_window_init(BalsaWindow * window)
     monitor = g_network_monitor_get_default();
     window->network_available =
         g_network_monitor_get_network_available(monitor);
-    PRINT_NETWORK_STATUS(window->network_available);
+    print_network_status(window->network_available);
     g_signal_connect(monitor, "network-changed",
                      G_CALLBACK(bw_network_changed_cb), window);
     window->last_check_time = 0;
@@ -3651,32 +3661,23 @@ mw_mbox_change_connection_status(GtkTreeModel * model, GtkTreePath * path,
 }
 
 static gboolean
-check_new_messages_idle(gpointer user_data)
+bw_change_connection_status_idle(gpointer user_data)
 {
-    check_new_messages_cb(NULL, balsa_app.main_window);
-    return FALSE;
-}
-
-static gboolean
-bw_change_connection_status_idle(gpointer arg)
-{
-    gboolean is_connected = GPOINTER_TO_INT(arg);
+    BalsaWindow *window = user_data;
 
     gtk_tree_model_foreach(GTK_TREE_MODEL(balsa_app.mblist_tree_store),
-                          (GtkTreeModelForeachFunc)
-                           mw_mbox_change_connection_status,
-                           NULL);
+                           (GtkTreeModelForeachFunc)
+                           mw_mbox_change_connection_status, NULL);
 
     /* GLib timeouts are now triggered by g_get_monotonic_time(),
      * which doesn't increment while we're suspended, so we must
      * check for ourselves whether a scheduled mail check was
      * missed. */
-    if (is_connected &&
-        difftime(time(NULL), balsa_app.main_window->last_check_time) >
+    if (window->network_available &&
+        difftime(time(NULL), window->last_check_time) >
         balsa_app.check_mail_timer * 60) {
-        /* Check the mail now, and reset the timer, remembering it
-           must be called from a main thread. */
-        g_idle_add(check_new_messages_idle, NULL);
+        /* Check the mail now, and reset the timer */
+        check_new_messages_cb(NULL, window);
     }
 
     return FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]