soylent r158 - trunk/libsoylent
- From: svenp svn gnome org
- To: svn-commits-list gnome org
- Subject: soylent r158 - trunk/libsoylent
- Date: Sat, 14 Jun 2008 14:33:16 +0000 (UTC)
Author: svenp
Date: Sat Jun 14 14:33:16 2008
New Revision: 158
URL: http://svn.gnome.org/viewvc/soylent?rev=158&view=rev
Log:
added SlBook (GObject stuff works)
Added:
trunk/libsoylent/sl-book.c
trunk/libsoylent/sl-book.h
Modified:
trunk/libsoylent/Makefile.am
trunk/libsoylent/soylent.c
trunk/libsoylent/soylent.h
Modified: trunk/libsoylent/Makefile.am
==============================================================================
--- trunk/libsoylent/Makefile.am (original)
+++ trunk/libsoylent/Makefile.am Sat Jun 14 14:33:16 2008
@@ -7,9 +7,11 @@
libsoylent_la_SOURCES = \
soylent.h \
soylent-entity.h \
+ sl-book.h \
soylent-person.h \
soylent.c \
soylent-entity.c \
+ sl-book.c \
soylent-person.c
libsoylent_la_CFLAGS = $(LIBSOYLENT_CFLAGS) $(WARN_CFLAGS)
Added: trunk/libsoylent/sl-book.c
==============================================================================
--- (empty file)
+++ trunk/libsoylent/sl-book.c Sat Jun 14 14:33:16 2008
@@ -0,0 +1,156 @@
+/**/
+
+#include "sl-book.h"
+
+#include <libebook/e-book.h>
+
+/* private structs and fields */
+
+struct _SlBookPriv
+{
+ GError *error;
+ EBook *ebook;
+};
+
+static GObjectClass *parent_class = NULL;
+static SlBook *sl_book_default = NULL;
+
+static void sl_book_class_init (gpointer g_class, gpointer class_data);
+static void sl_book_init (GTypeInstance *instance, gpointer g_class);
+static void sl_book_dispose (GObject *object);
+static void sl_book_set_property (GObject *object, guint property_id,
+ const GValue *value, GParamSpec *pspec);
+static void sl_book_get_property (GObject *object, guint property_id,
+ GValue *value, GParamSpec *pspec);
+
+GType
+sl_book_get_type (void)
+{
+ static GType type = 0;
+ static const GTypeInfo info =
+ {
+ sizeof (SlBookClass),
+ NULL,
+ NULL,
+ sl_book_class_init,
+ NULL,
+ NULL,
+ sizeof (SlBook),
+ 0,
+ sl_book_init,
+ NULL
+ };
+
+ if (type == 0)
+ {
+ type = g_type_register_static (G_TYPE_OBJECT, "SlBook", &info, 0);
+ }
+ return type;
+}
+
+void
+sl_book_setup (void)
+{
+ sl_book_default = sl_book_new ();
+ sl_book_set_current (sl_book_default);
+}
+
+void
+sl_book_set_current (SlBook *book)
+{
+ sl_book_current = book;
+}
+
+GList *
+sl_book_get_books (void)
+{
+ /* TODO: get all books: as objects? or as strings? */
+ g_warning("%s not implemented", __FUNCTION__);
+ return NULL;
+}
+
+static void
+sl_book_class_init (gpointer g_class, gpointer class_data)
+{
+ parent_class = g_type_class_peek (g_type_parent (SL_BOOK_TYPE));
+ g_assert (parent_class != NULL);
+
+ parent_class->dispose = sl_book_dispose;
+ parent_class->get_property = sl_book_get_property;
+ parent_class->set_property = sl_book_set_property;
+}
+
+static void
+sl_book_init (GTypeInstance *instance, gpointer g_class)
+{
+ SlBook *self = SL_BOOK (instance);
+ SlBookPriv *priv = g_new (SlBookPriv, 1);
+ self->priv = priv;
+ self->priv->error = NULL;
+
+ /* TODO: ebook should be depending on sl_book_new call, but for now we just
+ * use the default addressbook */
+ self->priv->ebook = e_book_new_system_addressbook (&self->priv->error);
+ if (self->priv->error)
+ {
+ g_critical ("failed to get system addressbook");
+ return;
+ }
+ /* TODO: is it a good idea to open the book here? */
+ e_book_open (self->priv->ebook, FALSE, &self->priv->error);
+ if (self->priv->error)
+ {
+ g_critical ("failed to open addressbook");
+ return;
+ }
+
+ self->disposed = FALSE;
+}
+
+static void
+sl_book_dispose (GObject *object)
+{
+ SlBook *self = SL_BOOK (object);
+ g_return_if_fail (!self->disposed);
+
+ g_error_free (self->priv->error);
+ g_object_unref (self->priv->ebook);
+ g_free (self->priv);
+ self->disposed = TRUE;
+
+ parent_class->dispose (object);
+}
+
+static void
+sl_book_set_property (GObject *object, guint property_id, const GValue *value,
+ GParamSpec *pspec)
+{
+ g_warning("%s not implemented", __FUNCTION__);
+}
+
+static void
+sl_book_get_property (GObject *object, guint property_id, GValue *value,
+ GParamSpec *pspec)
+{
+ g_warning("%s not implemented", __FUNCTION__);
+}
+
+SlBook *
+sl_book_new (void)
+{
+ /* TODO: create new EBook with ESource, howto? */
+ SlBook *self = g_object_new(SL_BOOK_TYPE, NULL);
+ if (self->priv->error != NULL)
+ {
+ g_object_unref (self);
+ self = NULL;
+ }
+ return self;
+}
+
+SoylentEntity *
+sl_book_get_person(SlBook *self, gchar *attrname, gpointer value)
+{
+ g_warning("%s not implemented", __FUNCTION__);
+ return NULL;
+}
Added: trunk/libsoylent/sl-book.h
==============================================================================
--- (empty file)
+++ trunk/libsoylent/sl-book.h Sat Jun 14 14:33:16 2008
@@ -0,0 +1,48 @@
+/**/
+
+#ifndef SOYLENT_BOOK_H
+#define SOYLENT_BOOK_H
+
+#include "soylent-entity.h"
+
+#include <glib.h>
+#include <glib-object.h>
+
+#define SL_BOOK_TYPE (sl_book_get_type ())
+#define SL_BOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj, \
+ SL_BOOK_TYPE, SlBook))
+#define SL_BOOK_CLASS(cls) (G_TYPE_CHECK_CLASS_CAST (cls, SL_BOOK_TYPE, \
+ SlBookClass))
+#define SL_IS_BOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, SL_BOOK_TYPE))
+#define SL_IS_BOOK_CLASS(cls) (G_TYPE_CHECK_CLASS_TYPE (cls, SL_BOOK_TYPE))
+#define SL_BOOK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS (obj, SL_BOOK_TYPE))
+
+#define SL_BOOK_STD sl_book_current;
+
+typedef struct _SlBook SlBook;
+typedef struct _SlBookClass SlBookClass;
+typedef struct _SlBookPriv SlBookPriv;
+
+struct _SlBook
+{
+ GObject parent;
+ gboolean disposed;
+ SlBookPriv *priv;
+};
+
+struct _SlBookClass
+{
+ GObjectClass parent;
+};
+
+SlBook *sl_book_current;
+
+GType sl_book_get_type (void);
+void sl_book_setup (void);
+void sl_book_set_current (SlBook *book);
+GList *sl_book_get_books (void);
+
+SlBook *sl_book_new (void);
+SoylentEntity *sl_book_get_person(SlBook *self, gchar *attrname, gpointer value);
+
+#endif
Modified: trunk/libsoylent/soylent.c
==============================================================================
--- trunk/libsoylent/soylent.c (original)
+++ trunk/libsoylent/soylent.c Sat Jun 14 14:33:16 2008
@@ -5,6 +5,9 @@
#include <glib-object.h>
-void soylent_init(void) {
- g_type_init();
+void
+soylent_init (void)
+{
+ g_type_init ();
+ sl_book_setup ();
}
Modified: trunk/libsoylent/soylent.h
==============================================================================
--- trunk/libsoylent/soylent.h (original)
+++ trunk/libsoylent/soylent.h Sat Jun 14 14:33:16 2008
@@ -5,6 +5,7 @@
#include "soylent-person.h"
#include "soylent-entity.h"
+#include "sl-book.h"
void soylent_init(void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]