Commit bacedd9f authored by Debarshi Ray's avatar Debarshi Ray

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
parent 583848ef
/*
* 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);
/**
* GdMainBoxItem:pulse:
*
* Whether to show a progress indicator.
*/
pspec = g_param_spec_boolean ("pulse",
"Pulse",
"Whether to show a progress indicator",
FALSE,
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)
{
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_icon) (self);
}
/**
* 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;
}
/**
* gd_main_box_item_get_pulse:
* @self:
*
* Returns: (transfer none): Whether to show a progress indicator
*/
gboolean
gd_main_box_item_get_pulse (GdMainBoxItem *self)
{
gboolean pulse;
g_return_val_if_fail (GD_IS_MAIN_BOX_ITEM (self), FALSE);
g_object_get (self, "pulse", &pulse, NULL);
return pulse;
}
/*
* 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);
cairo_surface_t * (* get_icon) (GdMainBoxItem *self);
gboolean (* 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);
gboolean gd_main_box_item_get_pulse (GdMainBoxItem *self);
G_END_DECLS
#endif /* __GD_MAIN_BOX_ITEM_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment