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://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <Elementary.h>
18 #include <ui-gadget.h>
20 #include <dpl/wrt-dao-rw/global_dao.h>
21 #include <dpl/assert.h>
23 #include "whiteuriview.h"
26 namespace WebAppCommonSetting {
28 void WhiteUriView::onBackBtnClicked(void *data,
32 WhiteUriView *whiteUriView;
34 whiteUriView = static_cast<WhiteUriView *>(data);
36 whiteUriView->popFromNaviFrame();
39 void WhiteUriView::onSaveBtnClicked(void *data,
43 WhiteUriView *whiteUriView;
45 whiteUriView = static_cast<WhiteUriView *>(data);
50 void WhiteUriView::onUriErase(void *data,
52 const char */*emission*/,
53 const char */*source*/)
57 entry = static_cast<Evas_Object *>(data);
59 elm_entry_entry_set(entry, "");
62 void WhiteUriView::onUriFocused(void *data,
69 ef = static_cast<Evas_Object *>(data);
72 if (!elm_entry_is_empty(obj))
73 elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
74 elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
77 void WhiteUriView::onUriUnfocused(void *data,
84 ef = static_cast<Evas_Object *>(data);
87 if (elm_entry_is_empty(obj))
88 elm_object_signal_emit(ef, "elm,state,guidetext,show", "elm");
89 elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
92 void WhiteUriView::onUriChanged(void *data,
96 WhiteUriView *whiteUriView;
99 if (!elm_object_focus_get(obj))
101 ef = static_cast<Evas_Object *>(evas_object_data_get(obj, "editfield"));
104 if (elm_entry_is_empty(obj))
105 elm_object_signal_emit(ef, "elm,state,eraser,hide", "elm");
107 elm_object_signal_emit(ef, "elm,state,eraser,show", "elm");
109 whiteUriView = static_cast<WhiteUriView *>(data);
110 Assert(whiteUriView);
111 whiteUriView->updateUri(elm_entry_entry_get(obj));
114 void WhiteUriView::onSubDomainReleased(void */*data*/,
117 void */*event_info*/)
120 elm_object_signal_emit(obj, "elm,state,unselected", "elm");
123 void WhiteUriView::onSubDomainClicked(void *data,
126 void */*event_info*/)
130 chk = static_cast<Evas_Object *>(data);
132 elm_check_state_set(chk, !elm_check_state_get(chk));
133 elm_object_signal_emit(obj, "elm,state,selected", "elm");
136 bool WhiteUriView::pushToNaviFrame(void)
139 Evas_Object *toolBar;
144 btn = elm_button_add(m_naviFrame);
148 toolBar = addToolBar(m_naviFrame);
150 evas_object_del(btn);
153 elm_object_style_set(btn, "naviframe/end_btn/default");
154 evas_object_smart_callback_add(btn, "clicked", onBackBtnClicked, this);
155 it = elm_naviframe_item_push(m_naviFrame,
156 m_isModify ? "Modify white URI" : "New white URI",
162 evas_object_del(btn);
163 evas_object_del(toolBar);
167 elm_object_item_part_content_set(it, "controlbar", toolBar);
173 void WhiteUriView::popFromNaviFrame(void)
176 elm_naviframe_item_pop(m_naviFrame);
179 bool WhiteUriView::addUriField(Evas_Object *bx)
188 ly = elm_layout_add(bx);
191 elm_layout_theme_set(ly, "layout", "dialogue", "1icon");
192 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
193 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
195 ef = elm_layout_add(ly);
200 elm_layout_theme_set(ef, "layout", "editfield", "title");
202 entry = elm_entry_add(ef);
207 evas_object_data_set(entry, "editfield", static_cast<void *>(ef));
208 elm_entry_single_line_set(entry, EINA_TRUE);
209 elm_object_part_content_set(ef, "elm.swallow.content", entry);
211 elm_object_signal_callback_add(ef,
212 "elm,eraser,clicked",
215 static_cast<void *>(entry));
216 evas_object_smart_callback_add(entry,
219 static_cast<void *>(ef));
220 evas_object_smart_callback_add(entry,
223 static_cast<void *>(ef));
224 evas_object_smart_callback_add(entry, "changed", onUriChanged, this);
226 elm_object_part_text_set(ef, "elm.text", "URI");
230 elm_entry_entry_set(entry, str);
231 elm_object_signal_emit(ef, "elm,state,guidetext,hide", "elm");
235 elm_object_part_text_set(ef, "elm.guidetext", "Put white URI");
236 elm_object_part_content_set(ly, "elm.icon", ef);
237 elm_box_pack_end(bx, ly);
238 evas_object_show(ly);
243 bool WhiteUriView::addSubDomainField(Evas_Object *bx)
249 ly = elm_layout_add(bx);
252 elm_object_focus_allow_set(ly, EINA_TRUE);
254 chk = elm_check_add(ly);
259 elm_check_state_pointer_set(chk, &m_supportSubDomain);
260 evas_object_propagate_events_set(chk, EINA_FALSE);
261 elm_layout_theme_set(ly, "layout", "dialogue", "1text.1icon");
262 elm_object_part_text_set(ly, "elm.text", "Include sub-domains");
263 elm_object_part_content_set(ly, "elm.icon", chk);
264 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, 0.0);
265 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, 0.0);
266 evas_object_event_callback_add(ly,
267 EVAS_CALLBACK_MOUSE_UP,
270 evas_object_event_callback_add(ly,
271 EVAS_CALLBACK_MOUSE_DOWN,
273 static_cast<void *>(chk));
274 elm_box_pack_end(bx, ly);
275 evas_object_show(ly);
280 Evas_Object *WhiteUriView::addToolBar(Evas_Object *parent)
282 Evas_Object *toolBar;
284 toolBar = elm_toolbar_add(parent);
287 elm_object_style_set(toolBar, "naviframe");
288 elm_toolbar_shrink_mode_set(toolBar, ELM_TOOLBAR_SHRINK_EXPAND);
289 m_saveBtn = elm_toolbar_item_append(toolBar,
296 elm_object_item_disabled_set(m_saveBtn, EINA_TRUE);
301 bool WhiteUriView::loadView(void)
304 Evas_Object *conform;
311 win = static_cast<Evas_Object *>(ug_get_window());
314 elm_win_conformant_set(win, EINA_TRUE);
315 conform = elm_conformant_add(m_naviFrame);
318 elm_object_style_set(conform, "internal_layout");
320 scr = elm_scroller_add(conform);
324 bx = elm_box_add(scr);
326 evas_object_del(conform);
330 evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
331 evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.0);
332 elm_object_content_set(scr, bx);
333 evas_object_show(bx);
334 evas_object_show(scr);
335 if (!addUriField(bx) || !addSubDomainField(bx)) {
336 evas_object_del(conform);
340 elm_object_content_set(conform, scr);
347 void WhiteUriView::save(void)
349 /* FIXME: what if uri is already exist?
350 there is no error code */
351 WrtDB::GlobalDAO::AddWhiteURI(m_uri, m_supportSubDomain);
352 elm_naviframe_item_pop(m_naviFrame);
355 void WhiteUriView::updateUri(const char *uri)
358 if (uri && strlen(uri)) {
360 elm_object_item_disabled_set(m_saveBtn, EINA_FALSE);
362 elm_object_item_disabled_set(m_saveBtn, EINA_TRUE);
366 WhiteUriView::WhiteUriView(Evas_Object *naviFrame) :
367 m_naviFrame(naviFrame),
370 m_supportSubDomain(false)
374 WhiteUriView::WhiteUriView(Evas_Object *naviFrame,
376 m_naviFrame(naviFrame),
380 m_supportSubDomain(false)
384 WhiteUriView::~WhiteUriView(void)
388 } /* WebAppCommonSetting */