/* -*- 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*/