network: make ModemManager dependency optional
There probably won't be a stable ModemManager 0.7 release before GNOME 3.8, so make support for it optional (Mostly based on Aleksander's original patch.) https://bugzilla.gnome.org/show_bug.cgi?id=688238
This commit is contained in:
parent
99dd4951e6
commit
4ef8ae4017
4 changed files with 55 additions and 6 deletions
21
configure.ac
21
configure.ac
|
@ -101,7 +101,6 @@ POLKIT_REQUIRED_VERSION=0.103
|
|||
GSD_REQUIRED_VERSION=3.7.3
|
||||
NETWORK_MANAGER_REQUIRED_VERSION=0.9.7.995
|
||||
NETWORK_MANAGER_APPLET_REQUIRED_VERSION=0.9.7.995
|
||||
MODEM_MANAGER_REQUIRED_VERSION=0.7
|
||||
LIBNOTIFY_REQUIRED_VERSION=0.7.3
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.7.5
|
||||
SCHEMAS_REQUIRED_VERSION=3.7.2.2
|
||||
|
@ -185,11 +184,10 @@ PKG_CHECK_MODULES(NETWORK_MANAGER, NetworkManager >= $NETWORK_MANAGER_REQUIRED_V
|
|||
libnm-glib >= $NETWORK_MANAGER_REQUIRED_VERSION
|
||||
libnm-glib-vpn >= $NETWORK_MANAGER_REQUIRED_VERSION
|
||||
libnm-util >= $NETWORK_MANAGER_REQUIRED_VERSION
|
||||
libnm-gtk >= $NETWORK_MANAGER_APPLET_REQUIRED_VERSION
|
||||
mm-glib >= $MODEM_MANAGER_REQUIRED_VERSION,
|
||||
libnm-gtk >= $NETWORK_MANAGER_APPLET_REQUIRED_VERSION,
|
||||
[have_networkmanager=yes], have_networkmanager=no)
|
||||
if test "x$have_networkmanager" = xno ; then
|
||||
AC_MSG_WARN(*** Network panel will not be built (NetworkManager or ModemManager not found) ***)
|
||||
AC_MSG_WARN(*** Network panel will not be built (NetworkManager not found) ***)
|
||||
else
|
||||
AC_DEFINE(BUILD_NETWORK, 1, [Define to 1 to build the Network panel])
|
||||
fi
|
||||
|
@ -202,6 +200,16 @@ if test x${have_networkmanager} = xyes; then
|
|||
AC_SUBST(NM_VPN_MODULE_DIR)
|
||||
fi
|
||||
|
||||
# Check for libmm-glib for ModemManager1 support
|
||||
PKG_CHECK_MODULES(MM_GLIB, mm-glib,
|
||||
[have_libmm_glib=yes], have_libmm_glib=no)
|
||||
if test "x$have_libmm_glib" = xno ; then
|
||||
AC_MSG_WARN(*** Network panel will not be built with ModemManager1 support (libmm-glib not found) ***)
|
||||
else
|
||||
AC_DEFINE(HAVE_MM_GLIB, 1, [Defined if libmm-glib is available])
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_MM_GLIB, test "x$have_libmm_glib" = "xyes")
|
||||
|
||||
# Check for gnome-bluetooth
|
||||
PKG_CHECK_MODULES(BLUETOOTH, $COMMON_MODULES gnome-bluetooth-1.0 >= 3.5.5,
|
||||
[have_bluetooth=yes], have_bluetooth=no)
|
||||
|
@ -535,6 +543,11 @@ if test "x$have_networkmanager" = "xyes"; then
|
|||
else
|
||||
AC_MSG_NOTICE([ Network panel disabled])
|
||||
fi
|
||||
if test "x$have_libmm_glib" = "xyes"; then
|
||||
AC_MSG_NOTICE([** ModemManager1 support (Network panel)])
|
||||
else
|
||||
AC_MSG_NOTICE([ ModemManager1 support disabled])
|
||||
fi
|
||||
if test "x$have_bluetooth" = "xyes"; then
|
||||
AC_MSG_NOTICE([** gnome-bluetooth (Bluetooth panel)])
|
||||
else
|
||||
|
|
|
@ -54,6 +54,11 @@ libnetwork_la_LIBADD = $(PANEL_LIBS) $(NETWORK_PANEL_LIBS) $(NETWORK_MANAGER_LIB
|
|||
|
||||
libnetwork_la_LDFLAGS = $(PANEL_LDFLAGS)
|
||||
|
||||
if HAVE_MM_GLIB
|
||||
libnetwork_la_CPPFLAGS = $(MM_GLIB_CFLAGS)
|
||||
libnetwork_la_LIBADD += $(MM_GLIB_LIBS)
|
||||
endif
|
||||
|
||||
resource_files = $(shell glib-compile-resources --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/network.gresource.xml)
|
||||
cc-network-resources.c: network.gresource.xml $(resource_files)
|
||||
$(AM_V_GEN) glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name cc_network $<
|
||||
|
|
|
@ -51,7 +51,9 @@
|
|||
#include "network-dialogs.h"
|
||||
#include "connection-editor/net-connection-editor.h"
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
#include <libmm-glib.h>
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
CC_PANEL_REGISTER (CcNetworkPanel, cc_network_panel)
|
||||
|
||||
|
@ -73,7 +75,9 @@ struct _CcNetworkPanelPrivate
|
|||
GtkBuilder *builder;
|
||||
GtkWidget *treeview;
|
||||
NMClient *client;
|
||||
#if HAVE_MM_GLIB
|
||||
MMManager *modem_manager;
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
NMRemoteSettings *remote_settings;
|
||||
gboolean updating_device;
|
||||
guint nm_warning_idle;
|
||||
|
@ -216,7 +220,9 @@ cc_network_panel_dispose (GObject *object)
|
|||
g_clear_object (&priv->cancellable);
|
||||
g_clear_object (&priv->builder);
|
||||
g_clear_object (&priv->client);
|
||||
#if HAVE_MM_GLIB
|
||||
g_clear_object (&priv->modem_manager);
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
g_clear_object (&priv->remote_settings);
|
||||
g_clear_object (&priv->kill_switch_header);
|
||||
g_clear_object (&priv->rfkill);
|
||||
|
@ -686,6 +692,7 @@ panel_add_device (CcNetworkPanel *panel, NMDevice *device)
|
|||
"id", nm_device_get_udi (device),
|
||||
NULL);
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
if (type == NM_DEVICE_TYPE_MODEM &&
|
||||
g_str_has_prefix (nm_device_get_udi (device), "/org/freedesktop/ModemManager1/Modem/")) {
|
||||
GDBusObject *modem_object;
|
||||
|
@ -710,6 +717,7 @@ panel_add_device (CcNetworkPanel *panel, NMDevice *device)
|
|||
NULL);
|
||||
g_object_unref (modem_object);
|
||||
}
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
/* add as a panel */
|
||||
if (device_g_type != NET_TYPE_DEVICE) {
|
||||
|
@ -1326,7 +1334,9 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
|||
GtkTreeSelection *selection;
|
||||
GtkWidget *widget;
|
||||
GtkWidget *toplevel;
|
||||
#if HAVE_MM_GLIB
|
||||
GDBusConnection *system_bus;
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
panel->priv = NETWORK_PANEL_PRIVATE (panel);
|
||||
g_resources_register (cc_network_get_resource ());
|
||||
|
@ -1376,6 +1386,7 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
|||
g_signal_connect (panel->priv->client, "device-removed",
|
||||
G_CALLBACK (device_removed_cb), panel);
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
/* Setup ModemManager client */
|
||||
system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
|
||||
if (system_bus == NULL) {
|
||||
|
@ -1394,6 +1405,7 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
|||
}
|
||||
g_object_unref (system_bus);
|
||||
}
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
|
||||
"add_toolbutton"));
|
||||
|
|
|
@ -34,7 +34,9 @@
|
|||
#include "panel-common.h"
|
||||
#include "network-dialogs.h"
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
#include <libmm-glib.h>
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
#include "net-device-mobile.h"
|
||||
|
||||
|
@ -52,7 +54,7 @@ struct _NetDeviceMobilePrivate
|
|||
GDBusProxy *cdma_proxy;
|
||||
|
||||
/* New MM >= 0.7 support */
|
||||
MMObject *mm_object;
|
||||
gpointer mm_object;
|
||||
guint operator_name_updated;
|
||||
|
||||
NMAMobileProvidersDatabase *mpd;
|
||||
|
@ -247,6 +249,7 @@ device_mobile_refresh_equipment_id (NetDeviceMobile *device_mobile)
|
|||
{
|
||||
const gchar *equipment_id = NULL;
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
if (device_mobile->priv->mm_object != NULL) {
|
||||
MMModem *modem;
|
||||
|
||||
|
@ -261,10 +264,13 @@ device_mobile_refresh_equipment_id (NetDeviceMobile *device_mobile)
|
|||
equipment_id);
|
||||
}
|
||||
} else {
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
/* Assume old MM handling */
|
||||
equipment_id = g_object_get_data (G_OBJECT (device_mobile),
|
||||
"ControlCenter::EquipmentIdentifier");
|
||||
#if HAVE_MM_GLIB
|
||||
}
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
panel_set_device_widget_details (device_mobile->priv->builder, "imei", equipment_id);
|
||||
}
|
||||
|
@ -312,6 +318,7 @@ device_mobile_find_provider (NetDeviceMobile *device_mobile,
|
|||
static void
|
||||
device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
|
||||
{
|
||||
#if HAVE_MM_GLIB
|
||||
if (device_mobile->priv->mm_object != NULL) {
|
||||
gchar *operator_name = NULL;
|
||||
MMModem3gpp *modem_3gpp;
|
||||
|
@ -351,6 +358,7 @@ device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
|
|||
panel_set_device_widget_details (device_mobile->priv->builder, "provider", operator_name);
|
||||
g_free (operator_name);
|
||||
} else {
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
const gchar *gsm;
|
||||
const gchar *cdma;
|
||||
|
||||
|
@ -373,7 +381,9 @@ device_mobile_refresh_operator_name (NetDeviceMobile *device_mobile)
|
|||
} else {
|
||||
panel_set_device_widget_details (device_mobile->priv->builder, "provider", NULL);
|
||||
}
|
||||
#if HAVE_MM_GLIB
|
||||
}
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -780,6 +790,8 @@ net_device_mobile_constructed (GObject *object)
|
|||
nm_device_mobile_refresh_ui (device_mobile);
|
||||
}
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
|
||||
static void
|
||||
operator_name_updated (MMModem3gpp *modem_3gpp_iface,
|
||||
GParamSpec *pspec,
|
||||
|
@ -811,6 +823,7 @@ net_device_mobile_setup_modem_object (NetDeviceMobile *self)
|
|||
}
|
||||
}
|
||||
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
static void
|
||||
net_device_mobile_get_property (GObject *device_,
|
||||
|
@ -841,7 +854,9 @@ net_device_mobile_set_property (GObject *device_,
|
|||
switch (prop_id) {
|
||||
case PROP_MODEM_OBJECT:
|
||||
self->priv->mm_object = g_value_dup_object (value);
|
||||
#if HAVE_MM_GLIB
|
||||
net_device_mobile_setup_modem_object (self);
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (self, prop_id, pspec);
|
||||
|
@ -859,12 +874,16 @@ net_device_mobile_dispose (GObject *object)
|
|||
g_clear_object (&priv->gsm_proxy);
|
||||
g_clear_object (&priv->cdma_proxy);
|
||||
|
||||
#if HAVE_MM_GLIB
|
||||
if (priv->operator_name_updated) {
|
||||
g_assert (priv->mm_object != NULL);
|
||||
g_signal_handler_disconnect (mm_object_peek_modem_3gpp (priv->mm_object), priv->operator_name_updated);
|
||||
priv->operator_name_updated = 0;
|
||||
}
|
||||
#endif /* HAVE_MM_GLIB */
|
||||
|
||||
g_clear_object (&priv->mm_object);
|
||||
|
||||
g_clear_object (&priv->mpd);
|
||||
|
||||
G_OBJECT_CLASS (net_device_mobile_parent_class)->dispose (object);
|
||||
|
@ -890,7 +909,7 @@ net_device_mobile_class_init (NetDeviceMobileClass *klass)
|
|||
g_param_spec_object ("mm-object",
|
||||
NULL,
|
||||
NULL,
|
||||
MM_TYPE_OBJECT,
|
||||
G_TYPE_OBJECT,
|
||||
G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue