/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Pix * * Copyright (C) 2009 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef GTH_CATALOG_H #define GTH_CATALOG_H #include #include #include #include typedef enum { GTH_CATALOG_TYPE_INVALID, GTH_CATALOG_TYPE_CATALOG, GTH_CATALOG_TYPE_EXTENSION } GthCatalogType; #define GTH_TYPE_CATALOG (gth_catalog_get_type ()) #define GTH_CATALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTH_TYPE_CATALOG, GthCatalog)) #define GTH_CATALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GTH_TYPE_CATALOG, GthCatalogClass)) #define GTH_IS_CATALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTH_TYPE_CATALOG)) #define GTH_IS_CATALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTH_TYPE_CATALOG)) #define GTH_CATALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GTH_TYPE_CATALOG, GthCatalogClass)) typedef struct _GthCatalog GthCatalog; typedef struct _GthCatalogPrivate GthCatalogPrivate; typedef struct _GthCatalogClass GthCatalogClass; struct _GthCatalog { GObject __parent; GValueHash *attributes; GthCatalogPrivate *priv; }; struct _GthCatalogClass { GObjectClass __parent_class; /*< virtual functions >*/ DomElement * (*create_root) (GthCatalog *catalog, DomDocument *doc); void (*read_from_doc) (GthCatalog *catalog, DomElement *root); void (*write_to_doc) (GthCatalog *catalog, DomDocument *doc, DomElement *root); }; typedef void (*CatalogReadyCallback) (GthCatalog *catalog, GList *files, GError *error, gpointer user_data); GType gth_catalog_get_type (void) G_GNUC_CONST; GthCatalog * gth_catalog_new (void); GthCatalog * gth_catalog_new_for_file (GFile *file); GthCatalog * gth_catalog_new_from_data (const void *buffer, gsize count, GError **error); void gth_catalog_set_file (GthCatalog *catalog, GFile *file); GFile * gth_catalog_get_file (GthCatalog *catalog); void gth_catalog_set_name (GthCatalog *catalog, const char *name); const char * gth_catalog_get_name (GthCatalog *catalog); void gth_catalog_set_date (GthCatalog *catalog, GthDateTime *date_time); GthDateTime * gth_catalog_get_date (GthCatalog *catalog); void gth_catalog_set_order (GthCatalog *catalog, const char *order, gboolean inverse); const char * gth_catalog_get_order (GthCatalog *catalog, gboolean *inverse); char * gth_catalog_to_data (GthCatalog *catalog, gsize *length); void gth_catalog_set_file_list (GthCatalog *catalog, GList *file_list); GList * gth_catalog_get_file_list (GthCatalog *catalog); gboolean gth_catalog_insert_file (GthCatalog *catalog, GFile *file, int pos); int gth_catalog_remove_file (GthCatalog *catalog, GFile *file); void gth_catalog_update_metadata (GthCatalog *catalog, GthFileData *file_data); int gth_catalog_get_size (GthCatalog *catalog); /* utils */ GFile * gth_catalog_get_base (void); GFile * gth_catalog_file_to_gio_file (GFile *file); GFile * gth_catalog_file_from_gio_file (GFile *file, GFile *catalog); GFile * gth_catalog_file_from_relative_path (const char *name, const char *file_extension); char * gth_catalog_get_relative_path (GFile *file); GIcon * gth_catalog_get_icon (GFile *file); void gth_catalog_update_standard_attributes (GFile *file, GFileInfo *info); void gth_catalog_load_from_file_async (GFile *file, GCancellable *cancellable, ReadyCallback ready_func, gpointer user_data); GFile * gth_catalog_get_file_for_date (GthDateTime *date_time, const char *extension); GFile * gth_catalog_get_file_for_tag (const char *tag, const char *extension); GthCatalog * gth_catalog_load_from_file (GFile *file); void gth_catalog_save (GthCatalog *catalog); void gth_catalog_list_async (GFile *catalog, const char *attributes, GCancellable *cancellable, CatalogReadyCallback ready_func, gpointer user_data); #endif /*GTH_CATALOG_H*/