Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3584 sourcerer 1
/*
2
 * This file is part of libdom.
3
 * Licensed under the MIT License,
4
 *                http://www.opensource.org/licenses/mit-license.php
5
 * Copyright 2009 Bo Yang 
6
 */
7
 
8
#include 
9
 
10
#include "events/ui_event.h"
11
#include "core/document.h"
12
 
13
static void _virtual_dom_ui_event_destroy(struct dom_event *evt);
14
 
15
static struct dom_event_private_vtable _event_vtable = {
16
	_virtual_dom_ui_event_destroy
17
};
18
 
19
/* Constructor */
20
dom_exception _dom_ui_event_create(struct dom_document *doc,
21
		struct dom_ui_event **evt)
22
{
23
	*evt = malloc(sizeof(dom_ui_event));
24
	if (*evt == NULL)
25
		return DOM_NO_MEM_ERR;
26
 
27
	((struct dom_event *) *evt)->vtable = &_event_vtable;
28
 
29
	return _dom_ui_event_initialise(doc, *evt);
30
}
31
 
32
/* Destructor */
33
void _dom_ui_event_destroy(struct dom_ui_event *evt)
34
{
35
	_dom_ui_event_finalise(evt);
36
 
37
	free(evt);
38
}
39
 
40
/* Initialise function */
41
dom_exception _dom_ui_event_initialise(struct dom_document *doc,
42
		struct dom_ui_event *evt)
43
{
44
	evt->view = NULL;
45
	return _dom_event_initialise(doc, &evt->base);
46
}
47
 
48
/* Finalise function */
49
void _dom_ui_event_finalise(struct dom_ui_event *evt)
50
{
51
	evt->view = NULL;
52
	_dom_event_finalise(&evt->base);
53
}
54
 
55
/* The virtual destroy function */
56
void _virtual_dom_ui_event_destroy(struct dom_event *evt)
57
{
58
	_dom_ui_event_destroy((dom_ui_event *) evt);
59
}
60
 
61
/*----------------------------------------------------------------------*/
62
/* The public API */
63
 
64
/**
65
 * Get the AbstractView inside this event
66
 *
67
 * \param evt   The Event object
68
 * \param view  The returned AbstractView
69
 * \return DOM_NO_ERR.
70
 */
71
dom_exception _dom_ui_event_get_view(dom_ui_event *evt,
72
		struct dom_abstract_view **view)
73
{
74
	*view = evt->view;
75
 
76
	return DOM_NO_ERR;
77
}
78
 
79
/**
80
 * Get the detail param of this event
81
 *
82
 * \param evt     The Event object
83
 * \param detail  The detail object
84
 * \return DOM_NO_ERR.
85
 */
86
dom_exception _dom_ui_event_get_detail(dom_ui_event *evt,
87
		int32_t *detail)
88
{
89
	*detail = evt->detail;
90
 
91
	return DOM_NO_ERR;
92
}
93
 
94
/**
95
 * Initialise the UIEvent
96
 *
97
 * \param evt         The Event object
98
 * \param type        The type of this UIEvent
99
 * \param bubble      Whether this event can bubble
100
 * \param cancelable  Whether this event is cancelable
101
 * \param view        The AbstractView of this UIEvent
102
 * \param detail      The detail object
103
 * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
104
 */
105
dom_exception _dom_ui_event_init(dom_ui_event *evt, dom_string *type,
106
		bool bubble, bool cancelable, struct dom_abstract_view *view,
107
		int32_t detail)
108
{
109
	evt->view = view;
110
	evt->detail = detail;
111
 
112
	return _dom_event_init(&evt->base, type, bubble, cancelable);
113
}
114
 
115
/**
116
 * Initialise the UIEvent with namespace
117
 *
118
 * \param evt         The Event object
119
 * \param namespace   The namespace of this Event
120
 * \param type        The type of this UIEvent
121
 * \param bubble      Whether this event can bubble
122
 * \param cancelable  Whether this event is cancelable
123
 * \param view        The AbstractView of this UIEvent
124
 * \param detail      The detail object
125
 * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
126
 */
127
dom_exception _dom_ui_event_init_ns(dom_ui_event *evt,
128
		dom_string *namespace, dom_string *type,
129
		bool bubble, bool cancelable, struct dom_abstract_view *view,
130
		int32_t detail)
131
{
132
	evt->view = view;
133
	evt->detail = detail;
134
 
135
	return _dom_event_init_ns(&evt->base, namespace, type, bubble,
136
			cancelable);
137
}
138