コード例 #1
0
static void
photos_search_type_manager_init (PhotosSearchTypeManager *self)
{
  PhotosSearchType *search_type;
  gchar *item_filter;
  gchar *all_filter;
  gchar *col_filter;
  gchar *gif_filter;

  gif_filter = g_strdup ("nie:mimeType(?urn) != 'image/gif'");
  item_filter = g_strdup_printf ("(fn:contains (?type, 'nmm#Photo') && %s)", gif_filter);
  col_filter = g_strdup_printf ("(fn:contains (?type, 'nfo#DataContainer')"
                                " && ?count > 0"
                                " && (fn:starts-with (nao:identifier (?urn), '%s')"
                                "     || (?urn = nfo:image-category-screenshot)))",
                                PHOTOS_QUERY_COLLECTIONS_IDENTIFIER);
  all_filter = g_strdup_printf ("(%s || %s)", col_filter, item_filter);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_ALL,
                                             _("All"),
                                             "?urn a rdfs:Resource. "
                                             "OPTIONAL {?item a nmm:Photo; nie:isPartOf ?urn}",
                                             all_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_COLLECTIONS,
                                             _("Albums"),
                                             "?urn a nfo:DataContainer. "
                                             "?item a nmm:Photo; nie:isPartOf ?urn.",
                                             col_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_FAVORITES,
                                             _("Favorites"),
                                             "?urn a nmm:Photo; nao:hasTag nao:predefined-tag-favorite. ",
                                             gif_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_PHOTOS,
                                             _("Photos"),
                                             "?urn a nmm:Photo",
                                             gif_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  photos_base_manager_set_active_object_by_id (PHOTOS_BASE_MANAGER (self), PHOTOS_SEARCH_TYPE_STOCK_PHOTOS);

  g_free (item_filter);
  g_free (all_filter);
  g_free (col_filter);
  g_free (gif_filter);
}
コード例 #2
0
static void
photos_search_type_manager_init (PhotosSearchTypeManager *self)
{
  PhotosSearchType *search_type;
  gchar *item_filter;
  gchar *all_filter;
  gchar *blacklisted_mime_types_filter;
  gchar *col_filter;
  gchar **strv;
  guint i;
  guint n_elements;

  n_elements = G_N_ELEMENTS (BLACKLISTED_MIME_TYPES);
  strv = (gchar **) g_malloc0_n (n_elements + 1, sizeof (gchar *));
  for (i = 0; i < n_elements; i++)
    strv[i] = g_strdup_printf ("nie:mimeType(?urn) != '%s'", BLACKLISTED_MIME_TYPES[i]);

  blacklisted_mime_types_filter = g_strjoinv (" && ", strv);

  item_filter = g_strdup_printf ("(fn:contains (?type, 'nmm#Photo') && %s)", blacklisted_mime_types_filter);
  col_filter = g_strdup_printf ("(fn:contains (?type, 'nfo#DataContainer')"
                                " && ?count > 0"
                                " && (fn:starts-with (nao:identifier (?urn), '%s')"
                                "     || (?urn = nfo:image-category-screenshot)))",
                                PHOTOS_QUERY_COLLECTIONS_IDENTIFIER);
  all_filter = g_strdup_printf ("(%s || %s)", col_filter, item_filter);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_ALL,
                                             _("All"),
                                             "?urn a rdfs:Resource. "
                                             "OPTIONAL {?item a nmm:Photo; nie:isPartOf ?urn}",
                                             all_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_COLLECTIONS,
                                             _("Albums"),
                                             "?urn a nfo:DataContainer. "
                                             "?item a nmm:Photo; nie:isPartOf ?urn.",
                                             col_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_FAVORITES,
                                             _("Favorites"),
                                             "?urn a nmm:Photo; nao:hasTag nao:predefined-tag-favorite. ",
                                             blacklisted_mime_types_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  search_type = photos_search_type_new_full (PHOTOS_SEARCH_TYPE_STOCK_PHOTOS,
                                             _("Photos"),
                                             "?urn a nmm:Photo",
                                             blacklisted_mime_types_filter);
  photos_base_manager_add_object (PHOTOS_BASE_MANAGER (self), G_OBJECT (search_type));
  g_object_unref (search_type);

  photos_base_manager_set_active_object_by_id (PHOTOS_BASE_MANAGER (self), PHOTOS_SEARCH_TYPE_STOCK_ALL);

  g_free (item_filter);
  g_free (all_filter);
  g_free (blacklisted_mime_types_filter);
  g_free (col_filter);
  g_strfreev (strv);
}