Added view
This commit is contained in:
parent
546551c965
commit
174001bf98
1 changed files with 55 additions and 13 deletions
|
@ -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,18 +47,20 @@ 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in a new issue