/* Class initialization * Override functions in parent classes and define properties * and signals */ static void xfdashboard_applications_menu_model_class_init(XfdashboardApplicationsMenuModelClass *klass) { ClutterModelClass *modelClass=CLUTTER_MODEL_CLASS(klass); GObjectClass *gobjectClass=G_OBJECT_CLASS(klass); /* Override functions */ modelClass->resort=_xfdashboard_applications_menu_model_resort; gobjectClass->dispose=_xfdashboard_applications_menu_model_dispose; /* Set up private structure */ g_type_class_add_private(klass, sizeof(XfdashboardApplicationsMenuModelPrivate)); /* Define signals */ XfdashboardApplicationsMenuModelSignals[SIGNAL_LOADED]= g_signal_new("loaded", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(XfdashboardApplicationsMenuModelClass, loaded), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); }
static void gmc_video_model_class_init (GmcVideoModelClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); ClutterModelClass *model_class = CLUTTER_MODEL_CLASS (klass); g_type_class_add_private (object_class, sizeof (GmcVideoModelPrivate)); object_class->set_property = gmc_video_model_set_property; object_class->get_property = gmc_video_model_get_property; model_class->get_n_rows = gmc_video_model_get_n_rows; model_class->insert_row = gmc_video_model_insert_row; model_class->remove_row = gmc_video_model_remove_row; model_class->get_iter_at_row = gmc_video_model_get_iter_at_row; model_class->resort = gmc_video_model_resort; g_object_class_install_property (object_class, PROP_FILENAME, g_param_spec_string ("filename", "Filename", "The database filename", "movies_default.db", G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); }
static void clutter_list_model_class_init (ClutterListModelClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); ClutterModelClass *model_class = CLUTTER_MODEL_CLASS (klass); g_type_class_add_private (klass, sizeof (ClutterListModelPrivate)); gobject_class->finalize = clutter_list_model_finalize; gobject_class->dispose = clutter_list_model_dispose; model_class->get_iter_at_row = clutter_list_model_get_iter_at_row; model_class->insert_row = clutter_list_model_insert_row; model_class->remove_row = clutter_list_model_remove_row; model_class->resort = clutter_list_model_resort; model_class->row_removed = clutter_list_model_row_removed; }
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); }