aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/camel-store.c171
-rw-r--r--camel/camel-store.h76
2 files changed, 247 insertions, 0 deletions
diff --git a/camel/camel-store.c b/camel/camel-store.c
new file mode 100644
index 0000000000..2bcdf28d2b
--- /dev/null
+++ b/camel/camel-store.c
@@ -0,0 +1,171 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* camelStore.c : Abstract class for an email store */
+
+/*
+ *
+ * Copyright (C) 1999 Bertrand Guiheneuf <Bertrand.Guiheneuf@inria.fr> .
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+#include "camel-store.h"
+
+static GtkObjectClass *camel_store_parent_class=NULL;
+
+/* Returns the class for a CamelStore */
+#define CS_CLASS(so) CAMEL_STORE_CLASS (GTK_OBJECT(so)->klass)
+
+static void camel_store_set_separator(CamelStore *store, gchar sep);
+static gchar camel_store_get_geparator(CamelStore *store);
+static CamelFolder *camel_store_get_folder(GString *folder_name);
+static CamelFolder *camel_store_get_root_folder(CamelStore *store);
+static CamelFolder *camel_store_get_default_folder(CamelStore *store);
+
+
+
+static void
+camel_store_class_init (CamelStoreClass *camel_store_class)
+{
+ camel_store_parent_class = gtk_type_class (gtk_object_get_type ());
+
+ /* virtual method definition */
+ camel_store_class->set_separator = camel_store_set_separator;
+ camel_store_class->get_separator = camel_store_get_geparator;
+ camel_store_class->get_folder = camel_store_get_folder;
+ camel_store_class->get_root_folder = camel_store_get_root_folder;
+ camel_store_class->get_default_folder = camel_store_get_default_folder;
+ /* virtual method overload */
+}
+
+
+
+
+
+
+
+GtkType
+camel_store__get_type (void)
+{
+ static GtkType camel_store_type = 0;
+
+ if (!camel_store_type) {
+ GtkTypeInfo camel_store_info =
+ {
+ "CamelStore",
+ sizeof (CamelStore),
+ sizeof (CamelStoreClass),
+ (GtkClassInitFunc) camel_store_class_init,
+ (GtkObjectInitFunc) NULL,
+ /* reserved_1 */ NULL,
+ /* reserved_2 */ NULL,
+ (GtkClassInitFunc) NULL,
+ };
+
+ camel_store_type = gtk_type_unique (gtk_object_get_type (), &camel_store_info);
+ }
+
+ return camel_store_type;
+}
+
+
+
+
+
+/**
+ * camel_store_set_separator: set the character which separates this folder
+ * path from the folders names in a lower level of hierarchy.
+ *
+ *
+ *
+ **/
+static void
+camel_store_set_separator(CamelStore *store, gchar sep)
+{
+ store->separator = sep;
+}
+
+
+
+/**
+ * camel_store_get_separator: return the character which separates this folder
+ * path from the folders names in a lower level of hierarchy.
+ *
+ *
+ *
+ **/
+static gchar
+camel_store_get_geparator(CamelStore *store)
+{
+ g_assert(store);
+ return store->separator;
+}
+
+
+
+
+/**
+ * camel_store_get_folder: return the folder corresponding to a path.
+ *
+ * Returns the folder corresponding to the path "name".
+ * If the path begins with the separator caracter, it
+ * is relative to the root folder. Otherwise, it is
+ * relative to the default folder.
+ * The folder does not necessarily exist on the store.
+ * To make sure it already exists, use its "exists" method.
+ * If it does not exist, you can create it with its
+ * "create" method.
+ *
+ * @Return value: the folder
+ **/
+static CamelFolder *
+camel_store_get_folder(GString *folder_name)
+{
+
+#warning fill this part in.
+ return NULL;
+}
+
+
+/**
+ * camel_store_get_root_folder : return the toplevel folder
+ *
+ * Returns the folder which is at the top of the folder
+ * hierarchy. This folder is generally different from
+ * the default folder.
+ *
+ * @Return value: the tolevel folder.
+ **/
+static CamelFolder *
+camel_store_get_root_folder(CamelStore *store)
+{
+ return NULL;
+}
+
+/**
+ * camel_store_get_default_folder : return the store default folder
+ *
+ * The default folder is the folder which is presented
+ * to the user in the default configuration. The default
+ * is often the root folder.
+ *
+ * @Return value: the default folder.
+ **/
+static CamelFolder *
+camel_store_get_default_folder(CamelStore *store)
+{
+ return NULL;
+}
+
diff --git a/camel/camel-store.h b/camel/camel-store.h
new file mode 100644
index 0000000000..7c59f3764e
--- /dev/null
+++ b/camel/camel-store.h
@@ -0,0 +1,76 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* camel-store.h : Abstract class for an email store */
+
+/*
+ *
+ * Copyright (C) 1999 Bertrand Guiheneuf <Bertrand.Guiheneuf@inria.fr> .
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+
+#ifndef CAMEL_STORE_H
+#define CAMEL_STORE_H 1
+
+
+#ifdef __cplusplus
+extern "C" {
+#pragma }
+#endif /* __cplusplus }*/
+
+#include <gtk/gtk.h>
+#include "camel-folder.h"
+
+#define CAMEL_STORE_TYPE (camel_store_get_type ())
+#define CAMEL_STORE(obj) (GTK_CHECK_CAST((obj), CAMEL_STORE_TYPE, CamelStore))
+#define CAMEL_STORE_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), CAMEL_STORE_TYPE, CamelStoreClass))
+#define IS_CAMEL_STORE(o) (GTK_CHECK_TYPE((o), CAMEL_STORE_TYPE))
+
+#ifndef CAMEL_FOLDER_DEF
+#define CAMEL_FOLDER_DEF 1
+typedef struct _CamelFolder CamelFolder;
+#endif /* CAMEL_FOLDER_DEF */
+
+#ifndef CAMEL_STORE_DEF
+#define CAMEL_STORE_DEF 1
+typedef struct _CamelStore CamelStore;
+#endif /* CAMEL_STORE_DEF */
+
+struct _CamelStore
+{
+ GtkObject parent_object;
+
+ gchar separator;
+};
+
+
+
+typedef struct {
+ GtkObjectClass parent_class;
+ void (*set_separator) (CamelStore *store, gchar sep);
+ gchar (*get_separator) (CamelStore *store);
+ CamelFolder * (*get_folder) (GString *folder_name);
+ CamelFolder * (*get_root_folder) (CamelStore *store);
+ CamelFolder * (*get_default_folder) (CamelStore *store);
+
+} CamelStoreClass;
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* CAMEL_STORE_H */