1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2 of the License, or (at your option) any later version.
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the
15 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 * Boston, MA 02110-1301 USA.
18 * Copyright 2008 - 2010 Red Hat, Inc.
19 * Copyright 2008 Novell, Inc.
22 #include "nm-default.h"
24 #include "nm-vpn-plugin-ui-interface.h"
27 interface_init (gpointer g_iface)
29 static gboolean initialized = FALSE;
37 * NMVPNPluginUiInterface:name:
39 * Short display name of the VPN plugin.
41 g_object_interface_install_property (g_iface,
42 g_param_spec_string (NM_VPN_PLUGIN_UI_INTERFACE_NAME, "", "",
45 G_PARAM_STATIC_STRINGS));
48 * NMVPNPluginUiInterface:desc:
50 * Longer description of the VPN plugin.
52 g_object_interface_install_property (g_iface,
53 g_param_spec_string (NM_VPN_PLUGIN_UI_INTERFACE_DESC, "", "",
56 G_PARAM_STATIC_STRINGS));
59 * NMVPNPluginUiInterface:service:
61 * D-Bus service name of the plugin's VPN service.
63 g_object_interface_install_property (g_iface,
64 g_param_spec_string (NM_VPN_PLUGIN_UI_INTERFACE_SERVICE, "", "",
67 G_PARAM_STATIC_STRINGS));
74 nm_vpn_plugin_ui_interface_get_type (void)
76 static GType vpn_plugin_ui_interface_type = 0;
78 if (!vpn_plugin_ui_interface_type) {
79 const GTypeInfo vpn_plugin_ui_interface_info = {
80 sizeof (NMVpnPluginUiInterface), /* class_size */
81 interface_init, /* base_init */
82 NULL, /* base_finalize */
84 NULL, /* class_finalize */
85 NULL, /* class_data */
91 vpn_plugin_ui_interface_type = g_type_register_static (G_TYPE_INTERFACE,
92 "NMVpnPluginUiInterface",
93 &vpn_plugin_ui_interface_info,
96 g_type_interface_add_prerequisite (vpn_plugin_ui_interface_type, G_TYPE_OBJECT);
99 return vpn_plugin_ui_interface_type;
103 NMVpnPluginUiWidgetInterface *
104 nm_vpn_plugin_ui_interface_ui_factory (NMVpnPluginUiInterface *iface,
105 NMConnection *connection,
108 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_INTERFACE (iface), NULL);
110 return NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->ui_factory (iface, connection, error);
114 nm_vpn_plugin_ui_interface_get_capabilities (NMVpnPluginUiInterface *iface)
116 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_INTERFACE (iface), 0);
118 return NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->get_capabilities (iface);
122 nm_vpn_plugin_ui_interface_import (NMVpnPluginUiInterface *iface,
126 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_INTERFACE (iface), NULL);
128 if (nm_vpn_plugin_ui_interface_get_capabilities (iface) & NM_VPN_PLUGIN_UI_CAPABILITY_IMPORT) {
129 g_return_val_if_fail (NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->import_from_file != NULL, NULL);
130 return NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->import_from_file (iface, path, error);
136 nm_vpn_plugin_ui_interface_export (NMVpnPluginUiInterface *iface,
138 NMConnection *connection,
141 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_INTERFACE (iface), FALSE);
143 if (nm_vpn_plugin_ui_interface_get_capabilities (iface) & NM_VPN_PLUGIN_UI_CAPABILITY_EXPORT) {
144 g_return_val_if_fail (NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->export_to_file != NULL, FALSE);
145 return NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->export_to_file (iface, path, connection, error);
151 nm_vpn_plugin_ui_interface_get_suggested_name (NMVpnPluginUiInterface *iface,
152 NMConnection *connection)
154 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_INTERFACE (iface), NULL);
156 if (NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->get_suggested_name)
157 return NM_VPN_PLUGIN_UI_INTERFACE_GET_INTERFACE (iface)->get_suggested_name (iface, connection);
162 nm_vpn_plugin_ui_interface_delete_connection (NMVpnPluginUiInterface *iface,
163 NMConnection *connection,
166 /* Deprecated and no longer used */
172 widget_interface_init (gpointer g_iface)
174 GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
175 static gboolean initialized = FALSE;
181 g_signal_new ("changed",
184 G_STRUCT_OFFSET (NMVpnPluginUiWidgetInterface, changed),
186 g_cclosure_marshal_VOID__VOID,
193 nm_vpn_plugin_ui_widget_interface_get_type (void)
195 static GType vpn_plugin_ui_widget_interface_type = 0;
197 if (!vpn_plugin_ui_widget_interface_type) {
198 const GTypeInfo vpn_plugin_ui_widget_interface_info = {
199 sizeof (NMVpnPluginUiWidgetInterface), /* class_size */
200 widget_interface_init, /* base_init */
201 NULL, /* base_finalize */
203 NULL, /* class_finalize */
204 NULL, /* class_data */
210 vpn_plugin_ui_widget_interface_type = g_type_register_static (G_TYPE_INTERFACE,
211 "NMVpnPluginUiWidgetInterface",
212 &vpn_plugin_ui_widget_interface_info,
215 g_type_interface_add_prerequisite (vpn_plugin_ui_widget_interface_type, G_TYPE_OBJECT);
218 return vpn_plugin_ui_widget_interface_type;
222 nm_vpn_plugin_ui_widget_interface_get_widget (NMVpnPluginUiWidgetInterface *iface)
224 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_WIDGET_INTERFACE (iface), NULL);
226 return NM_VPN_PLUGIN_UI_WIDGET_INTERFACE_GET_INTERFACE (iface)->get_widget (iface);
230 nm_vpn_plugin_ui_widget_interface_update_connection (NMVpnPluginUiWidgetInterface *iface,
231 NMConnection *connection,
234 g_return_val_if_fail (NM_IS_VPN_PLUGIN_UI_WIDGET_INTERFACE (iface), FALSE);
237 g_return_val_if_fail (*error == NULL, FALSE);
239 return NM_VPN_PLUGIN_UI_WIDGET_INTERFACE_GET_INTERFACE (iface)->update_connection (iface, connection, error);
243 nm_vpn_plugin_ui_widget_interface_save_secrets (NMVpnPluginUiWidgetInterface *iface,
244 NMConnection *connection,
247 /* Deprecated and no longer used */