|
Packit Service |
639700 |
// SPDX-License-Identifier: GPL-2.0+
|
|
Packit |
fabffb |
/* NetworkManager Applet -- allow user control over networking
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
* Copyright 2004 - 2014 Red Hat, Inc.
|
|
Packit |
fabffb |
* Copyright 2005 - 2008 Novell, Inc.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#ifndef APPLET_H
|
|
Packit |
fabffb |
#define APPLET_H
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <string.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <gtk/gtk.h>
|
|
Packit |
fabffb |
#include <gdk/gdkx.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <net/ethernet.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <libnotify/notify.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#ifdef WITH_APPINDICATOR
|
|
Packit |
fabffb |
#if USE_AYATANA_INDICATORS
|
|
Packit |
fabffb |
#include <libayatana-appindicator/app-indicator.h>
|
|
Packit |
fabffb |
#else
|
|
Packit |
fabffb |
#include <libappindicator/app-indicator.h>
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include <NetworkManager.h>
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#include "applet-agent.h"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#if WITH_WWAN
|
|
Packit |
fabffb |
#include <libmm-glib.h>
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#define NM_TYPE_APPLET (nma_get_type())
|
|
Packit |
fabffb |
#define NM_APPLET(object) (G_TYPE_CHECK_INSTANCE_CAST((object), NM_TYPE_APPLET, NMApplet))
|
|
Packit |
fabffb |
#define NM_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_APPLET, NMAppletClass))
|
|
Packit |
fabffb |
#define NM_IS_APPLET(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), NM_TYPE_APPLET))
|
|
Packit |
fabffb |
#define NM_IS_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_APPLET))
|
|
Packit |
fabffb |
#define NM_APPLET_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), NM_TYPE_APPLET, NMAppletClass))
|
|
Packit |
fabffb |
|
|
Packit Service |
639700 |
#ifdef WITH_APPINDICATOR
|
|
Packit Service |
639700 |
#define INDICATOR_ENABLED(a) ((a)->app_indicator)
|
|
Packit Service |
639700 |
#else
|
|
Packit Service |
639700 |
#define INDICATOR_ENABLED(a) (FALSE)
|
|
Packit Service |
639700 |
#endif /* WITH_APPINDICATOR */
|
|
Packit Service |
639700 |
|
|
Packit |
fabffb |
typedef struct {
|
|
Packit |
fabffb |
GApplicationClass parent_class;
|
|
Packit |
fabffb |
} NMAppletClass;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#define APPLET_PREFS_SCHEMA "org.gnome.nm-applet"
|
|
Packit |
fabffb |
#define PREF_DISABLE_CONNECTED_NOTIFICATIONS "disable-connected-notifications"
|
|
Packit |
fabffb |
#define PREF_DISABLE_DISCONNECTED_NOTIFICATIONS "disable-disconnected-notifications"
|
|
Packit |
fabffb |
#define PREF_DISABLE_VPN_NOTIFICATIONS "disable-vpn-notifications"
|
|
Packit |
fabffb |
#define PREF_DISABLE_WIFI_CREATE "disable-wifi-create"
|
|
Packit |
fabffb |
#define PREF_SUPPRESS_WIFI_NETWORKS_AVAILABLE "suppress-wireless-networks-available"
|
|
Packit |
fabffb |
#define PREF_SHOW_APPLET "show-applet"
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#define ICON_LAYER_LINK 0
|
|
Packit |
fabffb |
#define ICON_LAYER_VPN 1
|
|
Packit |
fabffb |
#define ICON_LAYER_MAX ICON_LAYER_VPN
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
typedef struct NMADeviceClass NMADeviceClass;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/*
|
|
Packit |
fabffb |
* Applet instance data
|
|
Packit |
fabffb |
*
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
typedef struct {
|
|
Packit |
fabffb |
GApplication parent;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMClient *nm_client;
|
|
Packit |
fabffb |
AppletAgent *agent;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GSettings *gsettings;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#if WITH_WWAN
|
|
Packit |
fabffb |
MMManager *mm1;
|
|
Packit |
fabffb |
gboolean mm1_running;
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
gboolean visible;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Permissions */
|
|
Packit |
fabffb |
NMClientPermissionResult permissions[NM_CLIENT_PERMISSION_LAST + 1];
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Device classes */
|
|
Packit |
fabffb |
NMADeviceClass *ethernet_class;
|
|
Packit |
fabffb |
NMADeviceClass *wifi_class;
|
|
Packit |
fabffb |
#if WITH_WWAN
|
|
Packit |
fabffb |
NMADeviceClass *broadband_class;
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
NMADeviceClass *bt_class;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Data model elements */
|
|
Packit |
fabffb |
guint update_icon_id;
|
|
Packit |
fabffb |
char * tip;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Animation stuff */
|
|
Packit |
fabffb |
int animation_step;
|
|
Packit |
fabffb |
guint animation_id;
|
|
Packit |
fabffb |
#define NUM_CONNECTING_FRAMES 11
|
|
Packit |
fabffb |
#define NUM_VPN_CONNECTING_FRAMES 14
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkIconTheme * icon_theme;
|
|
Packit |
fabffb |
GHashTable * icon_cache;
|
|
Packit |
fabffb |
GdkPixbuf * fallback_icon;
|
|
Packit |
fabffb |
int icon_size;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Active status icon pixbufs */
|
|
Packit |
fabffb |
GdkPixbuf * icon_layers[ICON_LAYER_MAX + 1];
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Direct UI elements */
|
|
Packit |
fabffb |
#ifdef WITH_APPINDICATOR
|
|
Packit |
fabffb |
AppIndicator * app_indicator;
|
|
Packit |
fabffb |
#endif
|
|
Packit |
fabffb |
guint update_menu_id;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkStatusIcon * status_icon;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * menu;
|
|
Packit |
fabffb |
GtkWidget * context_menu;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * notifications_enabled_item;
|
|
Packit |
fabffb |
guint notifications_enabled_toggled_id;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * networking_enabled_item;
|
|
Packit |
fabffb |
guint networking_enabled_toggled_id;
|
|
Packit |
fabffb |
GtkWidget * wifi_enabled_item;
|
|
Packit |
fabffb |
guint wifi_enabled_toggled_id;
|
|
Packit |
fabffb |
GtkWidget * wwan_enabled_item;
|
|
Packit |
fabffb |
guint wwan_enabled_toggled_id;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * info_menu_item;
|
|
Packit |
fabffb |
GtkWidget * connections_menu_item;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkBuilder * info_dialog_ui;
|
|
Packit |
fabffb |
NotifyNotification* notification;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Tracker objects for secrets requests */
|
|
Packit |
fabffb |
GSList * secrets_reqs;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
guint wifi_scan_id;
|
|
Packit |
fabffb |
} NMApplet;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
typedef void (*AppletNewAutoConnectionCallback) (NMConnection *connection,
|
|
Packit |
fabffb |
gboolean created,
|
|
Packit |
fabffb |
gboolean canceled,
|
|
Packit |
fabffb |
gpointer user_data);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
typedef struct _SecretsRequest SecretsRequest;
|
|
Packit |
fabffb |
typedef void (*SecretsRequestFreeFunc) (SecretsRequest *req);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
struct _SecretsRequest {
|
|
Packit |
fabffb |
size_t totsize;
|
|
Packit |
fabffb |
gpointer reqid;
|
|
Packit |
fabffb |
char *setting_name;
|
|
Packit |
fabffb |
char **hints;
|
|
Packit |
fabffb |
guint32 flags;
|
|
Packit |
fabffb |
NMApplet *applet;
|
|
Packit |
fabffb |
AppletAgentSecretsCallback callback;
|
|
Packit |
fabffb |
gpointer callback_data;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMConnection *connection;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Class-specific stuff */
|
|
Packit |
fabffb |
SecretsRequestFreeFunc free_func;
|
|
Packit |
fabffb |
};
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_secrets_request_set_free_func (SecretsRequest *req,
|
|
Packit |
fabffb |
SecretsRequestFreeFunc free_func);
|
|
Packit |
fabffb |
void applet_secrets_request_complete (SecretsRequest *req,
|
|
Packit |
fabffb |
GVariant *settings,
|
|
Packit |
fabffb |
GError *error);
|
|
Packit |
fabffb |
void applet_secrets_request_complete_setting (SecretsRequest *req,
|
|
Packit |
fabffb |
const char *setting_name,
|
|
Packit |
fabffb |
GError *error);
|
|
Packit |
fabffb |
void applet_secrets_request_free (SecretsRequest *req);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
struct NMADeviceClass {
|
|
Packit |
fabffb |
gboolean (*new_auto_connection) (NMDevice *device,
|
|
Packit |
fabffb |
gpointer user_data,
|
|
Packit |
fabffb |
AppletNewAutoConnectionCallback callback,
|
|
Packit |
fabffb |
gpointer callback_data);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void (*add_menu_item) (NMDevice *device,
|
|
Packit |
fabffb |
gboolean multiple_devices,
|
|
Packit |
fabffb |
const GPtrArray *connections,
|
|
Packit |
fabffb |
NMConnection *active,
|
|
Packit |
fabffb |
GtkWidget *menu,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void (*device_added) (NMDevice *device, NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void (*device_state_changed) (NMDevice *device,
|
|
Packit |
fabffb |
NMDeviceState new_state,
|
|
Packit |
fabffb |
NMDeviceState old_state,
|
|
Packit |
fabffb |
NMDeviceStateReason reason,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
void (*notify_connected) (NMDevice *device,
|
|
Packit |
fabffb |
const char *msg,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
/* Device class is expected to pass a *referenced* pixbuf, which will
|
|
Packit |
fabffb |
* be unrefed by the icon code. This allows the device class to create
|
|
Packit |
fabffb |
* a composited pixbuf if necessary and pass the reference to the caller.
|
|
Packit |
fabffb |
*/
|
|
Packit |
fabffb |
void (*get_icon) (NMDevice *device,
|
|
Packit |
fabffb |
NMDeviceState state,
|
|
Packit |
fabffb |
NMConnection *connection,
|
|
Packit |
fabffb |
GdkPixbuf **out_pixbuf,
|
|
Packit |
fabffb |
const char **out_icon_name,
|
|
Packit |
fabffb |
char **tip,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
size_t secrets_request_size;
|
|
Packit |
fabffb |
gboolean (*get_secrets) (SecretsRequest *req,
|
|
Packit |
fabffb |
GError **error);
|
|
Packit |
fabffb |
};
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GType nma_get_type (void);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMApplet *nm_applet_new (void);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_schedule_update_icon (NMApplet *applet);
|
|
Packit |
fabffb |
void applet_schedule_update_menu (NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMClient *applet_get_settings (NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GPtrArray *applet_get_all_connections (NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
gboolean nma_menu_device_check_unusable (NMDevice *device);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * nma_menu_device_get_menu_item (NMDevice *device,
|
|
Packit |
fabffb |
NMApplet *applet,
|
|
Packit |
fabffb |
const char *unavailable_msg);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_menu_item_activate_helper (NMDevice *device,
|
|
Packit |
fabffb |
NMConnection *connection,
|
|
Packit |
fabffb |
const char *specific_object,
|
|
Packit |
fabffb |
NMApplet *applet,
|
|
Packit |
fabffb |
gpointer dclass_data);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_menu_item_disconnect_helper (NMDevice *device,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_menu_item_add_complex_separator_helper (GtkWidget *menu,
|
|
Packit |
fabffb |
NMApplet *applet,
|
|
Packit |
fabffb |
const gchar* label);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget*
|
|
Packit |
fabffb |
applet_menu_item_create_device_item_helper (NMDevice *device,
|
|
Packit |
fabffb |
NMApplet *applet,
|
|
Packit |
fabffb |
const gchar *text);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMRemoteConnection *applet_get_exported_connection_for_device (NMDevice *device, NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
NMDevice *applet_get_device_for_connection (NMApplet *applet, NMConnection *connection);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_do_notify (NMApplet *applet,
|
|
Packit |
fabffb |
NotifyUrgency urgency,
|
|
Packit |
fabffb |
const char *summary,
|
|
Packit |
fabffb |
const char *message,
|
|
Packit |
fabffb |
const char *icon,
|
|
Packit |
fabffb |
const char *action1,
|
|
Packit |
fabffb |
const char *action1_label,
|
|
Packit |
fabffb |
NotifyActionCallback action1_cb,
|
|
Packit |
fabffb |
gpointer action1_user_data);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_do_notify_with_pref (NMApplet *applet,
|
|
Packit |
fabffb |
const char *summary,
|
|
Packit |
fabffb |
const char *message,
|
|
Packit |
fabffb |
const char *icon,
|
|
Packit |
fabffb |
const char *pref);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GtkWidget * applet_new_menu_item_helper (NMConnection *connection,
|
|
Packit |
fabffb |
NMConnection *active,
|
|
Packit |
fabffb |
gboolean add_active);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
GdkPixbuf * nma_icon_check_and_load (const char *name,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
gboolean applet_wifi_connect_to_hidden_network (NMApplet *applet);
|
|
Packit |
fabffb |
gboolean applet_wifi_create_wifi_network (NMApplet *applet);
|
|
Packit |
fabffb |
gboolean applet_wifi_can_create_wifi_network (NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
typedef enum {
|
|
Packit |
fabffb |
NMA_ADD_ACTIVE = 1,
|
|
Packit |
fabffb |
NMA_ADD_INACTIVE = 2,
|
|
Packit |
fabffb |
} NMAAddActiveInactiveEnum;
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_add_connection_items (NMDevice *device,
|
|
Packit |
fabffb |
const GPtrArray *connections,
|
|
Packit |
fabffb |
gboolean sensitive,
|
|
Packit |
fabffb |
NMConnection *active,
|
|
Packit |
fabffb |
NMAAddActiveInactiveEnum flag,
|
|
Packit |
fabffb |
GtkWidget *menu,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
void applet_add_default_connection_item (NMDevice *device,
|
|
Packit |
fabffb |
const char *label,
|
|
Packit |
fabffb |
gboolean sensitive,
|
|
Packit |
fabffb |
GtkWidget *menu,
|
|
Packit |
fabffb |
NMApplet *applet);
|
|
Packit |
fabffb |
|
|
Packit |
fabffb |
#endif
|