qulogic/talkatu
Clone
Summary
Browse
Changes
Graph
Somehow maiku was missing, so I added him
2019-08-05, Gary Kramlich
2e691dcd9200
Somehow maiku was missing, so I added him
/*
* talkatu
* Copyright (C) 2017-2019 Gary Kramlich <grim@reaperworld.com>
*
* This library 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 library 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 library; if not, see <http://www.gnu.org/licenses/>.
*/
#include
"talkatudemomessage.h"
struct
_TalkatuDemoMessage
{
GObject
parent
;
guint64
id
;
GDateTime
*
timestamp
;
TalkatuContentType
content_type
;
gchar
*
author
;
gchar
*
contents
;
};
enum
{
PROP_0
,
N_PROPERTIES
,
/* overrides */
PROP_ID
=
N_PROPERTIES
,
PROP_CONTENT_TYPE
,
PROP_AUTHOR
,
PROP_CONTENTS
,
PROP_TIMESTAMP
,
};
static
void
talkatu_demo_message_iface_init
(
TalkatuMessageInterface
*
iface
)
{
}
G_DEFINE_TYPE_EXTENDED
(
TalkatuDemoMessage
,
talkatu_demo_message
,
G_TYPE_OBJECT
,
0
,
G_IMPLEMENT_INTERFACE
(
TALKATU_TYPE_MESSAGE
,
talkatu_demo_message_iface_init
)
);
/******************************************************************************
* Accessors
*****************************************************************************/
static
guint64
talkatu_demo_message_get_id
(
TalkatuDemoMessage
*
message
)
{
return
message
->
id
;
}
static
void
talkatu_demo_message_set_id
(
TalkatuDemoMessage
*
message
,
guint64
id
)
{
message
->
id
=
id
;
g_object_notify
(
G_OBJECT
(
message
),
"id"
);
}
static
GDateTime
*
talkatu_demo_message_get_timestamp
(
TalkatuDemoMessage
*
message
)
{
return
(
message
->
timestamp
)
?
g_date_time_ref
(
message
->
timestamp
)
:
NULL
;
}
static
void
talkatu_demo_message_set_timestamp
(
TalkatuDemoMessage
*
message
,
GDateTime
*
timestamp
)
{
g_clear_pointer
(
&
message
->
timestamp
,
g_date_time_unref
);
if
(
timestamp
)
{
message
->
timestamp
=
g_date_time_ref
(
timestamp
);
}
}
static
TalkatuContentType
talkatu_demo_message_get_content_type
(
TalkatuDemoMessage
*
message
)
{
return
message
->
content_type
;
}
static
void
talkatu_demo_message_set_content_type
(
TalkatuDemoMessage
*
message
,
TalkatuContentType
content_type
)
{
message
->
content_type
=
content_type
;
g_object_notify
(
G_OBJECT
(
message
),
"content-type"
);
}
static
gchar
*
talkatu_demo_message_get_author
(
TalkatuDemoMessage
*
message
)
{
return
message
->
author
;
}
static
void
talkatu_demo_message_set_author
(
TalkatuDemoMessage
*
message
,
const
gchar
*
author
)
{
g_free
(
message
->
author
);
message
->
author
=
g_strdup
(
author
);
g_object_notify
(
G_OBJECT
(
message
),
"author"
);
}
static
gchar
*
talkatu_demo_message_get_contents
(
TalkatuDemoMessage
*
message
)
{
return
message
->
contents
;
}
static
void
talkatu_demo_message_set_contents
(
TalkatuDemoMessage
*
message
,
const
gchar
*
contents
)
{
g_free
(
message
->
contents
);
message
->
contents
=
g_strdup
(
contents
);
g_object_notify
(
G_OBJECT
(
message
),
"contents"
);
}
/******************************************************************************
* GObject Stuff
*****************************************************************************/
static
void
talkatu_demo_message_get_property
(
GObject
*
obj
,
guint
prop_id
,
GValue
*
value
,
GParamSpec
*
pspec
)
{
TalkatuDemoMessage
*
message
=
TALKATU_DEMO_MESSAGE
(
obj
);
switch
(
prop_id
)
{
case
PROP_ID
:
g_value_set_uint64
(
value
,
talkatu_demo_message_get_id
(
message
));
break
;
case
PROP_TIMESTAMP
:
g_value_set_pointer
(
value
,
talkatu_demo_message_get_timestamp
(
message
));
break
;
case
PROP_CONTENT_TYPE
:
g_value_set_enum
(
value
,
talkatu_demo_message_get_content_type
(
message
));
break
;
case
PROP_AUTHOR
:
g_value_set_string
(
value
,
talkatu_demo_message_get_author
(
message
));
break
;
case
PROP_CONTENTS
:
g_value_set_string
(
value
,
talkatu_demo_message_get_contents
(
message
));
break
;
default
:
G_OBJECT_WARN_INVALID_PROPERTY_ID
(
obj
,
prop_id
,
pspec
);
break
;
}
}
static
void
talkatu_demo_message_set_property
(
GObject
*
obj
,
guint
prop_id
,
const
GValue
*
value
,
GParamSpec
*
pspec
)
{
TalkatuDemoMessage
*
message
=
TALKATU_DEMO_MESSAGE
(
obj
);
switch
(
prop_id
)
{
case
PROP_ID
:
talkatu_demo_message_set_id
(
message
,
g_value_get_uint64
(
value
));
break
;
case
PROP_TIMESTAMP
:
talkatu_demo_message_set_timestamp
(
message
,
g_value_get_pointer
(
value
));
break
;
case
PROP_CONTENT_TYPE
:
talkatu_demo_message_set_content_type
(
message
,
g_value_get_enum
(
value
));
break
;
case
PROP_AUTHOR
:
talkatu_demo_message_set_author
(
message
,
g_value_get_string
(
value
));
break
;
case
PROP_CONTENTS
:
talkatu_demo_message_set_contents
(
message
,
g_value_get_string
(
value
));
break
;
default
:
G_OBJECT_WARN_INVALID_PROPERTY_ID
(
obj
,
prop_id
,
pspec
);
break
;
}
}
static
void
talkatu_demo_message_finalize
(
GObject
*
obj
)
{
TalkatuDemoMessage
*
message
=
TALKATU_DEMO_MESSAGE
(
obj
);
talkatu_demo_message_set_timestamp
(
message
,
NULL
);
talkatu_demo_message_set_author
(
message
,
NULL
);
talkatu_demo_message_set_contents
(
message
,
NULL
);
G_OBJECT_CLASS
(
talkatu_demo_message_parent_class
)
->
finalize
(
obj
);
}
static
void
talkatu_demo_message_init
(
TalkatuDemoMessage
*
toolbar
)
{
}
static
void
talkatu_demo_message_class_init
(
TalkatuDemoMessageClass
*
klass
)
{
GObjectClass
*
obj_class
=
G_OBJECT_CLASS
(
klass
);
obj_class
->
get_property
=
talkatu_demo_message_get_property
;
obj_class
->
set_property
=
talkatu_demo_message_set_property
;
obj_class
->
finalize
=
talkatu_demo_message_finalize
;
g_object_class_override_property
(
obj_class
,
PROP_ID
,
"id"
);
g_object_class_override_property
(
obj_class
,
PROP_TIMESTAMP
,
"timestamp"
);
g_object_class_override_property
(
obj_class
,
PROP_CONTENT_TYPE
,
"content-type"
);
g_object_class_override_property
(
obj_class
,
PROP_AUTHOR
,
"author"
);
g_object_class_override_property
(
obj_class
,
PROP_CONTENTS
,
"contents"
);
}
/******************************************************************************
* Public API
*****************************************************************************/
TalkatuMessage
*
talkatu_demo_message_new
(
guint64
id
,
TalkatuContentType
content_type
,
const
gchar
*
author
,
const
gchar
*
contents
)
{
GObject
*
obj
=
NULL
;
GDateTime
*
timestamp
=
g_date_time_new_now_local
();
obj
=
g_object_new
(
TALKATU_TYPE_DEMO_MESSAGE
,
"id"
,
id
,
"timestamp"
,
timestamp
,
"content-type"
,
content_type
,
"author"
,
author
,
"contents"
,
contents
,
NULL
);
g_date_time_unref
(
timestamp
);
return
TALKATU_MESSAGE
(
obj
);
}