[SR][Nabi-se][Nabi_SEN_SE-32480] Unable to select more then one file for attachment...
[apps/core/preloaded/ug-myfile-efl.git] / src / widget / mf-ug-ctrl-bar.c
1 /*
2  * Copyright 2012          Samsung Electronics Co., Ltd
3  *
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
7  *
8  *  http://floralicense.org/license/
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
18
19
20 #include <Eina.h>
21 #include <Elementary.h>
22
23 #include "mf-ug-winset.h"
24 #include "mf-ug-cb.h"
25 #include "mf-ug-fm-svc-wrapper.h"
26 #include "mf-ug-util.h"
27 #include "mf-ug-resource.h"
28
29 #define UG_CTRL_STYLE_TYPE              "controlbar"
30
31
32 /******************************
33 ** Prototype    : __mf_ug_ctrl_bar_create
34 ** Description  : Samsung
35 ** Input        : Evas_Object *parent
36 ** Output       : None
37 ** Return Value :
38 ** Calls        :
39 ** Called By    :
40 **
41 **  History        :
42 **  1.Date         : 2010/12/10
43 **    Author       : Samsung
44 **    Modification : Created function
45 **
46 ******************************/
47 static Evas_Object *__mf_ug_ctrl_bar_create(Evas_Object *parent)
48 {
49         UG_TRACE_BEGIN;
50         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");
51
52         Evas_Object *pCtrlBar = NULL;
53
54         pCtrlBar = elm_toolbar_add(parent);
55         elm_toolbar_shrink_mode_set(pCtrlBar, ELM_TOOLBAR_SHRINK_EXPAND);
56         elm_object_style_set(pCtrlBar, "naviframe");
57         elm_object_focus_set(pCtrlBar, EINA_FALSE);
58         evas_object_show(pCtrlBar);
59         UG_TRACE_END;
60         return pCtrlBar;
61 }
62
63
64 /******************************
65 ** Prototype    : __mf_ug_ctrl_bar_append_item
66 ** Description  : Samsung
67 ** Input        : void *data
68 **                Evas_Object *ctrl_bar
69 **                int type
70 ** Output       : None
71 ** Return Value :
72 ** Calls        :
73 ** Called By    :
74 **
75 **  History        :
76 **  1.Date         : 2010/12/10
77 **    Author       : Samsung
78 **    Modification : Created function
79 **
80 ******************************/
81 static void __mf_ug_ctrl_bar_append_item(void *data, Evas_Object *ctrl_bar, int type)
82 {
83         UG_TRACE_BEGIN;
84         ugData *ugd = (ugData *)data;
85         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
86         Evas_Object *pCtrlBar = ctrl_bar;
87         ug_mf_retm_if(pCtrlBar == NULL, "pCtrlBar is NULL");
88         Elm_Object_Item *item = NULL;
89         if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
90                 item = elm_toolbar_item_append(pCtrlBar, NULL, NULL, NULL, NULL);
91                 elm_object_item_disabled_set(item, EINA_TRUE);
92                 item = elm_toolbar_item_append(pCtrlBar, NULL, NULL, NULL, NULL);
93                 elm_object_item_disabled_set(item, EINA_TRUE);
94                 item = elm_toolbar_item_append(pCtrlBar, NULL, NULL, NULL, NULL);
95                 elm_object_item_disabled_set(item, EINA_TRUE);
96                 //elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_SET, (Evas_Smart_Cb) mf_ug_cb_add_button_cb, ugd);
97         } else {
98                 if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
99                     ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
100                     ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
101                         elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_IMPORT, (Evas_Smart_Cb) mf_ug_cb_add_button_cb, ugd);
102                         item = elm_toolbar_item_append(pCtrlBar, NULL, NULL, NULL, NULL);
103                         elm_object_item_disabled_set(item, EINA_TRUE);
104                         //elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_SEARCH, (Evas_Smart_Cb) mf_ug_search_view_enter_search_routine, ugd);
105                 } else if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE) {
106                         elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_EXPORT, (Evas_Smart_Cb) mf_ug_cb_add_button_cb, ugd);
107                         elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_CREATE, (Evas_Smart_Cb) mf_ug_cb_create_new_folder, ugd);
108                 } else {
109                         elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_ATTACH, (Evas_Smart_Cb) mf_ug_cb_add_button_cb, ugd);
110                 }
111         }
112
113         elm_toolbar_item_append(pCtrlBar, NULL, MF_UG_LABEL_CANCEL, (Evas_Smart_Cb) mf_ug_cb_back_button_cb, ugd);
114
115
116         UG_TRACE_END;
117 }
118
119
120 /******************************
121 ** Prototype    : mf_ug_ctrl_bar_set
122 ** Description  : Samsung
123 ** Input        : void* data
124 **                ugNaviBar *pNavi_s
125 ** Output       : None
126 ** Return Value :
127 ** Calls        :
128 ** Called By    :
129 **
130 **  History        :
131 **  1.Date         : 2010/12/10
132 **    Author       : Samsung
133 **    Modification : Created function
134 **
135 ******************************/
136 void mf_ug_ctrl_bar_set(void *data, ugNaviBar *pNavi_s)
137 {
138         UG_TRACE_BEGIN;
139         ugData *ugd = (ugData *)data;
140         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
141
142         Evas_Object *pNaviBar = ugd->ug_MainWindow.ug_pNaviBar;
143         Evas_Object *pCtrlBar = NULL;
144
145         int type = ugd->ug_Status.ug_iCtrlBarType;
146         pCtrlBar = __mf_ug_ctrl_bar_create(pNaviBar);
147         ugd->ug_MainWindow.ug_pNaviCtrlBar = pCtrlBar;
148         type = CTRL_BAR_NORMAL;
149         __mf_ug_ctrl_bar_append_item(ugd, pCtrlBar, type);
150         evas_object_show(pCtrlBar);
151         elm_object_item_part_content_set(ugd->ug_MainWindow.ug_pNaviItem, UG_CTRL_STYLE_TYPE, pCtrlBar);
152         UG_TRACE_END;
153 }
154
155 /******************************
156 ** Prototype    : mf_ug_ctrl_bar_disable_item
157 ** Description  : Samsung
158 ** Input        : void *data
159 **                bool disable
160 ** Output       : None
161 ** Return Value :
162 ** Calls        :
163 ** Called By    :
164 **
165 **  History        :
166 **  1.Date         : 2010/12/10
167 **    Author       : Samsung
168 **    Modification : Created function
169 **
170 ******************************/
171 void mf_ug_ctrl_bar_disable_item(void *data, bool disable)
172 {
173         UG_TRACE_BEGIN;
174         ugData *ugd = (ugData *)data;
175         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
176
177         Evas_Object *pCtrlBar = NULL;
178
179         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
180         ug_mf_retm_if(pNavi_s == NULL, "get navigation bar in use failed");
181
182         pCtrlBar = ugd->ug_MainWindow.ug_pNaviCtrlBar;
183
184         Elm_Object_Item *it = NULL;
185         it = elm_toolbar_first_item_get(pCtrlBar);
186
187         while(it) {
188                 const char *button_label = elm_object_item_text_get(it);
189                 const char *disable_labe = NULL;
190                 if (ugd->ug_UiGadget.ug_iSelectMode == SINGLE_ALL_MODE || ugd->ug_UiGadget.ug_iSelectMode == SINGLE_FILE_MODE) {
191                         disable_labe = MF_UG_LABEL_SET;
192                 } else if (ugd->ug_UiGadget.ug_iSelectMode == IMPORT_MODE ||
193                            ugd->ug_UiGadget.ug_iSelectMode == IMPORT_PATH_SELECT_MODE ||
194                            ugd->ug_UiGadget.ug_iSelectMode == IMPORT_SINGLE) {
195                         disable_labe = MF_UG_LABEL_IMPORT;
196                 } else {
197                         disable_labe = MF_UG_LABEL_ATTACH;
198                 }
199                 if (g_strcmp0(button_label, disable_labe) == 0) {
200                         elm_object_item_disabled_set(it, !disable);
201                 }
202                 it = elm_toolbar_item_next_get(it);
203         }
204 }
205
206 /******************************
207 ** Prototype    : mf_ug_ctrl_bar_set_item_disable
208 ** Description  : Samsung
209 ** Input        : void *data
210 ** Output       : None
211 ** Return Value :
212 ** Calls        :
213 ** Called By    :
214 **
215 **  History        :
216 **  1.Date         : 2010/12/10
217 **    Author       : Samsung
218 **    Modification : Created function
219 **
220 ******************************/
221 void mf_ug_ctrl_bar_set_item_disable(void *data)
222 {
223         UG_TRACE_BEGIN;
224         ugData *ugd = (ugData *)data;
225         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
226         bool disable = false;
227
228         if (ugd->ug_Status.ug_bNoContentFlag == true) {
229                 mf_ug_navi_bar_button_set_disable(ugd, true);
230         } else {
231                 disable = mf_ug_util_is_genlist_selected(ugd);
232                 mf_ug_navi_bar_button_set_disable(ugd, !disable);
233         }
234         UG_TRACE_END;
235 }
236
237 void mf_ug_ctrl_bar_recover(void *data)
238 {
239         UG_TRACE_BEGIN;
240         ugData *ugd = (ugData *)data;
241         ug_mf_retm_if(ugd == NULL, "ugd is NULL");
242
243         ugNaviBar *pNavi_s = mf_ug_navi_bar_get_in_use_navi(ugd);
244         ug_mf_retm_if(pNavi_s == NULL, "get navi failed");
245
246         Evas_Object *naviBar = ugd->ug_MainWindow.ug_pNaviBar;
247         Evas_Object *ctrl_bar = NULL;
248
249         ug_mf_retm_if(naviBar == NULL, "navi is NULL");
250         ctrl_bar = elm_object_item_part_content_get(ugd->ug_MainWindow.ug_pNaviItem, UG_CTRL_STYLE_TYPE);
251         ugd->ug_MainWindow.ug_pNaviCtrlBar = ctrl_bar;
252 }