1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
4
* Copyright (C) Philip Withnall 2008 <philip@tecnocode.co.uk>
6
* Diary is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
11
* Diary is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License
17
* along with Diary. If not, see <http://www.gnu.org/licenses/>.
20
#ifndef DIARY_STORAGE_MANAGER_H
21
#define DIARY_STORAGE_MANAGER_H
24
#include <glib-object.h>
30
#define DIARY_TYPE_STORAGE_MANAGER (diary_storage_manager_get_type ())
31
#define DIARY_STORAGE_MANAGER_ERROR (diary_storage_manager_error_quark ())
32
#define DIARY_STORAGE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DIARY_TYPE_STORAGE_MANAGER, DiaryStorageManager))
33
#define DIARY_STORAGE_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), DIARY_TYPE_STORAGE_MANAGER, DiaryStorageManagerClass))
34
#define DIARY_IS_STORAGE_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), DIARY_TYPE_STORAGE_MANAGER))
35
#define DIARY_IS_STORAGE_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DIARY_TYPE_STORAGE_MANAGER))
36
#define DIARY_STORAGE_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), DIARY_TYPE_STORAGE_MANAGER, DiaryStorageManagerClass))
38
typedef struct _DiaryStorageManagerPrivate DiaryStorageManagerPrivate;
42
DiaryStorageManagerPrivate *priv;
43
} DiaryStorageManager;
47
} DiaryStorageManagerClass;
50
DIARY_STORAGE_MANAGER_ERROR_UNSUPPORTED,
51
DIARY_STORAGE_MANAGER_ERROR_OPENING_FILE,
52
DIARY_STORAGE_MANAGER_ERROR_CREATING_CONTEXT,
53
DIARY_STORAGE_MANAGER_ERROR_DECRYPTING,
54
DIARY_STORAGE_MANAGER_ERROR_ENCRYPTING,
55
DIARY_STORAGE_MANAGER_ERROR_GETTING_KEY
56
} DiaryStorageManagerError;
58
typedef gint (*DiaryQueryCallback) (gpointer user_data, gint columns, gchar **data, gchar **column_names);
66
GType diary_storage_manager_get_type (void);
67
GQuark diary_storage_manager_error_quark (void);
68
DiaryStorageManager *diary_storage_manager_new (const gchar *filename);
70
void diary_storage_manager_connect (DiaryStorageManager *self);
71
void diary_storage_manager_disconnect (DiaryStorageManager *self);
73
DiaryQueryResults *diary_storage_manager_query (DiaryStorageManager *self, const gchar *query, ...);
74
void diary_storage_manager_free_results (DiaryQueryResults *results);
75
gboolean diary_storage_manager_query_async (DiaryStorageManager *self, const gchar *query, const DiaryQueryCallback callback, gpointer user_data, ...);
77
/* TODO: Surely just passing in GDates to these functions would be easier? */
78
gboolean diary_storage_manager_get_statistics (DiaryStorageManager *self, guint *entry_count, guint *link_count, guint *character_count);
80
gboolean diary_storage_manager_entry_is_editable (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day);
81
gchar *diary_storage_manager_get_entry (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day);
82
gboolean diary_storage_manager_set_entry (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day, const gchar *content);
83
guint diary_storage_manager_search_entries (DiaryStorageManager *self, const gchar *search_string, GDate *matches[]);
85
gboolean *diary_storage_manager_get_month_marked_days (DiaryStorageManager *self, GDateYear year, GDateMonth month);
87
DiaryLink **diary_storage_manager_get_entry_links (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day);
88
gboolean diary_storage_manager_add_entry_link (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day, const gchar *link_type, const gchar *link_value, const gchar *link_value2);
89
gboolean diary_storage_manager_remove_entry_link (DiaryStorageManager *self, GDateYear year, GDateMonth month, GDateDay day, const gchar *link_type);
93
#endif /* !DIARY_STORAGE_MANAGER_H */