[gnome-panel/wip/gnome-3.10+] clock: use GNetworkMonitor
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/gnome-3.10+] clock: use GNetworkMonitor
- Date: Sat, 11 Oct 2014 20:36:40 +0000 (UTC)
commit 3281bbd48e1323972fdd9dc01b0ec7c4a3b80eea
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sat Oct 11 23:19:37 2014 +0300
clock: use GNetworkMonitor
applets/clock/clock-location.c | 117 +++++++++-------------------------------
configure.ac | 12 ----
2 files changed, 25 insertions(+), 104 deletions(-)
---
diff --git a/applets/clock/clock-location.c b/applets/clock/clock-location.c
index d2d0e58..e291615 100644
--- a/applets/clock/clock-location.c
+++ b/applets/clock/clock-location.c
@@ -16,10 +16,6 @@
#include <glib.h>
#include <gio/gio.h>
-#ifdef HAVE_NETWORK_MANAGER
-#include <NetworkManager/NetworkManager.h>
-#endif
-
#include "clock-location.h"
#include "clock-marshallers.h"
#include "set-timezone.h"
@@ -56,9 +52,8 @@ enum {
static guint location_signals[LAST_SIGNAL] = { 0 };
static void clock_location_finalize (GObject *);
+static gboolean update_weather_info (ClockLocation *loc);
static void setup_weather_updates (ClockLocation *loc);
-static void add_to_network_monitor (ClockLocation *loc);
-static void remove_from_network_monitor (ClockLocation *loc);
#define PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CLOCK_LOCATION_TYPE, ClockLocationPrivate))
@@ -129,22 +124,44 @@ clock_location_class_init (ClockLocationClass *this_class)
}
static void
+network_changed (GNetworkMonitor *monitor,
+ gboolean available,
+ ClockLocation *loc)
+{
+ ClockLocationPrivate *priv = PRIVATE (loc);
+
+ if (available) {
+ priv->weather_retry_time = WEATHER_TIMEOUT_BASE;
+ update_weather_info (loc);
+ }
+}
+
+static void
clock_location_init (ClockLocation *this)
{
ClockLocationPrivate *priv = PRIVATE (this);
+ GNetworkMonitor *monitor;
priv->systz = system_timezone_new ();
priv->latitude = 0;
priv->longitude = 0;
+
+ monitor = g_network_monitor_get_default();
+ g_signal_connect (monitor, "network-changed",
+ G_CALLBACK (network_changed), this);
}
static void
clock_location_finalize (GObject *g_obj)
{
ClockLocationPrivate *priv = PRIVATE (g_obj);
+ GNetworkMonitor *monitor;
- remove_from_network_monitor (CLOCK_LOCATION (g_obj));
+ monitor = g_network_monitor_get_default ();
+ g_signal_handlers_disconnect_by_func (monitor,
+ G_CALLBACK (network_changed),
+ CLOCK_LOCATION (g_obj));
g_free (priv->name);
@@ -397,8 +414,6 @@ clock_location_get_weather_info (ClockLocation *loc)
return priv->weather_info;
}
-static gboolean update_weather_info (gpointer data);
-
static void
set_weather_update_timeout (ClockLocation *loc)
{
@@ -440,9 +455,8 @@ weather_info_updated (GWeatherInfo *info, gpointer data)
}
static gboolean
-update_weather_info (gpointer data)
+update_weather_info (ClockLocation *loc)
{
- ClockLocation *loc = data;
ClockLocationPrivate *priv = PRIVATE (loc);
gweather_info_abort (priv->weather_info);
@@ -451,84 +465,6 @@ update_weather_info (gpointer data)
return TRUE;
}
-static GList *locations = NULL;
-
-#ifdef HAVE_NETWORK_MANAGER
-static void
-update_weather_infos (void)
-{
- GList *l;
-
- for (l = locations; l; l = l->next) {
- ClockLocation *loc = l->data;
- ClockLocationPrivate *priv = PRIVATE (loc);
-
- priv->weather_retry_time = WEATHER_TIMEOUT_BASE;
- update_weather_info (loc);
- }
-}
-
-static void
-network_monitor_signal (GDBusProxy *proxy,
- const gchar *sender_name,
- const gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
-{
- if (g_str_equal (signal_name, "StateChanged")) {
- if (g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(u)"))) {
- guint32 state;
-
- g_variant_get (parameters, "(u)", &state);
-
- if (state == NM_STATE_CONNECTED) {
- update_weather_infos ();
- }
- }
- }
-}
-
-static void
-setup_network_monitor (void)
-{
- static GDBusProxy *proxy;
- GError *error = NULL;
-
- if (proxy == NULL) {
- proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
- NULL, NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE,
- NULL, &error);
-
- if (proxy == NULL) {
- g_warning ("Couldn't create NetworkManager proxy: %s",
- error->message);
- g_error_free (error);
- return;
- }
-
- g_signal_connect (proxy, "g-signal", G_CALLBACK (network_monitor_signal), NULL);
- }
-}
-#endif
-
-static void
-add_to_network_monitor (ClockLocation *loc)
-{
-#ifdef HAVE_NETWORK_MANAGER
- setup_network_monitor ();
-#endif
-
- if (!g_list_find (locations, loc))
- locations = g_list_prepend (locations, loc);
-}
-
-static void
-remove_from_network_monitor (ClockLocation *loc)
-{
- locations = g_list_remove (locations, loc);
-}
-
static void
setup_weather_updates (ClockLocation *loc)
{
@@ -547,7 +483,4 @@ setup_weather_updates (ClockLocation *loc)
G_CALLBACK (weather_info_updated), loc);
set_weather_update_timeout (loc);
-
- add_to_network_monitor (loc);
}
-
diff --git a/configure.ac b/configure.ac
index 9db247a..f6de9a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -164,17 +164,6 @@ AM_CONDITIONAL(ENABLE_EDS, test "$enable_eds" = "yes")
AC_SUBST(CLOCK_EDS_ICONDIR)
DBUS_REQUIRED=1.1.2
-NETWORK_MANAGER_REQUIRED=0.6
-
-AC_ARG_ENABLE(network_manager, AS_HELP_STRING([--enable-network-manager],[Enable NetworkManager support
(auto)]),enable_network_manager=$enableval,enable_network_manager=auto)
-if test "x$enable_network_manager" = "xno" ; then
- HAVE_NETWORK_MANAGER=no
-else
- PKG_CHECK_MODULES(NETWORK_MANAGER, NetworkManager >= $NETWORK_MANAGER_REQUIRED, HAVE_NETWORK_MANAGER=yes,
HAVE_NETWORK_MANAGER=no)
-fi
-if test "x$HAVE_NETWORK_MANAGER" = "xyes" ; then
- AC_DEFINE(HAVE_NETWORK_MANAGER, 1, [Defined if NetworkManager support is enabled])
-fi
# For the run dialog
gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE
@@ -311,7 +300,6 @@ echo "
Evolution-Data-Server support: ${enable_eds}
Telepathy-Glib support: ${HAVE_TELEPATHY_GLIB}
- NetworkManager support: ${HAVE_NETWORK_MANAGER}
XRandr support: ${have_randr}
Build introspection support: ${found_introspection}
Build gtk-doc documentation: ${enable_gtk_doc}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]