107 lines
2.0 KiB
C
107 lines
2.0 KiB
C
|
#include "resource-holder.h"
|
||
|
|
||
|
struct _ResourceHolder {
|
||
|
GObject instance;
|
||
|
|
||
|
char *name;
|
||
|
char *path;
|
||
|
int count;
|
||
|
gsize size;
|
||
|
GListModel *children;
|
||
|
ResourceHolder *parent;
|
||
|
};
|
||
|
|
||
|
G_DEFINE_TYPE (ResourceHolder, resource_holder, G_TYPE_OBJECT)
|
||
|
|
||
|
static void
|
||
|
resource_holder_init (ResourceHolder *holder)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
resource_holder_finalize (GObject *object)
|
||
|
{
|
||
|
ResourceHolder *holder = RESOURCE_HOLDER (object);
|
||
|
|
||
|
g_free (holder->name);
|
||
|
g_free (holder->path);
|
||
|
g_clear_object (&holder->children);
|
||
|
|
||
|
G_OBJECT_CLASS (resource_holder_parent_class)->finalize (object);
|
||
|
}
|
||
|
|
||
|
static void
|
||
|
resource_holder_class_init (ResourceHolderClass *class)
|
||
|
{
|
||
|
GObjectClass *object_class = G_OBJECT_CLASS (class);
|
||
|
|
||
|
object_class->finalize = resource_holder_finalize;
|
||
|
}
|
||
|
|
||
|
ResourceHolder *
|
||
|
resource_holder_new (const char *name,
|
||
|
const char *path,
|
||
|
int count,
|
||
|
gsize size,
|
||
|
GListModel *children)
|
||
|
{
|
||
|
ResourceHolder *holder;
|
||
|
|
||
|
holder = g_object_new (RESOURCE_TYPE_HOLDER, NULL);
|
||
|
|
||
|
holder->name = g_strdup (name);
|
||
|
holder->path = g_strdup (path);
|
||
|
holder->count = count;
|
||
|
holder->size = size;
|
||
|
g_set_object (&holder->children, children);
|
||
|
|
||
|
if (children)
|
||
|
{
|
||
|
int i;
|
||
|
for (i = 0; i < g_list_model_get_n_items (children); i++)
|
||
|
{
|
||
|
ResourceHolder *child = g_list_model_get_item (children, i);
|
||
|
child->parent = holder;
|
||
|
g_object_unref (child);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return holder;
|
||
|
}
|
||
|
|
||
|
const char *
|
||
|
resource_holder_get_name (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->name;
|
||
|
}
|
||
|
|
||
|
const char *
|
||
|
resource_holder_get_path (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->path;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
resource_holder_get_count (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->count;
|
||
|
}
|
||
|
|
||
|
gsize
|
||
|
resource_holder_get_size (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->size;
|
||
|
}
|
||
|
|
||
|
GListModel *
|
||
|
resource_holder_get_children (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->children;
|
||
|
}
|
||
|
|
||
|
ResourceHolder *
|
||
|
resource_holder_get_parent (ResourceHolder *holder)
|
||
|
{
|
||
|
return holder->parent;
|
||
|
}
|