More fixes for signal simulation in the completion prototype
[ephy-history.git] / ephy-history-node.c
blobbacb885a31cd21729f8189d3d2359d966e88ffd5
1 #include "ephy-history-node.h"
3 G_DEFINE_TYPE(EphyHistoryNode, ephy_history_node, G_TYPE_OBJECT)
4 #define EPHY_HISTORY_NODE_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_HISTORY_NODE, EphyHistoryNodePrivate))
6 enum
8 EPHY_HISTORY_NODE_PROP_ID = 1,
9 EPHY_HISTORY_NODE_PROP_URL,
10 EPHY_HISTORY_NODE_PROP_TITLE,
11 EPHY_HISTORY_NODE_PROP_FAVICON_URL,
14 static void ephy_history_node_finalize (GObject *object);
16 struct _EphyHistoryNodePrivate
18 guint64 id;
19 gchar *url;
20 gchar *title;
21 gchar *favicon_url;
24 static void
25 ephy_history_node_set_property (GObject *object,
26 guint prop_id,
27 const GValue *value,
28 GParamSpec *pspec)
30 EphyHistoryNode *self = EPHY_HISTORY_NODE (object);
32 switch (prop_id)
34 case EPHY_HISTORY_NODE_PROP_ID:
35 self->priv->id = g_value_get_uint64 (value);
36 break;
37 case EPHY_HISTORY_NODE_PROP_URL:
38 g_free (self->priv->url);
39 self->priv->url = g_value_dup_string (value);
40 break;
41 case EPHY_HISTORY_NODE_PROP_TITLE:
42 g_free (self->priv->title);
43 self->priv->title = g_value_dup_string (value);
44 break;
45 case EPHY_HISTORY_NODE_PROP_FAVICON_URL:
46 g_free (self->priv->favicon_url);
47 self->priv->favicon_url = g_value_dup_string (value);
48 break;
49 default:
50 /* We don't have any other property... */
51 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
52 break;
56 static void
57 ephy_history_node_get_property (GObject *object,
58 guint prop_id,
59 GValue *value,
60 GParamSpec *pspec)
62 EphyHistoryNode *self = EPHY_HISTORY_NODE (object);
64 switch (prop_id)
66 case EPHY_HISTORY_NODE_PROP_ID:
67 g_value_set_uint64 (value, self->priv->id);
68 break;
69 case EPHY_HISTORY_NODE_PROP_URL:
70 g_value_set_string (value, self->priv->url);
71 break;
72 case EPHY_HISTORY_NODE_PROP_TITLE:
73 g_value_set_string (value, self->priv->title);
74 break;
75 case EPHY_HISTORY_NODE_PROP_FAVICON_URL:
76 g_value_set_string (value, self->priv->favicon_url);
77 break;
78 default:
79 /* We don't have any other property... */
80 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
81 break;
85 static void
86 ephy_history_node_class_init (EphyHistoryNodeClass *klass)
88 GObjectClass *object_class = G_OBJECT_CLASS (klass);
90 object_class->finalize = ephy_history_node_finalize;
92 object_class->get_property = ephy_history_node_get_property;
93 object_class->set_property = ephy_history_node_set_property;
95 g_type_class_add_private (object_class, sizeof (EphyHistoryNodePrivate));
97 g_object_class_install_property (object_class,
98 EPHY_HISTORY_NODE_PROP_ID,
99 g_param_spec_uint64 ("id",
100 "id",
101 "item id",
102 0 /* minimum value */,
103 G_MAXUINT64 /* maximum value */,
104 0 /* default value */,
105 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
107 g_object_class_install_property (object_class,
108 EPHY_HISTORY_NODE_PROP_URL,
109 g_param_spec_string ("url",
110 "url",
111 "Item URL",
112 NULL /* default value */,
113 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
115 g_object_class_install_property (object_class,
116 EPHY_HISTORY_NODE_PROP_TITLE,
117 g_param_spec_string ("title",
118 "title",
119 "Item Title",
120 NULL /* default value */,
121 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
123 g_object_class_install_property (object_class,
124 EPHY_HISTORY_NODE_PROP_FAVICON_URL,
125 g_param_spec_string ("favicon-url",
126 "favicon-url",
127 "Favicon URL",
128 NULL /* default value */,
129 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
133 static void
134 ephy_history_node_init (EphyHistoryNode *node)
136 node->priv = EPHY_HISTORY_NODE_GET_PRIVATE (node);
139 static void
140 ephy_history_node_finalize (GObject *object)
142 EphyHistoryNode *self = EPHY_HISTORY_NODE (object);
144 g_free (self->priv->url);
145 g_free (self->priv->title);
146 g_free (self->priv->favicon_url);
148 g_free (self->priv);
150 G_OBJECT_CLASS (ephy_history_node_parent_class)->finalize (object);