aboutsummaryrefslogtreecommitdiff
path: root/src/idomenuitemfactory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/idomenuitemfactory.c')
-rw-r--r--src/idomenuitemfactory.c99
1 files changed, 1 insertions, 98 deletions
diff --git a/src/idomenuitemfactory.c b/src/idomenuitemfactory.c
index c8e61f4..59f3630 100644
--- a/src/idomenuitemfactory.c
+++ b/src/idomenuitemfactory.c
@@ -20,7 +20,6 @@
#include <gtk/gtk.h>
#include <gtk/ubuntu-private.h>
-#include "idoactionhelper.h"
#include "idousermenuitem.h"
#define IDO_TYPE_MENU_ITEM_FACTORY (ido_menu_item_factory_get_type ())
@@ -38,102 +37,6 @@ G_DEFINE_TYPE_WITH_CODE (IdoMenuItemFactory, ido_menu_item_factory, G_TYPE_OBJEC
g_io_extension_point_implement (UBUNTU_MENU_ITEM_FACTORY_EXTENSION_POINT_NAME,
g_define_type_id, "ido", 0);)
-/**
- * user_menu_item_state_changed:
- *
- * Updates an IdoUserMenuItem from @state. The state contains a
- * dictionary with keys 'active-user' (for the user that the current
- * session belongs too) and 'logged-in-users' (a list of all currently
- * logged in users).
- */
-static void
-user_menu_item_state_changed (IdoActionHelper *helper,
- GVariant *state,
- gpointer user_data)
-{
- IdoUserMenuItem *item;
- GVariant *target;
- GVariant *v;
-
- item = IDO_USER_MENU_ITEM (ido_action_helper_get_widget (helper));
-
- ido_user_menu_item_set_current_user (item, FALSE);
- ido_user_menu_item_set_logged_in (item, FALSE);
-
- target = ido_action_helper_get_action_target (helper);
- g_return_if_fail (g_variant_is_of_type (target, G_VARIANT_TYPE_STRING));
-
- if ((v = g_variant_lookup_value (state, "active-user", G_VARIANT_TYPE_STRING)))
- {
- if (g_variant_equal (v, target))
- ido_user_menu_item_set_current_user (item, TRUE);
-
- g_variant_unref (v);
- }
-
- if ((v = g_variant_lookup_value (state, "logged-in-users", G_VARIANT_TYPE_STRING_ARRAY)))
- {
- GVariantIter it;
- GVariant *user;
-
- g_variant_iter_init (&it, v);
- while ((user = g_variant_iter_next_value (&it)))
- {
- if (g_variant_equal (user, target))
- ido_user_menu_item_set_logged_in (item, TRUE);
- g_variant_unref (user);
- }
-
- g_variant_unref (v);
- }
-}
-
-/**
- * create_user_menu_item:
- *
- * Creates an IdoUserMenuItem. If @menuitem contains an action, the
- * widget is bound to that action in @actions.
- */
-static GtkMenuItem *
-create_user_menu_item (GMenuItem *menuitem,
- GActionGroup *actions)
-{
- IdoUserMenuItem *item;
- gchar *label;
- gchar *action;
-
- item = IDO_USER_MENU_ITEM (ido_user_menu_item_new ());
-
- if (g_menu_item_get_attribute (menuitem, "label", "s", &label))
- {
- ido_user_menu_item_set_label (item, label);
- g_free (label);
- }
-
- if (g_menu_item_get_attribute (menuitem, "action", "s", &action))
- {
- IdoActionHelper *helper;
- GVariant *target;
-
- target = g_menu_item_get_attribute_value (menuitem, "target", G_VARIANT_TYPE_ANY);
-
- helper = ido_action_helper_new (GTK_WIDGET (item), actions, action, target);
- g_signal_connect (helper, "action-state-changed",
- G_CALLBACK (user_menu_item_state_changed), NULL);
-
- g_signal_connect_object (item, "activate",
- G_CALLBACK (ido_action_helper_activate),
- helper, G_CONNECT_SWAPPED);
- g_signal_connect_swapped (item, "destroy", G_CALLBACK (g_object_unref), helper);
-
- if (target)
- g_variant_unref (target);
- g_free (action);
- }
-
- return GTK_MENU_ITEM (item);
-}
-
static GtkMenuItem *
ido_menu_item_factory_create_menu_item (UbuntuMenuItemFactory *factory,
const gchar *type,
@@ -143,7 +46,7 @@ ido_menu_item_factory_create_menu_item (UbuntuMenuItemFactory *factory,
GtkMenuItem *item = NULL;
if (g_str_equal (type, "indicator.user-menu-item"))
- item = create_user_menu_item (menuitem, actions);
+ item = ido_user_menu_item_new_from_model (menuitem, actions);
return item;
}