grim/guifications3
Clone
Summary
Browse
Changes
Graph
document the flag member of the GfPluginInfo struct
2009-12-27, Gary Kramlich
b8a75ce3da16
document the flag member of the GfPluginInfo struct
/*
* Guifications - The end-all, be-all notification framework
* Copyright (C) 2003-2009 Gary Kramlich <grim@reaperworld.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include
"gfeggdbusserverfeed.h"
#include
"gfeggdbusfeed.h"
#define GF_EGGDBUS_SERVER_FEED_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE((obj), GF_TYPE_EGGDBUS_SERVER_FEED, GfEggDBusServerFeedPrivate))
/******************************************************************************
* Enums
*****************************************************************************/
enum
{
PROP_ZERO
,
PROP_FEED
,
PROP_LAST
,
};
/******************************************************************************
* Structs
*****************************************************************************/
typedef
struct
{
GfFeed
*
feed
;
}
GfEggDBusServerFeedPrivate
;
/******************************************************************************
* Globals
*****************************************************************************/
static
GObjectClass
*
parent_class
=
NULL
;
static
GType
type
=
0
;
/******************************************************************************
* Helpers
*****************************************************************************/
static
void
gf_eggdbus_server_feed_set_real_feed
(
GfEggDBusServerFeed
*
server_feed
,
GfFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
NULL
;
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
server_feed
);
if
(
GF_IS_FEED
(
priv
->
feed
))
g_object_unref
(
priv
->
feed
);
priv
->
feed
=
GF_IS_FEED
(
feed
)
?
g_object_ref
(
feed
)
:
NULL
;
}
/******************************************************************************
* Feed Stuff
*****************************************************************************/
static
gchar
*
gf_eggdbus_server_feed_get_name
(
const
GfFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
feed
);
return
gf_feed_get_name
(
priv
->
feed
);
}
static
GfImage
*
gf_eggdbus_server_feed_get_image
(
const
GfFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
feed
);
return
gf_feed_get_image
(
priv
->
feed
);
}
static
gchar
*
gf_eggdbus_server_feed_get_i18n
(
const
GfFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
feed
);
return
gf_feed_get_i18n
(
priv
->
feed
);
}
static
gchar
*
gf_eggdbus_server_feed_get_description
(
const
GfFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
feed
);
return
gf_feed_get_description
(
priv
->
feed
);
}
/******************************************************************************
* Interface stuff
*****************************************************************************/
static
void
gf_eggdbus_server_feed_interface_init
(
GfEggDBusFeedIface
*
iface
)
{
}
/******************************************************************************
* Object stuff
*****************************************************************************/
static
void
gf_eggdbus_server_feed_get_property
(
GObject
*
obj
,
guint
param_id
,
GValue
*
value
,
GParamSpec
*
pspec
)
{
GfEggDBusServerFeed
*
feed
=
GF_EGGDBUS_SERVER_FEED
(
obj
);
switch
(
param_id
)
{
case
PROP_FEED
:
g_value_set_object
(
value
,
gf_eggdbus_server_feed_get_real_feed
(
feed
));
break
;
default
:
G_OBJECT_WARN_INVALID_PROPERTY_ID
(
obj
,
param_id
,
pspec
);
break
;
}
}
static
void
gf_eggdbus_server_feed_set_property
(
GObject
*
obj
,
guint
param_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
)
{
GfEggDBusServerFeed
*
feed
=
GF_EGGDBUS_SERVER_FEED
(
obj
);
switch
(
param_id
)
{
case
PROP_FEED
:
gf_eggdbus_server_feed_set_real_feed
(
feed
,
g_value_get_object
(
value
));
break
;
default
:
G_OBJECT_WARN_INVALID_PROPERTY_ID
(
obj
,
param_id
,
pspec
);
break
;
}
}
static
void
gf_eggdbus_server_feed_finalize
(
GObject
*
obj
)
{
GfEggDBusServerFeedPrivate
*
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
obj
);
if
(
GF_IS_FEED
(
priv
->
feed
))
g_object_unref
(
priv
->
feed
);
G_OBJECT_CLASS
(
parent_class
)
->
finalize
(
obj
);
}
static
void
gf_eggdbus_server_feed_class_init
(
GfEggDBusServerFeedClass
*
klass
)
{
GObjectClass
*
obj_class
=
G_OBJECT_CLASS
(
klass
);
GfFeedClass
*
feed_class
=
GF_FEED_CLASS
(
klass
);
GParamSpec
*
pspec
=
NULL
;
parent_class
=
g_type_class_peek_parent
(
klass
);
g_type_class_add_private
(
klass
,
sizeof
(
GfEggDBusServerFeedPrivate
));
obj_class
->
finalize
=
gf_eggdbus_server_feed_finalize
;
obj_class
->
get_property
=
gf_eggdbus_server_feed_get_property
;
obj_class
->
set_property
=
gf_eggdbus_server_feed_set_property
;
feed_class
->
get_name
=
gf_eggdbus_server_feed_get_name
;
feed_class
->
get_image
=
gf_eggdbus_server_feed_get_image
;
feed_class
->
get_i18n
=
gf_eggdbus_server_feed_get_i18n
;
feed_class
->
get_description
=
gf_eggdbus_server_feed_get_description
;
pspec
=
g_param_spec_object
(
"feed"
,
"feed"
,
"The feed we're wrapping"
,
GF_TYPE_FEED
,
G_PARAM_READWRITE
|
G_PARAM_CONSTRUCT_ONLY
);
g_object_class_install_property
(
obj_class
,
PROP_FEED
,
pspec
);
}
/******************************************************************************
* API
*****************************************************************************/
void
gf_eggdbus_server_feed_register
(
GfNativePlugin
*
plugin
)
{
if
(
G_UNLIKELY
(
type
==
0
))
{
static
const
GTypeInfo
info
=
{
sizeof
(
GfEggDBusServerFeedClass
),
NULL
,
NULL
,
(
GClassInitFunc
)
gf_eggdbus_server_feed_class_init
,
NULL
,
NULL
,
sizeof
(
GfEggDBusServerFeed
),
0
,
NULL
,
};
static
const
GInterfaceInfo
iface_info
=
{
(
GInterfaceInitFunc
)
gf_eggdbus_server_feed_interface_init
,
NULL
,
NULL
,
};
type
=
gf_native_plugin_register_type
(
plugin
,
GF_TYPE_FEED
,
"GfEggDBusServerFeed"
,
&
info
,
0
);
gf_native_plugin_add_interface
(
plugin
,
type
,
GF_EGG_DBUS_TYPE_FEED
,
&
iface_info
);
}
}
GType
gf_eggdbus_server_feed_get_type
(
void
)
{
if
(
G_UNLIKELY
(
type
==
0
))
{
gf_log_warning
(
"GfEggDBusServerFeed"
,
"gf_eggdbus_server_feed called before the type was "
"registered!
\n
"
);
}
return
type
;
}
GfFeed
*
gf_eggdbus_server_feed_new
(
GfFeed
*
feed
)
{
g_return_val_if_fail
(
GF_IS_FEED
(
feed
),
NULL
);
return
g_object_new
(
GF_TYPE_EGGDBUS_SERVER_FEED
,
"feed"
,
feed
,
NULL
);
}
GfFeed
*
gf_eggdbus_server_feed_get_real_feed
(
GfEggDBusServerFeed
*
feed
)
{
GfEggDBusServerFeedPrivate
*
priv
=
NULL
;
g_return_val_if_fail
(
GF_IS_EGGDBUS_SERVER_FEED
(
feed
),
NULL
);
priv
=
GF_EGGDBUS_SERVER_FEED_GET_PRIVATE
(
feed
);
return
priv
->
feed
;
}