[libgd/wip/rishi/main-box: 1/9] Add GdMainBoxItem
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgd/wip/rishi/main-box: 1/9] Add GdMainBoxItem
- Date: Fri, 2 Dec 2016 17:31:42 +0000 (UTC)
commit 381e4d6c30e569cbbd2d1b143959fe997eeef4cb
Author: Debarshi Ray <debarshir gnome org>
Date: Wed Nov 23 14:43:08 2016 +0100
Add GdMainBoxItem
This is the interface that a GObject must implement to get rendered
by a GdMainBox.
https://bugzilla.gnome.org/show_bug.cgi?id=774914
libgd/gd-main-box-item.c | 216 ++++++++++++++++++++++++++++++++++++++++++++++
libgd/gd-main-box-item.h | 55 ++++++++++++
2 files changed, 271 insertions(+), 0 deletions(-)
---
diff --git a/libgd/gd-main-box-item.c b/libgd/gd-main-box-item.c
new file mode 100644
index 0000000..d191ce8
--- /dev/null
+++ b/libgd/gd-main-box-item.c
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2016 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Debarshi Ray <debarshir gnome org>
+ *
+ */
+
+#include <cairo-gobject.h>
+
+#include "gd-main-box-item.h"
+
+G_DEFINE_INTERFACE (GdMainBoxItem, gd_main_box_item, G_TYPE_OBJECT)
+
+static void
+gd_main_box_item_default_init (GdMainBoxItemInterface *iface)
+{
+ GParamSpec *pspec;
+
+ /**
+ * GdMainBoxItem:id:
+ *
+ * A unique ID to identify the #GdMainBoxItem object.
+ */
+ pspec = g_param_spec_string ("id",
+ "ID",
+ "A unique ID to identify the item",
+ NULL,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+
+ /**
+ * GdMainBoxItem:uri:
+ *
+ * A URI corresponding to the #GdMainBoxItem object.
+ */
+ pspec = g_param_spec_string ("uri",
+ "URI",
+ "A URI corresponding to the item",
+ NULL,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+
+ /**
+ * GdMainBoxItem:primary-text:
+ *
+ * Some text to describe the #GdMainBoxItem object.
+ */
+ pspec = g_param_spec_string ("primary-text",
+ "Primary Text",
+ "Some text to describe the item",
+ NULL,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+
+ /**
+ * GdMainBoxItem:secondary-text:
+ *
+ * Some additional text to describe the #GdMainBoxItem object.
+ */
+ pspec = g_param_spec_string ("secondary-text",
+ "Secondary Text",
+ "Some additional text to describe the item",
+ NULL,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+
+ /**
+ * GdMainBoxItem:icon:
+ *
+ * An icon to visually identify the #GdMainBoxItem object.
+ */
+ pspec = g_param_spec_boxed ("icon",
+ "Icon",
+ "An icon to visually identify the item",
+ CAIRO_GOBJECT_TYPE_SURFACE,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+
+ /**
+ * GdMainBoxItem:mtime:
+ *
+ * The time when the #GdMainBoxItem object was last modified.
+ */
+ pspec = g_param_spec_int64 ("mtime",
+ "Modification time",
+ "The time when the item was last modified",
+ -1,
+ G_MAXINT64,
+ -1,
+ G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ g_object_interface_install_property (iface, pspec);
+}
+
+/**
+ * gd_main_box_item_get_id:
+ * @self:
+ *
+ * Returns: (transfer none): The ID
+ */
+const gchar *
+gd_main_box_item_get_id (GdMainBoxItem *self)
+{
+ GdMainBoxItemInterface *iface;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), NULL);
+
+ iface = GD_MAIN_BOX_ITEM_GET_IFACE (self);
+
+ return (* iface->get_id) (self);
+}
+
+/**
+ * gd_main_box_item_get_uri:
+ * @self:
+ *
+ * Returns: (transfer none): The URI
+ */
+const gchar *
+gd_main_box_item_get_uri (GdMainBoxItem *self)
+{
+ GdMainBoxItemInterface *iface;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), NULL);
+
+ iface = GD_MAIN_BOX_ITEM_GET_IFACE (self);
+
+ return (* iface->get_uri) (self);
+}
+
+/**
+ * gd_main_box_item_get_primary_text:
+ * @self:
+ *
+ * Returns: (transfer none): The primary text
+ */
+const gchar *
+gd_main_box_item_get_primary_text (GdMainBoxItem *self)
+{
+ GdMainBoxItemInterface *iface;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), NULL);
+
+ iface = GD_MAIN_BOX_ITEM_GET_IFACE (self);
+
+ return (* iface->get_primary_text) (self);
+}
+
+/**
+ * gd_main_box_item_get_secondary_text:
+ * @self:
+ *
+ * Returns: (transfer none): The secondary text
+ */
+const gchar *
+gd_main_box_item_get_secondary_text (GdMainBoxItem *self)
+{
+ GdMainBoxItemInterface *iface;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), NULL);
+
+ iface = GD_MAIN_BOX_ITEM_GET_IFACE (self);
+
+ return (* iface->get_secondary_text) (self);
+}
+
+/**
+ * gd_main_box_item_get_icon:
+ * @self:
+ *
+ * Returns: (transfer none): The icon
+ */
+cairo_surface_t *
+gd_main_box_item_get_icon (GdMainBoxItem *self)
+{
+ cairo_surface_t *icon;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), NULL);
+
+ g_object_get (self, "icon", &icon, NULL);
+
+ if (icon != NULL)
+ g_boxed_free (CAIRO_GOBJECT_TYPE_SURFACE, icon);
+
+ return icon;
+}
+
+/**
+ * gd_main_box_item_get_mtime:
+ * @self:
+ *
+ * Returns: (transfer none): The modification time
+ */
+gint64
+gd_main_box_item_get_mtime (GdMainBoxItem *self)
+{
+ gint64 mtime;
+
+ g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), -1);
+
+ g_object_get (self, "mtime", &mtime, NULL);
+ return mtime;
+}
diff --git a/libgd/gd-main-box-item.h b/libgd/gd-main-box-item.h
new file mode 100644
index 0000000..c6efa0d
--- /dev/null
+++ b/libgd/gd-main-box-item.h
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Debarshi Ray <debarshir gnome org>
+ *
+ */
+
+#ifndef __GD_MAIN_BOX_ITEM_H__
+#define __GD_MAIN_BOX_ITEM_H__
+
+#include <cairo.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GD_TYPE_MAIN_BOX_ITEM gd_main_box_item_get_type()
+G_DECLARE_INTERFACE (GdMainBoxItem, gd_main_box_item, GD, MAIN_BOX_ITEM, GObject)
+
+struct _GdMainBoxItemInterface
+{
+ GTypeInterface base_iface;
+
+ /* vtable */
+ const gchar * (* get_id) (GdMainBoxItem *self);
+ const gchar * (* get_uri) (GdMainBoxItem *self);
+ const gchar * (* get_primary_text) (GdMainBoxItem *self);
+ const gchar * (* get_secondary_text) (GdMainBoxItem *self);
+ guint (* get_pulse) (GdMainBoxItem *self);
+};
+
+const gchar * gd_main_box_item_get_id (GdMainBoxItem *self);
+const gchar * gd_main_box_item_get_uri (GdMainBoxItem *self);
+const gchar * gd_main_box_item_get_primary_text (GdMainBoxItem *self);
+const gchar * gd_main_box_item_get_secondary_text (GdMainBoxItem *self);
+cairo_surface_t * gd_main_box_item_get_icon (GdMainBoxItem *self);
+gint64 gd_main_box_item_get_mtime (GdMainBoxItem *self);
+guint gd_main_box_item_get_pulse (GdMainBoxItem *self);
+
+G_END_DECLS
+
+#endif /* __GD_MAIN_BOX_ITEM_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]