Initial Import
[profile/ivi/clutter-toys.git] / attic / aaina / libaaina / aaina-library.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
2
3 /*
4  * Copyright (C) 2007 OpenedHand Ltd
5  *
6  * Author: Matthew Allum  <mallum@openedhand.com>
7  */
8
9 #ifndef _AAINA_LIBRARY
10 #define _AAINA_LIBRARY
11
12 #include <glib-object.h>
13 #include "aaina-photo.h"
14 #include "eggsequence.h"
15
16 G_BEGIN_DECLS
17
18 #define AAINA_TYPE_LIBRARY aaina_library_get_type()
19
20 #define AAINA_LIBRARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
21         AAINA_TYPE_LIBRARY, \
22         AainaLibrary))
23
24 #define AAINA_LIBRARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),\
25         AAINA_TYPE_LIBRARY, \
26         AainaLibraryClass))
27
28 #define AAINA_IS_LIBRARY(obj) \
29         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
30         AAINA_TYPE_LIBRARY))
31
32 #define AAINA_IS_LIBRARY_CLASS(klass) \
33         (G_TYPE_CHECK_CLASS_TYPE ((klass), \
34         AAINA_TYPE_LIBRARY))
35
36 #define AAINA_LIBRARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),\
37         AAINA_TYPE_LIBRARY, \
38         AainaLibraryClass))
39
40 typedef struct {
41         GObject         parent;
42
43 } AainaLibrary;
44
45 typedef struct {
46         GObjectClass parent_class;
47
48         void (*reordered) (AainaLibrary *library);
49         void (*filter_change) (AainaLibrary *library);
50         void (*photo_change) (AainaLibrary *library, AainaPhoto *photo);
51         void (*photo_added) (AainaLibrary *library, AainaPhoto *photo);
52
53 } AainaLibraryClass;
54
55 typedef gint (*AainaCompareRowFunc) (AainaPhoto *a,
56                                      AainaPhoto *b,
57                                      gpointer        data);
58
59 typedef gboolean  (*AainaFilterRowFunc) (AainaLibrary    *library,
60                                          AainaPhoto *photo,
61                                          gpointer         data);
62
63 typedef gboolean (*AainaForeachRowFunc) (AainaLibrary    *library,
64                                          AainaPhoto *photo,
65                                          gpointer         data);
66
67 GType aaina_library_get_type (void);
68
69 AainaLibrary*
70 aaina_library_new ();
71
72 guint
73 aaina_library_photo_count (AainaLibrary *library);
74
75 AainaPhoto*
76 aaina_library_get_photo (AainaLibrary *library, gint index);
77
78 void
79 aaina_library_append_photo (AainaLibrary *library, AainaPhoto *photo);
80
81 void
82 aaina_library_remove_photo (AainaLibrary *library, const AainaPhoto *photo);
83
84 void
85 aaina_library_set_filter (AainaLibrary    *library,
86                           AainaFilterRowFunc  filter, 
87                           gpointer         data);
88
89 void
90 aaina_library_set_sort_func (AainaLibrary     *library, 
91                              AainaCompareRowFunc  func, 
92                              gpointer          userdata);
93
94 void
95 aaina_library_foreach (AainaLibrary      *library, 
96                       AainaForeachRowFunc   func,
97                       gpointer           data);
98
99 gboolean
100 aaina_library_get_pending (AainaLibrary *library);
101 void
102 aaina_library_set_pending (AainaLibrary *library, gboolean pending);
103
104 gboolean
105 aaina_library_is_full (AainaLibrary *library);
106 void
107 aaina_library_set_max (AainaLibrary *library, gint max_photos);
108
109 G_END_DECLS
110
111 #endif