aboutsummaryrefslogtreecommitdiff
path: root/src/backend-dbus/backend-dbus.c
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2013-03-22 16:34:34 -0500
committerCharles Kerr <charles.kerr@canonical.com>2013-03-22 16:34:34 -0500
commitae39f7001e5603010afc02de29787ade6d48ef14 (patch)
tree74c303a86603134fc2b86d1c428475a60e455e3f /src/backend-dbus/backend-dbus.c
parente4e327f139dd139a91893fc7f19061a37d4b47e9 (diff)
downloadayatana-indicator-session-ae39f7001e5603010afc02de29787ade6d48ef14.tar.gz
ayatana-indicator-session-ae39f7001e5603010afc02de29787ade6d48ef14.tar.bz2
ayatana-indicator-session-ae39f7001e5603010afc02de29787ade6d48ef14.zip
port indicator-session to GMenu/cmake. Code coverage increased from 0% to 95.4%.
Diffstat (limited to 'src/backend-dbus/backend-dbus.c')
-rw-r--r--src/backend-dbus/backend-dbus.c117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/backend-dbus/backend-dbus.c b/src/backend-dbus/backend-dbus.c
new file mode 100644
index 0000000..ea8f0ec
--- /dev/null
+++ b/src/backend-dbus/backend-dbus.c
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * Authors:
+ * Charles Kerr <charles.kerr@canonical.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "actions.h"
+#include "backend-dbus.h"
+#include "guest.h"
+#include "users.h"
+#include "utils.h"
+
+struct dbus_world_data
+{
+ GCancellable * cancellable;
+ IndicatorSessionActionsDbus * actions;
+ IndicatorSessionUsersDbus * users;
+ IndicatorSessionGuestDbus * guest;
+};
+
+static void
+on_proxies_ready (ConsoleKitManager * ck_manager,
+ Accounts * account_manager,
+ DisplayManagerSeat * dm_seat,
+ ConsoleKitSeat * ck_seat,
+ ConsoleKitSession * ck_session,
+ AccountsUser * active_user G_GNUC_UNUSED,
+ const GError * error,
+ gpointer gdata)
+{
+ struct dbus_world_data * data = gdata;
+
+ if (error == NULL)
+ {
+ if (data->actions != NULL)
+ indicator_session_actions_dbus_set_proxies (data->actions,
+ ck_manager,
+ dm_seat,
+ ck_seat);
+
+ if (data->users != NULL)
+ indicator_session_users_dbus_set_proxies (data->users,
+ account_manager,
+ dm_seat,
+ ck_seat);
+
+ if (data->guest != NULL)
+ indicator_session_guest_dbus_set_proxies (data->guest,
+ account_manager,
+ dm_seat,
+ ck_seat,
+ ck_session);
+ }
+
+ g_free (data);
+}
+
+/***
+****
+***/
+
+void
+backend_get (GCancellable * cancellable,
+ IndicatorSessionActions ** setme_actions,
+ IndicatorSessionUsers ** setme_users,
+ IndicatorSessionGuest ** setme_guest)
+{
+ struct dbus_world_data * data;
+
+ data = g_new0 (struct dbus_world_data, 1);
+
+ if (setme_actions != NULL)
+ {
+ IndicatorSessionActions * actions;
+ actions = indicator_session_actions_dbus_new ();
+ data->actions = INDICATOR_SESSION_ACTIONS_DBUS (actions);
+
+ *setme_actions = actions;
+ }
+
+ if (setme_users != NULL)
+ {
+ IndicatorSessionUsers * users;
+ users = indicator_session_users_dbus_new ();
+ data->users = INDICATOR_SESSION_USERS_DBUS (users);
+
+ *setme_users = users;
+ }
+
+ if (setme_guest != NULL)
+ {
+ IndicatorSessionGuest * guest;
+ guest = indicator_session_guest_dbus_new ();
+ data->guest = INDICATOR_SESSION_GUEST_DBUS (guest);
+
+ *setme_guest = guest;
+ }
+
+ data->cancellable = g_object_ref (cancellable);
+
+ indicator_session_util_get_session_proxies (on_proxies_ready,
+ data->cancellable,
+ data);
+}