static ClutterActor *
factory_func (PengeModelBridge *bridge,
              ClutterContainer *container,
              ClutterModel     *model,
              ClutterModelIter *iter)
{
    ClutterActor *actor;
    SwItem *item;

    clutter_model_iter_get (iter, 0, &item, -1);
    actor = g_object_new (PENGE_TYPE_PEOPLE_TILE,
                          "item", item,
                          NULL);

    clutter_actor_set_size (actor, 140, 95);
    clutter_container_add_actor (container,
                                 actor);

    if (g_str_equal (item->service, "twitter"))
    {
        clutter_layout_manager_child_set (layout,
                                          container,
                                          actor,
                                          "col-span", 2,
                                          NULL);
    }

    return actor;
}
static ClutterModelIter*
mtn_service_model_lookup (MtnServiceModel *model,
                          const char      *object_path)
{
    ClutterModelIter *iter;
    char *row_path;
    /* NOTE could have internal hashtable, but that's not totally trivial.
     * TODO if needed... */

    iter = clutter_model_get_first_iter (CLUTTER_MODEL (model));
    if (!iter) {
        return NULL;
    }

    while (!clutter_model_iter_is_last (iter)) {
        clutter_model_iter_get (iter,
                                MTN_SERVICE_MODEL_COL_OBJECT_PATH, &row_path,
                                -1);
        if (g_strcmp0 (row_path, object_path) == 0) {
            break;
        }
        iter = clutter_model_iter_next (iter);
    }

    if (clutter_model_iter_is_last (iter)) {
        g_object_unref (iter);
        iter = NULL;
    }

    return iter;
}
Example #3
0
static gboolean
filter_func (ClutterModel     *model,
             ClutterModelIter *iter,
             gpointer          dummy)
{
  gint i = 0;

  clutter_model_iter_get (iter, COLUMN_FOO, &i, -1);

  return !(i % 2);
}
Example #4
0
static gboolean
filter_zone (ClutterModel *model, ClutterModelIter *iter, gpointer user_data)
{
    MnpWorldClockPrivate *priv = GET_PRIVATE (user_data);
    char *name, *name_mem;
    GWeatherLocation *loc;
    gboolean is_first_word = TRUE, match;
    int len;
    char *key, *skey;

    if (!priv->search_text || !*priv->search_text)
        return TRUE;

    skey = key = g_ascii_strdown(priv->search_text, -1);
    clutter_model_iter_get (iter,
                            GWEATHER_LOCATION_ENTRY_COL_COMPARE_NAME, &name_mem,
                            GWEATHER_LOCATION_ENTRY_COL_LOCATION, &loc,
                            -1);
    name = name_mem;

    if (!loc) {
        g_free (name_mem);
        g_free (key);
        return FALSE;
    }

    /* All but the last word in KEY must match a full word from NAME,
     * in order (but possibly skipping some words from NAME).
     */
    len = strcspn (key, " ");
    while (key[len]) {
        name = find_word (name, key, len, TRUE, is_first_word);
        if (!name) {
            g_free (name_mem);
            g_free (skey);
            return FALSE;
        }

        key += len;
        while (*key && !g_unichar_isalpha (g_utf8_get_char (key)))
            key = g_utf8_next_char (key);
        while (*name && !g_unichar_isalpha (g_utf8_get_char (name)))
            name = g_utf8_next_char (name);

        len = strcspn (key, " ");
        is_first_word = FALSE;
    }

    /* The last word in KEY must match a prefix of a following word in NAME */
    match = find_word (name, key, strlen (key), FALSE, is_first_word) != NULL;
    g_free (name_mem);
    g_free (skey);
    return match;
}
Example #5
0
static void
on_row_added (ClutterModel     *model,
              ClutterModelIter *iter,
              gpointer          dummy)
{
  gint i;
  gchar *string;

  clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1);

  g_print ("[row:%02d]: Added: %d, %s\n",
           clutter_model_iter_get_row (iter),
           i, string);

  g_free (string);
}
/* Clear all data in model and also release all allocated resources needed for this model */
static void _xfdashboard_applications_menu_model_clear(XfdashboardApplicationsMenuModel *self)
{
	XfdashboardApplicationsMenuModelPrivate		*priv;
	ClutterModelIter							*iterator;
	GarconMenuElement							*menuElement;

	g_return_if_fail(XFDASHBOARD_IS_APPLICATIONS_MENU_MODEL(self));

	priv=self->priv;

	/* Unset filter (forces all rows being accessible and not being skipped/filtered) */
	clutter_model_set_filter(CLUTTER_MODEL(self), NULL, NULL, NULL);

	/* Clean up and remove all rows */
	while(clutter_model_get_n_rows(CLUTTER_MODEL(self)))
	{
		/* Get data from model for clean up */
		menuElement=NULL;

		iterator=clutter_model_get_iter_at_row(CLUTTER_MODEL(self), 0);
		clutter_model_iter_get(iterator,
								XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_MENU_ELEMENT, &menuElement,
								-1);

		/* Remove signal handler from menu element */
		if(menuElement)
		{
			g_signal_handlers_disconnect_by_func(menuElement, G_CALLBACK(_xfdashboard_applications_menu_model_on_reload_required), self);
		}

		/* Remove row */
		clutter_model_remove(CLUTTER_MODEL(self), 0);

		/* Release iterator */
		if(menuElement) g_object_unref(menuElement);
		g_object_unref(iterator);
	}

	/* Destroy root menu */
	if(priv->rootMenu)
	{
		g_object_unref(priv->rootMenu);
		priv->rootMenu=NULL;
	}
}
Example #7
0
static gboolean
foreach_func (ClutterModel     *model,
              ClutterModelIter *iter,
              gpointer          dummy)
{
  gint i;
  gchar *string;

  clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1);

  g_print ("[row:%02d]: Foreach: %d, %s\n",
           clutter_model_iter_get_row (iter),
           i, string);
  
  g_free (string);

  return TRUE;
}
static gboolean 
search_locations_display_in_model (ClutterModel *model, ClutterModelIter *iter, struct _pass_data *pdata)
{
	char *clocation;
	GWeatherLocation *location;

	clutter_model_iter_get (iter, GWEATHER_LOCATION_ENTRY_COL_DISPLAY_NAME, &clocation,
				GWEATHER_LOCATION_ENTRY_COL_LOCATION, &location, -1);

	if (location == pdata->location) {
		pdata->key = clocation;
		return FALSE;
	}

	g_free(clocation);

	return TRUE;
}
Example #9
0
/*
 * Look up item by index.
 * Returned object needs to be g_object_unref'd.
 * May return NULL.
 */
FooTestObject *
store_get_object (ClutterModel *store,
                  unsigned      index)
{
  ClutterModelIter  *iter;
  FooTestObject     *object = NULL;

  iter = clutter_model_get_iter_at_row (store, index);
  if (iter &&
      !clutter_model_iter_is_last (iter))
  {
    /* Column #0 of the model holds the actual object. */
    clutter_model_iter_get (iter,
                            0, &object,
                            -1);
  }

  return object;
}
Example #10
0
static void
mtn_service_model_update (MtnServiceModel *model, GVariant *services)
{
    ClutterModelIter *model_iter;
    GVariantIter *iter;
    char *path;
    guint index;

    if (services) {
        index = 0;
        g_variant_get (services, "ao", &iter);
        while (g_variant_iter_next (iter, "&o", &path)) {
            mtn_service_model_add_or_update (model, path, index);
            index++;
        }
    }

    /* remove the rows that were not present in the Services list */
    index = 0;
    while ((model_iter = clutter_model_get_iter_at_row (CLUTTER_MODEL (model),
                                                        index))) {
        gboolean present, hidden;

        clutter_model_iter_get (model_iter,
                                MTN_SERVICE_MODEL_COL_PRESENT, &present,
                                MTN_SERVICE_MODEL_COL_HIDDEN, &hidden,
                                -1);
        if (present) {
            /* initialize to present=FALSE for next _services_changed() call */
            if (!hidden) {
                clutter_model_iter_set (model_iter,
                                        MTN_SERVICE_MODEL_COL_PRESENT, FALSE,
                                        -1);              
            }
            index++;
        } else {
            clutter_model_remove (CLUTTER_MODEL (model), index);
        }

        g_object_unref (model_iter);
    }
}
Example #11
0
static void
print_iter (ClutterModelIter *iter,
            const gchar      *text)
{
  ClutterModel *model;
  gint i;
  gchar *string;

  model = clutter_model_iter_get_model (iter);

  clutter_model_iter_get (iter, COLUMN_FOO, &i, COLUMN_BAR, &string, -1);

  g_print ("[row:%02d]: %s: (%s: %d), (%s: %s)\n",
           clutter_model_iter_get_row (iter),
           text,
           clutter_model_get_column_name (model, COLUMN_FOO), i,
           clutter_model_get_column_name (model, COLUMN_BAR), string);

  g_free (string);
}
static gboolean _xfdashboard_applications_menu_model_filter_by_section(ClutterModel *inModel,
																		ClutterModelIter *inIter,
																		gpointer inUserData)
{
	XfdashboardApplicationsMenuModel			*self;
	XfdashboardApplicationsMenuModelPrivate		*priv;
	GarconMenu									*section;
	GarconMenu									*requestedSection;
	gboolean									doShow;

	g_return_val_if_fail(XFDASHBOARD_IS_APPLICATIONS_MENU_MODEL(inModel), FALSE);
	g_return_val_if_fail(CLUTTER_IS_MODEL_ITER(inIter), FALSE);
	g_return_val_if_fail(GARCON_IS_MENU(inUserData), FALSE);

	self=XFDASHBOARD_APPLICATIONS_MENU_MODEL(inModel);
	priv=self->priv;
	requestedSection=GARCON_MENU(inUserData);
	doShow=FALSE;

	/* Check if root section is requested */
	if(!requestedSection) requestedSection=priv->rootMenu;

	/* Get menu element at iterator */
	clutter_model_iter_get(inIter,
							XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_SECTION, &section,
							-1);

	/* If menu element is a menu check if root menu is parent menu and root menu is requested */
	if((section && section==requestedSection) ||
		(!section && requestedSection==priv->rootMenu))
	{
		doShow=TRUE;
	}

	/* Release allocated resources */
	if(section) g_object_unref(section);

	/* If we get here return TRUE to show model data item or FALSE to hide */
	return(doShow);
}
Example #13
0
static void
_dump_clicked (MxButton         *button,
               ObjectStoreTest  *app)
{
  ClutterModelIter *iter;

  for (iter = clutter_model_get_first_iter (app->store);
       !clutter_model_iter_is_last (iter);
       iter = clutter_model_iter_next (iter))
  {
    FooTestObject *object = NULL;
    char          *text = NULL;

    clutter_model_iter_get (iter,
                            0, &object,
                            1, &text,
                            -1);
    g_debug ("%p %s\n", object, text);
    g_object_unref (object);
    g_free (text);
  }
}
/* Helper function to filter model data */
static gboolean _xfdashboard_applications_menu_model_filter_by_menu(ClutterModel *inModel,
																	ClutterModelIter *inIter,
																	gpointer inUserData)
{
	XfdashboardApplicationsMenuModel			*self;
	XfdashboardApplicationsMenuModelPrivate		*priv;
	GarconMenu									*parentMenu;
	GarconMenu									*requestedParentMenu;
	GarconMenuElement							*menuElement;
	GarconMenuItemPool							*itemPool;
	const gchar									*desktopID;
	gboolean									doShow;

	g_return_val_if_fail(XFDASHBOARD_IS_APPLICATIONS_MENU_MODEL(inModel), FALSE);
	g_return_val_if_fail(CLUTTER_IS_MODEL_ITER(inIter), FALSE);
	g_return_val_if_fail(GARCON_IS_MENU(inUserData), FALSE);

	self=XFDASHBOARD_APPLICATIONS_MENU_MODEL(inModel);
	priv=self->priv;
	requestedParentMenu=GARCON_MENU(inUserData);
	menuElement=NULL;
	doShow=FALSE;

	/* Get menu element at iterator */
	clutter_model_iter_get(inIter,
							XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_MENU_ELEMENT, &menuElement,
							XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_PARENT_MENU, &parentMenu,
							-1);
	if(menuElement==NULL) return(FALSE);

	/* Only menu items and sub-menus can be visible */
	if(!GARCON_IS_MENU(menuElement) && !GARCON_IS_MENU_ITEM(menuElement))
	{
		g_object_unref(menuElement);
		return(FALSE);
	}

	/* If menu element is a menu check if it's parent menu is the requested one */
	if(GARCON_IS_MENU(menuElement))
	{
		if(requestedParentMenu==parentMenu ||
			(!requestedParentMenu && parentMenu==priv->rootMenu))
		{
			doShow=TRUE;
		}
	}
		/* Otherwise it is a menu item and check if item is in requested menu */
		else
		{
			/* Get desktop ID of menu item */
			desktopID=garcon_menu_item_get_desktop_id(GARCON_MENU_ITEM(menuElement));

			/* Get menu items of menu */
			itemPool=garcon_menu_get_item_pool(parentMenu);

			/* Determine if menu item at iterator is in menu's item pool */
			if(garcon_menu_item_pool_lookup(itemPool, desktopID)!=FALSE) doShow=TRUE;
		}

	/* Release allocated resources */
	if(parentMenu) g_object_unref(parentMenu);
	g_object_unref(menuElement);

	/* If we get here return TRUE to show model data item or FALSE to hide */
	return(doShow);
}