2 * Copyright 2012 Samsung Electronics Co., Ltd
\r
4 * Licensed under the Flora License, Version 1.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://floralicense.org/license/
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
19 #include <Elementary.h>
\r
21 #include <vconf-keys.h>
\r
22 #include <pthread.h>
\r
25 #include "mf-ug-main.h"
\r
26 #include "mf-ug-util.h"
\r
27 #include "mf-ug-inotify-handle.h"
\r
28 #include "mf-ug-winset.h"
\r
29 #include "mf-ug-fs-util.h"
\r
30 #include "mf-ug-fm-svc-wrapper.h"
\r
31 #include "mf-ug-resource.h"
\r
32 #include "mf-ug-list-play.h"
\r
34 #define UG_MAX_LEN_VIB_DURATION 0.5
\r
35 #ifdef UG_OPERATION_SELECT_MODE
\r
36 #define RESULT_KEY "http://tizen.org/appcontrol/data/selected"
\r
38 /******************************
\r
39 ** Prototype : mf_ug_cb_back_button_cb
\r
41 ** Input : void *data
\r
50 ** 1.Date : 2010/12/10
\r
52 ** Modification : Created function
\r
54 ******************************/
\r
56 void mf_ug_cb_back_button_cb(void *data, Evas_Object *obj, void *event_info)
\r
59 ugData *ugd = (ugData *)data;
\r
60 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
62 if (ugd->ug_Status.ug_bCancelDisableFlag) {
\r
65 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
66 mf_ug_list_play_destory_playing_file(ugd);
\r
67 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
69 if (ugd->ug_Status.ug_iMore == UG_MORE_SEARCH) {
\r
71 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
72 ug_mf_retm_if(pNavi_s == NULL, "get navi failed");
\r
73 Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout;
\r
74 ug_mf_retm_if(playout == NULL, "get conformant failed");
\r
75 Evas_Object *newContent = NULL;
\r
77 newContent = mf_ug_genlist_create_content_list_view(ugd);
\r
79 Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1");
\r
80 evas_object_del(unUsed);
\r
82 elm_object_part_content_set(playout, "part1", newContent);
\r
83 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;
\r
85 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == false) {
\r
86 Eina_List *l = NULL;
\r
88 ugNaviBar *pNavi_s = NULL;
\r
89 ugNaviBar *pNavi_toshow = NULL;
\r
90 GString *title = NULL;
\r
92 if (ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PLAYING || ugd->ug_ListPlay.ug_iPlayState == PLAY_STATE_PAUSED) {
\r
93 mf_ug_list_play_destory_playing_file(ugd);
\r
94 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
97 EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {
\r
98 pNavi_s = (ugNaviBar *)item;
\r
99 if (pNavi_s == NULL)
\r
101 if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) {
\r
102 if (pNavi_s->ug_pCurrentPath != NULL) {
\r
103 free(pNavi_s->ug_pCurrentPath);
\r
104 pNavi_s->ug_pCurrentPath = NULL;
\r
106 pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath);
\r
107 pNavi_s->ug_bNaviFlagInUse = true;
\r
108 pNavi_toshow = pNavi_s;
\r
110 if (pNavi_s->ug_pCurrentPath != NULL) {
\r
111 free(pNavi_s->ug_pCurrentPath);
\r
112 pNavi_s->ug_pCurrentPath = NULL;
\r
114 pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);
\r
115 pNavi_s->ug_bNaviFlagInUse = false;
\r
120 if (pNavi_toshow == NULL) {
\r
121 ug_debug("pNavi_toshow is NULL");
\r
125 if (ugd->ug_Status.ug_pPath) {
\r
126 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
\r
127 ugd->ug_Status.ug_pPath = NULL;
\r
130 ugd->ug_Status.ug_bInSettingView = true;
\r
132 if (ugd->ug_Status.ug_pPath) {
\r
133 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
\r
134 ugd->ug_Status.ug_pPath = NULL;
\r
137 pNavi_toshow->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pEntryPath);
\r
138 ugd->ug_Status.ug_pPath = g_string_new(pNavi_toshow->ug_pCurrentPath);
\r
139 title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath);
\r
141 if (title != NULL) {
\r
142 pNavi_toshow->ug_pNaviTitle = g_strdup(title->str);
\r
143 g_string_free(title, TRUE);
\r
146 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
\r
147 mf_ug_navi_bar_create_default_view(ugd);
\r
148 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
150 elm_object_item_text_set(ugd->ug_MainWindow.ug_pNaviItem, pNavi_toshow->ug_pNaviTitle);
\r
151 elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE);
\r
153 //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str);
\r
155 ug_destroy_me(ugd->ug);
\r
163 /******************************
\r
164 ** Prototype : mf_ug_cb_add_button_cb
\r
166 ** Input : void *data
\r
167 ** Evas_Object *obj
\r
168 ** void *event_info
\r
175 ** 1.Date : 2010/12/10
\r
176 ** Author : Samsung
\r
177 ** Modification : Created function
\r
179 ******************************/
\r
181 void mf_ug_cb_add_button_cb(void *data, Evas_Object *obj, void *event_info)
\r
184 ugData *ugd = (ugData *)data;
\r
185 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
189 char *result = NULL;
\r
191 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
196 if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
\r
197 result = g_strdup(ugd->ug_Status.ug_pPath->str);
\r
199 result = mf_ug_util_get_send_result(ugd);
\r
201 if (ugd->ug_Status.ug_bRingtoneSet) {
\r
202 ug_error("result is [%s]", result);
\r
203 int ret = MYFILE_ERR_NONE;
\r
204 ret = mf_ug_file_attr_is_drm_file(result);
\r
205 ug_error("ret is [%d]", ret);
\r
206 if (ret == MYFILE_ERR_NONE) {
\r
207 ret = mf_ug_fs_oper_drm_is_valid(result, DRM_PERMISSION_TYPE_PLAY);
\r
208 ug_error("ret is [%d]", ret);
\r
210 ret = mf_ug_fs_oper_drm_is_action_allowed(result, DRM_HAS_VALID_SETAS_STATUS, DRM_SETAS_RINGTONE);
\r
211 ug_error("ret is [%d]", ret);
\r
213 if (ret == false) {
\r
214 mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_DRM_UNABLE_SET, NULL, NULL, NULL, NULL, NULL);
\r
221 ret = service_create(&service);
\r
222 if (ret == SERVICE_ERROR_NONE) {
\r
223 #ifdef UG_OPERATION_SELECT_MODE
\r
224 if (ugd->ug_UiGadget.ug_bOperationSelectFlag) {
\r
225 service_add_extra_data(service, RESULT_KEY, result);
\r
227 service_add_extra_data(service, "result", result);
\r
230 service_add_extra_data(service, "result", result);
\r
232 ug_send_result(ugd->ug, service);
\r
233 service_destroy(service);
\r
235 ug_debug("result is [%s]", result);
\r
236 UG_SAFE_FREE_CHAR(result);
\r
239 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
240 mf_ug_list_play_destory_playing_file(ugd);
\r
241 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
243 ug_destroy_me(ugd->ug);
\r
247 void mf_ug_cb_list_by_response_cb(void *data)
\r
249 ugData *ugd = (ugData *)data;
\r
252 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
253 ug_mf_retm_if(pNavi_s == NULL, "get navi failed");
\r
254 Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout;
\r
255 ug_mf_retm_if(playout == NULL, "get conformant failed");
\r
256 Evas_Object *newContent = NULL;
\r
258 newContent = mf_ug_genlist_create_content_list_view(ugd);
\r
260 Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1");
\r
261 evas_object_del(unUsed);
\r
263 elm_object_part_content_set(playout, "part1", newContent);
\r
268 void mf_ug_cb_list_by_button_callback(void *data, Evas_Object * obj, void *event_info)
\r
272 ugData *ugd = (ugData *)data;
\r
274 Evas_Object *btn = (Evas_Object *)obj;
\r
275 const char *label = elm_object_text_get(btn);
\r
276 int iListBySortType = 0;
\r
278 if (g_strcmp0(label, MF_UG_LABEL_ASCENDING) == 0 ) {
\r
279 switch(ugd->ug_Status.ug_iSelectedSortType) {
\r
281 iListBySortType = MF_UG_SORT_BY_NAME_Z2A;
\r
284 iListBySortType = MF_UG_SORT_BY_DATE_R2O;
\r
288 iListBySortType = MF_UG_SORT_BY_SIZE_L2S;
\r
291 iListBySortType = MF_UG_SORT_BY_TYPE_Z2A;
\r
294 iListBySortType = MF_UG_SORT_BY_DATE_R2O;
\r
297 } else if(g_strcmp0(label, MF_UG_LABEL_DESCENDING) == 0 ) {
\r
298 switch(ugd->ug_Status.ug_iSelectedSortType) {
\r
300 iListBySortType = MF_UG_SORT_BY_NAME_A2Z;
\r
303 iListBySortType = MF_UG_SORT_BY_DATE_O2R;
\r
307 iListBySortType = MF_UG_SORT_BY_SIZE_S2L;
\r
310 iListBySortType = MF_UG_SORT_BY_TYPE_A2Z;
\r
313 iListBySortType = MF_UG_SORT_BY_DATE_O2R;
\r
318 ugd->ug_Status.ug_iSortType = iListBySortType;
\r
319 mf_ug_cb_list_by_response_cb(ugd);
\r
323 void mf_ug_cb_popup_deleted_cb(void *data, Evas_Object * obj, void *event_info)
\r
325 ugData *ugd = (ugData *)data;
\r
328 mf_ug_cb_list_by_button_callback(data, obj, event_info);
\r
330 if (ugd->ug_MainWindow.ug_pNormalPopup != NULL) {
\r
331 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);
\r
333 ugd->ug_MainWindow.ug_pNormalPopup = NULL;
\r
337 void mf_ug_cb_sort_by_cb(void *data, Evas_Object *obj, void *event_info)
\r
340 ugData *ugd = (ugData *)data;
\r
341 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
343 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
347 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_LIST_BY, MF_UG_LABEL_LIST_BY,
\r
348 NULL, NULL, NULL, NULL, mf_ug_cb_popup_deleted_cb, ugd);
\r
352 void mf_ug_cb_goto_myfile_button_cb(void *data, Evas_Object *obj, void *event_info)
\r
355 ugData *ugd = (ugData *)data;
\r
356 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
358 if (ugd->ug_Status.ug_bCancelDisableFlag) {
\r
359 ug_debug("ug_Status.ug_bCancelDisableFlag is true");
\r
362 ugNaviBar *item = NULL;
\r
363 Eina_List *l = NULL;
\r
365 ugNaviBar *pNavi_s = NULL;//ug_mf_navi_bar_get_navi_from_navilist(ugd->ug_MainWindow.ug_pNaviBarList, MF_UG_LABEL_PHONE);
\r
366 ugNaviBar *pNavi_toshow = NULL;
\r
368 EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) {
\r
369 pNavi_s = (ugNaviBar *)item;
\r
370 if (pNavi_s == NULL)
\r
372 if (g_strcmp0(pNavi_s->ug_pNaviLabel, MF_UG_LABEL_PHONE) == 0) {
\r
373 if (pNavi_s->ug_pCurrentPath != NULL) {
\r
374 free(pNavi_s->ug_pCurrentPath);
\r
375 pNavi_s->ug_pCurrentPath = NULL;
\r
377 pNavi_s->ug_pCurrentPath = strdup(PHONE_FOLDER);
\r
378 pNavi_s->ug_bNaviFlagInUse = true;
\r
379 pNavi_toshow = pNavi_s;
\r
381 if (pNavi_s->ug_pCurrentPath != NULL) {
\r
382 free(pNavi_s->ug_pCurrentPath);
\r
383 pNavi_s->ug_pCurrentPath = NULL;
\r
385 pNavi_s->ug_pCurrentPath = strdup(MEMORY_FOLDER);
\r
386 pNavi_s->ug_bNaviFlagInUse = false;
\r
392 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
393 mf_ug_list_play_destory_playing_file(ugd);
\r
394 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
397 if (ugd->ug_Status.ug_pPath) {
\r
398 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
\r
399 ugd->ug_Status.ug_pPath = NULL;
\r
401 ugd->ug_Status.ug_pPath = g_string_new(SOUNDS_FOLDER);
\r
402 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
403 pNavi_s->ug_pCurrentPath = strdup(ugd->ug_Status.ug_pPath->str);
\r
405 ugd->ug_Status.ug_bInSettingView = false;
\r
407 mf_ug_navi_bar_create_default_view(ugd);
\r
408 ugd->ug_Status.ug_bCancelDisableFlag = true;
\r
409 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
410 //mf_ug_player_vol_set(ugd->ug_Status.ug_pPath->str);
\r
414 /******************************
\r
415 ** Prototype : _ug_popup_exit
\r
416 ** Description : Samsung
\r
417 ** Input : void *data
\r
424 ** 1.Date : 2010/12/10
\r
425 ** Author : Samsung
\r
426 ** Modification : Created function
\r
428 ******************************/
\r
430 void mf_ug_cb_mass_storage_popup_cb(void *data)
\r
433 ugData *ugd = (ugData *)data;
\r
434 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
436 mf_ug_cb_back_button_cb(ugd, NULL, NULL);
\r
438 if (ugd->ug_MainWindow.ug_pNormalPopup) {
\r
439 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);
\r
440 ugd->ug_MainWindow.ug_pNormalPopup = NULL;
\r
445 void mf_ug_cb_upper_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
448 ug_mf_retm_if(data == NULL, "data is NULL");
\r
450 Evas_Object *upper_ic = (Evas_Object *)data;
\r
451 elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER_PRESS, NULL);
\r
454 void mf_ug_cb_upper_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
457 ug_mf_retm_if(data == NULL, "data is NULL");
\r
459 Evas_Object *upper_ic = (Evas_Object *)data;
\r
460 elm_image_file_set(upper_ic, UG_TITLE_ICON_UPPER, NULL);
\r
464 /******************************
\r
465 ** Prototype : mf_ug_cb_upper_click_cb
\r
466 ** Description : Samsung
\r
467 ** Input : void *data
\r
468 ** Evas_Object * obj
\r
469 ** void *event_info
\r
476 ** 1.Date : 2010/12/10
\r
477 ** Author : Samsung
\r
478 ** Modification : Created function
\r
480 ******************************/
\r
481 void mf_ug_cb_upper_click_cb(void *data, Evas_Object * obj, void *event_info)
\r
484 ug_mf_retm_if(data == NULL, "data is NULL");
\r
485 ugData *ugd = (ugData *)data;
\r
486 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
487 ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
\r
489 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
494 if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) {
\r
495 ugd->ug_Status.ug_iViewType = mf_ug_view_root;
\r
498 if (ugd->ug_Status.ug_pPath != NULL && pNavi_s->ug_pCurrentPath != NULL) {
\r
499 if (g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_PHONE) == 0
\r
500 || g_strcmp0(pNavi_s->ug_pCurrentPath, MF_UG_LABEL_MMC) == 0) {
\r
501 mf_ug_navi_bar_create_default_view(ugd);
\r
504 GString *new_path = NULL;
\r
505 char *file_dir = ecore_file_dir_get(pNavi_s->ug_pCurrentPath);
\r
506 if (file_dir && ugd->ug_Status.ug_iViewType != mf_ug_view_root) {
\r
507 new_path = g_string_new(file_dir);
\r
508 UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);
\r
509 ugd->ug_Status.ug_pPath = new_path;
\r
510 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
511 pNavi_s->ug_pCurrentPath = strdup(new_path->str);
\r
515 ug_debug("file_dir is NULL");
\r
518 ugd->ug_Status.ug_pPath = g_string_new(MF_UG_LABEL_PHONE);
\r
519 pNavi_s->ug_pCurrentPath = strdup(MF_UG_LABEL_PHONE);
\r
521 mf_ug_navi_bar_create_default_view(ugd);
\r
522 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
526 void mf_ug_cb_home_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
529 ug_mf_retm_if(data == NULL, "data is NULL");
\r
531 Evas_Object *home_ic = (Evas_Object *)data;
\r
532 elm_image_file_set(home_ic, UG_TITLE_ICON_HOME_PRESS, NULL);
\r
535 void mf_ug_cb_home_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
538 ug_mf_retm_if(data == NULL, "data is NULL");
\r
540 Evas_Object *home_ic = (Evas_Object *)data;
\r
541 elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL);
\r
544 void mf_ug_cb_home_button_cb(void *data, Evas_Object * obj, void *event_info)
\r
547 ug_mf_retm_if(data == NULL, "data is NULL");
\r
548 ugData *ugd = (ugData *)data;
\r
549 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
550 ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL");
\r
552 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
557 int storage = MF_UG_PHONE;
\r
558 ugd->ug_Status.ug_iViewType = mf_ug_view_root;
\r
560 storage = mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str);
\r
563 UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);
\r
564 ugd->ug_Status.ug_pPath = g_string_new(PHONE_FOLDER);
\r
565 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
566 pNavi_s->ug_pCurrentPath = g_strdup(PHONE_FOLDER);
\r
567 mf_ug_util_set_current_state(ugd, STATE_PHONE);
\r
570 UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);
\r
571 ugd->ug_Status.ug_pPath = g_string_new(MEMORY_FOLDER);
\r
572 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
573 pNavi_s->ug_pCurrentPath = g_strdup(MEMORY_FOLDER);
\r
574 mf_ug_util_set_current_state(ugd, STATE_MEMORY);
\r
580 mf_ug_navi_bar_create_default_view(ugd);
\r
581 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
585 /******************************
\r
586 ** Prototype : tab_callback
\r
588 ** Input : void *data
\r
589 ** Evas_Object *obj
\r
590 ** void *event_info
\r
597 ** 1.Date : 2010/12/10
\r
598 ** Author : Samsung
\r
599 ** Modification : Created function
\r
601 ******************************/
\r
602 void mf_ug_cb_tab_bar_cb(void *data, const char *path)
\r
605 ugData *ugd = (ugData *)data;
\r
606 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
609 const char *label = NULL;
\r
610 Evas_Object *newContent = NULL;
\r
611 Evas_Object *pNaviBar = NULL;
\r
612 ugNaviBar *pNavi_s_toshow = NULL;
\r
613 ugNaviBar *pNavi_s_inuse = NULL;
\r
615 //mf_ug_navi_bar_del_item_directly(ugd);
\r
617 Elm_Object_Item *it = NULL;
\r
618 it = (Elm_Object_Item *)event_info;
\r
619 label = elm_object_item_text_get(it);
\r
621 if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) {
\r
625 int optStorage = 0;
\r
626 optStorage = mf_ug_fm_svc_wapper_get_location(path);
\r
627 switch (optStorage) {
\r
629 label = MF_UG_LABEL_PHONE;
\r
632 label = MF_UG_LABEL_MMC;
\r
639 if (label != NULL) {
\r
640 char *rootpath = NULL;
\r
642 /*0. set the previous navi to be out of use */
\r
643 pNavi_s_inuse = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
645 if (pNavi_s_inuse == NULL || pNavi_s_inuse->ug_pNaviLabel == NULL) {
\r
650 pNavi_s_inuse->ug_bNaviFlagInUse = FALSE;
\r
652 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
653 mf_ug_list_play_destory_playing_file(ugd);
\r
654 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
657 /*if the muisc is playing, destory the play */
\r
659 /*1. get navi bar pointer by the label */
\r
660 pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
\r
661 pNavi_s_toshow = ug_mf_navi_bar_get_navi_from_navilist(ugd->ug_MainWindow.ug_pNaviBarList, label);
\r
663 ug_debug("label is %s", label);
\r
664 /*2. create navi bar if not created, otherwise get it by pNaviBar */
\r
665 if (pNavi_s_toshow == NULL) {
\r
666 /*2.0 get root path by storage label */
\r
667 rootpath = mf_ug_fm_svc_wapper_get_root_path_by_tab_label(label);
\r
668 if (rootpath == NULL) {
\r
672 /*2.1 create the navi for the tab */
\r
673 pNavi_s_toshow = calloc(1, sizeof(ugNaviBar));
\r
674 if (pNavi_s_toshow == NULL) {
\r
675 ug_debug("pNavi_s_toshow is NULL");
\r
681 pNavi_s_toshow->ug_bNaviFlagInUse = TRUE;
\r
682 /*2.2 set path as root path of the storage */
\r
683 pNavi_s_toshow->ug_pCurrentPath = g_strdup(rootpath);
\r
684 pNavi_s_toshow->ug_pNaviLabel = strdup(label);
\r
687 /*2.3 insert phone navi into the navi_list */
\r
688 ugd->ug_MainWindow.ug_pNaviBarList = eina_list_append(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s_toshow);
\r
691 /*/2.1 get the navi of the tab */
\r
692 pNavi_s_toshow = mf_ug_navi_bar_get_navi_struct_by_label(ugd, label);
\r
694 pNavi_s_toshow->ug_bNaviFlagInUse = TRUE;
\r
696 /*/2.2 set related status value. */
\r
697 if (ugd->ug_Status.ug_pPath != NULL) {
\r
698 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
\r
699 ugd->ug_Status.ug_pPath = NULL;
\r
701 ugd->ug_Status.ug_pPath = g_string_new(pNavi_s_toshow->ug_pCurrentPath);
\r
702 ugd->ug_Status.ug_iViewType = mf_ug_view_normal;
\r
703 mf_ug_navi_bar_create_default_view(ugd);
\r
705 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
707 ug_debug("Invalid argument: label is NULL\n");
\r
713 void mf_ug_cb_ctrl_bar_button_cb(void *data, Evas_Object *obj, void *event_info)
\r
717 ugData *ugd = (ugData *)data;
\r
718 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
719 ug_mf_retm_if(event_info == NULL, "event_info is NULL");
\r
720 const char *label = NULL;
\r
722 if (ugd->ug_Status.ug_b_NaviPushFlag)
\r
724 label = elm_object_item_text_get((Elm_Object_Item *)event_info);
\r
725 ug_mf_retm_if(label == NULL, "label is NULL");
\r
727 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
728 if (g_strcmp0(label, MF_UG_LABEL_RINGTONES) == 0) {
\r
729 if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_RINGTION_PATH) != 0) {
\r
730 UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);
\r
731 ugd->ug_Status.ug_pPath = g_string_new(UG_RINGTION_PATH);
\r
732 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
733 pNavi_s->ug_pCurrentPath = g_strdup(UG_RINGTION_PATH);
\r
734 mf_ug_util_set_current_state(ugd, STATE_PHONE);
\r
735 ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_MUSIC;
\r
736 mf_ug_navi_bar_create_default_view(ugd);
\r
738 } else if (g_strcmp0(label, MF_UG_LABEL_OTHER_MUSIC) == 0) {
\r
739 if (g_strcmp0(ugd->ug_Status.ug_pPath->str, UG_MUSIC_PATH) != 0) {
\r
740 UG_SAFE_FREE_GSTRING(ugd->ug_Status.ug_pPath);
\r
741 ugd->ug_Status.ug_pPath = g_string_new(UG_MUSIC_PATH);
\r
742 UG_SAFE_FREE_CHAR(pNavi_s->ug_pCurrentPath);
\r
743 pNavi_s->ug_pCurrentPath = g_strdup(UG_MUSIC_PATH);
\r
744 mf_ug_util_set_current_state(ugd, STATE_PHONE);
\r
745 ugd->ug_Status.ug_iCtrlBarType = CTRL_BAR_RINGTONE;
\r
746 mf_ug_navi_bar_create_default_view(ugd);
\r
752 /******************************
\r
753 ** Prototype : mf_ug_cb_list_play_cb
\r
754 ** Description : Samsung
\r
755 ** Input : ugListItemData *data
\r
756 ** Evas_Object *obj
\r
757 ** void *event_info
\r
764 ** 1.Date : 2010/12/10
\r
765 ** Author : Samsung
\r
766 ** Modification : Created function
\r
768 ******************************/
\r
769 void mf_ug_cb_list_play_cb(ugListItemData *data, Evas_Object *obj, void *event_info)
\r
772 ugListItemData *itemData = data;
\r
773 ugData *ugd = NULL;
\r
774 ug_mf_retm_if(itemData == NULL, "itemData is NULL");
\r
775 ug_mf_retm_if(itemData->ug_pData == NULL, "ug_pData is NULL");
\r
777 ugd = itemData->ug_pData;
\r
779 if (itemData->ug_pData->ug_Status.ug_b_NaviPushFlag)
\r
782 mf_ug_list_play_play_music_item(itemData);
\r
787 /******************************
\r
788 ** Prototype : mf_ug_cb_select_info_show_cb
\r
789 ** Description : Samsung
\r
790 ** Input : void *data
\r
792 ** Evas_Object *obj
\r
793 ** void *event_info
\r
800 ** 1.Date : 2010/12/10
\r
801 ** Author : Samsung
\r
802 ** Modification : Created function
\r
804 ******************************/
\r
805 void mf_ug_cb_select_info_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
\r
808 ugData *ugd = (ugData *)data;
\r
809 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
810 edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,show,default", "elm");
\r
815 /******************************
\r
816 ** Prototype : mf_ug_cb_select_info_hide_cb
\r
817 ** Description : Samsung
\r
818 ** Input : void *data
\r
820 ** Evas_Object *obj
\r
821 ** void *event_info
\r
828 ** 1.Date : 2010/12/10
\r
829 ** Author : Samsung
\r
830 ** Modification : Created function
\r
832 ******************************/
\r
833 void mf_ug_cb_select_info_hide_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
\r
836 ugData *ugd = (ugData *)data;
\r
837 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
838 edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm");
\r
843 /******************************
\r
844 ** Prototype : mf_ug_cb_select_info_timeout_cb
\r
845 ** Description : Samsung
\r
846 ** Input : void *data
\r
847 ** Evas_Object *obj
\r
848 ** void *event_info
\r
855 ** 1.Date : 2010/12/10
\r
856 ** Author : Samsung
\r
857 ** Modification : Created function
\r
859 ******************************/
\r
860 void mf_ug_cb_select_info_timeout_cb(void *data, Evas_Object *obj, void *event_info)
\r
863 ugData *ugd = (ugData *)data;
\r
864 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
865 edje_object_signal_emit(_EDJ(ugd->ug_MainWindow.ug_pMainLayout), "elm,state,hide,default", "elm");
\r
871 /******************************
\r
872 ** Prototype : mf_ug_cb_mmc_changed_cb
\r
873 ** Description : Samsung
\r
874 ** Input : keynode_t *key
\r
882 ** 1.Date : 2010/12/10
\r
883 ** Author : Samsung
\r
884 ** Modification : Created function
\r
886 ******************************/
\r
887 static void __mf_ug_cb_mmc_remove_view_operation(void *data)
\r
890 ugData *ugd = (ugData *)data;
\r
891 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
893 Evas_Object *parent = NULL;
\r
894 const char *labelStorage = NULL;
\r
895 parent = ugd->ug_MainWindow.ug_pNaviGenlist;
\r
896 labelStorage = MEMORY_FOLDER;
\r
898 mf_ug_genlist_item_remove(parent, labelStorage);
\r
902 void mf_ug_cb_mmc_changed_cb(keynode_t *key, void *data)
\r
905 ugData *ugd = (ugData *)data;
\r
906 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
907 ug_mf_retm_if(ugd->ug_Status.ug_pPath == NULL || ugd->ug_Status.ug_pPath->str == NULL, "ugd->ug_Status.ug_pPath is NULL");
\r
909 int optStorage = MF_UG_NONE;
\r
910 char *labelStorage = NULL;
\r
912 if (VCONF_TYPE_INT == vconf_keynode_get_type(key)
\r
913 && VCONFKEY_SYSMAN_MMC_MOUNTED == vconf_keynode_get_int(key)) {
\r
914 if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) {
\r
915 ugd->ug_Status.ug_iMmcFlag = MMC_ON;
\r
918 ugd->ug_Status.ug_iMmcFlag = MMC_ON;
\r
920 mf_ug_util_storage_insert_action(ugd, MF_UG_LABEL_MMC);
\r
922 ugNaviBar *pNaviInUseStruct = NULL;
\r
924 if (VCONFKEY_SYSMAN_MMC_REMOVED == vconf_keynode_get_int(key)
\r
925 || VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED == vconf_keynode_get_int(key)) {
\r
926 ug_debug("mmc removed");
\r
927 if (ugd->ug_Status.ug_bInSettingView && ugd->ug_Status.ug_bSettingEntry) {
\r
928 ugd->ug_Status.ug_iMmcFlag = MMC_OFF;
\r
931 optStorage = MF_UG_MMC;
\r
932 ugd->ug_Status.ug_iMmcFlag = MMC_OFF;
\r
935 if (optStorage == MF_UG_NONE) {
\r
936 ug_debug("get removed storage failed");
\r
940 labelStorage = MF_UG_LABEL_MMC;
\r
942 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
\r
943 if (mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str) != optStorage) {
\r
944 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);
\r
945 __mf_ug_cb_mmc_remove_view_operation(ugd);
\r
947 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
948 mf_ug_list_play_destory_playing_file(ugd);
\r
949 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
952 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);
\r
953 pNaviInUseStruct = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
954 mf_ug_navi_bar_refresh_navibar_recovered_view(ugd, pNaviInUseStruct);
\r
958 if (mf_ug_fm_svc_wapper_get_location(ugd->ug_Status.ug_pPath->str) == optStorage) {
\r
959 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
960 mf_ug_list_play_destory_playing_file(ugd);
\r
961 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
964 mf_ug_navi_bar_remove_navi_list_item_by_label(ugd, labelStorage);
\r
965 pNaviInUseStruct = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
966 ug_debug("label is [%s]pNaviInUseStruct->ug_pCurrentPath is [%s]", pNaviInUseStruct->ug_pNaviLabel, pNaviInUseStruct->ug_pCurrentPath);
\r
967 mf_ug_navi_bar_refresh_navibar_recovered_view(ugd, pNaviInUseStruct);
\r
973 mf_ug_navi_bar_title_set(ugd);
\r
979 /******************************
\r
980 ** Prototype : mf_ug_cb_dir_update_cb
\r
981 ** Description : Samsung
\r
982 ** Input : mf_ug_inotify_event event
\r
991 ** 1.Date : 2010/12/10
\r
992 ** Author : Samsung
\r
993 ** Modification : Created function
\r
995 ******************************/
\r
996 void mf_ug_cb_dir_update_cb(mf_ug_inotify_event event, char *name, void *data)
\r
999 ugData *ugd = (ugData *)data;
\r
1000 ug_mf_retm_if(ugd == NULL, "ugData is NULL");
\r
1002 ug_debug("event : %d, name : %s", event, name);
\r
1004 ug_dir_event_t buffer;
\r
1006 buffer.event = event;
\r
1007 buffer.name = strdup(name);
\r
1009 ecore_pipe_write(ugd->ug_UiGadget.ug_pInotifyPipe, &buffer, sizeof(buffer));
\r
1015 /******************************
\r
1016 ** Prototype : mf_ug_cb_dir_pipe_cb
\r
1017 ** Description : Samsung
\r
1018 ** Input : void *data
\r
1020 ** unsigned int nbyte
\r
1027 ** 1.Date : 2010/12/10
\r
1028 ** Author : Samsung
\r
1029 ** Modification : Created function
\r
1031 ******************************/
\r
1032 static GString *__mf_ug_cb_dir_pipe_get_parent(GString *path)
\r
1035 ug_mf_retvm_if(path == NULL, NULL, "path is NULL");
\r
1036 ug_mf_retvm_if(path->str == NULL, NULL, "path->str is NULL");
\r
1038 if (ecore_file_exists(path->str)) {
\r
1040 } else if (mf_ug_fm_svc_wapper_is_root_path(path)) {
\r
1043 GString *parent = mf_ug_fm_svc_wrapper_get_file_parent_path(path);
\r
1044 UG_SAFE_FREE_GSTRING(path);
\r
1045 __mf_ug_cb_dir_pipe_get_parent(parent);
\r
1050 void mf_ug_cb_dir_pipe_cb(void *data, void *buffer, unsigned int nbyte)
\r
1053 ugData *ugd = (ugData *)data;
\r
1054 ug_mf_retm_if(ugd == NULL, "ugd is NULL");
\r
1057 if (ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_INIT) {
\r
1060 if (ugd->ug_Status.ug_iViewType == mf_ug_view_root) {
\r
1064 if (g_strcmp0(ugd->ug_Status.monitor_path, ugd->ug_Status.ug_pPath->str)) {
\r
1068 ug_dir_event_t *msg = (ug_dir_event_t *) buffer;
\r
1069 ug_debug("event : %d, name : %s", msg->event, msg->name);
\r
1071 Evas_Object *newContent = NULL;
\r
1072 ugListItemData *itemData = NULL;
\r
1073 Elm_Object_Item *it = NULL;
\r
1074 GString *parent = NULL;
\r
1075 char *path = NULL;
\r
1078 switch (msg->event) {
\r
1079 case UG_MF_INOTI_CREATE:
\r
1080 case UG_MF_INOTI_MOVE_IN:
\r
1081 /*/1 TODO: add new item to list */
\r
1083 path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);
\r
1084 int file_type = 0;
\r
1085 if (mf_ug_file_attr_is_dir(path)) {
\r
1086 file_type = UG_FILE_TYPE_DIR;
\r
1088 file_type = UG_FILE_TYPE_FILE;
\r
1090 ugFsNodeInfo *pNode = mf_ug_util_generate_pnode(path, file_type);
\r
1091 if (ugd->ug_MainWindow.ug_pNaviGenlist == NULL) {
\r
1093 Evas_Object *genlist = NULL;
\r
1094 genlist = elm_genlist_add(ugd->ug_MainWindow.ug_pNaviBar);
\r
1095 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
\r
1096 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
\r
1098 ugd->ug_MainWindow.ug_pNaviGenlist = genlist;
\r
1099 evas_object_smart_callback_add(genlist, "selected", mf_ug_genlist_selected_gl, ugd);
\r
1101 evas_object_del(elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, "part1"));
\r
1103 elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", newContent);
\r
1104 elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "part1", genlist);
\r
1106 if (file_type == UG_FILE_TYPE_DIR) {
\r
1107 if (ugd->ug_UiGadget.ug_iSelectMode == MULTI_FILE_MODE ||
\r
1108 ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE ||
\r
1109 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
\r
1110 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
\r
1111 ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE ||
\r
1112 ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE ||
\r
1113 ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
\r
1115 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
\r
1117 int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);
\r
1118 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
\r
1121 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
\r
1122 int groupValue = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);
\r
1123 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, groupValue, &ugd->ug_Status.ug_itc);
\r
1124 } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {
\r
1125 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_normalitc);
\r
1127 mf_ug_genlist_item_append(ugd->ug_MainWindow.ug_pNaviGenlist, pNode, ugd, 0, &ugd->ug_Status.ug_itc);
\r
1132 if (pNode != NULL) {
\r
1133 UG_SAFE_FREE_CHAR(pNode->ext);
\r
1139 case UG_MF_INOTI_DELETE:
\r
1140 case UG_MF_INOTI_MOVE_OUT:
\r
1141 /*/1 TODO: remove item from list */
\r
1142 path = g_strconcat(ugd->ug_Status.ug_pPath->str, "/", msg->name, NULL);
\r
1143 it = elm_genlist_first_item_get(ugd->ug_MainWindow.ug_pNaviGenlist);
\r
1145 itemData = elm_object_item_data_get(it);
\r
1146 if (itemData->ug_pItemName == NULL || itemData->ug_pItemName->str == NULL) {
\r
1150 if (g_strcmp0(path, itemData->ug_pItemName->str) == 0) {
\r
1151 elm_object_item_del(it);
\r
1155 it = elm_genlist_item_next_get(it);
\r
1157 count = elm_genlist_items_count(ugd->ug_MainWindow.ug_pNaviGenlist);
\r
1158 ugd->ug_Status.ug_bNoContentFlag = !count;
\r
1161 case UG_MF_INOTI_MODIFY:
\r
1162 /*/1 TODO: update item in list */
\r
1163 ugd->ug_MainWindow.ug_pNaviGenlist = newContent = mf_ug_genlist_create_content_list_view(ugd);
\r
1164 mf_ug_navi_bar_set_new_content(ugd->ug_MainWindow.ug_pNaviLayout, newContent);
\r
1166 case UG_MF_INOTI_DELETE_SELF:
\r
1167 case UG_MF_INOTI_MOVE_SELF:
\r
1168 /*/1 TODO: watching directory is removed, change current directory. */
\r
1170 GString *current = NULL;
\r
1171 current = g_string_new(ugd->ug_Status.ug_pPath->str);
\r
1172 parent = __mf_ug_cb_dir_pipe_get_parent(current);
\r
1174 ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
\r
1177 g_string_free(ugd->ug_Status.ug_pPath, TRUE);
\r
1178 ugd->ug_Status.ug_pPath = NULL;
\r
1179 ugd->ug_Status.ug_pPath = parent;
\r
1181 if (pNavi_s->ug_pCurrentPath != NULL) {
\r
1182 free(pNavi_s->ug_pCurrentPath);
\r
1183 pNavi_s->ug_pCurrentPath = NULL;
\r
1185 pNavi_s->ug_pCurrentPath = g_strdup(parent->str);
\r
1189 mf_ug_navi_bar_create_default_view(ugd);
\r
1193 ug_mf_error("Unknown event");
\r
1196 mf_ug_ctrl_bar_set_item_disable(ugd);
\r
1206 #ifdef UG_THUMB_REAL_TIME_UPDATE
\r
1207 Eina_Bool mf_ug_cb_thumb_timer_cb(void *data)
\r
1209 ugListItemData *itemData = (ugListItemData *)data;
\r
1210 ug_mf_retvm_if(itemData == NULL, EINA_FALSE, "input params is NULL");
\r
1211 ugData *ugd = (ugData *)itemData->ug_pData;
\r
1212 ug_mf_retvm_if(ugd == NULL, EINA_FALSE, "ugd is NULL");
\r
1214 bool allright_flag = true;
\r
1215 Evas_Object *pContent = NULL;
\r
1217 if (ugd->ug_Status.ug_pThumbUpdateTimer == NULL) {
\r
1218 return EINA_FALSE;
\r
1221 /****read the realized part of the list****/
\r
1222 if (itemData->ug_pItem) {
\r
1223 pContent = elm_object_item_widget_get(itemData->ug_pItem);
\r
1224 if (pContent == NULL) {
\r
1225 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
\r
1226 return EINA_FALSE;
\r
1229 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
\r
1230 return EINA_FALSE;
\r
1232 Eina_List *realized_list = elm_genlist_realized_items_get(pContent);
\r
1233 Eina_List *list = NULL;
\r
1234 Elm_Object_Item *it;
\r
1235 ugListItemData *item_data = NULL;
\r
1237 if (realized_list == NULL) {
\r
1238 allright_flag = false;
\r
1241 EINA_LIST_FOREACH(realized_list, list, it) {
\r
1242 item_data = (ugListItemData *)elm_object_item_data_get(it);
\r
1243 if (item_data == NULL)
\r
1246 if (item_data->ug_bRealThumbFlag == false) {
\r
1247 ug_debug("Update item: %s", item_data->ug_pItemName->str);
\r
1248 if (ecore_file_is_dir(item_data->ug_pItemName->str) == true) {
\r
1249 item_data->ug_pThumbPath = strdup(UG_ICON_FOLDER);
\r
1250 item_data->ug_bRealThumbFlag = true;
\r
1251 elm_object_item_data_set(it, item_data);
\r
1252 elm_genlist_item_update(it);
\r
1254 } else if (ecore_file_exists(item_data->ug_pItemName->str)) {
\r
1255 char *new_thumb = NULL;
\r
1256 int thumbnail_type = 0;
\r
1257 thumbnail_type = mf_ug_file_attr_get_file_icon(item_data->ug_pItemName->str, NULL, &new_thumb);
\r
1259 if (thumbnail_type == MF_UG_THUMBNAIL_TYPE_DEFAULT) {
\r
1260 if (item_data->ug_pThumbPath && g_strcmp0(new_thumb, item_data->ug_pThumbPath) == 0) {
\r
1261 allright_flag = FALSE;
\r
1263 if (item_data->ug_pThumbPath) {
\r
1264 free(item_data->ug_pThumbPath);
\r
1265 item_data->ug_pThumbPath = NULL;
\r
1267 item_data->ug_pThumbPath = strdup(new_thumb);
\r
1268 item_data->ug_bRealThumbFlag = TRUE;
\r
1269 elm_object_item_data_set(it, item_data);
\r
1270 elm_genlist_item_update(it);
\r
1276 if (item_data->ug_pThumbPath) {
\r
1277 free(item_data->ug_pThumbPath);
\r
1278 item_data->ug_pThumbPath = NULL;
\r
1280 item_data->ug_pThumbPath = strdup(new_thumb);
\r
1281 item_data->ug_bRealThumbFlag = TRUE;
\r
1282 elm_object_item_data_set(it, item_data);
\r
1283 elm_genlist_item_update(it);
\r
1288 allright_flag = false;
\r
1294 if (allright_flag == false) {
\r
1297 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
\r
1298 return EINA_FALSE;
\r
1303 void mf_ug_cb_create_new_folder(void *data, Evas_Object * obj, void *event_info)
\r
1306 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1308 ugData *ugd = (ugData *)data;
\r
1309 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pContextPopup);
\r
1311 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
1316 if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER)
\r
1320 ugd->ug_Status.ug_iMore = UG_MORE_CREATE_FOLDER;
\r
1322 ret = mf_ug_util_check_disk_space(ugd);
\r
1323 if (ret == MYFILE_ERR_NO_FREE_SPACE) {
\r
1324 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;
\r
1327 #ifdef UG_THUMB_REAL_TIME_UPDATE
\r
1328 if (ugd->ug_Status.ug_pThumbUpdateTimer != NULL) {
\r
1329 ecore_timer_del(ugd->ug_Status.ug_pThumbUpdateTimer);
\r
1330 ugd->ug_Status.ug_pThumbUpdateTimer = NULL;
\r
1333 ugd->ug_MainWindow.ug_pNewFolderPopup = mf_ug_popup_create_new_folder_popup(ugd, MF_UG_LABEL_CREATE);
\r
1337 void mf_ug_cb_warning_popup_cb(void *data, Evas_Object * obj, void *event_info)
\r
1340 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1341 ugData *ugd = (ugData *)data;
\r
1343 Evas_Object *btn = (Evas_Object *)obj;
\r
1344 const char *label = elm_object_text_get(btn);
\r
1346 if (g_strcmp0(label, MF_UG_LABEL_OK) == 0 ) {
\r
1347 evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);
\r
1348 ugd->ug_MainWindow.ug_pNormalPopup = NULL;
\r
1352 void mf_ug_cb_reach_max_len_cb(void *data, Evas_Object * obj, void *event_info)
\r
1355 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1356 ugData *ugd = (ugData *)data;
\r
1357 mf_ug_popup_indicator_popup(MF_UG_LABEL_MAX_CHARACTER_REACHED);
\r
1362 void mf_ug_cb_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
\r
1364 elm_entry_entry_set(data, "");
\r
1367 void mf_ug_cb_cancel_new_folder_cb(void *data, Evas_Object * obj, void *event_info)
\r
1370 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1371 ugData *ugd = (ugData *)data;
\r
1373 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;
\r
1374 ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry));
\r
1375 evas_object_del(ugd->ug_MainWindow.ug_pEntry);
\r
1377 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup);
\r
1380 static int __mf_cb_imk_cancel_cb(void *data)
\r
1383 ug_mf_retvm_if(data == NULL, false, "data is NULL");
\r
1384 ugData *ugd = (ugData *)data;
\r
1386 mf_ug_cb_cancel_new_folder_cb(ugd, NULL, NULL);
\r
1387 ugd->ug_Status.popup_del_idler = NULL;
\r
1392 static void __mf_ug_cb_illegal_char_popup_cb(void *data, Evas_Object * obj, void *event_info)
\r
1395 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1396 ugData *ugd = (ugData *)data;
\r
1398 Evas_Object *btn = (Evas_Object *)obj;
\r
1399 const char *label = elm_object_text_get(btn);
\r
1401 if (g_strcmp0(label, MF_UG_LABEL_YES) == 0 ) {
\r
1402 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup);
\r
1404 Evas_Object *entry = ugd->ug_MainWindow.ug_pEntry;
\r
1405 if (entry != NULL)
\r
1406 elm_object_focus_set(entry, EINA_TRUE);
\r
1408 } else if (g_strcmp0(label, MF_UG_LABEL_NO) == 0 ) {
\r
1409 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup);
\r
1410 ugd->ug_Status.popup_del_idler = ecore_idler_add((Ecore_Task_Cb) __mf_cb_imk_cancel_cb, ugd);
\r
1415 static int __mf_ug_cb_ime_mkdir_cb(void *data, char *fileName)
\r
1418 ugData *ugd = (ugData *)data;
\r
1420 ug_mf_retvm_if(ugd == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");
\r
1421 ug_mf_retvm_if(fileName == NULL, MYFILE_ERR_SRC_ARG_INVALID, "data is NULL");
\r
1422 ug_mf_retvm_if(ugd->ug_Status.ug_pPath == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");
\r
1423 ug_mf_retvm_if(ugd->ug_Status.ug_pPath->str == NULL, MYFILE_ERR_SRC_ARG_INVALID, "ugd is NULL");
\r
1427 const char *message = NULL;
\r
1428 const char *left_label = NULL;
\r
1429 const char *right_label = NULL;
\r
1431 left_label = MF_UG_LABEL_YES;
\r
1432 right_label = MF_UG_LABEL_NO;
\r
1433 if (strlen(fileName)) {
\r
1435 GString *fullpathdir = g_string_new(ugd->ug_Status.ug_pPath->str);
\r
1437 if (fullpathdir == NULL) {
\r
1438 mf_ug_util_operation_alloc_failed(ugd);
\r
1439 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;
\r
1441 GString *fullpathname = g_string_new(fileName);
\r
1443 if (fullpathname == NULL) {
\r
1444 g_string_free(fullpathdir, TRUE);
\r
1445 fullpathdir = NULL;
\r
1446 mf_ug_util_operation_alloc_failed(ugd);
\r
1447 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;
\r
1449 /*check the space */
\r
1450 gchar *test_space = g_strdup(fileName);
\r
1451 if (test_space == NULL) {
\r
1452 g_string_free(fullpathdir, TRUE);
\r
1453 fullpathdir = NULL;
\r
1454 g_string_free(fullpathname, TRUE);
\r
1455 fullpathname = NULL;
\r
1456 mf_ug_util_operation_alloc_failed(ugd);
\r
1457 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;
\r
1459 if (strlen(g_strchug(test_space)) == 0) {
\r
1460 message = MF_UG_LABEL_NAME_INVALID; /*TODO */
\r
1461 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1462 left_label, right_label, NULL,
\r
1463 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1465 g_string_free(fullpathdir, TRUE);
\r
1466 fullpathdir = NULL;
\r
1467 g_string_free(fullpathname, TRUE);
\r
1468 fullpathname = NULL;
\r
1469 g_free(test_space);
\r
1470 test_space = NULL;
\r
1471 return MYFILE_ERR_DIR_CREATE_FAIL;
\r
1474 g_free(test_space);
\r
1475 test_space = NULL;
\r
1477 /*check if input name is valid */
\r
1478 if (mf_ug_file_attr_is_valid_name(fullpathname->str) == MYFILE_ERR_INVALID_FILE_NAME) {
\r
1480 message = MF_UG_LABEL_ILLEGAL_CHAR;
\r
1481 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1482 left_label, right_label, NULL,
\r
1483 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1484 g_string_free(fullpathdir, TRUE);
\r
1485 fullpathdir = NULL;
\r
1486 g_string_free(fullpathname, TRUE);
\r
1487 fullpathname = NULL;
\r
1489 return MYFILE_ERR_DIR_CREATE_FAIL;
\r
1492 GString *fullpath = NULL;
\r
1493 char *temp_fullpath = g_strconcat(fullpathdir->str, "/", fullpathname->str, NULL);
\r
1494 if (temp_fullpath) {
\r
1495 fullpath = g_string_new(temp_fullpath);
\r
1497 free(temp_fullpath);
\r
1498 temp_fullpath = NULL;
\r
1499 if (fullpath == NULL) {
\r
1500 g_string_free(fullpathdir, TRUE);
\r
1501 fullpathdir = NULL;
\r
1502 g_string_free(fullpathname, TRUE);
\r
1503 fullpathname = NULL;
\r
1504 mf_ug_util_operation_alloc_failed(ugd);
\r
1505 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;
\r
1508 g_string_free(fullpathdir, TRUE);
\r
1509 fullpathdir = NULL;
\r
1510 g_string_free(fullpathname, TRUE);
\r
1511 fullpathname = NULL;
\r
1512 return MYFILE_ERR_ALLOCATE_MEMORY_FAIL;
\r
1515 /*check whether DIR name is override(DIR name has no extention) */
\r
1516 /*check whether path length is override */
\r
1517 if ((strlen(fullpathdir->str) + strlen(fullpathname->str)) > MYFILE_FILE_PATH_LEN_MAX) {
\r
1519 message = MF_UG_LABEL_PATH_REACH_MAX_LEN;
\r
1520 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1521 left_label, right_label, NULL,
\r
1522 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1523 g_string_free(fullpathdir, TRUE);
\r
1524 fullpathdir = NULL;
\r
1525 g_string_free(fullpathname, TRUE);
\r
1526 fullpathname = NULL;
\r
1527 ret = MYFILE_ERR_DIR_CREATE_FAIL;
\r
1529 /*check if duplicated name */
\r
1530 else if (mf_ug_file_attr_is_duplicated_name(ugd->ug_Status.ug_pPath->str, fileName) == MYFILE_ERR_DUPLICATED_NAME) {
\r
1531 message = MF_UG_LABEL_DUP_NAME;
\r
1532 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1533 left_label, right_label, NULL,
\r
1534 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1536 g_string_free(fullpathdir, TRUE);
\r
1537 fullpathdir = NULL;
\r
1538 g_string_free(fullpathname, TRUE);
\r
1539 fullpathname = NULL;
\r
1540 ret = MYFILE_ERR_DIR_CREATE_FAIL;
\r
1542 /*check if DIR name is all spaces */
\r
1544 ret = mf_ug_fm_svc_wrapper_create_service(ugd, fullpath);
\r
1545 /*check whether operate on read only area */
\r
1546 if (errno == EROFS) {
\r
1547 message = MF_UG_LABEL_OPER_READ_ONLY;
\r
1548 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL);
\r
1549 ret = MYFILE_ERR_DIR_CREATE_FAIL;
\r
1551 message = MF_UG_LABEL_CREATE_DIR_FAILED;
\r
1552 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, message, NULL, NULL, NULL, NULL, NULL);
\r
1555 g_string_free(fullpathdir, TRUE);
\r
1556 fullpathdir = NULL;
\r
1557 g_string_free(fullpathname, TRUE);
\r
1558 fullpathname = NULL;
\r
1559 g_string_free(fullpath, TRUE);
\r
1564 message = MF_UG_LABEL_EMPTY_FOLDER_NAME;
\r
1566 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1567 left_label, right_label, NULL,
\r
1568 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1569 ret = MYFILE_ERR_DIR_CREATE_FAIL;
\r
1575 void mf_ug_cb_save_cb(void *data, Evas_Object *obj, void *event_info)
\r
1578 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1579 ugData *ugd = (ugData *)data;
\r
1581 if (ugd->ug_Status.ug_b_NaviPushFlag) {
\r
1587 const char *message = NULL;
\r
1588 const char *left_label = NULL;
\r
1589 const char *right_label = NULL;
\r
1591 if (ugd->ug_Status.ug_iMore == UG_MORE_CREATE_FOLDER) {
\r
1592 const char *entry_data = NULL;
\r
1593 char *name = NULL;
\r
1596 if (ugd->ug_MainWindow.ug_pEntry != NULL) {
\r
1597 Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry);
\r
1598 if (imf_context != NULL)
\r
1599 ecore_imf_context_hide(imf_context);
\r
1602 entry_data = elm_entry_entry_get(ugd->ug_MainWindow.ug_pEntry);
\r
1605 name = elm_entry_markup_to_utf8(entry_data);
\r
1607 message = MF_UG_LABEL_GET_NAME_FAILED;
\r
1608 left_label = MF_UG_LABEL_YES;
\r
1609 right_label = MF_UG_LABEL_NO;
\r
1610 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT_TWO_BTN, NULL, message,
\r
1611 left_label, right_label, NULL,
\r
1612 __mf_ug_cb_illegal_char_popup_cb, ugd);
\r
1619 ret = __mf_ug_cb_ime_mkdir_cb(ugd, name);
\r
1621 ugd->ug_Status.ug_iMore = UG_MORE_DEFAULT;
\r
1622 ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(ugd->ug_MainWindow.ug_pEntry));
\r
1623 evas_object_del(ugd->ug_MainWindow.ug_pEntry);
\r
1624 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNewFolderPopup);
\r
1625 mf_ug_navi_bar_create_default_view(ugd);
\r
1628 if (name != NULL) {
\r
1635 void mf_ug_cb_lcd_state_changed_cb(power_state_e state, void *user_data)
\r
1639 ug_mf_retm_if(user_data == NULL, "user_data is NULL");
\r
1640 ugData *ugd = (ugData *)user_data;
\r
1642 if(state == POWER_STATE_SCREEN_OFF){
\r
1643 if (0 != ugd->ug_ListPlay.ug_Player) {
\r
1644 ug_debug("destory the playing file");
\r
1645 mf_ug_list_play_destory_playing_file(ugd);
\r
1646 mf_ug_list_disable_play_itc(ugd, true);
\r
1647 UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath);
\r
1654 Eina_Bool mf_ug_cb_popup_del_idler_cb(void *data)
\r
1657 ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL");
\r
1658 ugData *ugd = (ugData *)data;
\r
1660 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSearchPopup);
\r
1661 ugd->ug_Status.popup_del_idler = NULL;
\r
1663 return ECORE_CALLBACK_CANCEL;
\r
1666 void mf_ug_cb_entry_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
1669 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1671 Evas_Object *home_button_ic = (Evas_Object *)data;
\r
1672 elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER_PRESS, NULL);
\r
1675 void mf_ug_cb_entry_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
1678 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1680 Evas_Object *home_button_ic = (Evas_Object *)data;
\r
1681 elm_image_file_set(home_button_ic, UG_ICON_ENTRY_FOLDER, NULL);
\r
1684 void mf_ug_cb_play_button_pressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
1687 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1688 ugData *ugd = (ugData *)data;
\r
1690 const char *play_icon = NULL;
\r
1692 Evas_Object *music_icon = elm_object_part_content_get(obj, "icon");
\r
1693 if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) {
\r
1694 play_icon = UG_ICON_MUSIC_PLAY_WHITE_PRESS;
\r
1696 play_icon = UG_ICON_MUSIC_PAUSE_WHITE_PRESS;
\r
1699 elm_image_file_set(music_icon, play_icon, NULL);
\r
1702 void mf_ug_cb_play_button_unpressed_cb(void *data, Evas_Object * obj, void *event_info)
\r
1705 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1706 ugData *ugd = (ugData *)data;
\r
1708 const char *play_icon = NULL;
\r
1710 Evas_Object *music_icon = elm_object_part_content_get(obj, "icon");
\r
1711 if(ugd->ug_ListPlay.ug_iPlayState != PLAY_STATE_PLAYING) {
\r
1712 play_icon = UG_ICON_MUSIC_PLAY_WHITE;
\r
1714 play_icon = UG_ICON_MUSIC_PAUSE_WHITE;
\r
1717 elm_image_file_set(music_icon, play_icon, NULL);
\r
1720 void mf_ug_cb_more_cb(void *data, Evas_Object * obj, void *event_info)
\r
1723 ug_mf_retm_if(data == NULL, "data is NULL");
\r
1724 ugData *ugd = (ugData *)data;
\r
1726 mf_ug_context_popup_create_more(ugd, obj);
\r