2 * Copyright 2012 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://www.tizenopensource.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 "gl-ui-util.h"
20 #include "gl-controlbar.h"
21 #include "gl-albums.h"
22 #include "gl-gridview.h"
23 #include "gl-listview.h"
24 #include "gl-db-handler.h"
25 #include "gl-strings.h"
27 #define GL_CTRL_STYLE_TOOLBAR "gallery/default"
28 #define GL_CTRL_SEG_STYLE "gallery/default"
29 #define GL_SEGMENT_WIDTH_MIN_INC (433*elm_config_scale_get()) //(143+2+143+2+143)
32 _gl_ctrl_segment_change_cb(void *data, Evas_Object * obj, void *event_info)
35 gl_appdata *ad = (gl_appdata *)data;
36 Elm_Object_Item *seg_it = NULL;
39 if (ad->uginfo.ug_called_by_me ||
40 ad->gridinfo.append_idler)
42 gl_dbg("UG invoked or appending gridview.");
43 seg_it = elm_segment_control_item_get(obj, ad->albuminfo.seg_mode);
45 elm_segment_control_item_selected_set(seg_it, EINA_TRUE);
50 seg_it = elm_segment_control_item_selected_get(obj);
52 idx = elm_segment_control_item_index_get(seg_it);
55 gl_dbg("Creating all-media view");
56 ad->albuminfo.seg_mode = GL_CTRL_SEG_ALL;
57 gl_ui_reset_toolbar_item(ad, GL_CTRL_SEG_ALL, false);
59 if (ad->gridinfo.all_view == NULL)
61 Evas_Object *grid = gl_grid_create_view(ad,
62 ad->maininfo.navi_bar, GL_GRID_ALL);
63 ad->gridinfo.all_view = grid;
65 /* just update the data */
66 ad->gridinfo.grid_view_mode = GL_GRID_ALL;
67 gl_grid_update_items(ad);
70 elm_object_part_content_unset(ad->gridinfo.layout,
72 evas_object_hide(ad->listinfo.video_view);
73 evas_object_hide(ad->gridinfo.image_view);
75 evas_object_show(ad->gridinfo.all_view);
76 elm_object_part_content_set(ad->gridinfo.layout,
77 "elm.swallow.view", ad->gridinfo.all_view);
78 gl_set_view_mode(ad, GL_VIEW_THUMBS);
82 gl_dbg("Creating image view");
83 ad->albuminfo.seg_mode = GL_CTRL_SEG_IMAGES;
84 gl_ui_reset_toolbar_item(ad, GL_CTRL_SEG_IMAGES, false);
86 if(ad->listinfo.video_nocontents)
87 gl_list_clear_view(ad);
89 if (ad->gridinfo.image_view == NULL)
91 Evas_Object *grid = gl_grid_create_view(ad,
92 ad->maininfo.navi_bar, GL_GRID_IMAGES);
93 ad->gridinfo.image_view = grid;
95 /* just update the data */
96 ad->gridinfo.grid_view_mode = GL_GRID_IMAGES;
97 gl_grid_update_items(ad);
100 elm_object_part_content_unset(ad->gridinfo.layout, "elm.swallow.view");
101 evas_object_hide(ad->listinfo.video_view);
102 evas_object_hide(ad->gridinfo.all_view);
104 evas_object_show(ad->gridinfo.image_view);
105 elm_object_part_content_set(ad->gridinfo.layout,
106 "elm.swallow.view", ad->gridinfo.image_view);
107 gl_set_view_mode(ad, GL_VIEW_THUMBS);
111 ad->albuminfo.seg_mode = GL_CTRL_SEG_VIDEOS;
112 gl_ui_reset_toolbar_item(ad, GL_CTRL_SEG_VIDEOS, false);
114 gl_dbg("Creating video list");
116 /* Set the grid view mode for creating nocontents view */
117 ad->gridinfo.grid_view_mode = GL_GRID_VIDEOS;
118 gl_set_view_mode(ad, GL_VIEW_VIDEOLIST);
120 if(ad->gridinfo.image_nocontents)
122 evas_object_del(ad->gridinfo.image_view);
123 ad->gridinfo.image_nocontents = NULL;
124 ad->gridinfo.image_view = NULL;
127 if (ad->listinfo.video_view == NULL) {
128 Evas_Object *list_view = gl_list_create_view(ad, ad->maininfo.navi_bar);
129 ad->listinfo.video_view = list_view;
131 /* just update the data */
132 gl_list_update_view(ad);
135 elm_object_part_content_unset(ad->gridinfo.layout, "elm.swallow.view");
136 evas_object_hide(ad->gridinfo.all_view);
137 evas_object_hide(ad->gridinfo.image_view);
139 evas_object_show(ad->listinfo.video_view);
140 elm_object_part_content_set(ad->gridinfo.layout,
141 "elm.swallow.view", ad->listinfo.video_view);
146 Evas_Object *_gl_ctrl_get_toolbar(Elm_Object_Item *nf_it)
148 GL_CHECK_NULL(nf_it);
150 Evas_Object *obj = NULL;
152 obj = elm_object_item_part_content_get(nf_it, GE_NAVIFRAME_CONTROLBAR);
156 gl_dbgE("Title object is NULL!");
161 Evas_Object *_gl_ctrl_create_toolbar(void *data, Evas_Object *parent)
163 GL_CHECK_NULL(parent);
165 Evas_Object *cbar = NULL;
166 cbar = elm_toolbar_add(parent);
168 elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND);
169 elm_toolbar_homogeneous_set(cbar, EINA_FALSE);
170 elm_object_style_set(cbar, GL_CTRL_STYLE_TOOLBAR);
174 /* create segment control in thumbnail view */
175 Evas_Object *_gl_ctrl_create_segment(void *data, Evas_Object *parent)
178 GL_CHECK_NULL(parent);
180 gl_appdata *ad = (gl_appdata *)data;
181 Elm_Object_Item *seg_item[GL_CTRL_SEG_CNT];
182 Evas_Object *segment = NULL;
185 * Stop creating segment bar when launched by appsvc with
186 * specified file-type ( image or video ) only.
188 if (ad->albuminfo.aul_launch_type == GL_AUL_T_VIEW_ALBUM &&
189 (ad->albuminfo.aul_file_type == GL_AUL_FILE_T_IMAGE ||
190 ad->albuminfo.aul_file_type == GL_AUL_FILE_T_VIDEO)) {
191 gl_dbgW("Segment bar not created when launched by appsvc.");
195 Evas_Object *layout = elm_layout_add(parent);
196 GL_CHECK_NULL(layout);
197 evas_object_size_hint_min_set(layout, GL_SEGMENT_WIDTH_MIN_INC, 0);
198 elm_layout_file_set(layout, GL_EDJ_FILE, GL_GRP_SEGMENT);
199 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
201 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
203 segment = elm_segment_control_add(layout);
204 GL_CHECK_NULL(segment);
205 elm_object_style_set(segment, GL_CTRL_SEG_STYLE);
206 seg_item[0] = elm_segment_control_item_add(segment, NULL,
207 GL_CTRL_SEG_ITEM_ALL);
208 seg_item[1] = elm_segment_control_item_add(segment, NULL,
209 GL_CTRL_SEG_ITEM_IMAGES);
210 seg_item[2] = elm_segment_control_item_add(segment, NULL,
211 GL_CTRL_SEG_ITEM_VIDEOS);
213 if (ad->albuminfo.seg_mode > GL_CTRL_SEG_VIDEOS) {
214 gl_dbgE("seg_mode > GL_CTRL_SEG_VIDEOS");
217 elm_segment_control_item_selected_set(seg_item[ad->albuminfo.seg_mode],
220 elm_object_part_content_set(layout, "segment", segment);
221 evas_object_show(layout);
223 evas_object_smart_callback_add(segment, "changed",
224 _gl_ctrl_segment_change_cb, ad);