aboutsummaryrefslogtreecommitdiffstats
path: root/src/eom-new-item-dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eom-new-item-dialog.c')
-rw-r--r--src/eom-new-item-dialog.c79
1 files changed, 77 insertions, 2 deletions
diff --git a/src/eom-new-item-dialog.c b/src/eom-new-item-dialog.c
index e7d5052..1f53513 100644
--- a/src/eom-new-item-dialog.c
+++ b/src/eom-new-item-dialog.c
@@ -4,8 +4,18 @@
#include <hildon/hildon-entry.h>
#include <stdlib.h>
+#include "data.h"
+
+enum {
+ EOM_NEW_PROP_MID = 1
+};
+
static void eom_new_item_dialog_class_init(EomNewItemDialogClass*);
static void eom_new_item_dialog_init(EomNewItemDialog*);
+static void finalize(GObject*);
+static void get_property(GObject*, guint, GValue*, GParamSpec*);
+static void set_manga_id(EomNewItemDialog*, gint);
+static void set_property(GObject*, guint, const GValue*, GParamSpec*);
G_DEFINE_TYPE(EomNewItemDialog, eom_new_item_dialog, GTK_TYPE_DIALOG)
@@ -28,8 +38,21 @@ eom_new_item_dialog_new(void)
}
static void
-eom_new_item_dialog_class_init(EomNewItemDialogClass *class)
-{}
+eom_new_item_dialog_class_init(EomNewItemDialogClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ GParamSpec *pspec;
+
+ gobject_class->set_property = set_property;
+ gobject_class->get_property = get_property;
+ gobject_class->finalize = finalize;
+ pspec = g_param_spec_int("manga-id", "ID of the manga",
+ "Set the manga-id", 0, INT_MAX, 0,
+ G_PARAM_WRITABLE);
+
+ g_object_class_install_property(gobject_class, EOM_NEW_PROP_MID,
+ pspec);
+}
static void
eom_new_item_dialog_init(EomNewItemDialog *dialog)
@@ -58,3 +81,55 @@ eom_new_item_dialog_init(EomNewItemDialog *dialog)
GTK_RESPONSE_OK,
NULL);
}
+
+static void
+finalize(GObject *object)
+{
+ EomNewItemDialog *self = EOM_NEW_ITEM_DIALOG(object);
+
+ g_free(self->manga);
+
+ G_OBJECT_CLASS(eom_new_item_dialog_parent_class)->finalize(object);
+}
+
+static void
+get_property(GObject *object, guint property_id, GValue *value,
+ GParamSpec *pspec)
+{
+ EomNewItemDialog *self = EOM_NEW_ITEM_DIALOG(object);
+
+ switch(property_id) {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ }
+}
+
+static void
+set_manga_id(EomNewItemDialog *self, gint manga_id)
+{
+ Manga *manga = data_get_manga_by_id(manga_id);
+ gchar *txt;
+ self->manga = manga;
+ txt = g_strdup_printf("%d", manga->total_qty);
+
+ gtk_entry_set_text(GTK_ENTRY(self->name_entry), manga->name);
+ gtk_entry_set_text(GTK_ENTRY(self->qty_entry), txt);
+
+ g_free(txt);
+}
+
+static void
+set_property(GObject *object, guint property_id, const GValue *value,
+ GParamSpec *pspec)
+{
+ EomNewItemDialog *self = EOM_NEW_ITEM_DIALOG(object);
+ gint manga_id = g_value_get_int(value);
+
+ switch (property_id) {
+ case EOM_NEW_PROP_MID:
+ set_manga_id(self, manga_id);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ }
+}