diff options
author | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-13 09:33:24 +0000 |
---|---|---|
committer | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-13 09:33:24 +0000 |
commit | 13fadb12fb400818e0ccb4c38b3bfce70ccfdad2 (patch) | |
tree | 19c55b39d97567a37b88b49aaaac13b21b9f24ee /src/events/ui_event.c | |
parent | bf6bc398bd40e39a016725550f5b8446a01ee2d1 (diff) | |
download | libdom-13fadb12fb400818e0ccb4c38b3bfce70ccfdad2.tar.gz libdom-13fadb12fb400818e0ccb4c38b3bfce70ccfdad2.tar.bz2 |
Merge the Events module (branches/struggleyb/libdom-events) back to trunk. :)
svn path=/trunk/dom/; revision=9236
Diffstat (limited to 'src/events/ui_event.c')
-rw-r--r-- | src/events/ui_event.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/events/ui_event.c b/src/events/ui_event.c new file mode 100644 index 0000000..f18e44f --- /dev/null +++ b/src/events/ui_event.c @@ -0,0 +1,138 @@ +/* + * This file is part of libdom. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com> + */ + +#include "events/ui_event.h" +#include "core/document.h" + +static void _virtual_dom_ui_event_destroy(struct dom_event *evt); + +static struct dom_event_private_vtable _event_vtable = { + _virtual_dom_ui_event_destroy +}; + +/* Constructor */ +dom_exception _dom_ui_event_create(struct dom_document *doc, + struct dom_ui_event **evt) +{ + *evt = _dom_document_alloc(doc, NULL, sizeof(dom_ui_event)); + if (*evt == NULL) + return DOM_NO_MEM_ERR; + + ((struct dom_event *) *evt)->vtable = &_event_vtable; + + return _dom_ui_event_initialise(doc, *evt); +} + +/* Destructor */ +void _dom_ui_event_destroy(struct dom_document *doc, + struct dom_ui_event *evt) +{ + _dom_ui_event_finalise(doc, evt); + + _dom_document_alloc(doc, evt, 0); +} + +/* Initialise function */ +dom_exception _dom_ui_event_initialise(struct dom_document *doc, + struct dom_ui_event *evt) +{ + evt->view = NULL; + return _dom_event_initialise(doc, &evt->base); +} + +/* Finalise function */ +void _dom_ui_event_finalise(struct dom_document *doc, + struct dom_ui_event *evt) +{ + evt->view = NULL; + _dom_event_finalise(doc, &evt->base); +} + +/* The virtual destroy function */ +void _virtual_dom_ui_event_destroy(struct dom_event *evt) +{ + _dom_ui_event_destroy(evt->doc, (dom_ui_event *) evt); +} + +/*----------------------------------------------------------------------*/ +/* The public API */ + +/** + * Get the AbstractView inside this event + * + * \param evt The Event object + * \param view The returned AbstractView + * \return DOM_NO_ERR. + */ +dom_exception _dom_ui_event_get_view(dom_ui_event *evt, + struct dom_abstract_view **view) +{ + *view = evt->view; + + return DOM_NO_ERR; +} + +/** + * Get the detail param of this event + * + * \param evt The Event object + * \param detail The detail object + * \return DOM_NO_ERR. + */ +dom_exception _dom_ui_event_get_detail(dom_ui_event *evt, + long *detail) +{ + *detail = evt->detail; + + return DOM_NO_ERR; +} + +/** + * Initialise the UIEvent + * + * \param evt The Event object + * \param type The type of this UIEvent + * \param bubble Whether this event can bubble + * \param cancelable Whether this event is cancelable + * \param view The AbstractView of this UIEvent + * \param detail The detail object + * \return DOM_NO_ERR on success, appropriate dom_exception on failure. + */ +dom_exception _dom_ui_event_init(dom_ui_event *evt, struct dom_string *type, + bool bubble, bool cancelable, struct dom_abstract_view *view, + long detail) +{ + evt->view = view; + evt->detail = detail; + + return _dom_event_init(&evt->base, type, bubble, cancelable); +} + +/** + * Initialise the UIEvent with namespace + * + * \param evt The Event object + * \param namespace The namespace of this Event + * \param type The type of this UIEvent + * \param bubble Whether this event can bubble + * \param cancelable Whether this event is cancelable + * \param view The AbstractView of this UIEvent + * \param detail The detail object + * \return DOM_NO_ERR on success, appropriate dom_exception on failure. + */ +dom_exception _dom_ui_event_init_ns(dom_ui_event *evt, + struct dom_string *namespace, struct dom_string *type, + bool bubble, bool cancelable, struct dom_abstract_view *view, + long detail) +{ + evt->view = view; + evt->detail = detail; + + return _dom_event_init_ns(&evt->base, namespace, type, bubble, + cancelable); +} + |