Added view

This commit is contained in:
Jesse van den Kieboom 2005-11-15 11:45:31 +00:00
parent 546551c965
commit 174001bf98

View file

@ -4,25 +4,32 @@
#include "gm-mcp.h" #include "gm-mcp.h"
#include "../gm-world.h" #include "../gm-world.h"
#include "../gm-debug.h" #include "../gm-debug.h"
#include "../widgets/gm-world-view.h"
#define GM_MCP_AWNS_STATUS_GET_PRIVATE(object)( \ #define GM_MCP_AWNS_STATUS_GET_PRIVATE(object)( \
G_TYPE_INSTANCE_GET_PRIVATE((object), \ G_TYPE_INSTANCE_GET_PRIVATE((object), \
GM_TYPE_MCP_AWNS_STATUS, GmMcpAwnsStatusPrivate)) GM_TYPE_MCP_AWNS_STATUS, GmMcpAwnsStatusPrivate))
struct _GmMcpAwnsStatusPrivate { struct _GmMcpAwnsStatusPrivate {
gchar *status;
}; };
/* Signals typedef struct _GmMcpAwnsStatusView {
GmMcpAwnsStatus *package;
GmWorldView *view;
} GmMcpAwnsStatusView;
/* Signals */
enum { enum {
PROTO STATUS_CHANGED,
NUM_SIGNALS NUM_SIGNALS
}; };
static guint gm_mcp_awns_status_signals[NUM_SIGNALS] = {0};*/ static guint gm_mcp_awns_status_signals[NUM_SIGNALS] = {0};
void gm_mcp_awns_status_handle_simple(GmMcpPackage *package, gchar *suffix, void gm_mcp_awns_status_handle_simple(GmMcpPackage *package, gchar *suffix,
GList *fields); GList *fields);
void gm_mcp_awns_status_create_view(GmMcpPackage *package, GObject *parent);
G_DEFINE_TYPE(GmMcpAwnsStatus, gm_mcp_awns_status, GM_TYPE_MCP_PACKAGE) G_DEFINE_TYPE(GmMcpAwnsStatus, gm_mcp_awns_status, GM_TYPE_MCP_PACKAGE)
@ -40,19 +47,21 @@ gm_mcp_awns_status_class_init(GmMcpAwnsStatusClass *klass) {
object_class->finalize = gm_mcp_awns_status_finalize; object_class->finalize = gm_mcp_awns_status_finalize;
/*gm_mcp_awns_status_signals[PROTO] = gm_mcp_awns_status_signals[STATUS_CHANGED] =
g_signal_new("proto", g_signal_new("status_changed",
G_OBJECT_CLASS_TYPE(object_class), G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST, G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(GmMcpAwnsStatusClass, proto), G_STRUCT_OFFSET(GmMcpAwnsStatusClass, status_changed),
NULL, NULL, NULL, NULL,
g_cclosure_marshal_VOID__VOID, g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, G_TYPE_NONE,
0);*/ 1,
G_TYPE_STRING);
pklass->name = "dns-com-awns-status"; pklass->name = "dns-com-awns-status";
pklass->handle_simple = &gm_mcp_awns_status_handle_simple; pklass->handle_simple = &gm_mcp_awns_status_handle_simple;
pklass->create_view = &gm_mcp_awns_status_create_view;
g_type_class_add_private(object_class, sizeof(GmMcpAwnsStatusPrivate)); g_type_class_add_private(object_class, sizeof(GmMcpAwnsStatusPrivate));
} }
@ -75,8 +84,41 @@ void
gm_mcp_awns_status_handle_simple(GmMcpPackage *package, gchar *suffix, gm_mcp_awns_status_handle_simple(GmMcpPackage *package, gchar *suffix,
GList *fields) { GList *fields) {
gchar const *text = gm_mcp_find_value(fields, "text"); gchar const *text = gm_mcp_find_value(fields, "text");
GmMcpSession *session = GM_MCP_PACKAGE_SESSION(package);
gm_debug_msg(DEBUG_MCP, "GmMcpAwnsStatus.HandleSimple: set status %s", text); gm_debug_msg(DEBUG_MCP, "GmMcpAwnsStatus.HandleSimple: set status %s",
gm_world_set_status(GM_MCP_SESSION_WORLD(session), text); text);
g_signal_emit(package, gm_mcp_awns_status_signals[STATUS_CHANGED], 0, text);
} }
/* GmMcpAwnsStatusView */
void
on_gm_mcp_awns_status_view_status_changed(GmMcpAwnsStatus *package,
gchar const *status, GmMcpAwnsStatusView *view) {
gm_world_view_update_status(view->view, status);
}
void
on_gm_mcp_awns_status_view_weak_notify(gpointer data, GObject *obj) {
g_free(data);
}
void
gm_mcp_awns_status_create_view(GmMcpPackage *package, GObject *parent) {
GmMcpAwnsStatusView *status_view;
if (GM_IS_WORLD_VIEW(parent)) {
status_view = g_new0(GmMcpAwnsStatusView, 1);
status_view->package = GM_MCP_AWNS_STATUS(package);
status_view->view = GM_WORLD_VIEW(parent);
g_signal_connect(package, "status_changed",
G_CALLBACK(on_gm_mcp_awns_status_view_status_changed),
status_view);
g_object_weak_ref(G_OBJECT(package),
on_gm_mcp_awns_status_view_weak_notify, status_view);
}
}