apply FSL(Flora Software License)
[apps/home/gallery.git] / include / util / gl-db-handler.h
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
4   * Licensed under the Flora License, Version 1.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *     http://www.tizenopensource.org/license
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16
17 #ifndef _GL_DB_HANDLER_H_
18 #define _GL_DB_HANDLER_H_
19
20 #include <eina_list.h>
21 #include <visual-svc.h>
22 #include <Elementary.h>
23
24 #ifdef _cplusplus
25 extern "C"
26 {
27 #endif
28
29 #define GL_MAX_BYTES_FOR_CHAR 3
30 #define GL_FILE_PATH_LEN_MAX (4095 * GL_MAX_BYTES_FOR_CHAR + 1)
31 #define GL_FILE_NAME_LEN_MAX (255 * GL_MAX_BYTES_FOR_CHAR + 1)
32 #define GL_DIR_PATH_LEN_MAX GL_FILE_PATH_LEN_MAX
33 #define GL_ARRAY_LEN_MAX 256
34 #define GL_FILE_EXT_LEN_MAX 256
35 #define GL_FIRST_VIEW_START_POS 0
36 #define GL_FIRST_VIEW_END_POS 47        /*maybe 2 pages(=48 medias) is better, especially select album then drag up immediately */
37 #define GL_GET_UNTIL_LAST_RECORD 65536  /* Fixme: Do not use 65536. */
38 #define GL_GET_ALL_RECORDS -1
39 #define GL_GET_ONE_RECORDS 1
40 #define GL_GET_ALL_RECORDS_ID NULL
41 /**
42 * Get a new mtype item from libmedia-info,
43 * if ID is NULL, libmedia-info just allocate memory for mtype item,
44 * then return it, instead of loading record from DB to initialize each field.
45 */
46 #define GL_NEW_RECORD_ID NULL
47
48 enum
49 {
50         GL_DB_SUCCESS,
51         GL_DB_FAIL,
52 };
53
54 enum
55 {
56         GL_RENAME_ALBUM_SUCCESS,
57         GL_RENAME_ALBUM_INVALIDATE_NAME,
58         GL_RENAME_ALBUM_DUPLICATED_NAME,
59         GL_RENAME_ALBUM_FAIL
60 };
61
62 enum
63 {
64         GL_DELETE_ALBUM_SUCCESS,
65         GL_DELETE_ALBUM_FAIL
66 };
67
68 typedef struct
69 {
70         Mcluster *cluster;
71         int index;
72         time_t item_mtime;
73         Elm_Object_Item *item;
74         bool checked;
75
76         void *ad;               /* Save ad to prevent use global variable */
77         void *_reserved;
78 } gl_cluster;
79
80 typedef struct
81 {
82         Eina_List *clist;
83         int cur_pos;
84         int edit_cnt;
85 } gl_cluster_list;
86
87 typedef struct _gl_item
88 {
89         Mitem *item;
90         Elm_Object_Item *elm_item;
91         Evas_Object *check_obj;
92         bool checked;
93         int sequence;
94
95         void *ad;               /* Save ad to prevent use global variable */
96         void *_reserved;
97 } gl_item;
98
99 bool gl_db_get_cluster_list(void *data);
100 int gl_db_update_cluster_list(void *data);
101 int gl_db_cluster_list_remove(void *data, gl_cluster * item);
102 int gl_db_add_cluster(void *data, char *cluster_url);
103 bool gl_db_exists_item(void *data, const char *id);
104 int gl_db_get_cluster_by_id(void *data, const char *cluster_id, gl_cluster **cluster, int *pos);
105 int gl_db_get_item_cnt(void *data, const char *cluster_id, int *item_cnt);
106 int gl_db_update_item_cnt(gl_cluster * album);
107 int gl_db_update_item_list(void *data);
108 int gl_db_get_item_list(void *data,
109                 gl_cluster * album,
110                 int start_pos,
111                 int end_pos);
112 bool gl_db_is_item_cnt_zero(void *data, minfo_file_type type);
113 int gl_db_clear_item_list(void *data);
114 int gl_db_get_first_several_items(gl_cluster * album,
115                 gl_item * items[],
116                 int *item_count,
117                 minfo_media_sort_type sort_type);
118 gl_item *gl_db_new_item_mitem(Mitem * mitem);
119 int gl_db_destroy_item(gl_item * gitem);
120 int gl_db_get_item_by_index(void *data, int idx, bool select_mode, gl_item ** gitem);
121 int gl_db_item_list_remove(void *data, gl_item * gitem);
122 int gl_db_append_item(void *data, gl_item * gitem);
123 int gl_db_remove_item(gl_item * gitem);
124 int gl_db_selected_list_append(void *data, gl_item * gitem);
125 int gl_db_selected_list_remove(void *data, gl_item * gitem);
126 gl_item *gl_db_selected_list_get_nth(void *data, int idx);
127 int gl_db_selected_list_finalize(void *data);
128 int gl_db_selected_list_count(void *data);
129 int gl_db_get_albums_selected_cnt(void *data);
130 bool gl_db_is_albums_selected_list_empty(void *data);
131 int gl_db_albums_selected_list_append(void *data, gl_cluster * item);
132 int gl_db_albums_selected_list_remove(void *data, gl_cluster * item);
133 int gl_db_finalize_albums_selected_list(void *data);
134 int gl_db_init(void *data);
135 int gl_db_finalize(void *data);
136 gl_cluster *gl_db_new_cluster(void);
137 Mitem *gl_db_new_mitem(void *data, const char *item_id);
138 Mcluster *gl_db_new_mcluster(void *data, const char *cluster_id);
139 int gl_db_get_folder_fullpath(void *data, const char *cluster_id, char *path);
140 bool gl_db_is_root_path(void *data, const char *cluster_id, const char *path);
141 bool gl_db_is_default_album(void *data, Mcluster *mcluster);
142 int gl_db_free_cluster(gl_cluster * gcluster);
143
144 #ifdef _cplusplus
145 }
146 #endif
147 #endif /* _GL_DB_HANDLER_H_ */