diff options
Diffstat (limited to 'src/widget/mf-ug-navi-bar.c')
-rw-r--r-- | src/widget/mf-ug-navi-bar.c | 956 |
1 files changed, 956 insertions, 0 deletions
diff --git a/src/widget/mf-ug-navi-bar.c b/src/widget/mf-ug-navi-bar.c new file mode 100644 index 0000000..d50e530 --- /dev/null +++ b/src/widget/mf-ug-navi-bar.c @@ -0,0 +1,956 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.1 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "mf-ug-winset.h" +#include "mf-ug-cb.h" +#include "mf-ug-fm-svc-wrapper.h" +#include "mf-ug-util.h" +#include "mf-ug-fs-util.h" +#include "mf-ug-resource.h" + + +/****************************** +** Prototype : __mf_ug_navi_bar_create_group_radio_box +** Description : Samsung +** Input : void *data +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +static void __mf_ug_navi_bar_create_group_radio_box(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + Evas_Object *group_radio = NULL; + + if (ugd->ug_MainWindow.ug_pRadioGroup != NULL) { + evas_object_del(ugd->ug_MainWindow.ug_pRadioGroup); + ugd->ug_MainWindow.ug_pRadioGroup = NULL; + } + + group_radio = elm_radio_add(ugd->ug_MainWindow.ug_pMainLayout); + ug_mf_retm_if(group_radio == NULL, "ugd is NULL"); + + elm_radio_value_set(group_radio, 0); + evas_object_hide(group_radio); + /*/Internal/invisible Radio Objects used to group the radio buttons in the list. */ + ugd->ug_MainWindow.ug_pRadioGroup = group_radio; + UG_TRACE_END; +} + + +/****************************** +** Prototype : __mf_ug_navi_bar_push_content +** Description : Samsung +** Input : ugData *data +** Evas_Object *NaviContent +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +static void __mf_ug_navi_bar_push_content(void *data, Evas_Object *NaviContent) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "pNavi_s is NULL"); + ugData *ugd = (ugData *)data; + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + + Evas_Object *NaviBar = ugd->ug_MainWindow.ug_pNaviBar; + char *title = NULL; + + ugd->ug_MainWindow.ug_pPreNaviItem = ugd->ug_MainWindow.ug_pNaviItem; + + if (pNavi_s) { + if(!g_strcmp0(pNavi_s->ug_pNaviTitle, "Ringtones")) { + if (pNavi_s->ug_pNaviTitle) { + g_free(pNavi_s->ug_pNaviTitle); + pNavi_s->ug_pNaviTitle = NULL; + } + pNavi_s->ug_pNaviTitle = g_strdup(MF_UG_LABEL_RINGTONES); + } else if(!g_strcmp0(pNavi_s->ug_pNaviTitle, "Alarms")) { + if (pNavi_s->ug_pNaviTitle) { + g_free(pNavi_s->ug_pNaviTitle); + pNavi_s->ug_pNaviTitle = NULL; + } + pNavi_s->ug_pNaviTitle = g_strdup(MF_UG_LABEL_ALARM); + } else if (!g_strcmp0(pNavi_s->ug_pNaviTitle, "Alerts")) { + } + title = pNavi_s->ug_pNaviTitle; + } + ug_debug("title=%s", title); + + ugd->ug_MainWindow.ug_pNaviItem = elm_naviframe_item_push(NaviBar, title, NULL, NULL, NaviContent, NULL); + + UG_TRACE_END; +} + + +static Eina_Bool __mf_widget_notify_popup_timer_cb(void *data) +{ + ugData *ugd = (ugData *)data; + ug_mf_retvm_if(ugd == NULL, EINA_FALSE, "ugd is null"); + + elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, + "sel_contents"); + + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout); + ugd->ug_Status.pPopupTimer = NULL; + return false; +} + +Evas_Object *mf_ug_navibar_create_notify_popup(void *data, + Evas_Object *parent, + char *label, + bool time_out, + void func(void *data, Evas_Object *obj, void *event_info)) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(data == NULL, NULL, "data is NULL"); + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + ug_mf_retvm_if(label == NULL, NULL, "label is NULL"); + ugData *ugd = (ugData *)data; + + + Evas_Object *countlabel = NULL; + if (ugd->ug_MainWindow.ug_pSelectInfoLayout && ugd->ug_Status.pPopupTimer) { + elm_object_part_text_set(ugd->ug_MainWindow.ug_pSelectInfoLayout, "elm.text", label); + countlabel = ugd->ug_MainWindow.ug_pSelectInfoLayout; + } else { + elm_object_part_content_unset(ugd->ug_MainWindow.ug_pNaviLayout, + "sel_contents"); + UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pSelectInfoLayout); + countlabel = elm_layout_add(parent); + evas_object_size_hint_weight_set(countlabel, + EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(countlabel, + EVAS_HINT_FILL, + EVAS_HINT_FILL); + elm_layout_theme_set(countlabel, "standard", "selectioninfo", "center_text"); + elm_object_part_text_set(countlabel, "elm.text", label); + elm_object_part_content_set(parent, + "sel_contents", + countlabel); + elm_object_signal_emit(countlabel, "show,selection,info", "elm"); + } + + UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.pPopupTimer); + if (time_out) { + ugd->ug_Status.pPopupTimer = ecore_timer_add(3, __mf_widget_notify_popup_timer_cb, ugd); + } + + evas_object_show(countlabel); + UG_TRACE_END; + return countlabel; + + +} + +/****************************** +** Prototype : mf_ug_navi_bar_create_navi_bar +** Description : +** Input : Evas_Object* parent +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +Evas_Object *mf_ug_navi_bar_create_navi_bar(Evas_Object *parent) +{ + UG_TRACE_BEGIN; + Evas_Object *navi_bar = NULL; + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + + navi_bar = elm_naviframe_add(parent); + ug_mf_retvm_if(navi_bar == NULL, NULL, "Failed elm_navigationbar_add"); + elm_naviframe_prev_btn_auto_pushed_set(navi_bar, EINA_FALSE); + + evas_object_show(navi_bar); + + UG_TRACE_END; + return navi_bar; +} + + +/****************************** +** Prototype : mf_ug_navi_bar_set_new_content +** Description : Samsung +** Input : Evas_Object *pLayout +** Evas_Object *NaviContent +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_navi_bar_set_new_content(Evas_Object *pLayout, Evas_Object *NaviContent) +{ + UG_TRACE_BEGIN; + Evas_Object *unUsed = elm_object_part_content_unset(pLayout, "part1"); + evas_object_del(unUsed); + elm_object_part_content_set(pLayout, "part1", NaviContent); + UG_TRACE_END; +} + +Evas_Object *mf_ug_navi_bar_create_box(Evas_Object * parent) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + + Evas_Object *box = NULL; + box = elm_box_add(parent); + ug_mf_retvm_if(box == NULL, NULL, "box is NULL"); + elm_object_focus_set(box, EINA_FALSE); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_clear(box); + evas_object_show(box); + UG_TRACE_END; + return box; + +} + +Evas_Object *mf_ug_navi_bar_create_layout(Evas_Object *parent, const char *edj, const char *grp_name) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + ug_mf_retvm_if(edj == NULL, NULL, "edj is NULL"); + ug_mf_retvm_if(grp_name == NULL, NULL, "grp_name is NULL"); + + Evas_Object *layout = NULL; + + layout = elm_layout_add(parent); + ug_mf_retvm_if(layout == NULL, NULL, "layout is NULL"); + elm_object_focus_set(layout, EINA_FALSE); + elm_layout_file_set(layout, edj, grp_name); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(layout); + UG_TRACE_END; + return layout; + +} + +/****************************** +** Prototype : mf_ug_navi_bar_create_default_view +** Description : Samsung +** Input : void *data +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +Evas_Object *__mf_ug_navi_bar_pathinfo_create(Evas_Object *parent, const char *content) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + ug_mf_retvm_if(content == NULL, NULL, "content is NULL"); + + Evas_Object *layout = NULL; + + layout = elm_layout_add(parent); + elm_object_focus_set(layout, EINA_FALSE); + elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, UG_GRP_PATH_INFO); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_part_text_set(layout, "info", content); + evas_object_show(layout); + UG_TRACE_END; + return layout; +} + + +void mf_ug_navi_bar_title_set(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + elm_object_part_text_set(ugd->ug_MainWindow.ug_pNaviBar, "elm.text.title", MF_UG_LABEL_IMPORT); + } else if (!(ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true)) { + Evas_Object *home_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar); + elm_object_style_set(home_btn, "naviframe/title_icon"); + Evas_Object *home_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar); + elm_image_file_set(home_ic, UG_TITLE_ICON_HOME, NULL); + elm_image_resizable_set(home_ic, EINA_TRUE, EINA_TRUE); + elm_object_content_set(home_btn, home_ic); + evas_object_smart_callback_add(home_btn, "clicked", mf_ug_cb_home_button_cb, ugd); + evas_object_smart_callback_add(home_btn, "pressed", mf_ug_cb_home_button_pressed_cb, home_ic); + evas_object_smart_callback_add(home_btn, "unpressed", mf_ug_cb_home_button_unpressed_cb, home_ic); + evas_object_show(home_btn); + elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_LEFT_BTN, home_btn); + + Evas_Object *up_btn = elm_button_add(ugd->ug_MainWindow.ug_pNaviBar); + elm_object_style_set(up_btn, "naviframe/title_icon"); + Evas_Object *up_ic = elm_image_add(ugd->ug_MainWindow.ug_pNaviBar); + elm_image_file_set(up_ic, UG_TITLE_ICON_UPPER, NULL); + elm_image_resizable_set(up_ic, EINA_TRUE, EINA_TRUE); + elm_object_content_set(up_btn, up_ic); + evas_object_smart_callback_add(up_btn, "clicked", mf_ug_cb_upper_click_cb, ugd); + evas_object_smart_callback_add(up_btn, "pressed", mf_ug_cb_upper_button_pressed_cb, up_ic); + evas_object_smart_callback_add(up_btn, "unpressed", mf_ug_cb_upper_button_unpressed_cb, up_ic); + evas_object_show(up_btn); + + elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, TITLE_RIGHT_BTN, up_btn); + } + elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_TRUE); +} + +Eina_Bool mf_ug_navi_search_idler_cb(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL"); + ugData *ugd = (ugData *)data; + + mf_ug_search_view_enter_search_routine(ugd, NULL, NULL); + ugd->ug_Status.search_idler = NULL; + + return ECORE_CALLBACK_CANCEL; +} + +Evas_Object *__mf_ug_navi_bar_backbutton_create(Evas_Object *parent) +{ + UG_TRACE_BEGIN; + ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL"); + + Evas_Object *btn = NULL; + btn = elm_button_add(parent); + elm_object_style_set(btn, "naviframe/end_btn/default"); + evas_object_show(btn); + return btn; + +} + +void mf_ug_navi_add_back_button(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + Evas_Object *pBackButton = NULL; + + pBackButton = __mf_ug_navi_bar_backbutton_create(ugd->ug_MainWindow.ug_pNaviBar); + if (pBackButton) { + elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "prev_btn", pBackButton); + evas_object_smart_callback_add(pBackButton, "clicked", mf_ug_cb_back_button_cb, ugd); + } +} + +void mf_ug_callback_tab_click(void *data) +{ + int mmc_card = 0; + int error_code = 0; + ugData *ugd = (ugData *)data; + ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL"); + Evas_Object *newContent = NULL; + newContent = mf_ug_genlist_create_content_list_view(ugd); + Elm_Object_Item * selected_item = elm_toolbar_selected_item_get(ugd->ug_MainWindow.ug_pTabBar); + char *name = elm_object_item_text_get(selected_item); + + if(!strcmp(name, MF_UG_LABEL_MMC)) + { + error_code = mf_ug_util_get_mmc_state(&mmc_card); + if (error_code == 0 && mmc_card == 0) + { + newContent = mf_ug_genlist_no_mem_card(ugd); + } + } + + Evas_Object *playout = ugd->ug_MainWindow.ug_pNaviLayout; + ug_mf_retm_if(playout == NULL, "get conformant failed"); + Evas_Object *unUsed = elm_object_part_content_unset(playout, "part1"); + evas_object_del(unUsed); + + elm_object_part_content_set(playout, "part1", newContent); +} + +void mf_ug_tab_bar_generate(void *data) +{ + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + Elm_Object_Item *item_1 = NULL; + Elm_Object_Item *item_2 = NULL; + Evas_Object *parent = ugd->ug_MainWindow.ug_pNaviBar; + + Evas_Object *layout = mf_ug_navi_bar_create_layout(parent, UG_EDJ_NAVIGATIONBAR, UG_GRP_CTRL_BAR); + Evas_Object * tab_bar = elm_toolbar_add(layout); + ugd->ug_MainWindow.ug_pTabBar = tab_bar; + elm_object_focus_set(tab_bar, EINA_FALSE); + elm_toolbar_shrink_mode_set(tab_bar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(tab_bar, "tabbar"); + elm_toolbar_transverse_expanded_set(tab_bar, EINA_TRUE); + elm_toolbar_select_mode_set(tab_bar, ELM_OBJECT_SELECT_MODE_ALWAYS); + + evas_object_size_hint_weight_set(tab_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(tab_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); + + + elm_object_part_content_set(layout, "content", tab_bar); + elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "title", layout); + item_1 = elm_toolbar_item_append(tab_bar, UG_ICON_PHONE, MF_UG_LABEL_PHONE, mf_ug_callback_tab_click, ugd); + item_2 = elm_toolbar_item_append(tab_bar, UG_ICON_MEMORY, MF_UG_LABEL_MMC, mf_ug_callback_tab_click, ugd); + elm_object_signal_emit(ugd->ug_MainWindow.ug_pNaviLayout, "show,title,button", "elm"); + +} + +void mf_ug_navi_bar_set_ctrl_button(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem;//ap->mf_MainWindow.pNaviItem; + Evas_Object *pNavi = ugd->ug_MainWindow.ug_pNaviBar; + Elm_Object_Item *item_1 = NULL; + Elm_Object_Item *item_2 = NULL; + + + Evas_Object *layout = mf_ug_navi_bar_create_layout(pNavi, UG_EDJ_NAVIGATIONBAR, UG_GRP_CTRL_BAR); + Evas_Object * tab_bar = elm_toolbar_add(layout); + elm_object_focus_set(tab_bar, EINA_FALSE); + elm_toolbar_shrink_mode_set(tab_bar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(tab_bar, "transparent"); + elm_toolbar_transverse_expanded_set(tab_bar, EINA_TRUE); + elm_toolbar_select_mode_set(tab_bar, ELM_OBJECT_SELECT_MODE_DEFAULT); + + evas_object_size_hint_weight_set(tab_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(tab_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); + + + elm_object_part_content_set(layout, "content", tab_bar); + + if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + item_1 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_IMPORT, mf_ug_cb_add_button_cb, ugd); + evas_object_show(tab_bar); + + } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) { + item_1 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_EXPORT, mf_ug_cb_add_button_cb, ugd); + item_2 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_CREATE, mf_ug_cb_more_cb, ugd); + } else if (ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) { + item_1 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_SAVE_HERE, mf_ug_cb_add_button_cb, ugd); + item_2 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_CREATE, mf_ug_cb_more_cb, ugd); + } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) { + item_1 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_DONE, mf_ug_cb_add_button_cb, ugd); + } + else if (!(ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE)) { + item_1 = elm_toolbar_item_append(tab_bar, NULL, MF_UG_LABEL_ATTACH, mf_ug_cb_add_button_cb, ugd); + } + if (item_1 || item_2) + { + elm_object_signal_emit(ugd->ug_MainWindow.ug_pNaviLayout, "show,toolbar,button", "elm"); + } + elm_object_part_content_set(ugd->ug_MainWindow.ug_pNaviLayout, "toolbar_button", layout); + mf_ug_navi_add_back_button(ugd); + +} + + + +void mf_ug_navi_bar_create_default_view(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + GString *title = NULL; + Evas_Object *pNaviLayout = NULL; + Evas_Object *newContent = NULL; + Evas_Object *box = NULL; + Evas_Object *top_layout = NULL; + Evas_Object *upper_genlist = NULL; + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed"); + + + /*if the muisc is playing, destory the play */ + if (0 != ugd->ug_ListPlay.ug_Player) { + mf_ug_list_play_destory_playing_file(ugd); + UG_SAFE_FREE_CHAR(ugd->ug_ListPlay.ug_pPlayFilePath); + } + + box = mf_ug_navi_bar_create_box(ugd->ug_MainWindow.ug_pNaviBar); + pNaviLayout = mf_ug_navi_bar_create_layout(box, UG_EDJ_NAVIGATIONBAR, UG_GRP_NAVI_VIEW); + ugd->ug_MainWindow.ug_pNaviLayout = pNaviLayout; + elm_object_signal_emit(ugd->ug_MainWindow.ug_pNaviLayout, "hide,toolbar,button", "elm"); + + + if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + newContent = __mf_ug_genlist_create_gl(ugd); + ugd->ug_MainWindow.ug_pNaviGenlist = newContent; + + } else { + if (ugd->ug_Status.ug_bSettingEntry == true && ugd->ug_Status.ug_bInSettingView == true) { + top_layout = mf_ug_navi_bar_create_box(box); + evas_object_size_hint_min_set(top_layout, MF_UG_UPPER_WIDTH, MF_UG_UPPER_HEIGHT); + upper_genlist = mf_navi_bar_upper_create(top_layout); + elm_object_scroll_freeze_push(upper_genlist); + elm_genlist_scroller_policy_set(upper_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + mf_ug_genlist_goto_myfile_style_set(ugd); + mf_ug_genlist_goto_myfile_item_append(upper_genlist, ugd); + ugd->ug_Status.ug_bUpperFlag = true; + elm_box_pack_end(top_layout, upper_genlist); + } + if (top_layout) { + elm_box_pack_start(box, top_layout); + } else { + ugd->ug_Status.ug_bUpperFlag = true; + } + /*set content */ + if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) { + __mf_ug_navi_bar_create_group_radio_box(ugd); + } + newContent = mf_ug_genlist_create_content_list_view(ugd); + ugd->ug_MainWindow.ug_pNaviGenlist = newContent; + /*set title segment or title */ + if (mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) { + title = g_string_new(MF_UG_LABEL_MYFILES); + } else { + title = mf_ug_fm_svc_wapper_get_file_name(ugd->ug_Status.ug_pPath); + } + + if (title != NULL) { + pNavi_s->ug_pNaviTitle = g_strdup(title->str); + g_string_free(title, TRUE); + title = NULL; + } + } + + /*navigation view integration */ + evas_object_show(newContent); + elm_object_part_content_set(pNaviLayout, "part1", newContent); + + elm_box_pack_end(box, pNaviLayout); + ugd->ug_MainWindow.ug_pNaviBox = box; + __mf_ug_navi_bar_push_content(ugd, box); + + /*add control bar for navigation bar */ + elm_naviframe_item_title_visible_set(ugd->ug_MainWindow.ug_pNaviItem, EINA_FALSE); + if(mf_ug_fm_svc_wapper_is_root_path(ugd->ug_Status.ug_pPath)) + { + mf_ug_tab_bar_generate(ugd); + } + else + { + elm_object_signal_emit(ugd->ug_MainWindow.ug_pNaviLayout, "hide,title,button", "elm"); + mf_ug_navi_bar_set_ctrl_button(ugd); + mf_ug_navi_bar_title_set(ugd); + } + + mf_ug_navi_bar_remove_previous_contents(ugd); + + if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + ug_ecore_idler_del(ugd->ug_Status.search_idler); + ugd->ug_Status.search_idler = ecore_idler_add(mf_ug_navi_search_idler_cb, ugd); + } + UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer); + UG_TRACE_END; +} + +void mf_ug_navi_bar_create_new_folder_view(void *data) +{ + + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + Evas_Object *newContent = NULL; + + Evas_Object *pNaviBar = NULL; + GString *title = NULL; + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL"); + + pNaviBar = ugd->ug_MainWindow.ug_pNaviBar; + + /*set content*/ + newContent = mf_ug_genlist_create_list_new_folder_style(ugd); + /*set title segment or title*/ + title = g_string_new(MF_UG_LABEL_CREATE); + + if (title != NULL) { + pNavi_s->ug_pNaviTitle = g_strdup(title->str); + g_string_free(title, TRUE); + title = NULL; + } + /*navigation view integration*/ + __mf_ug_navi_bar_push_content(ugd, newContent); + + Evas_Object *l_bt = NULL; + Evas_Object *r_bt = NULL; + + l_bt = elm_button_add(pNaviBar); + elm_object_focus_set(l_bt, EINA_FALSE); + elm_object_style_set(l_bt, "naviframe/title/default"); + elm_object_text_set(l_bt, MF_UG_LABEL_SAVE); + evas_object_smart_callback_add(l_bt, "clicked", mf_ug_cb_save_cb, ugd); + evas_object_show(l_bt); + elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_toolbar_button1", l_bt); + + r_bt = elm_button_add(pNaviBar); + elm_object_focus_set(r_bt, EINA_FALSE); + elm_object_style_set(r_bt, "naviframe/end_btn/default"); + evas_object_smart_callback_add(r_bt, "clicked", mf_ug_cb_cancel_new_folder_cb, ugd); + evas_object_show(r_bt); + elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, "title_prev_btn", r_bt); + elm_object_item_signal_emit(ugd->ug_MainWindow.ug_pNaviItem, "elm,state,sip,shown", ""); + + elm_object_focus_set(ugd->ug_MainWindow.ug_pEntry, EINA_TRUE); + UG_SAFE_DEL_ECORE_TIMER(ugd->ug_Status.play_timer); +} + +/****************************** +** Prototype : mf_ug_navi_bar_get_in_use_navi +** Description : Samsung +** Input : void* data +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +ugNaviBar *mf_ug_navi_bar_get_in_use_navi(void *data) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL"); + + Eina_List *pNaviList = ugd->ug_MainWindow.ug_pNaviBarList; + ug_mf_retvm_if(pNaviList == NULL, NULL, "pNavi_sList is NULL"); + + ugNaviBar *ret = NULL; + Eina_List *l = NULL; + void *item; + + EINA_LIST_FOREACH(pNaviList, l, item) { + ret = (ugNaviBar *)item; + if (ret->ug_bNaviFlagInUse == TRUE) { + break; + } else { + ret = NULL; + } + } + UG_TRACE_END; + return ret; +} + + +/****************************** +** Prototype : mf_ug_navi_bar_reset_navi_object +** Description : Samsung +** Input : ugNaviBar *pNavi_s +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_navi_bar_reset_navi_object(ugNaviBar *pNavi_s) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(pNavi_s == NULL, "pNavi_s is NULL"); + + pNavi_s->ug_pNaviTitle = NULL; + if (pNavi_s->ug_pCurrentPath != NULL) { + free(pNavi_s->ug_pCurrentPath); + pNavi_s->ug_pCurrentPath = NULL; + } + if (pNavi_s->ug_pNaviLabel != NULL) + free(pNavi_s->ug_pNaviLabel); + pNavi_s->ug_pNaviLabel = NULL; + UG_TRACE_END; +} + +/****************************** +** Prototype : mf_ug_navi_bar_get_navi_struct_by_label +** Description : Samsung +** Input : void* data +** const char* pNaviLabel +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +ugNaviBar *mf_ug_navi_bar_get_navi_struct_by_label(void *data, const char *pNaviLabel) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL"); + ug_mf_retvm_if(pNaviLabel == NULL, NULL, "pNaviLabel is NULL"); + + Eina_List *l = NULL; + void *item = NULL; + + ugNaviBar *ret = NULL; + EINA_LIST_FOREACH(ugd->ug_MainWindow.ug_pNaviBarList, l, item) { + if (g_strcmp0(((ugNaviBar *)item)->ug_pNaviLabel, pNaviLabel) == 0) { + ret = (ugNaviBar *)item; + break; + } + } + UG_TRACE_END; + return ret; +} + + +/****************************** +** Prototype : mf_ug_navi_bar_remove_navi_list_item_by_label +** Description : Samsung +** Input : void *data +** const char* pNaviLabel +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_navi_bar_remove_navi_list_item_by_label(void *data, const char *pNaviLabel) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + ug_mf_retm_if(pNaviLabel == NULL, "pNaviLabel is NULL"); + + bool bInUseFlag = FALSE; + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_navi_struct_by_label(ugd, pNaviLabel); + + if (pNavi_s == NULL) { + return; + } + Eina_List *plistNaviMMC = eina_list_data_find_list(ugd->ug_MainWindow.ug_pNaviBarList, pNavi_s); + ugd->ug_MainWindow.ug_pNaviBarList = eina_list_remove_list(ugd->ug_MainWindow.ug_pNaviBarList, plistNaviMMC); + + if (pNavi_s->ug_bNaviFlagInUse == TRUE) { + bInUseFlag = TRUE; + } + + mf_ug_navi_bar_reset_navi_object(pNavi_s); + + if (bInUseFlag == TRUE) { + pNavi_s = (ugNaviBar *)eina_list_nth(ugd->ug_MainWindow.ug_pNaviBarList, 0); + pNavi_s->ug_bNaviFlagInUse = TRUE; + } + UG_TRACE_END; +} + + +/****************************** +** Prototype : mf_ug_navi_bar_refresh_navibar_recovered_view +** Description : Samsung +** Input : void *data +** ugNaviBar* pNaviStruct +** Output : None +** Return Value : +** Calls : +** Called By : +** +** History : +** 1.Date : 2010/12/10 +** Author : Samsung +** Modification : Created function +** +******************************/ +void mf_ug_navi_bar_refresh_navibar_recovered_view(void *data, ugNaviBar *pNaviStruct) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + ug_mf_retm_if(pNaviStruct == NULL, "pNaviStruct is NULL"); + + if (ugd->ug_Status.ug_pPath != NULL) { + g_string_free(ugd->ug_Status.ug_pPath, TRUE); + ugd->ug_Status.ug_pPath = NULL; + } + ugd->ug_Status.ug_pPath = g_string_new(pNaviStruct->ug_pCurrentPath); + mf_ug_navi_bar_create_default_view(ugd); + + UG_TRACE_END; +} + +void mf_ug_navi_bar_transition_finished_cb(void *data, Evas_Object *obj, void *event_info) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ug_mf_retm_if(obj == NULL, "obj is NULL"); + ugData *ugd = (ugData *)data; + Elm_Object_Item *it = ugd->ug_MainWindow.ug_pPreNaviItem; + UG_SAFE_DEL_NAVI_ITEM(it); + ugd->ug_MainWindow.ug_pPreNaviItem = NULL; + mf_ug_navi_bar_set_blocking(data, false); + evas_object_smart_callback_del(obj, "transition,finished", mf_ug_navi_bar_transition_finished_cb); + UG_TRACE_END; +} + +void mf_ug_navi_bar_remove_previous_contents(void *data) +{ + UG_TRACE_BEGIN; + + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + Evas_Object *pNaviBar = NULL; + if (ugd->ug_MainWindow.ug_pNaviBar) { + pNaviBar = ugd->ug_MainWindow.ug_pNaviBar; + mf_ug_navi_bar_set_blocking(data, true); + evas_object_smart_callback_add(pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb, ugd); + } + UG_TRACE_END; +} + +void mf_ug_navi_bar_del_item_directly(void *data) +{ + UG_TRACE_BEGIN; + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + if (ugd->ug_Status.ug_b_NaviPushFlag) { + ugNaviBar *pNavi_s_previous = NULL; + pNavi_s_previous = mf_ug_navi_bar_get_in_use_navi(ugd) ; + if(pNavi_s_previous && ugd->ug_MainWindow.ug_pPreNaviItem) + { + UG_SAFE_DEL_NAVI_ITEM(ugd->ug_MainWindow.ug_pPreNaviItem); + mf_ug_navi_bar_set_blocking(ugd, false); + evas_object_smart_callback_del(ugd->ug_MainWindow.ug_pNaviBar, "transition,finished", mf_ug_navi_bar_transition_finished_cb); + } + } + UG_TRACE_END; +} + + +void mf_ug_navi_bar_set_blocking(void *data, bool bblock_during_transition) +{ + ug_mf_retm_if(data == NULL, "data is NULL"); + ugData *ugd = (ugData *)data; + + ugd->ug_Status.ug_bCancelDisableFlag = bblock_during_transition; + ugd->ug_Status.ug_b_NaviPushFlag = bblock_during_transition; + return; +} + +ugNaviBar *ug_mf_navi_bar_get_navi_from_navilist(Eina_List *navilist, const char *label) +{ + + UG_TRACE_BEGIN; + ug_mf_retvm_if(navilist == NULL, NULL, "navilist is NULL"); + ug_mf_retvm_if(label == NULL, NULL, "label is NULL"); + + void *data = NULL; + ugNaviBar *pNavi = NULL; + Eina_List *l = NULL; + EINA_LIST_FOREACH(navilist, l, data) { + if (data) { + pNavi = (ugNaviBar *)data; + if (pNavi && pNavi->ug_pNaviLabel && g_strcmp0(label, pNavi->ug_pNaviLabel) == 0) + return pNavi; + else + continue; + } + } + return NULL; +} + +void mf_ug_navi_bar_button_set_disable(void *data, bool disable) +{ + UG_TRACE_BEGIN; + ugData *ugd = (ugData *)data; + ug_mf_retm_if(ugd == NULL, "ugd is NULL"); + + Evas_Object *btn = NULL; + Elm_Object_Item *navi_it = ugd->ug_MainWindow.ug_pNaviItem; + + ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd); + ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed"); + + const char *disable_labe = NULL; + if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE + || ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) { + disable_labe = MF_UG_LABEL_IMPORT; + } else if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) { + disable_labe = MF_UG_LABEL_SET; + } + else { + disable_labe = MF_UG_LABEL_ATTACH; + } + btn = elm_object_item_part_content_get(navi_it, NAVI_BOTTOM_BUTTON_1_PART); + const char *button_label = elm_object_text_get(btn); + if (g_strcmp0(button_label, disable_labe) == 0) + elm_object_disabled_set(btn, disable); +} + |