// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
/*
* Copyright 2012 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the applicable version of the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of both the GNU Lesser General Public
* License version 3 along with this program. If not, see
*
*
* Authored by: Marco Trevisan
*
*/
#include "bamf-mock-application.h"
G_DEFINE_TYPE (BamfMockApplication, bamf_mock_application, BAMF_TYPE_APPLICATION);
#define BAMF_MOCK_APPLICATION_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), BAMF_TYPE_MOCK_APPLICATION, BamfMockApplicationPrivate))
struct _BamfMockApplicationPrivate
{
gboolean active;
gboolean running;
gboolean urgent;
gchar * name;
gchar * icon;
GList * children;
};
void
bamf_mock_application_set_active (BamfMockApplication * self, gboolean active)
{
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
if (self->priv->active != active)
{
self->priv->active = active;
g_signal_emit_by_name (G_OBJECT (self), "active-changed", active, NULL);
}
}
void
bamf_mock_application_set_running (BamfMockApplication * self, gboolean running)
{
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
if (self->priv->running != running)
{
self->priv->running = running;
g_signal_emit_by_name (G_OBJECT (self), "running-changed", running, NULL);
}
}
void
bamf_mock_application_set_urgent (BamfMockApplication * self, gboolean urgent)
{
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
if (self->priv->urgent != urgent)
{
self->priv->urgent = urgent;
g_signal_emit_by_name (G_OBJECT (self), "urgent-changed", urgent, NULL);
}
}
void
bamf_mock_application_set_name (BamfMockApplication * self, const gchar * name)
{
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
if (g_strcmp0 (self->priv->name, name) != 0)
{
char *old = self->priv->name;
self->priv->name = g_strdup (name);
g_signal_emit_by_name (G_OBJECT (self), "name-changed", old, self->priv->name, NULL);
g_free (old);
}
}
void
bamf_mock_application_set_icon (BamfMockApplication * self, const gchar * icon)
{
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
g_free (self->priv->icon);
self->priv->icon = g_strdup (icon);
}
void
bamf_mock_application_set_children (BamfMockApplication * self, GList * children)
{
GList *l;
g_return_if_fail (BAMF_IS_MOCK_APPLICATION (self));
for (l = self->priv->children; l;)
{
GList *next = l->next;
BamfView *view = l->data;
self->priv->children = g_list_delete_link (self->priv->children, l);
g_signal_emit_by_name (G_OBJECT (self), "child-removed", view);
l = next;
}
for (l = g_list_last (children); l; l = l->prev)
{
self->priv->children = g_list_prepend (self->priv->children, l->data);
g_signal_emit_by_name (G_OBJECT (self), "child-added", l->data);
}
}
static void
bamf_mock_application_finalize (GObject *object)
{
BamfMockApplication *self = BAMF_MOCK_APPLICATION (object);
g_free (self->priv->name);
g_free (self->priv->icon);
g_list_free (self->priv->children);
}
static GList *
bamf_mock_application_get_children (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), NULL);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return g_list_copy (self->priv->children);
}
static gboolean
bamf_mock_application_is_active (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), FALSE);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return self->priv->active;
}
static gboolean
bamf_mock_application_is_running (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), FALSE);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return self->priv->running;
}
static gboolean
bamf_mock_application_is_urgent (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), FALSE);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return self->priv->urgent;
}
static char *
bamf_mock_application_get_name (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), NULL);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return g_strdup (self->priv->name);
}
static char *
bamf_mock_application_get_icon (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), NULL);
BamfMockApplication *self = BAMF_MOCK_APPLICATION (view);
return g_strdup (self->priv->icon);
}
static const char *
bamf_mock_application_view_type (BamfView *view)
{
g_return_val_if_fail (BAMF_IS_MOCK_APPLICATION (view), NULL);
return "mock-application";
}
static void
bamf_mock_application_class_init (BamfMockApplicationClass *klass)
{
GObjectClass *obj_class = G_OBJECT_CLASS (klass);
BamfViewClass *view_class = BAMF_VIEW_CLASS (klass);
obj_class->finalize = bamf_mock_application_finalize;
view_class->get_children = bamf_mock_application_get_children;
view_class->is_active = bamf_mock_application_is_active;
view_class->is_running = bamf_mock_application_is_running;
view_class->is_urgent = bamf_mock_application_is_urgent;
view_class->get_name = bamf_mock_application_get_name;
view_class->get_icon = bamf_mock_application_get_icon;
view_class->view_type = bamf_mock_application_view_type;
g_type_class_add_private (obj_class, sizeof (BamfMockApplicationPrivate));
}
static void
bamf_mock_application_init (BamfMockApplication *self)
{
self->priv = BAMF_MOCK_APPLICATION_GET_PRIVATE (self);
}
BamfMockApplication *
bamf_mock_application_new ()
{
return g_object_new (BAMF_TYPE_MOCK_APPLICATION, NULL);
}