2 * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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>
24 #include "AppCommon.h"
25 #include "ExtNameInfo.h"
28 #include <MediaContentDbListener.h>
29 #include <UsbConnectionListener.h>
31 #include "InputHandler.h"
36 #include "FbBaseView.h"
39 #include "SourceCtxPopup.h"
40 #include "SortCtxPopup.h"
43 #include <LayoutMgr.h>
44 #include <BaseLayout.h>
45 #include "FbAllLayout.h"
46 #include "FbPhotoLayout.h"
47 #include "FbVideoLayout.h"
48 #include "FbMusicLayout.h"
50 #define TOTAL_GROUP_BTNS 4
51 #define TOTAL_TOP_BTNS 2
52 #define TOTAL_UPDATE_CALLBACKS 2
53 #define PARAM_URI "uri"
54 #define PARAM_SOURCE "source"
60 const char *icon_path;
75 const char *source_arg[] = {
81 const char *linked_app[] = {
83 N_("org.tizen.gallery-tv-ref"),
84 N_("org.tizen.video-player-tv-ref"),
85 N_("org.tizen.music-player-tv-ref"),
89 const char* _get_layout_id(int curLayoutId){
95 return FB_PHOTO_LAYOUT;
97 return FB_VIDEO_LAYOUT;
99 return FB_MUSIC_LAYOUT;
101 return FB_ALL_LAYOUT; // default
107 Evas_Object *eoBtnGroup[TOTAL_GROUP_BTNS];
108 Evas_Object *eoSelectedBtnGroup;//Evas_Object *c_grpbtn;
109 Evas_Object *eoBtnSource;
110 Evas_Object *eoBtnSort;
112 CCtxPopup *pCtxPopup;
115 CLayoutMgr *pLayoutMgr;
118 CFbAllLayout *pFbAllLayout;
119 CFbPhotoLayout *pFbPhotoLayout;
120 CFbVideoLayout *pFbVideoLayout;
121 CFbMusicLayout *pFbMusicLayout;
126 memset(eoBtnGroup, 0, sizeof(eoBtnGroup));
127 pHandlerBase = new CHandlerBase(this);
128 for (a = 0; a < TOTAL_TOP_BTNS; a++)
129 pHandlerButton[a] = new CHandlerButton(this);
130 for (a = 0; a < TOTAL_GROUP_BTNS; a++){
131 pHandlerGroup[a] = new CHandlerGroup(this);
134 virtual ~SFbBaseView() {
138 for (a = 0; a < TOTAL_TOP_BTNS; a++)
139 delete pHandlerButton[a];
140 for (a = 0; a < TOTAL_GROUP_BTNS; a++)
141 delete pHandlerGroup[a];
144 class CHandlerBase : public CListenerMgr, public IKeyDownListener {
148 CHandlerBase(SFbBaseView *ins) : IKeyDownListener(this) { m = ins; }
150 virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
151 _DBG("m->curLayoutId = %d",m->curLayoutId);
152 if (!strcmp(ev->keyname, KEY_EXIT))
154 else if (!strcmp(ev->keyname, KEY_ENTER) || !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
155 if (elm_object_focus_get(m->eoSelectedBtnGroup)) {
156 switch(m->curLayoutId)
159 m->pFbAllLayout->SetFocus(EINA_TRUE);
162 m->pFbPhotoLayout->SetFocus(EINA_TRUE);
165 m->pFbVideoLayout->SetFocus(EINA_TRUE);
168 m->pFbMusicLayout->SetFocus(EINA_TRUE);
176 class CHandlerButton : public CListenerMgr, protected IKeyDownListener, IMouseMoveListener, IMouseClickedListener {
180 static void sm_CbCtxPopupSelected(void* cookie, CCtxPopup* instance, const char* text)
182 SFbBaseView* m = (SFbBaseView*)cookie;
186 _DBG(" instance->Type(): %d", instance->Type());
187 switch (instance->Type()) {
188 case CCtxPopup::TOPBTN_SORT:
189 elm_object_text_set(m->eoBtnSort, text);
190 switch(m->curLayoutId)
193 m->pFbAllLayout->SetUpdateFlag(true);
196 m->pFbPhotoLayout->SetUpdateFlag(true);
199 m->pFbVideoLayout->SetUpdateFlag(true);
202 m->pFbMusicLayout->SetUpdateFlag(true);
205 m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
208 case CCtxPopup::TOPBTN_SOURCE:
209 elm_object_text_set(m->eoBtnSource, text);
210 switch(m->curLayoutId)
213 m->pFbAllLayout->SetUpdateFlag(true);
216 m->pFbPhotoLayout->SetUpdateFlag(true);
219 m->pFbVideoLayout->SetUpdateFlag(true);
222 m->pFbMusicLayout->SetUpdateFlag(true);
225 m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
234 CHandlerButton(SFbBaseView *ins) : IKeyDownListener(this), IMouseMoveListener(this), IMouseClickedListener(this) { m = ins; }
236 virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
238 if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE))
239 elm_object_focus_set(m->eoSelectedBtnGroup, EINA_TRUE);
241 virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
243 if (!elm_object_focus_get(obj))
244 elm_object_focus_set(obj, EINA_TRUE);
246 virtual void OnMouseClicked(int id, Evas_Object *obj) {
248 CSourceCtxPopup::SCallback cb;
250 cb.onSelected = sm_CbCtxPopupSelected;
252 if (obj == m->eoBtnSource) {
253 CSourceCtxPopup* pCtxPopup = new CSourceCtxPopup;
254 m->pCtxPopup = pCtxPopup;
255 pCtxPopup->Create(m->eoBase, &cb);
257 else if (obj == m->eoBtnSort) {
258 CSortCtxPopup* pCtxPopup = new CSortCtxPopup;
259 m->pCtxPopup = pCtxPopup;
260 pCtxPopup->Create(m->eoBase, &cb);
263 } *pHandlerButton[TOTAL_TOP_BTNS];
265 class CHandlerGroup : public CListenerMgr, IMouseMoveListener, IKeyDownListener, IMouseClickedListener {
269 CHandlerGroup(SFbBaseView *ins) :
270 IMouseMoveListener(this),
271 IKeyDownListener(this),
272 IMouseClickedListener(this) { m = ins; }
274 virtual void OnMouseMove(int id, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Move *ev) {
276 if (!elm_object_focus_get(obj))
277 elm_object_focus_set(obj, EINA_TRUE);
279 virtual void OnKeyDown(int id, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev) {
281 if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_BACK_REMOTE))
284 virtual void OnMouseClicked(int id, Evas_Object *obj) {
285 if (m->eoSelectedBtnGroup == obj)
288 elm_object_signal_emit(m->eoSelectedBtnGroup, FBR_SIGNAL_GROUP_UNSELECTED, "");
289 m->eoSelectedBtnGroup = obj;
290 elm_object_signal_emit(m->eoSelectedBtnGroup, FBR_SIGNAL_GROUP_SELECTED, "");
295 m->curLayoutId = ALL_LAYOUT;
298 m->curLayoutId = PHOTO_LAYOUT;
301 m->curLayoutId = VIDEO_LAYOUT;
304 m->curLayoutId = MUSIC_LAYOUT;
307 _ERR("Fix it: it can not make it , MouseClicked");
308 m->curLayoutId = ALL_LAYOUT; // default
311 _DBG("id = %d, m->curLayoutId = %d", id, m->curLayoutId);
312 m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
314 } *pHandlerGroup[TOTAL_GROUP_BTNS];
318 Evas_Object *_add_button(Evas_Object *box)
325 button = elm_button_add(box);
329 evas_object_size_hint_weight_set(button,
330 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
331 evas_object_show(button);
336 void CFbBaseView::UpdateEmptyFocusSequence(void)
341 for (i = 0; i < TOTAL_GROUP_BTNS; i++)
342 elm_object_focus_next_object_set(m->eoBtnGroup[i], m->eoBtnSort, ELM_FOCUS_RIGHT);
344 elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_ALL], m->eoBtnSort, ELM_FOCUS_UP);
345 elm_object_focus_next_object_set(m->eoBtnSort, m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_DOWN);
346 elm_object_focus_next_object_set(m->eoBtnSource, m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_DOWN);
348 if (t_SelectedGroupButton() == m->eoBtnGroup[E_GRP_ALL]) {
349 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, _(NO_FILE_MESSAGE));
350 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, _(NO_FILE_MESSAGE_SUB));
352 else if (t_SelectedGroupButton() == m->eoBtnGroup[E_GRP_PHOTO]) {
353 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, _(NO_PHOTO_MESSAGE));
354 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, _(NO_PHOTO_MESSAGE_SUB));
356 else if (t_SelectedGroupButton() == m->eoBtnGroup[E_GRP_VIDEO]) {
357 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, _(NO_VIDEO_MESSAGE));
358 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, _(NO_VIDEO_MESSAGE_SUB));
360 else if (t_SelectedGroupButton() == m->eoBtnGroup[E_GRP_MUSIC]) {
361 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, _(NO_MUSIC_MESSAGE));
362 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, _(NO_MUSIC_MESSAGE_SUB));
366 void CFbBaseView::UnsetFocus(void)
368 elm_object_focus_set(t_SelectedGroupButton(), EINA_TRUE);
371 void CFbBaseView::CbLinkApp(int type, int source_type, char *path)
376 args = bundle_create();
378 _ERR("unable to create bundle");
382 bundle_add(args, PARAM_SOURCE, source_arg[source_type]);
383 bundle_add(args, PARAM_URI, path);
385 r = aul_launch_app(linked_app[type], args);
389 _ERR(" Unable to launch linked app");
396 void CFbBaseView::UpdatedGrid(void)
398 #if 0 // It will be removed at soon.
401 for (i = 0; i < TOTAL_GROUP_BTNS; i++)
402 elm_object_focus_next_object_set(m->eoBtnGroup[i],
403 m->pFbAllLayout->Grid(), ELM_FOCUS_RIGHT);
405 elm_object_focus_next_object_set(m->eoBtnGroup[E_GRP_ALL],
406 m->eoBtnSort, ELM_FOCUS_UP);
407 elm_object_focus_next_object_set(m->eoBtnSort,
408 m->eoBtnGroup[E_GRP_ALL], ELM_FOCUS_LEFT);
409 elm_object_focus_next_object_set(m->eoBtnSort,
410 m->pFbAllLayout->Grid(), ELM_FOCUS_DOWN);
411 elm_object_focus_next_object_set(m->eoBtnSource,
412 m->pFbAllLayout->Grid(), ELM_FOCUS_DOWN);
415 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT, "");
416 elm_object_part_text_set(m->eoBase, FBR_PART_NO_CONTENT_SUB, "");
419 void CFbBaseView::t_CreateTopSession(void)
424 struct _btn_info btninfo[TOTAL_TOP_BTNS];
425 btninfo[TOPBTN_SOURCE].style = FBR_STYLE_SOURCE_BTN;
426 btninfo[TOPBTN_SOURCE].part = FBR_PART_SOURCE_HOVERSEL;
428 btninfo[TOPBTN_SORT].style = FBR_STYLE_SORT_BTN;
429 btninfo[TOPBTN_SORT].part = FBR_PART_SORT_HOVERSEL;
431 elm_object_part_text_set(m->eoBase, FBR_PART_TITLE,
434 for (i = 0; i < TOTAL_TOP_BTNS; i++) {
435 btn = _add_button(m->eoBase);
437 _ERR(" Adding btn failed ");
441 elm_object_style_set(btn, btninfo[i].style);
442 elm_object_part_content_set(m->eoBase, btninfo[i].part, btn);
444 m->pHandlerButton[i]->Connect(btn);
446 if (i == TOPBTN_SOURCE)
447 m->eoBtnSource = btn;
448 else if (i == TOPBTN_SORT)
452 elm_object_text_set(m->eoBtnSource, _(CSourceCtxPopup::SourceText(CInfo::SourceType())));
453 elm_object_text_set(m->eoBtnSort, _(CSortCtxPopup::SortText(CInfo::SortType())));
456 void CFbBaseView::t_CreateLeftSession(void)
459 Evas_Object *box, *ic;
461 char buf[MAX_LENGTH];
462 static struct _btn_info btninfo[TOTAL_GROUP_BTNS];
463 btninfo[E_GRP_ALL].txt = N_("ALL");
464 btninfo[E_GRP_ALL].icon_path = FBR_IMAGE_GRPBTN_ALL;
465 btninfo[E_GRP_PHOTO].txt = N_("PHOTO");
466 btninfo[E_GRP_PHOTO].icon_path = FBR_IMAGE_GRPBTN_PHOTO;
467 btninfo[E_GRP_VIDEO].txt = N_("VIDEO");
468 btninfo[E_GRP_VIDEO].icon_path = FBR_IMAGE_GRPBTN_VIDEO;
469 btninfo[E_GRP_MUSIC].txt = N_("MUSIC");
470 btninfo[E_GRP_MUSIC].icon_path = FBR_IMAGE_GRPBTN_MUSIC;
472 box = elm_box_add(m->eoBase);
475 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
476 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
477 evas_object_show(box);
479 for (i = 0; i < TOTAL_GROUP_BTNS; i++) {
480 m->eoBtnGroup[i] = _add_button(box);
481 if (!m->eoBtnGroup[i]) {
482 _ERR(" failed to add button to box ");
486 elm_box_pack_end(box, m->eoBtnGroup[i]);
487 elm_object_style_set(m->eoBtnGroup[i], FBR_STYLE_GROUPBTN);
488 elm_object_text_set(m->eoBtnGroup[i], _(btninfo[i].txt));
490 m->pHandlerGroup[i]->Connect(m->eoBtnGroup[i], i);
492 ic = elm_image_add(m->eoBtnGroup[i]);
497 snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR,
498 btninfo[i].icon_path);
499 elm_image_file_set(ic, buf, NULL);
500 elm_object_part_content_set(m->eoBtnGroup[i],
501 FBR_PART_ELM_SWALLOWICON, ic);
505 t_SetSelectedGroupButton(m->eoBtnGroup[E_GRP_ALL]);
508 elm_object_signal_emit(m->eoBtnGroup[E_GRP_ALL],
509 FBR_SIGNAL_GROUP_SELECTED, "");
510 elm_object_focus_set(m->eoBtnGroup[E_GRP_ALL], EINA_TRUE);
511 elm_object_part_content_set(m->eoBase, FBR_PART_GROUPBTN_BOX, box);
514 void CFbBaseView::t_CreateFullView(void)
517 t_CreateTopSession();
518 t_CreateLeftSession();
519 m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
522 void CFbBaseView::t_SetSelectedGroupButton(Evas_Object* obj)
524 m->eoSelectedBtnGroup = obj;
528 for (a = 0; a < TOTAL_GROUP_BTNS; a++) {
529 if (m->eoBtnGroup[a] == obj)
532 CInfo::SetGroupIndex(idx);
535 Evas_Object* CFbBaseView::t_SelectedGroupButton(void)
537 return m->eoSelectedBtnGroup;
540 void CFbBaseView::t_OnShow(void)
544 evas_object_show(m->eoBase);
546 CBaseView::t_OnShow();
549 void CFbBaseView::t_OnUpdate(void *data)
551 switch(m->curLayoutId)
554 m->pFbAllLayout->Action();
557 m->pFbPhotoLayout->Action();
560 m->pFbVideoLayout->Action();
563 m->pFbMusicLayout->Action();
568 void CFbBaseView::t_OnHide(void)
570 evas_object_hide(m->eoBase);
572 CBaseView::t_OnHide();
575 bool CFbBaseView::Create(void *data)
579 Evas_Object *eoWin = CViewMgr::GetInstance()->Window();
580 Evas_Object *eoBase = NULL;
582 int source_type = E_ALL;
585 _CHECK(m = new SFbBaseView)
586 _CHECK(eoBase = elm_layout_add(eoWin))
587 _CHECK(elm_layout_file_set(eoBase, EDJEFILE, FBR_BASE_VIEW))
589 evas_object_size_hint_weight_set(eoBase, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
590 elm_win_resize_object_add(eoWin, eoBase);
592 /* get the source_type using 'data' string */
596 int arrsize = ARRAY_SIZE(source_arg);
597 for (i = 0; i < arrsize; i++) {
598 if (source_arg[i] && !strcmp(source_arg[i], (const char*)data)) {
603 if (source_type < E_ALL || source_type > E_USB)
605 CInfo::SetSourceType(source_type);
610 _CHECK(m->pLayoutMgr = new CLayoutMgr)
611 _CHECK(m->pLayoutMgr->Create(eoBase, NULL))
612 _CHECK(m->pFbAllLayout = new CFbAllLayout(FB_ALL_LAYOUT))
613 _CHECK(m->pFbPhotoLayout = new CFbPhotoLayout(FB_PHOTO_LAYOUT))
614 _CHECK(m->pFbVideoLayout = new CFbVideoLayout(FB_VIDEO_LAYOUT))
615 _CHECK(m->pFbMusicLayout = new CFbMusicLayout(FB_MUSIC_LAYOUT))
616 _CHECK(m->pFbAllLayout->Create(m->pLayoutMgr, NULL))
617 _CHECK(m->pFbPhotoLayout->Create(m->pLayoutMgr, NULL))
618 _CHECK(m->pFbVideoLayout->Create(m->pLayoutMgr, NULL))
619 _CHECK(m->pFbMusicLayout->Create(m->pLayoutMgr, NULL))
620 _CHECK(m->pLayoutMgr->AddLayout(m->pFbAllLayout))
621 _CHECK(m->pLayoutMgr->AddLayout(m->pFbPhotoLayout))
622 _CHECK(m->pLayoutMgr->AddLayout(m->pFbVideoLayout))
623 _CHECK(m->pLayoutMgr->AddLayout(m->pFbMusicLayout))
624 _CHECK(CUsbConnectionListener::Create())
625 _CHECK(CMediaContentDbUpdateListener::Create())
629 _CHECK_FAIL{ CMediaContentDbUpdateListener::Destroy(); }
630 _CHECK_FAIL{ CUsbConnectionListener::Destroy(); }
631 _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout); }
632 _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbVideoLayout); }
633 _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbPhotoLayout); }
634 _CHECK_FAIL{ m->pLayoutMgr->RemoveLayout(m->pFbAllLayout); }
635 _CHECK_FAIL{ m->pFbMusicLayout->Destroy(); }
636 _CHECK_FAIL{ m->pFbVideoLayout->Destroy(); }
637 _CHECK_FAIL{ m->pFbPhotoLayout->Destroy(); }
638 _CHECK_FAIL{ m->pFbAllLayout->Destroy(); }
639 _CHECK_FAIL{ delete m->pFbMusicLayout; m->pFbMusicLayout = NULL; }
640 _CHECK_FAIL{ delete m->pFbVideoLayout; m->pFbVideoLayout = NULL; }
641 _CHECK_FAIL{ delete m->pFbPhotoLayout; m->pFbPhotoLayout = NULL; }
642 _CHECK_FAIL{ delete m->pFbAllLayout; m->pFbAllLayout = NULL; }
643 _CHECK_FAIL{ m->pLayoutMgr->Destroy(); }
644 _CHECK_FAIL{ delete m->pLayoutMgr; m->pLayoutMgr = NULL; }
645 _CHECK_FAIL{ /* elm_layout_file_set*/ }
646 _CHECK_FAIL{ evas_object_del(eoBase); }
647 _CHECK_FAIL{ delete m; m = NULL; }
648 } _CREATE_END_AND_CATCH{ return false; }
651 // original create grid
652 CInfo::SetSortType(0/*CSort::SORT_NAME_AZ*/);
653 evas_object_data_set(eoBase, BASE_VIEW_DATA, this);
654 m->curLayoutId = ALL_LAYOUT;
655 _DBG("curLayoutId = %s", _get_layout_id(m->curLayoutId));
657 elm_object_focus_allow_set(eoBase, EINA_FALSE);
658 m->pHandlerBase->Connect(eoBase);
659 CBaseView::Create(NULL);
663 void CFbBaseView::Destroy(void)
667 CBaseView::Destroy();
668 CMediaContentDbUpdateListener::Destroy();
669 CUsbConnectionListener::Destroy();
671 m->pLayoutMgr->RemoveLayout(m->pFbMusicLayout);
672 m->pFbMusicLayout->Destroy();
673 delete m->pFbMusicLayout;
675 m->pLayoutMgr->RemoveLayout(m->pFbVideoLayout);
676 m->pFbVideoLayout->Destroy();
677 delete m->pFbVideoLayout;
679 m->pLayoutMgr->RemoveLayout(m->pFbPhotoLayout);
680 m->pFbPhotoLayout->Destroy();
681 delete m->pFbPhotoLayout;
683 m->pLayoutMgr->RemoveLayout(m->pFbAllLayout);
684 m->pFbAllLayout->Destroy();
685 delete m->pFbAllLayout;
687 m->pLayoutMgr->Destroy();
688 delete m->pLayoutMgr;
690 evas_object_del(m->eoBase);
697 Evas_Object* CFbBaseView::Base(void)
705 void CFbBaseView::OnConnect(void)
707 m->pPopup = new CPopup;
710 if (!m->pPopup->Create(m->eoBase)) {
716 if (CInfo::SourceType() == E_USB) {
717 if (!FlagConnected()) {
718 CInfo::SetSourceType(E_ALL);
719 elm_object_text_set(m->eoBtnSource,
720 _(CSourceCtxPopup::SourceText(CInfo::SourceType())));
726 void CFbBaseView::OnUpdated(const SEntity *entity)
729 m->pPopup->Destroy();
734 m->pCtxPopup->Destroy();
738 if (CInfo::SourceType() != E_TV) {
739 m->pLayoutMgr->Show(_get_layout_id(m->curLayoutId));
740 elm_object_focus_set(t_SelectedGroupButton(), EINA_TRUE);