2 * Copyright 2013 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.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
8 * http://floralicense.org/license/
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.
18 #include "mf-widget.h"
19 #include "mf-callback.h"
21 #include "mf-language-mgr.h"
24 static Evas_Coord touch_x;
25 static Evas_Coord touch_y;
28 /******************************
29 ** Prototype : _move_ctxpopup
30 ** Description : move the context popup to the suitable location
32 ** Evas_Object *ctxpopup
39 ** 1.Date : 2010/12/10
41 ** Modification : Created function
43 ******************************/
44 static void _move_ctxpopup(void *data, Evas_Object *parent, Evas_Object *ctxpopup )
46 struct appdata* ap = (struct appdata *)data;
47 elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_UP,
48 ELM_CTXPOPUP_DIRECTION_LEFT,
49 ELM_CTXPOPUP_DIRECTION_RIGHT,
50 ELM_CTXPOPUP_DIRECTION_DOWN);
59 evas_object_geometry_get(parent, &x, &y, &w, &h);
60 evas_object_move(ctxpopup, x + (w / 2), y + (h /2));
62 evas_object_move(ctxpopup, touch_x, touch_y);
67 /******************************
68 ** Prototype : mousedown_cb
69 ** Description : callback function for the mouse down operation in context
80 ** 1.Date : 2010/12/10
82 ** Modification : Created function
84 ******************************/
85 void mf_context_popup_get_position(Evas_Object *obj, const char *label, int *x, int *y)
87 mf_retm_if(obj == NULL, "obj is NULL");
88 mf_retm_if(label == NULL, "label is NULL");
89 Evas_Object *pCtrlBar = obj;
91 Elm_Object_Item *pItem = NULL;
96 pItem = elm_toolbar_first_item_get(pCtrlBar);
99 const char *button_label = elm_object_item_text_get(pItem);
100 if (g_strcmp0(button_label, label) == 0) {
101 Evas_Object *icon = elm_toolbar_item_object_get(pItem);
102 evas_object_geometry_get(icon, &x_position, &y_position, &w, NULL);
107 pItem = elm_toolbar_item_next_get(pItem);
111 int mousedown_cb( void *data, int type, void *event )
113 struct appdata* ap = (struct appdata *)data;
117 Elm_Object_Item *navi_it = ap->mf_MainWindow.pNaviItem;
120 if (ap->mf_Status.navi_item_selected == MF_NAVI_BTN_MORE) {
121 Evas_Object *button = elm_object_item_part_content_get(navi_it, NAVI_MORE_BUTTON_PART);
122 evas_object_geometry_get(button, &x, &y, &w, NULL);
126 } else if (ap->mf_Status.more == MF_NAVI_BTN_SHARE) {
127 Evas_Object *button = elm_object_item_part_content_get(navi_it, NAVI_BOTTOM_BUTTON_2_PART);
129 mf_context_popup_get_position(button, GET_SYS_STR(LABEL_SHARE),&x, &y);
130 mf_debug("x is [%d] y is [%d]", x, y);
139 /******************************
140 ** Prototype : mfContextPopupCreate
141 ** Description : Create the context popup
142 ** Input : void *data
143 ** eContextPopMode popupMode
150 ** 1.Date : 2010/12/10
152 ** Modification : Created function
154 ******************************/
155 static void _ctxpopup_hide_cb(void *data, Evas_Object *obj, void *event_info)
158 mf_retm_if(obj == NULL, "obj is NULL");
159 mf_language_mgr_unregister_object_item_by_type(ITEM_TYPE_CTXPOP);
160 evas_object_del(obj);
165 void mf_context_popup_create_gengrid(void *data)
167 mf_retm_if(data == NULL, "data is NULL");
168 mfItemData_s *itemData = (mfItemData_s *)data;
169 struct appdata* ap = (struct appdata *)itemData->ap;
170 mf_retm_if(ap == NULL, "ap is NULL");
172 SAFE_FREE_OBJ(ap->mf_MainWindow.pContextPopup);
175 if (ap->mf_Status.more == MORE_DEFAULT) {
176 Evas_Object *ctxpopup = elm_ctxpopup_add(ap->mf_MainWindow.pNaviBar);
177 ap->mf_MainWindow.pContextPopup = ctxpopup;
178 Elm_Object_Item *it = NULL;
179 Evas_Object *parent = elm_object_item_part_content_get(itemData->item, "elm.swallow.icon");
181 if (ap->mf_Status.view_type == mf_view_root) {
182 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_DETAIL), NULL, mf_callback_detail_ctx_cb, itemData);
183 mf_language_mgr_register_object_item(it, LABEL_DETAIL, ITEM_TYPE_CTXPOP);
185 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_RENAME), NULL, mf_callback_rename_create_cb, itemData);
186 mf_language_mgr_register_object_item(it, LABEL_RENAME, ITEM_TYPE_CTXPOP);
187 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_DELETE), NULL, mf_callback_delete_button_cb, itemData);
188 mf_language_mgr_register_object_item(it, LABEL_DELETE, ITEM_TYPE_CTXPOP);
191 _move_ctxpopup(ap, parent, ctxpopup);
192 evas_object_show(ctxpopup);
196 evas_object_smart_callback_add(ctxpopup,"dismissed", _ctxpopup_hide_cb, ap);
202 void mf_context_popup_create_more(void *data, Evas_Object *parent)
204 mf_retm_if(data == NULL, "data is NULL");
205 struct appdata* ap = (struct appdata *)data;
206 int extension_state = ap->mf_Status.iExtensionState;
209 SAFE_FREE_OBJ(ap->mf_MainWindow.pContextPopup);
211 Evas_Object *ctxpopup = elm_ctxpopup_add(ap->mf_MainWindow.pNaviBar);
212 ap->mf_MainWindow.pContextPopup = ctxpopup;
213 Elm_Object_Item *it = NULL;
215 if (ap->mf_Status.more == MORE_DEFAULT) {
217 if (ap->mf_Status.view_type == mf_view_root) {
218 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_VIEW_AS), NULL, mf_callback_view_as_cb, ap);
219 mf_language_mgr_register_object_item(it, LABEL_VIEW_AS, ITEM_TYPE_CTXPOP);
222 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_SORT_BY), NULL, mf_callback_list_by_view_cb, ap);
223 mf_language_mgr_register_object_item(it, LABEL_SORT_BY, ITEM_TYPE_CTXPOP);
224 } else if (ap->mf_Status.view_type == mf_view_root_category) {
225 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_SEARCH), NULL,mf_search_bar_enter_search_routine, ap);
226 mf_language_mgr_register_object_item(it, LABEL_SEARCH, ITEM_TYPE_CTXPOP);
227 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_VIEW_AS), NULL, mf_callback_view_as_cb, ap);
228 mf_language_mgr_register_object_item(it, LABEL_VIEW_AS, ITEM_TYPE_CTXPOP);
231 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_SORT_BY), NULL, mf_callback_list_by_view_cb, ap);
232 mf_language_mgr_register_object_item(it, LABEL_SORT_BY, ITEM_TYPE_CTXPOP);
233 if (extension_state == MF_EXTENSION_SHOW) {
234 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(MF_LABEL_HIDE_EXTENSION), NULL, mf_callback_extension_cb, ap);
235 mf_language_mgr_register_object_item(it, MF_LABEL_HIDE_EXTENSION, ITEM_TYPE_CTXPOP);
237 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(MF_LABEL_SHOW_EXTENSION), NULL, mf_callback_extension_cb, ap);
238 mf_language_mgr_register_object_item(it, MF_LABEL_SHOW_EXTENSION, ITEM_TYPE_CTXPOP);
242 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_SEARCH), NULL,mf_search_bar_enter_search_routine, ap);
243 mf_language_mgr_register_object_item(it, LABEL_SEARCH, ITEM_TYPE_CTXPOP);
246 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(MF_LABEL_CREATE_FOLDER), NULL,mf_callback_new_folder_create_cb, ap);
247 mf_language_mgr_register_object_item(it, MF_LABEL_CREATE_FOLDER, ITEM_TYPE_CTXPOP);
250 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_VIEW_AS), NULL, mf_callback_view_as_cb, ap);
251 mf_language_mgr_register_object_item(it, LABEL_VIEW_AS, ITEM_TYPE_CTXPOP);
254 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(LABEL_SORT_BY), NULL, mf_callback_list_by_view_cb, ap);
255 mf_language_mgr_register_object_item(it, LABEL_SORT_BY, ITEM_TYPE_CTXPOP);
258 if (extension_state == MF_EXTENSION_SHOW) {
259 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(MF_LABEL_HIDE_EXTENSION), NULL, mf_callback_extension_cb, ap);
260 mf_language_mgr_register_object_item(it, MF_LABEL_HIDE_EXTENSION, ITEM_TYPE_CTXPOP);
262 it = elm_ctxpopup_item_append(ctxpopup, GET_STR(MF_LABEL_SHOW_EXTENSION), NULL, mf_callback_extension_cb, ap);
263 mf_language_mgr_register_object_item(it, MF_LABEL_SHOW_EXTENSION, ITEM_TYPE_CTXPOP);
266 } else if(ap->mf_Status.more == MORE_EDIT) {
268 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_COPY), NULL, mf_callback_copy_move_cb, ap);
269 mf_language_mgr_register_object_item(it, LABEL_COPY, ITEM_TYPE_CTXPOP);
271 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(LABEL_MOVE), NULL,mf_callback_copy_move_cb, ap);
272 mf_language_mgr_register_object_item(it, LABEL_MOVE, ITEM_TYPE_CTXPOP);
274 } else if(ap->mf_Status.more == MORE_INTERNAL_MOVE || ap->mf_Status.more == MORE_INTERNAL_COPY) {
275 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(MF_LABEL_CREATE_FOLDER), NULL,mf_callback_new_folder_create_cb, ap);
276 mf_language_mgr_register_object_item(it, MF_LABEL_CREATE_FOLDER, ITEM_TYPE_CTXPOP);
278 _move_ctxpopup(ap, parent, ctxpopup);
279 evas_object_show(ctxpopup);
283 evas_object_smart_callback_add(ctxpopup,"dismissed", _ctxpopup_hide_cb, ap);
288 static void __mf_share_select(void *data, Evas_Object * obj, void *event_info)
290 mf_retm_if(data == NULL, "data is NULL");
291 mf_retm_if(event_info == NULL, "event_info is NULL");
293 struct appdata* ap = (struct appdata *)data;
294 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
296 const char *label = NULL;
297 label = elm_object_item_text_get(item);
298 ap->mf_Status.preMore = MORE_SHARE_EDIT;
299 if (g_strcmp0(label, GET_SYS_STR(MF_POP_MSG_BT)) == 0) {
300 ap->mf_Status.more = MORE_SENDVIABLUETOOTH;
301 } else if (g_strcmp0(label, GET_SYS_STR(MF_POP_MSG_EMAIL)) == 0) {
302 ap->mf_Status.more = MORE_SENDVIAEMAIL;
304 } else if (g_strcmp0(label, GET_SYS_STR(MF_POP_MSG_MESSAGE)) == 0) {
305 ap->mf_Status.more = MORE_SENDVIAMESSAGE;
308 mf_callback_send_response_cb(ap);
312 void mf_context_popup_create_share(void *data, int share_mode, Evas_Object *parent)
314 mf_retm_if(data == NULL, "data is NULL");
315 struct appdata* ap = (struct appdata *)data;
318 SAFE_FREE_OBJ(ap->mf_MainWindow.pContextPopup);
320 ap->mf_Status.navi_item_selected = MF_NAVI_BTN_SHARE;
322 Evas_Object *ctxpopup = elm_ctxpopup_add(ap->mf_MainWindow.pNaviBar);
323 ap->mf_MainWindow.pContextPopup = ctxpopup;
324 Elm_Object_Item *it = NULL;
326 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(MF_POP_MSG_MESSAGE), NULL, __mf_share_select, ap);
327 mf_language_mgr_register_object_item(it, MF_POP_MSG_MESSAGE, ITEM_TYPE_CTXPOP);
328 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(MF_POP_MSG_EMAIL), NULL, __mf_share_select, ap);
329 mf_language_mgr_register_object_item(it, MF_POP_MSG_EMAIL, ITEM_TYPE_CTXPOP);
330 it = elm_ctxpopup_item_append(ctxpopup, GET_SYS_STR(MF_POP_MSG_BT), NULL, __mf_share_select, ap);
331 mf_language_mgr_register_object_item(it, MF_POP_MSG_BT, ITEM_TYPE_CTXPOP);
335 _move_ctxpopup(ap, parent,ctxpopup);
336 evas_object_show(ctxpopup);
340 evas_object_smart_callback_add(ctxpopup,"dismissed", _ctxpopup_hide_cb, ap);