static VALUE rbclt_model_get_sorting_column (VALUE self) { ClutterModel *model = CLUTTER_MODEL (RVAL2GOBJ (self)); return INT2NUM (clutter_model_get_sorting_column (model)); }
static void gmc_video_model_iter_get_value (ClutterModelIter *iter, guint column, GValue *value) { ClutterModel *model; GmcVideoModelPrivate *priv_model; gchar *query, *string_value, *tmp; guint row, uint_value, sort_column; sqlite3_stmt *statement; gint error_code; GType type; model = clutter_model_iter_get_model (iter); row = clutter_model_iter_get_row (iter); priv_model = GMC_VIDEO_MODEL_GET_PRIVATE (model); query = g_strdup_printf ("SELECT %s FROM %s", clutter_model_get_column_name (model, column), TABLE); sort_column = clutter_model_get_sorting_column (model); if (sort_column != -1) { tmp = g_strdup_printf ("%s ORDER BY %s", query, clutter_model_get_column_name (model, sort_column)); g_free (query); query = tmp; } tmp = g_strdup_printf ("%s LIMIT %d, 1", query, row); g_free (query); query = tmp; error_code = sqlite3_prepare_v2 (priv_model->sql, query, strlen (query), &statement, NULL); g_free (query); if (error_code != SQLITE_OK) { g_critical ("%s [prepare] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv_model->sql)); return; } error_code = sqlite3_step (statement); if (error_code != SQLITE_ROW) { g_critical ("%s [step] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv_model->sql)); return; } type = clutter_model_get_column_type (model, column); switch (type) { case G_TYPE_STRING: string_value = (gchar *) sqlite3_column_text (statement, 0); g_value_set_string (value, string_value); break; case G_TYPE_UINT: uint_value = sqlite3_column_int (statement, 0); g_value_set_uint (value, uint_value); break; } sqlite3_finalize (statement); }
static ClutterModelIter * gmc_video_model_get_iter_at_row (ClutterModel *model, guint row) { GmcVideoModelPrivate *priv; GmcVideoModelIter *iter; gchar *query, *tmp; gint column; sqlite3_stmt *statement; gint error_code; priv = GMC_VIDEO_MODEL_GET_PRIVATE (model); query = g_strdup_printf ("SELECT Title FROM %s", TABLE); column = clutter_model_get_sorting_column (model); if (column != -1) { tmp = g_strdup_printf ("%s ORDER BY %s", query, clutter_model_get_column_name (model, column)); g_free (query); query = tmp; } tmp = g_strdup_printf ("%s LIMIT %d, 1", query, row); g_free (query); query = tmp; error_code = sqlite3_prepare_v2 (priv->sql, query, strlen (query), &statement, NULL); g_free (query); if (error_code != SQLITE_OK) { g_critical ("%s [prepare] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv->sql)); return 0; } error_code = sqlite3_step (statement); if (error_code != SQLITE_ROW) { g_critical ("%s [step] : %d - %s", G_STRFUNC, error_code, sqlite3_errmsg (priv->sql)); return 0; } sqlite3_finalize (statement); iter = g_object_new (GMC_TYPE_VIDEO_MODEL_ITER, "model", model, "row", row, NULL); return CLUTTER_MODEL_ITER (iter); }
static void clutter_list_model_resort (ClutterModel *model, ClutterModelSortFunc func, gpointer data) { SortClosure sort_closure = { NULL, 0, NULL, NULL }; sort_closure.model = model; sort_closure.column = clutter_model_get_sorting_column (model); sort_closure.func = func; sort_closure.data = data; g_sequence_sort (CLUTTER_LIST_MODEL (model)->priv->sequence, sort_model_default, &sort_closure); }
static void _xfdashboard_applications_menu_model_resort(ClutterModel *inModel, ClutterModelSortFunc inSortCallback, gpointer inUserData) { g_return_if_fail(XFDASHBOARD_IS_APPLICATIONS_MENU_MODEL(inModel)); /* If given sort function is NULL use default one */ if(inSortCallback==NULL) { gint sortColumn=clutter_model_get_sorting_column(inModel); switch(sortColumn) { case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_SEQUENCE_ID: inSortCallback=_xfdashboard_applications_menu_model_resort_uint_callback; break; case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_MENU_ELEMENT: inSortCallback=_xfdashboard_applications_menu_model_resort_menu_element_callback; break; case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_PARENT_MENU: inSortCallback=_xfdashboard_applications_menu_model_resort_parent_menu_callback; break; case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_SECTION: inSortCallback=_xfdashboard_applications_menu_model_resort_section_callback; break; case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_TITLE: case XFDASHBOARD_APPLICATIONS_MENU_MODEL_COLUMN_DESCRIPTION: inSortCallback=_xfdashboard_applications_menu_model_resort_string_callback; break; default: g_critical("Sorting column %d without user-defined function is not possible", sortColumn); g_assert_not_reached(); break; } } /* Call parent's class resort method */ CLUTTER_MODEL_CLASS(xfdashboard_applications_menu_model_parent_class)->resort(inModel, inSortCallback, inUserData); }