diff options
-rw-r--r-- | camel/camel-store.c | 171 | ||||
-rw-r--r-- | camel/camel-store.h | 76 |
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 */ |