static gboolean get_is_recent_filtered (GtkRecentFilter *filter, GtkRecentInfo *info) { GtkRecentFilterInfo filter_info; GtkRecentFilterFlags needed; gboolean retval; g_assert (info != NULL); needed = gtk_recent_filter_get_needed (filter); filter_info.contains = GTK_RECENT_FILTER_URI | GTK_RECENT_FILTER_MIME_TYPE; filter_info.uri = gtk_recent_info_get_uri (info); filter_info.mime_type = gtk_recent_info_get_mime_type (info); if (needed & GTK_RECENT_FILTER_DISPLAY_NAME) { filter_info.display_name = gtk_recent_info_get_display_name (info); filter_info.contains |= GTK_RECENT_FILTER_DISPLAY_NAME; } else filter_info.uri = NULL; if (needed & GTK_RECENT_FILTER_APPLICATION) { filter_info.applications = (const gchar **) gtk_recent_info_get_applications (info, NULL); filter_info.contains |= GTK_RECENT_FILTER_APPLICATION; } else filter_info.applications = NULL; if (needed & GTK_RECENT_FILTER_GROUP) { filter_info.groups = (const gchar **) gtk_recent_info_get_groups (info, NULL); filter_info.contains |= GTK_RECENT_FILTER_GROUP; } else filter_info.groups = NULL; if (needed & GTK_RECENT_FILTER_AGE) { filter_info.age = gtk_recent_info_get_age (info); filter_info.contains |= GTK_RECENT_FILTER_AGE; } else filter_info.age = -1; retval = gtk_recent_filter_filter (filter, &filter_info); /* these we own */ if (filter_info.applications) g_strfreev ((gchar **) filter_info.applications); if (filter_info.groups) g_strfreev ((gchar **) filter_info.groups); return !retval; }
static VALUE rg_groups(VALUE self) { gsize i; gsize length; gchar** str = gtk_recent_info_get_groups(_SELF(self), &length); VALUE ary = rb_ary_new(); for(i = 0; i < length; i++){ rb_ary_push(ary, CSTR2RVAL(str[i])); } g_strfreev(str); return ary; }
static void populate_filter_info (GtkRecentInfo *info, GtkRecentFilterInfo *filter_info, GtkRecentFilterFlags needed) { filter_info->uri = gtk_recent_info_get_uri (info); filter_info->mime_type = gtk_recent_info_get_mime_type (info); filter_info->contains = GTK_RECENT_FILTER_URI | GTK_RECENT_FILTER_MIME_TYPE; if (needed & GTK_RECENT_FILTER_DISPLAY_NAME) { filter_info->display_name = gtk_recent_info_get_display_name (info); filter_info->contains |= GTK_RECENT_FILTER_DISPLAY_NAME; } else { filter_info->uri = NULL; } if (needed & GTK_RECENT_FILTER_APPLICATION) { filter_info->applications = (const gchar **) gtk_recent_info_get_applications (info, NULL); filter_info->contains |= GTK_RECENT_FILTER_APPLICATION; } else { filter_info->applications = NULL; } if (needed & GTK_RECENT_FILTER_GROUP) { filter_info->groups = (const gchar **) gtk_recent_info_get_groups (info, NULL); filter_info->contains |= GTK_RECENT_FILTER_GROUP; } else { filter_info->groups = NULL; } if (needed & GTK_RECENT_FILTER_AGE) { filter_info->age = gtk_recent_info_get_age (info); filter_info->contains |= GTK_RECENT_FILTER_AGE; } else { filter_info->age = -1; } }