soylent r158 - trunk/libsoylent



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]