Release version 1.5.2
[platform/core/appfw/appcore-widget.git] / include / widget_base.h
1 /*
2  * Copyright (c) 2015 - 2017 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #pragma once
18
19 #include <stdbool.h>
20 #include <libintl.h>
21 #include <bundle.h>
22 #include <aul.h>
23 #include <app_common.h>
24 #include <appcore_multiwindow_base.h>
25
26 #define FEATURE_SHELL_APPWIDGET "http://tizen.org/feature/shell.appwidget"
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 /* Deprecated APIs. Please use widget_base.hh */
33
34 #define WIDGE_BASE_DEPRECATED __attribute__ ((deprecated))
35
36 typedef enum widget_base_destroy_type {
37         WIDGET_BASE_DESTROY_TYPE_PERMANENT = 0x00,
38         WIDGET_BASE_DESTROY_TYPE_TEMPORARY = 0x01,
39 } widget_base_destroy_type_e;
40
41 typedef enum widget_base_error {
42         WIDGET_BASE_ERROR_NONE = TIZEN_ERROR_NONE, /**< Operation is successfully completed */
43         WIDGET_BASE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid function parameter */
44         WIDGET_BASE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
45         WIDGET_BASE_ERROR_RESOURCE_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Device or resource busy */
46         WIDGET_BASE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
47         WIDGET_BASE_ERROR_CANCELED = TIZEN_ERROR_CANCELED, /**< Operation Canceled */
48         WIDGET_BASE_ERROR_IO_ERROR = TIZEN_ERROR_IO_ERROR, /**< I/O error */
49         WIDGET_BASE_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Time out */
50         WIDGET_BASE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Not supported */
51         WIDGET_BASE_ERROR_FILE_NO_SPACE_ON_DEVICE = TIZEN_ERROR_FILE_NO_SPACE_ON_DEVICE, /**< No space left on device */
52         WIDGET_BASE_ERROR_FAULT = TIZEN_ERROR_WIDGET | 0x0001, /**< Fault - Unable to recover from the error */
53         WIDGET_BASE_ERROR_ALREADY_EXIST = TIZEN_ERROR_WIDGET | 0x0002, /**< Already exists */
54         WIDGET_BASE_ERROR_ALREADY_STARTED = TIZEN_ERROR_WIDGET | 0x0004, /**< Operation is already started */
55         WIDGET_BASE_ERROR_NOT_EXIST = TIZEN_ERROR_WIDGET | 0x0008, /**< Not exists */
56         WIDGET_BASE_ERROR_DISABLED = TIZEN_ERROR_WIDGET | 0x0010, /**< Disabled */
57         WIDGET_BASE_ERROR_MAX_EXCEEDED = TIZEN_ERROR_WIDGET | 0x0011, /**< Maximum number of instances exceeded (Since 3.0) */
58 } widget_base_error_e;
59
60 typedef appcore_multiwindow_base_instance_h widget_base_instance_h;
61
62 typedef struct _widget_base_class_ops {
63         int (*create)(widget_base_instance_h instance_h, bundle *content,
64                         int w, int h, void *class_data);
65         int (*destroy)(widget_base_instance_h instance_h,
66                         widget_base_destroy_type_e reason, bundle *content,
67                         void *class_data);
68         int (*pause)(widget_base_instance_h instance_h, void *class_data);
69         int (*resume)(widget_base_instance_h instance_h, void *class_data);
70         int (*resize)(widget_base_instance_h instance_h, int w, int h, void *class_data);
71         int (*update)(widget_base_instance_h instance_h, bundle *content, int force,
72                         void *class_data);
73 } widget_base_class_ops;
74
75 typedef struct _widget_base_ops {
76         int (*create)(void *data);
77         int (*terminate)(void *data);
78         void (*init)(int argc, char **argv, void *data);
79         void (*finish)(void);
80         void (*run)(void *data);
81         void (*exit)(void *data);
82         void (*trim_memory)(void *data);
83 } widget_base_ops;
84
85 typedef struct _widget_base_class {
86         char *id;
87         widget_base_class_ops ops;
88 } widget_base_class;
89
90 typedef bool (*widget_base_instance_cb)(widget_base_instance_h instance, void *data);
91
92 int widget_base_foreach_context(widget_base_instance_cb cb, void *data) WIDGE_BASE_DEPRECATED;
93 int widget_base_terminate_context(widget_base_instance_h instance_h) WIDGE_BASE_DEPRECATED;
94 int widget_base_add_event_handler(app_event_handler_h *event_handler,
95                                         app_event_type_e event_type,
96                                         app_event_cb callback,
97                                         void *user_data) WIDGE_BASE_DEPRECATED;
98 int widget_base_remove_event_handler(app_event_handler_h
99                                                 event_handler) WIDGE_BASE_DEPRECATED;
100 int widget_base_context_set_content_info(widget_base_instance_h instance_h,
101                 bundle *content_info) WIDGE_BASE_DEPRECATED;
102 int widget_base_context_get_tag(widget_base_instance_h instance_h, void **tag) WIDGE_BASE_DEPRECATED;
103 int widget_base_context_set_tag(widget_base_instance_h instance_h, void *tag) WIDGE_BASE_DEPRECATED;
104 void *widget_base_context_get_user_data(widget_base_instance_h instance_h) WIDGE_BASE_DEPRECATED;
105 int widget_base_context_set_user_data(widget_base_instance_h instance_h,
106                 void *user_data) WIDGE_BASE_DEPRECATED;
107 int widget_base_context_get_id(widget_base_instance_h instance_h, char **id) WIDGE_BASE_DEPRECATED;
108 const char *widget_base_get_viewer_endpoint(void) WIDGE_BASE_DEPRECATED;
109 int widget_base_init(widget_base_ops ops, int argc, char **argv, void *data) WIDGE_BASE_DEPRECATED;
110 int widget_base_on_create(void) WIDGE_BASE_DEPRECATED;
111 int widget_base_on_terminate(void) WIDGE_BASE_DEPRECATED;
112 int widget_base_on_init(int argc, char **argv) WIDGE_BASE_DEPRECATED;
113 void widget_base_on_finish(void) WIDGE_BASE_DEPRECATED;
114 void widget_base_on_run(void) WIDGE_BASE_DEPRECATED;
115 void widget_base_on_exit(void) WIDGE_BASE_DEPRECATED;
116 int widget_base_on_trim_memory(void) WIDGE_BASE_DEPRECATED;
117 widget_base_ops widget_base_get_default_ops(void) WIDGE_BASE_DEPRECATED;
118 void widget_base_fini(void) WIDGE_BASE_DEPRECATED;
119 int widget_base_exit(void) WIDGE_BASE_DEPRECATED;
120 int widget_base_context_window_bind(
121                 widget_base_instance_h instance_h, const char *id,
122                 Ecore_Wl2_Window *wl_win) WIDGE_BASE_DEPRECATED;
123 int widget_base_class_on_create(widget_base_instance_h instance_h,
124                 bundle *content, int w, int h) WIDGE_BASE_DEPRECATED;
125 int widget_base_class_on_pause(widget_base_instance_h instance_h) WIDGE_BASE_DEPRECATED;
126 int widget_base_class_on_resume(widget_base_instance_h instance_h) WIDGE_BASE_DEPRECATED;
127 int widget_base_class_on_resize(widget_base_instance_h instance_h,
128                 int w, int h) WIDGE_BASE_DEPRECATED;
129 int widget_base_class_on_update(widget_base_instance_h instance_h,
130                 bundle *content, int force) WIDGE_BASE_DEPRECATED;
131 int widget_base_class_on_destroy(widget_base_instance_h instance_h,
132                 widget_base_destroy_type_e reason, bundle *content) WIDGE_BASE_DEPRECATED;
133 widget_base_class widget_base_class_get_default(void) WIDGE_BASE_DEPRECATED;
134 widget_base_class *widget_base_class_add(widget_base_class cls,
135                 const char *class_id, void *class_data) WIDGE_BASE_DEPRECATED;
136
137 #ifdef __cplusplus
138 }
139 #endif