[gnome-control-center] online-accounts: Open specific account through command-line
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] online-accounts: Open specific account through command-line
- Date: Sat, 18 Aug 2012 19:19:25 +0000 (UTC)
commit 7dd80f829fe092e25d8e8c8bb64eb467c30db3be
Author: Matthew Barnes <mbarnes redhat com>
Date: Wed Aug 8 17:04:39 2012 +0200
online-accounts: Open specific account through command-line
Bump required GOA version to 3.5.90 for goa_client_lookup_by_id.
Fixes: https://bugzilla.gnome.org/680458
configure.ac | 2 +-
panels/online-accounts/cc-online-accounts-panel.c | 66 +++++++++++++++++++++
2 files changed, 67 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 0503d57..80b70b9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -107,7 +107,7 @@ GNOME_DESKTOP_REQUIRED_VERSION=3.5.3
SCHEMAS_REQUIRED_VERSION=3.5.3
LIBWACOM_REQUIRED_VERSION=0.5
CLUTTER_REQUIRED_VERSION=1.11.3
-GOA_REQUIRED_VERSION=3.5.1
+GOA_REQUIRED_VERSION=3.5.90
COMMON_MODULES="gtk+-3.0 >= $GTK_REQUIRED_VERSION
glib-2.0 >= $GLIB_REQUIRED_VERSION
diff --git a/panels/online-accounts/cc-online-accounts-panel.c b/panels/online-accounts/cc-online-accounts-panel.c
index 7aeaa94..05477d6 100644
--- a/panels/online-accounts/cc-online-accounts-panel.c
+++ b/panels/online-accounts/cc-online-accounts-panel.c
@@ -74,8 +74,39 @@ static void on_account_changed (GoaClient *client,
GoaObject *object,
gpointer user_data);
+static gboolean select_account_by_id (GoaPanel *panel,
+ const gchar *account_id);
+
G_DEFINE_DYNAMIC_TYPE (GoaPanel, goa_panel, CC_TYPE_PANEL);
+enum {
+ PROP_0,
+ PROP_ARGV
+};
+
+static void
+goa_panel_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id)
+ {
+ case PROP_ARGV:
+ {
+ gchar **args;
+
+ args = g_value_get_boxed (value);
+
+ if (args != NULL && *args != '\0')
+ select_account_by_id (GOA_PANEL (object), args[0]);
+ return;
+ }
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
static void
goa_panel_finalize (GObject *object)
{
@@ -228,9 +259,14 @@ goa_panel_get_help_uri (CcPanel *panel)
static void
goa_panel_class_init (GoaPanelClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
CcPanelClass *panel_class = CC_PANEL_CLASS (klass);
panel_class->get_help_uri = goa_panel_get_help_uri;
+
+ object_class->set_property = goa_panel_set_property;
+
+ g_object_class_override_property (object_class, PROP_ARGV, "argv");
}
static void
@@ -435,6 +471,36 @@ show_page_account (GoaPanel *panel,
/* ---------------------------------------------------------------------------------------------------- */
+static gboolean
+select_account_by_id (GoaPanel *panel,
+ const gchar *account_id)
+{
+ GoaObject *goa_object = NULL;
+ GtkTreeIter iter;
+ gboolean iter_set = FALSE;
+
+ goa_object = goa_client_lookup_by_id (panel->client, account_id);
+ if (goa_object != NULL)
+ {
+ iter_set = goa_panel_accounts_model_get_iter_for_object (panel->accounts_model,
+ goa_object,
+ &iter);
+ g_object_unref (goa_object);
+ }
+
+ if (iter_set)
+ {
+ GtkTreeView *tree_view;
+ GtkTreeSelection *selection;
+
+ tree_view = GTK_TREE_VIEW (panel->accounts_treeview);
+ selection = gtk_tree_view_get_selection (tree_view);
+ gtk_tree_selection_select_iter (selection, &iter);
+ }
+
+ return iter_set;
+}
+
static void
on_tree_view_selection_changed (GtkTreeSelection *selection,
gpointer user_data)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]