2 * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
17 #include "CicoHSAppHistory.h"
18 #include "CicoHSAppHistoryExt.h"
19 #include "CicoHomeScreen.h"
20 #include "CicoHSSystemState.h"
21 #include "CicoHSLifeCycleController.h"
23 #include "CicoHSCmdOpts.h"
24 #include "Cico_aul_listen_app.h"
25 #include "CicoLibString.h"
26 #include "CicoHSServer.h"
27 #include "CicoHSAppControl.h"
28 #include "CicoSound.h"
31 /*============================================================================*/
33 /*============================================================================*/
34 CicoHomeScreen * CicoHomeScreen::hs_instance;
36 /*============================================================================*/
38 /*============================================================================*/
41 * ecore timer void data typedef
43 typedef struct t_launcApps_data {
49 /*--------------------------------------------------------------------------*/
51 * @brief CicoHomeScreen::CicoHomeScreen
57 /*--------------------------------------------------------------------------*/
58 CicoHomeScreen::CicoHomeScreen(void)
61 for(int ii = 0;ii < ICO_HS_MAX_APP_NUM;ii++){
64 active_appinfo = NULL;
78 num_swipe_input_windows = 0;
82 ctl_bar_window = NULL;
84 //mode = ICO_HS_MODE_MENU;
85 mode = ICO_HS_MODE_APPLICATION;
91 life_cycle_controller = CicoHSLifeCycleController::getInstance();
93 sub_display_appinfo = NULL;
96 /*--------------------------------------------------------------------------*/
98 * @brief CicoHomeScreen::~CicoHomeScreen
104 /*--------------------------------------------------------------------------*/
105 CicoHomeScreen::~CicoHomeScreen(void)
107 /* Do not somthing to do */
108 if (NULL != m_appHis) {
113 //--------------------------------------------------------------------------
115 * @brief get this class instance
117 //--------------------------------------------------------------------------
119 CicoHomeScreen::getInstance(void)
124 /*--------------------------------------------------------------------------*/
126 * @brief CicoHomeScreen::ShowHomeScreenLayer
127 * Show Home screen layer
132 /*--------------------------------------------------------------------------*/
134 CicoHomeScreen::ShowHomeScreenLayer(void)
136 /*show home screen layers*/
137 ico_syc_show_layer(HS_LAYER_APPLICATION);
138 ico_syc_show_layer(HS_LAYER_HOMESCREEN);
139 ico_syc_show_layer(HS_LAYER_CONTROLBAR);
140 ico_syc_show_layer(HS_LAYER_TOUCHPANEL);
143 /*--------------------------------------------------------------------------*/
145 * @brief CicoHomeScreen::GetHsPackageName
146 * get HomeScreen package name
149 * @return package name
151 /*--------------------------------------------------------------------------*/
153 CicoHomeScreen::GetHsPackageName(void)
155 return hs_package_name;
158 /*--------------------------------------------------------------------------*/
160 * @brief CicoHomeScreen::GetHsPackageName
161 * get StatusBar package name
164 * @return package name
166 /*--------------------------------------------------------------------------*/
168 CicoHomeScreen::GetSbPackageName(void)
170 return sb_package_name;
173 /*--------------------------------------------------------------------------*/
175 * @brief CicoHomeScreen::GetHsPackageName
176 * get OnScreen package name
179 * @return package name
181 /*--------------------------------------------------------------------------*/
183 CicoHomeScreen::GetOsPackageName(void)
185 return os_package_name;
188 /*--------------------------------------------------------------------------*/
190 * @brief CicoHomeScreen::CreateAppInfoList
191 * create application info list
196 /*--------------------------------------------------------------------------*/
198 CicoHomeScreen::CreateAppInfoList(void)
200 /* get APP information*/
201 std::vector<CicoAilItems> aillist = life_cycle_controller->getAilList();
203 for (int ii = 0; ii < ICO_HS_MAX_APP_NUM; ii++) {
204 if (apps_info[ii] != NULL) {
205 delete apps_info[ii];
211 for (unsigned int ii = 0;
212 (ii < aillist.size()) && (ii < ICO_HS_MAX_APP_NUM);
214 apps_info[ii] = new CicoHSAppInfo(aillist[ii].m_appid.c_str());
219 /*--------------------------------------------------------------------------*/
221 * @brief CicoHomeScreen::GetAppInfo
222 * get application info
224 * @param[in] appid application id
225 * @return Application info
227 /*--------------------------------------------------------------------------*/
229 CicoHomeScreen::GetAppInfo(const char *appid)
235 for (int ii = 0;ii < hs_instance->application_num;ii++) {
236 if (strcmp(hs_instance->apps_info[ii]->GetAppId(),appid) == 0) {
237 return hs_instance->apps_info[ii];
243 /*--------------------------------------------------------------------------*/
245 * @brief CicoHomeScreen::GetAppStatus
246 * get application status
248 * @param[in] appid application id
249 * @return Application info
251 /*--------------------------------------------------------------------------*/
253 CicoHomeScreen::GetAppStatus(const char *appid)
255 for (int ii = 0;ii < hs_instance->application_num;ii++) {
256 if (strcmp(hs_instance->apps_info[ii]->GetAppId(),appid) == 0) {
257 return hs_instance->apps_info[ii]->GetStatus();
263 /*--------------------------------------------------------------------------*/
265 * @brief change active window
267 /*--------------------------------------------------------------------------*/
269 CicoHomeScreen::ChangeActive(const char * appid, int surface)
271 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(appid);
272 if (appinfo == NULL) {
276 ico_hs_window_info* wininfo = appinfo->GetWindowInfobySurface(surface);
277 if (wininfo == NULL) {
281 appinfo->SetLastSurface(surface);
283 // if window invisible, not update active information
284 if (0 != wininfo->visible) {
285 hs_instance->SetActiveAppInfo(appid);
286 hs_instance->setActiveApp(appid);
287 ICO_TRA("CicoHomeScreen::ChangeActive set show");
288 ico_syc_show(appid, surface, NULL);
289 ico_syc_change_active(appid, surface);
293 /*--------------------------------------------------------------------------*/
295 * @brief change application display zone for active window
297 /*--------------------------------------------------------------------------*/
299 CicoHomeScreen::ChangeZone(void)
301 ICO_TRA("CicoHomeScreen::ChangeZone Enter");
303 hs_instance->controlRegulation();
305 CicoHSAppInfo* appinfo = hs_instance->GetSubDisplayAppInfo();
306 // if sub display not exist showed appliction,
307 // get main display showed application informaiton
308 if (NULL == appinfo) {
309 appinfo = hs_instance->GetActiveAppInfo();
310 if (NULL == appinfo) {
311 ICO_TRA("CicoHomeScreen::ChangeZone Leave(not found appinfo)");
315 hs_instance->requestChangeZone(appinfo);
316 ICO_TRA("CicoHomeScreen::ChangeZone Leave");
319 /*--------------------------------------------------------------------------*/
321 * @brief change application display zone for appinfo
323 /*--------------------------------------------------------------------------*/
325 CicoHomeScreen::requestChangeZone(CicoHSAppInfo* appinfo)
327 int surface = appinfo->GetLastSurface();
328 ICO_TRA("Enter appid=%s, lastsurface=%x", appinfo->GetAppId(), surface);
329 ico_hs_window_info* wininfo = appinfo->GetWindowInfobySurface(surface);
330 if (NULL == wininfo) {
331 ICO_TRA("Leave(not found wininfo)");
334 ICO_DBG("wininfo=%p", wininfo);
336 const char *dispzone = moveZoneName;
337 int layer = HS_LAYER_2NDDISP_APP;
338 if (NULL != GetSubDisplayAppInfo()) {
339 dispzone = appinfo->GetDefaultZone();
340 layer = HS_LAYER_APPLICATION;
343 if (NULL == dispzone) {
344 ICO_TRA("Leave(not found dispzone)");
348 ICO_DBG("change zone: \"%s\"->\"%s\"", wininfo->zone, dispzone);
349 ico_syc_win_move_t move = {
350 .zone = (char*)dispzone,
358 ico_syc_move(wininfo->appid, wininfo->surface, &move,
359 &hs_instance->moveZoneAnimation);
364 /*--------------------------------------------------------------------------*/
366 * @brief CicoHomeScreen::GetWindowInfo
369 * @param[in] appinfo application info
370 * @param[in] window window name
371 * @return Window info
373 /*--------------------------------------------------------------------------*/
375 CicoHomeScreen::GetWindowInfo(CicoHSAppInfo *appinfo,const char *window)
377 return appinfo->GetWindowInfo(window);
380 /*--------------------------------------------------------------------------*/
382 * @brief CicoHomeScreen::GetWindowInfo
385 * @param[in] appinfo application info
386 * @param[in] surface surface id
387 * @return Window info
389 /*--------------------------------------------------------------------------*/
391 CicoHomeScreen::GetWindowInfo(CicoHSAppInfo *appinfo, int surface)
393 return appinfo->GetWindowInfobySurface(surface);
396 /*--------------------------------------------------------------------------*/
398 * @brief CicoHomeScreen::UpdateTile
401 * @param[in] appid application id
402 * @return Window info
404 /*--------------------------------------------------------------------------*/
406 CicoHomeScreen::UpdateTile(const char *appid)
408 CicoHSAppInfo *appinfo = GetAppInfo(appid);
409 if (appinfo == NULL) {
412 if (appinfo->GetStatus() == false) {
414 ICO_DBG("CicoHomeScreen::UpdateTile: show menuIcon(%s)", appid);
415 menu_window->ValidMenuIcon(appid);
419 ICO_DBG("CicoHomeScreen::UpdateTile: show app thumbnail(%s)", appid);
420 menu_window->ValidThumbnail(appid, appinfo->GetLastSurface());
424 /*--------------------------------------------------------------------------*/
426 * @brief set current active application information
428 * @param [in] appid application id
430 /*--------------------------------------------------------------------------*/
432 CicoHomeScreen::SetActiveAppInfo(const char *appid)
434 CicoHSAppInfo* appinfo = NULL;
436 appinfo = GetAppInfo(appid);
438 // if active window is HomeScreen/StatusBar/OnScreen,
439 // not update active application information
440 ICO_DBG("appinfo=%08x hs_app_info=%08x sb_app_info=%08x os_app_info=%08x",
441 appinfo, hs_app_info, sb_app_info, os_app_info);
442 if ((appinfo == hs_app_info) ||
443 (appinfo == sb_app_info) ||
444 (appinfo == os_app_info)) {
448 ICO_DBG("active application changed. \"%s\"->\"%s\"",
449 active_appinfo ? active_appinfo->GetAppId() : "unknown",
450 appinfo ? appinfo->GetAppId() : "unknown");
452 active_appinfo = appinfo;
455 /*--------------------------------------------------------------------------*/
457 * @brief update current active application information
459 * @param [in] appid application id
461 /*--------------------------------------------------------------------------*/
463 CicoHomeScreen::GetActiveAppInfo(void)
465 return active_appinfo;
468 /*--------------------------------------------------------------------------*/
470 * @brief set current sub display application information
472 * @param [in] appid application id
474 /*--------------------------------------------------------------------------*/
476 CicoHomeScreen::SetSubDisplayAppInfo(const char *appid)
479 if (NULL == sub_display_appinfo) {
480 ICO_WRN("already not use");
483 ICO_DBG("sub display appinfo changed. \"%s\"->\"none\"",
484 sub_display_appinfo->GetAppId());
485 sub_display_appinfo = NULL;
489 // if sub_display_appinfo is not NULL,
490 // not update sub display application information
491 if (NULL != sub_display_appinfo) {
492 ICO_WRN("sub display use. appid=%s",
493 sub_display_appinfo->GetAppId());
497 CicoHSAppInfo* appinfo = GetAppInfo(appid);
499 // if sub display appinfo is HomeScreen/StatusBar/OnScreen,
500 // not update sub display application information
501 ICO_DBG("appinfo=%08x hs_app_info=%08x sb_app_info=%08x os_app_info=%08x",
502 appinfo, hs_app_info, sb_app_info, os_app_info);
503 if ((appinfo == hs_app_info) ||
504 (appinfo == sb_app_info) ||
505 (appinfo == os_app_info)) {
509 if (NULL != appinfo) {
510 ICO_DBG("sub display appinfo changed. \"none\"->\"%s\"",
511 appinfo->GetAppId());
512 sub_display_appinfo = appinfo;
516 /*--------------------------------------------------------------------------*/
518 * @brief update current sub display application information
521 /*--------------------------------------------------------------------------*/
523 CicoHomeScreen::GetSubDisplayAppInfo(void)
525 return sub_display_appinfo;
528 /*--------------------------------------------------------------------------*/
530 * @brief update current sub display application appid
532 * @return appid application id
533 * @retval NULL : sub display application nothing
534 * @retval not NULL : appid
536 /*--------------------------------------------------------------------------*/
538 CicoHomeScreen::GetSubDisplayAppid(void)
540 if (NULL == sub_display_appinfo) {
543 const char* pR = sub_display_appinfo->GetAppId();
544 if ((NULL == pR) || (0 == pR) || (0 == strlen(pR))) {
549 /*--------------------------------------------------------------------------*/
551 * @brief CicoHomeScreen::ExecuteApp_i
552 * execute and showing application
554 * @param[in] appid application id
557 /*--------------------------------------------------------------------------*/
559 CicoHomeScreen::ExecuteApp_i(const char *appid)
561 ICO_TRA("start %s", appid);
562 CicoHSAppInfo *appinfo = GetAppInfo(appid);
563 if (appinfo == NULL) {
564 ICO_TRA("end get appinfo is NULL");
567 if (sub_display_appinfo != appinfo) {
568 if (appinfo->GetStatus() == false) {
571 ICO_DBG("execute app %s", appid);
575 RaiseApplicationWindow(appinfo->GetAppId(),
576 appinfo->GetLastSurface());
577 ICO_DBG("raise app %s", appid);
578 m_appHis->moveHistoryHead(appid);
581 /* hide HomeScreen layer */
582 if (GetMode() == ICO_HS_MODE_MENU) {
583 ChangeMode(ICO_HS_SHOW_HIDE_PATTERN_FADE);
588 /*--------------------------------------------------------------------------*/
590 * @brief CicoHomeScreen::TerminateApp_i
591 * teminate application
593 * @param[in] appid application id
596 /*--------------------------------------------------------------------------*/
598 CicoHomeScreen::TerminateApp_i(const char *appid)
601 CicoHSAppInfo *appinfo = GetAppInfo(appid);
602 if (appinfo == NULL) {
607 appinfo->Terminate();
609 /* hide HomeScreen layer */
610 if (GetMode() == ICO_HS_MODE_MENU) {
611 ChangeMode(ICO_HS_SHOW_HIDE_PATTERN_FADE);
615 /*--------------------------------------------------------------------------*/
617 * @brief CicoHomeScreen::ShowHomeScreenWindow
618 * show window (home screen)
620 * @param[in] win info window information
623 /*--------------------------------------------------------------------------*/
625 CicoHomeScreen::ShowHomeScreenWindow(ico_syc_win_info_t *win_info)
627 ico_syc_win_move_t move;
631 move.width = full_width;
633 if (strncmp(win_info->name,ICO_HS_BACK_WINDOW_TITLE,
634 ICO_MAX_TITLE_NAME_LEN) == 0) {
635 move.pos_y = ICO_HS_STATUSBAR_WINDOW_HEIGHT;
636 move.height = full_height - ICO_HS_STATUSBAR_WINDOW_HEIGHT -
637 ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
638 layer = HS_LAYER_BACKGROUND;
640 else if (strncmp(win_info->name,ICO_HS_CONTROL_BAR_WINDOW_TITLE,
641 ICO_MAX_TITLE_NAME_LEN) == 0) {
642 move.pos_y = full_height - ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
643 move.height = ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
644 layer = HS_LAYER_CONTROLBAR;
646 else if (strncmp(win_info->name,ICO_HS_MENU_WINDOW_TITLE,
647 ICO_MAX_TITLE_NAME_LEN) == 0) {
648 move.pos_y = ICO_HS_STATUSBAR_WINDOW_HEIGHT;
649 move.height = full_height - ICO_HS_STATUSBAR_WINDOW_HEIGHT -
650 ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
651 layer = HS_LAYER_HOMESCREEN;
658 ico_syc_change_layer(win_info->appid,win_info->surface,layer);
659 ICO_DBG("CicoHomeScreen::ShowHomeScreenWindow: id(%s) name(%s) surface(%d) "
660 "pos(%d,%d) size(%d,%d)", win_info->appid,
661 win_info->name, win_info->surface, move. pos_x, move.pos_y,
662 move.width, move.height);
663 ico_syc_move(win_info->appid, win_info->surface, &move, NULL);
665 /*first time menu is unvisible*/
666 if ((strncmp(win_info->name,ICO_HS_MENU_WINDOW_TITLE,
667 ICO_MAX_TITLE_NAME_LEN) == 0) &&
668 (GetMode() == ICO_HS_MODE_APPLICATION)) {
671 ico_syc_show(win_info->appid, win_info->surface,NULL);
674 /*--------------------------------------------------------------------------*/
676 * @brief CicoHomeScreen::ShowStatusBarWindow
677 * show window (home screen)
679 * @param[in] win info window information
682 /*--------------------------------------------------------------------------*/
684 CicoHomeScreen::ShowStatusBarWindow(ico_syc_win_info_t *win_info)
686 ico_syc_win_move_t move;
691 move.width = full_width;
692 move.height = ICO_HS_STATUSBAR_WINDOW_HEIGHT;
693 layer = HS_LAYER_CONTROLBAR;
695 ico_syc_change_layer(win_info->appid,win_info->surface,layer);
696 ICO_DBG("CicoHomeScreen::ShowStatusBarWindow: id(%s) name(%s) surface(%d) "
697 "pos(%d,%d) size(%d,%d)",win_info->appid,
698 win_info->name,win_info->surface,move.pos_x,move.pos_y,
699 move.width,move.height);
700 ico_syc_move(win_info->appid,win_info->surface,&move,NULL);
701 ico_syc_show(win_info->appid, win_info->surface,NULL);
704 /*--------------------------------------------------------------------------*/
706 * @brief CicoHomeScreen::ShowApplicationWindow
707 * show window (application)
709 * @param[in] win info window information
712 /*--------------------------------------------------------------------------*/
714 CicoHomeScreen::ShowApplicationWindow(ico_syc_win_info_t *win_info)
716 ICO_TRA("CicoHomeScreen::ShowApplicationWindow Enter");
718 CicoHSLifeCycleController *lifecycle =
719 CicoHSLifeCycleController::getInstance();
720 const CicoAilItems* ailItem = lifecycle->findAIL(win_info->appid);
721 if (NULL == ailItem) {
722 ICO_WRN("ailItem not found.");
723 ICO_TRA("CicoHomeScreen::ShowApplicationWindow Leave");
726 int zoneid = ailItem->m_displayZone;
728 ICO_DBG("zoneid=%d", zoneid);
729 const CicoSCDisplayZoneConf* dispZoneConf =
730 CicoSystemConfig::getInstance()->findDisplayZoneConfbyId(zoneid);
731 if (NULL == dispZoneConf) {
732 ICO_WRN("display zone config not found.");
733 ICO_TRA("CicoHomeScreen::ShowApplicationWindow Leave");
736 ICO_DBG("appid=%s zoneid=%d:%s",
737 win_info->appid, zoneid, dispZoneConf->fullname.c_str());
739 ico_syc_win_move_t move;
741 move.zone = (char*)dispZoneConf->fullname.c_str();
742 move.layer = HS_LAYER_APPLICATION;
743 if (ailItem->m_display != 0) {
744 move.layer = HS_LAYER_2NDDISP_APP;
747 move.width = full_width;
748 move.pos_y = ICO_HS_STATUSBAR_WINDOW_HEIGHT;
749 move.height = full_height - ICO_HS_STATUSBAR_WINDOW_HEIGHT -
750 ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
752 ico_syc_move(win_info->appid,win_info->surface,&move,NULL);
753 ico_syc_animation_t animation;
754 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_FADE;
755 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
756 const string& lastStartupApp = m_appHis->getLastStartupAppid();
757 if (true == lastStartupApp.empty()) {
758 ICO_DBG("show (empty) %s", win_info->appid);
759 ico_syc_show(win_info->appid, win_info->surface, &animation);
763 if (0 == lastStartupApp.compare(win_info->appid)) {
767 ICO_DBG("show (last) %s", win_info->appid);
768 ico_syc_show(win_info->appid, win_info->surface, &animation);
771 ICO_DBG("hide (no last) %s", win_info->appid);
772 ico_syc_hide(win_info->appid, win_info->surface, &animation);
775 ICO_TRA("CicoHomeScreen::ShowApplicationWindow Leave");
778 /*--------------------------------------------------------------------------*/
780 * @brief CicoHomeScreen::RaiseApplicationWindow
781 * raise window (application)
783 * @param[in] appid application id
784 * @param[in] surface surface
787 /*--------------------------------------------------------------------------*/
789 CicoHomeScreen::RaiseApplicationWindow(const char *appid,int surface)
791 ico_syc_show(appid, surface, NULL);
792 ico_syc_change_active(appid, surface);
793 hs_instance->SetActiveAppInfo(appid);
796 /*--------------------------------------------------------------------------*/
798 * @brief CicoHomeScreen::EventCallBack
799 * callback for system controller
801 * @param[in] event kind of event
802 * @param[in] detail detail
803 * @param[in] user_data user data
806 /*--------------------------------------------------------------------------*/
808 CicoHomeScreen::EventCallBack(const ico_syc_ev_e event,
809 const void *detail,void *user_data)
813 // ICO_DBG("CicoHomeScreen::EventCallBack: start (event %d)",event);
815 if (event == ICO_SYC_EV_WIN_CREATE) {
816 ico_syc_win_info_t *win_info =
817 reinterpret_cast<ico_syc_win_info_t*>(const_cast<void*>(detail));
818 ICO_DBG("Event:ICO_SYC_EV_WIN_CREATE(appid=%s surface=%08x)",
819 win_info->appid, win_info->surface);
820 /*only save information*/
821 if (strncmp(win_info->appid, hs_instance->GetHsPackageName(),
822 ICO_HS_MAX_PROCESS_NAME) == 0) {
824 hs_instance->hs_app_info->AddWindowInfo(win_info);
827 if (strncmp(win_info->name,ICO_HS_MENU_WINDOW_TITLE,
828 ICO_MAX_TITLE_NAME_LEN) == 0) {
829 hs_instance->menu_window->SetMenuWindowID(win_info->appid,
832 else if (strncmp(win_info->name,ICO_HS_CONTROL_BAR_WINDOW_TITLE,
833 ICO_MAX_TITLE_NAME_LEN) == 0) {
834 hs_instance->ctl_bar_window->SetWindowID(win_info->appid,
838 if (win_info->name[0] == 0) {
839 /* null name, nothing to do */
842 for (idx = 0; idx < hs_instance->num_swipe_input_windows; idx++) {
843 if (hs_instance->swipe_input_windows[idx]->
844 isMyWindowName(win_info->name)) {
845 hs_instance->swipe_input_windows[idx]->
846 SetWindowID(win_info->appid, win_info->surface);
847 hs_instance->swipe_input_windows[idx]->SetupSwipeWindow();
853 hs_instance->ShowHomeScreenWindow(win_info);
855 else if (strncmp(win_info->appid,
856 hs_instance->GetSbPackageName(),
857 ICO_HS_MAX_PROCESS_NAME) == 0) {
859 hs_instance->sb_app_info->AddWindowInfo(win_info);
862 hs_instance->ShowStatusBarWindow(win_info);
864 else if (strncmp(win_info->appid,
865 hs_instance->GetOsPackageName(),
866 ICO_HS_MAX_PROCESS_NAME) == 0) {
869 hs_instance->os_app_info->AddWindowInfo(win_info);
871 // change the layer of onscreen window
872 ico_syc_change_layer(win_info->appid, win_info->surface,
875 const CicoSCPositionOSConf* oPOSC =
876 CicoSystemConfig::getInstance()->positionOSConf();
877 ico_syc_win_move_t move;
879 move.layer = HS_LAYER_ONSCREEN;
880 move.pos_x = oPOSC->m_x;
881 move.pos_y = oPOSC->m_y;
882 move.width = oPOSC->m_w;
883 move.height = oPOSC->m_h;
884 ico_syc_animation_t animation;
885 animation.name = (char*)ICO_HS_MENU_SHOW_ANIMATION_SLIDE;
886 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
887 ico_syc_move(win_info->appid, win_info->surface, &move, &animation);
892 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(win_info->appid);
893 if (appinfo == NULL) {
896 appinfo->AddWindowInfo(win_info);
898 appinfo->SetLastSurface(win_info->surface);
899 hs_instance->ShowApplicationWindow(win_info);
900 ico_syc_change_active(win_info->appid,win_info->surface);
901 hs_instance->SetActiveAppInfo(win_info->appid);
902 hs_instance->UpdateTile(win_info->appid);
904 hs_instance->startupCheck(win_info->appid);
907 else if (event == ICO_SYC_EV_WIN_NAME) {
908 ico_syc_win_info_t *win_info =
909 reinterpret_cast<ico_syc_win_info_t*>(const_cast<void*>(detail));
910 ICO_DBG("Event:ICO_SYC_EV_WIN_NAME(appid=%s surface=%08x name=%s)",
911 win_info->appid, win_info->surface, win_info->name);
913 if (strncmp(win_info->appid, hs_instance->GetHsPackageName(),
914 ICO_HS_MAX_PROCESS_NAME) == 0) {
916 hs_instance->hs_app_info->AddWindowInfo(win_info);
919 if (strncmp(win_info->name,ICO_HS_MENU_WINDOW_TITLE,
920 ICO_MAX_TITLE_NAME_LEN) == 0) {
921 hs_instance->menu_window->SetMenuWindowID(win_info->appid,
924 else if (strncmp(win_info->name,ICO_HS_CONTROL_BAR_WINDOW_TITLE,
925 ICO_MAX_TITLE_NAME_LEN) == 0) {
926 hs_instance->ctl_bar_window->SetWindowID(win_info->appid,
930 for (idx = 0; idx < hs_instance->num_swipe_input_windows; idx++) {
931 if (hs_instance->swipe_input_windows[idx]->
932 isMyWindowName(win_info->name)) {
933 hs_instance->swipe_input_windows[idx]->
934 SetWindowID(win_info->appid, win_info->surface);
935 hs_instance->swipe_input_windows[idx]->SetupSwipeWindow();
942 hs_instance->ShowHomeScreenWindow(win_info);
944 else if (strncmp(win_info->appid, hs_instance->GetSbPackageName(),
945 ICO_HS_MAX_PROCESS_NAME) == 0) {
947 hs_instance->sb_app_info->AddWindowInfo(win_info);
949 else if (strncmp(win_info->appid, hs_instance->GetOsPackageName(),
950 ICO_HS_MAX_PROCESS_NAME) == 0) {
952 hs_instance->os_app_info->AddWindowInfo(win_info);
956 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(win_info->appid);
957 if (appinfo == NULL) {
960 appinfo->AddWindowInfo(win_info);
963 else if (event == ICO_SYC_EV_WIN_DESTROY) {
964 ico_syc_win_info_t *win_info =
965 reinterpret_cast<ico_syc_win_info_t*>(const_cast<void*>(detail));
966 ICO_DBG("Event:ICO_SYC_EV_WIN_DESTROY(appid=%s surface=%08x)",
967 win_info->appid, win_info->surface);
968 /*only save information*/
969 if (strncmp(win_info->appid, hs_instance->GetHsPackageName(),
970 ICO_HS_MAX_PROCESS_NAME) == 0) {
971 hs_instance->hs_app_info->FreeWindowInfo(win_info->name);
973 else if (strncmp(win_info->appid,
974 hs_instance->GetSbPackageName(),
975 ICO_HS_MAX_PROCESS_NAME) == 0) {
976 hs_instance->sb_app_info->FreeWindowInfo(win_info->name);
978 else if (strncmp(win_info->appid,
979 hs_instance->GetOsPackageName(),
980 ICO_HS_MAX_PROCESS_NAME) == 0) {
981 hs_instance->os_app_info->FreeWindowInfo(win_info->name);
985 CicoHSAppInfo *appinfo =
986 hs_instance->GetAppInfo(win_info->appid);
987 if (appinfo == NULL) {
990 appinfo->FreeWindowInfo(win_info->surface);
991 hs_instance->UpdateTile(win_info->appid);
993 // update active application information
994 CicoHSAppInfo *active_appinfo = hs_instance->GetActiveAppInfo();
995 if (appinfo == active_appinfo) {
996 hs_instance->SetActiveAppInfo(NULL);
999 // update sub displayed application information
1000 CicoHSAppInfo *subdisp_appinfo = hs_instance->GetSubDisplayAppInfo();
1001 if (appinfo == subdisp_appinfo) {
1002 hs_instance->SetSubDisplayAppInfo(NULL);
1006 else if (event == ICO_SYC_EV_WIN_ACTIVE) {
1007 ico_syc_win_info_t *win_info =
1008 reinterpret_cast<ico_syc_win_info_t*>(const_cast<void*>(detail));
1009 ICO_DBG("Event:ICO_SYC_EV_WIN_ACTIVE(appid=%s surface=%08x)",
1010 win_info->appid, win_info->surface);
1011 hs_instance->ChangeActive(win_info->appid, win_info->surface);
1013 else if (event == ICO_SYC_EV_WIN_ATTR_CHANGE) {
1014 ico_syc_win_attr_t *win_attr =
1015 reinterpret_cast<ico_syc_win_attr_t*>(const_cast<void*>(detail));
1016 ICO_DBG("Event:ICO_SYC_EV_WIN_ATTR_CHANGE(appid=%s surface=%08x)",
1017 win_attr->appid, win_attr->surface);
1018 if (strncmp(win_attr->appid, hs_instance->GetHsPackageName(),
1019 ICO_HS_MAX_PROCESS_NAME) == 0) {
1021 hs_instance->hs_app_info->AddWindowAttr(win_attr);
1023 else if (strncmp(win_attr->appid, hs_instance->GetSbPackageName(),
1024 ICO_HS_MAX_PROCESS_NAME) == 0) {
1026 hs_instance->sb_app_info->AddWindowAttr(win_attr);
1028 else if (strncmp(win_attr->appid, hs_instance->GetOsPackageName(),
1029 ICO_HS_MAX_PROCESS_NAME) == 0) {
1031 hs_instance->os_app_info->AddWindowAttr(win_attr);
1034 ICO_DBG("CicoHomeScreen::EventCallBack : application window %s %s",
1035 win_attr->appid,win_attr->name);
1037 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(win_attr->appid);
1038 if (appinfo == NULL) {
1042 // change layer when moved zone in second display
1043 ico_hs_window_info *winfo = NULL;
1044 winfo = appinfo->GetWindowInfobySurface(win_attr->surface);
1045 if (NULL != winfo) {
1046 if (win_attr->nodeid != winfo->nodeid) {
1047 if (0 == win_attr->nodeid) {
1048 if (NULL != hs_instance->GetSubDisplayAppInfo()) {
1049 if (hs_instance->m_appHis) {
1050 const string& wapp = hs_instance->m_appHis->getSelectApp();
1051 ICO_DBG("\"%s\"->\"%s\"", wapp.c_str(), winfo->appid);
1052 if ((false == wapp.empty()) &&
1053 (0 != wapp.compare(winfo->appid))) {
1054 hs_instance->requestHideAppid(wapp);
1055 hs_instance->m_appHis->clearSelectApp();
1056 hs_instance->m_appHis->homeSwipe();
1059 ICO_DBG("reset sub display");
1060 hs_instance->SetSubDisplayAppInfo(NULL);
1061 hs_instance->ChangeActive(winfo->appid, winfo->surface);
1065 ICO_DBG("set sub display");
1066 hs_instance->SetSubDisplayAppInfo(winfo->appid);
1069 if (hs_instance->m_appHis) {
1070 if (true == hs_instance->m_appHis->chgChk()) {
1071 hs_instance->m_appHis->writeAppHistory();
1073 hs_instance->m_appHis->homeSwipe();
1078 // update window information
1079 appinfo->AddWindowAttr(win_attr);
1080 hs_instance->UpdateTile(win_attr->appid);
1083 else if (event == ICO_SYC_EV_THUMB_CHANGE) {
1084 ico_syc_thumb_info_t *thumb_info =
1085 reinterpret_cast<ico_syc_thumb_info_t*>(const_cast<void*>(detail));
1086 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(thumb_info->appid);
1087 if (appinfo == NULL) {
1088 ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_CHANGE %s(%02x) "
1089 "no appinfo", thumb_info->appid, thumb_info->surface);
1092 // ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_CHANGE %s(%02x)",
1093 // thumb_info->appid, thumb_info->surface);
1094 // show thumbnail icon
1095 hs_instance->menu_window->SetThumbnail(thumb_info->appid, thumb_info);
1097 else if (event == ICO_SYC_EV_THUMB_UNMAP) {
1098 ico_syc_thumb_info_t *thumb_info =
1099 reinterpret_cast<ico_syc_thumb_info_t*>(const_cast<void*>(detail));
1100 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(thumb_info->appid);
1101 if (appinfo == NULL) {
1102 ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_UNMAP %s(%02x) "
1103 "no appinfo", thumb_info->appid, thumb_info->surface);
1106 ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_UNMAP %s(%02x)",
1107 thumb_info->appid, thumb_info->surface);
1108 hs_instance->menu_window->SetThumbnail(thumb_info->appid, NULL);
1110 else if (event == ICO_SYC_EV_THUMB_ERROR) {
1111 ico_syc_thumb_info_t *thumb_info =
1112 reinterpret_cast<ico_syc_thumb_info_t*>(const_cast<void*>(detail));
1113 CicoHSAppInfo *appinfo = hs_instance->GetAppInfo(thumb_info->appid);
1114 if (appinfo == NULL) {
1115 ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_ERROR %s(%02x) "
1116 "no appinfo", thumb_info->appid, thumb_info->surface);
1119 ICO_DBG("CicoHomeScreen::EventCallBack : ICO_SYC_EV_THUMB_ERROR %s(%02x)",
1120 thumb_info->appid, thumb_info->surface);
1121 hs_instance->menu_window->SetThumbnail(thumb_info->appid, NULL);
1123 else if (event == ICO_SYC_EV_LAYER_ATTR_CHANGE) {
1126 else if (event == ICO_SYC_EV_USERLIST) {
1129 else if (event == ICO_SYC_EV_AUTH_FAIL) {
1132 else if (event == ICO_SYC_EV_RES_ACQUIRE) {
1135 else if (event == ICO_SYC_EV_RES_DEPRIVE) {
1138 else if (event == ICO_SYC_EV_RES_WAITING) {
1141 else if (event == ICO_SYC_EV_RES_REVERT) {
1144 else if (event == ICO_SYC_EV_RES_RELEASE) {
1147 else if (event == ICO_SYC_EV_INPUT_SET) {
1150 else if (event == ICO_SYC_EV_INPUT_UNSET) {
1153 else if (event == ICO_SYC_EV_STATE_CHANGE) {
1154 ico_syc_state_info_t *state_info =
1155 reinterpret_cast<ico_syc_state_info_t*>(const_cast<void*>(detail));
1156 ICO_DBG("EVENT:ICO_SYC_EV_STATE_CHANGE(id=%d state=%d)",
1157 state_info->id, state_info->state);
1158 if (ICO_SYC_STATE_REGULATION == state_info->id) {
1159 // set regulation state
1160 CicoHSSystemState::getInstance()->setRegulation(
1161 (state_info->state == ICO_SYC_STATE_ON) ? true : false);
1162 ecore_main_loop_thread_safe_call_async(CicoHomeScreen::SetRegulation, NULL);
1164 else if (ICO_SYC_STATE_NIGHTMODE == state_info->id) {
1165 // set night mode state
1166 CicoHSSystemState::getInstance()->setNightMode(
1167 (state_info->state == ICO_SYC_STATE_ON) ? true : false);
1168 ecore_main_loop_thread_safe_call_async(CicoHomeScreen::SetNightMode, NULL);
1171 // ICO_DBG("CicoHomeScreen::EventCallBack: end");
1174 /*--------------------------------------------------------------------------*/
1176 * @brief CicoHomeScreen::StartRelations
1177 * Execute Onscreen and Statusbar
1182 /*--------------------------------------------------------------------------*/
1184 CicoHomeScreen::StartRelations(void)
1187 strncpy(sb_package_name,
1188 (char *)config->ConfigGetString(ICO_HS_CONFIG_HOMESCREEN,
1190 ICO_HS_APPID_DEFAULT_SB),
1191 ICO_HS_MAX_PROCESS_NAME);
1192 strncpy(os_package_name,
1193 (char *)config->ConfigGetString(ICO_HS_CONFIG_HOMESCREEN,
1195 ICO_HS_APPID_DEFAULT_ONS),
1196 ICO_HS_MAX_PROCESS_NAME);
1199 /* start onscreen & statusbar apps */
1200 os_app_info = GetAppInfo(os_package_name);
1201 ret = os_app_info->Execute();
1203 ICO_WRN("execute failed(%s) err=%d", os_package_name, ret);
1207 sb_app_info = GetAppInfo(sb_package_name);
1208 ret = sb_app_info->Execute();
1210 ICO_WRN("execute failed(%s) err=%d", sb_package_name, ret);
1215 /*--------------------------------------------------------------------------*/
1217 * @brief CicoHomeScreen::Initialize
1220 * @param[in] orientation vertical or horizontal
1221 * @param[in] config config
1222 * @return OK or ERROR
1224 /*--------------------------------------------------------------------------*/
1226 CicoHomeScreen::Initialize(int orientation, CicoGKeyFileConfig *config)
1229 ICO_DBG("CicoHomeScreen::Initialize: start");
1230 /*save instance pointer */
1234 this->config = new CicoGKeyFileConfig();
1235 this->config->Initialize(ICO_HOMESCREEN_CONFIG_FILE);
1237 /*Get application info*/
1238 CreateAppInfoList();
1240 /* get pkg name (home screen,status bar,on screen)*/
1242 ICO_DBG("CicoHomeSceen::Initialize: %s: %s",
1243 getenv("HOME"), getenv("PKG_NAME"));
1244 pkg = getenv("PKG_NAME");
1245 memset(hs_package_name, 0, ICO_HS_MAX_PROCESS_NAME);
1247 strncpy(hs_package_name, pkg, ICO_HS_MAX_PROCESS_NAME);
1250 strncpy(hs_package_name, ICO_HS_PROC_DEFAULT_HOMESCREEN,
1251 ICO_HS_MAX_PROCESS_NAME);
1254 /* Initialize WindowController */
1255 CicoHSWindowController::Initialize();
1256 ICO_DBG("CicoHomeScreen::Initialize: window controller initialized");
1258 ICO_DBG("CicoHomeScreen::Initialize: start connect to systemcontroller");
1259 ico_syc_connect(EventCallBack,NULL);
1260 ICO_DBG("CicoHomeScreen::Initialize: end connect to systemcontroller");
1262 /*initialize system controller*/
1264 ICO_DBG("CicoHomeScreen::Initialize: get package name %s",hs_package_name);
1265 hs_app_info = GetAppInfo(hs_package_name);
1267 /*start home statusbar and onscreen*/
1269 ICO_DBG("CicoHomeScreen::Initialize: start relation apps");
1271 /* Get screen size */
1272 CicoHSWindowController::GetFullScreenSize(orientation,
1273 &full_width,&full_height);
1275 ICO_DBG("full screen size x=%d y=%d",full_width,full_height);
1277 /* MenuScreen Window Size */
1278 menu_width = full_width;
1279 menu_height = full_height - ICO_HS_STATUSBAR_WINDOW_HEIGHT -
1280 ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
1282 /* BackGround Window Size */
1283 bg_width = full_width;
1284 bg_height = full_height;
1286 /* Control Bar Window Size */
1287 ctl_bar_width = full_width;
1288 ctl_bar_height = ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
1290 // load switch display zone config
1291 moveZoneName = config->ConfigGetString("switchzone", "movezone", NULL);
1293 moveZoneAnimation.name = (char*)config->ConfigGetString("switchzone",
1295 ICO_HS_ANIMATION_FADE);
1297 moveZoneAnimation.time = config->ConfigGetInteger("switchzone",
1301 ICO_DBG("moveZoneName=%s animation=%s time=%d",
1302 moveZoneName, moveZoneAnimation.name, moveZoneAnimation.time);
1304 ICO_DBG("CicoHomeScreen::Initialize: end");
1309 /*--------------------------------------------------------------------------*/
1311 * @brief CicoHomeScreen::InitializeAppHistory
1312 * Initialize application History Manager
1314 /*--------------------------------------------------------------------------*/
1316 CicoHomeScreen::InitializeAppHistory(void)
1319 if (NULL != m_appHis) {
1323 CicoHSCmdOpts* cmdOpts = CicoHSCmdOpts::getInstance();
1324 m_appHis = new CicoHSAppHistoryExt(cmdOpts->getLoginUser(),
1325 cmdOpts->getHistoryFilePath(),
1326 cmdOpts->getDefaultHistoryFilePath(),
1327 cmdOpts->getFlagPath());
1328 m_appHis->force_flagoff();
1329 m_appHis->setHomeScreen(this);
1332 val = config->ConfigGetString(ICO_HS_CONFIG_HISTORY,
1333 ICO_HS_CONFIG_HSTRY_KEY1,
1334 ICO_HS_CONFIG_HSTRY_DEF1);
1335 ICO_DBG("timer = %s", val);
1336 double dV = atof(val);
1337 m_appHis->setWaitTime(dV);
1339 val = config->ConfigGetString(ICO_HS_CONFIG_HISTORY,
1340 ICO_HS_CONFIG_HSTRY_KEY2,
1341 ICO_HS_CONFIG_HSTRY_DEF2);
1343 if ((NULL != val) && (0 != val) && (0 != strlen(val))) {
1345 split(tmpM, ICO_HS_CONFIG_HSTRY_SPL, vvM);
1347 if (0 != vvM.size()) {
1348 ICO_DBG("manage off = %s split=%d", val, (int)vvM.size());
1349 m_appHis->setFilterManage(vvM);
1351 val = config->ConfigGetString(ICO_HS_CONFIG_HISTORY,
1352 ICO_HS_CONFIG_HSTRY_KEY3,
1353 ICO_HS_CONFIG_HSTRY_DEF3);
1355 if ((NULL != val) && (0 != val) && (0 != strlen(val))) {
1357 split(tmpW, ICO_HS_CONFIG_HSTRY_SPL, vvW);
1359 if (0 != vvW.size()) {
1360 ICO_DBG("write off = %s, split=%d", val, (int)vvW.size());
1361 m_appHis->setFilterWrite(vvW);
1366 /*--------------------------------------------------------------------------*/
1368 * @brief CicoHomeScreen::Finalize
1374 /*--------------------------------------------------------------------------*/
1376 CicoHomeScreen::Finalize(void)
1378 /* Finalize WindowController */
1379 CicoHSWindowController::Finalize();
1381 ico_syc_disconnect();
1386 /*--------------------------------------------------------------------------*/
1388 * @brief CicoHomeScreen::CreateMenuWindow
1389 * create menu window
1394 /*--------------------------------------------------------------------------*/
1396 CicoHomeScreen::CreateMenuWindow(void)
1399 ICO_DBG("CicoHomeScreen::CreateMenuWindow: start");
1400 menu_window = new CicoHSMenuWindow();
1401 menu_window->CreateMenuWindow(ICO_HS_WINDOW_POS_X,ICO_HS_WINDOW_POS_Y,
1402 menu_width,menu_height);
1403 menu_window->ShowWindow();
1404 ICO_DBG("CicoHomeScreen::CreateMenuWindow: end");
1407 /*--------------------------------------------------------------------------*/
1409 * @brief CicoHomeScreen::DeleteMenuWindow
1410 * delete menu window
1415 /*--------------------------------------------------------------------------*/
1417 CicoHomeScreen::DeleteMenuWindow(void)
1419 if (menu_window == NULL) {
1422 menu_window->FreeMenuWindow();
1427 /*--------------------------------------------------------------------------*/
1429 * @brief CicoHomeScreen::UpdateMenuWindow
1430 * update menu window
1435 /*--------------------------------------------------------------------------*/
1437 CicoHomeScreen::UpDateMenuWindow(void)
1443 /*--------------------------------------------------------------------------*/
1445 * @brief CicoHomeScreen::CreateBackWindow
1446 * create back window
1451 /*--------------------------------------------------------------------------*/
1453 CicoHomeScreen::CreateBackWindow(void)
1456 ICO_DBG("CicoHomeScreen::CreateBackWindow");
1457 back_window = new CicoHSBackWindow();
1458 back_window->CreateBackWindow(ICO_HS_WINDOW_POS_X,ICO_HS_WINDOW_POS_Y,
1459 bg_width,bg_height);
1460 back_window->ShowWindow();
1463 /*--------------------------------------------------------------------------*/
1465 * @brief CicoHomeScreen::CreateBackWindow
1466 * create back window
1471 /*--------------------------------------------------------------------------*/
1473 CicoHomeScreen::DeleteBackWindow(void)
1475 if (back_window == NULL) {
1478 back_window->FreeBackWindow();
1482 /*--------------------------------------------------------------------------*/
1484 * @brief CicoHomeScreen::UpDateBackWindow
1485 * update back window
1490 /*--------------------------------------------------------------------------*/
1492 CicoHomeScreen::UpDateBackWindow(void)
1498 /*--------------------------------------------------------------------------*/
1500 * @brief CicoHomeScreen::CreateControlBarWindow
1501 * create control bar window
1506 /*--------------------------------------------------------------------------*/
1508 CicoHomeScreen::CreateControlBarWindow(void)
1511 ICO_DBG("CicoHomeScreen::CreateControlBarWindow");
1512 ctl_bar_window = new CicoHSControlBarWindow();
1513 ctl_bar_window->CreateControlBarWindow(ICO_HS_MENU_WINDOW_POS_X,bg_height -
1514 ctl_bar_height,ctl_bar_width,
1516 ctl_bar_window->ShowWindow();
1519 /*--------------------------------------------------------------------------*/
1521 * @brief CicoHomeScreen::DeleteControlBarWindow
1522 * delete control bar window
1527 /*--------------------------------------------------------------------------*/
1529 CicoHomeScreen::DeleteControlBarWindow(void)
1531 if (ctl_bar_window == NULL) {
1534 ctl_bar_window->FreeControlBarWindow();
1535 delete ctl_bar_window;
1538 /*--------------------------------------------------------------------------*/
1540 * @brief CicoHomeScreen::CreateSwipeInputWindow
1541 * create swipe input windows
1546 /*--------------------------------------------------------------------------*/
1548 CicoHomeScreen::CreateSwipeInputWindow(void)
1550 int pos_y, swipe_height;
1552 ICO_DBG("CicoHomeScreen::CreateSwipeInputWindow: start");
1553 /* cullentry SwipeInput windows is fixed size */
1554 pos_y = ICO_HS_WINDOW_POS_Y + ICO_HS_SWIPE_TOUCH_DISTANCE_TOP;
1555 swipe_height = full_height - pos_y - ICO_HS_SWIPE_TOUCH_DISTANCE_BOTTOM;
1557 /* left side window */
1558 swipe_input_windows[0] = new CicoHSSwipeInputWindow();
1559 swipe_input_windows[0]->
1560 CreateSwipeInputWindow(ICO_HS_WINDOW_POS_X, pos_y,
1561 ICO_HS_SWIPE_TOUCH_SWIPE_WIDTH, swipe_height,
1563 swipe_input_windows[0]->ShowWindow();
1565 /* right side window */
1566 swipe_input_windows[1] = new CicoHSSwipeInputWindow();
1567 swipe_input_windows[1]->
1568 CreateSwipeInputWindow(full_width - ICO_HS_SWIPE_TOUCH_SWIPE_WIDTH, pos_y,
1569 ICO_HS_SWIPE_TOUCH_SWIPE_WIDTH, swipe_height,
1571 swipe_input_windows[1]->ShowWindow();
1573 #if 0 /* currently not support(not fix specification) */
1574 /* buttom side window */
1575 swipe_input_windows[2] = new CicoHSSwipeInputWindow();
1576 swipe_input_windows[2]->
1577 CreateSwipeInputWindow(ICO_HS_WINDOW_POS_X,
1578 full_height - ICO_HS_SWIPE_TOUCH_SWIPE_HEIGHT,
1579 full_width, ICO_HS_SWIPE_TOUCH_SWIPE_WIDTH, "buttom");
1581 swipe_input_windows[2]->ShowWindow();
1582 num_swipe_input_windows = 3;
1584 num_swipe_input_windows = 2;
1586 ICO_DBG("CicoHomeScreen::CreateSwipeInputWindow: end");
1589 /*--------------------------------------------------------------------------*/
1591 * @brief CicoHomeScreen::DeleteSwipeInputWindow
1592 * delete swipe input windows
1597 /*--------------------------------------------------------------------------*/
1599 CicoHomeScreen::DeleteSwipeInputWindow(void)
1603 for (idx = 0; idx < num_swipe_input_windows; idx++) {
1604 if (swipe_input_windows[idx]) {
1605 swipe_input_windows[idx]->FreeSwipeInputWindow();
1606 delete swipe_input_windows[idx];
1607 swipe_input_windows[idx] = NULL;
1610 num_swipe_input_windows = 0;
1613 /*--------------------------------------------------------------------------*/
1615 * @brief launch applications
1617 * @param filepath start applications list file path
1618 * @param filepathD defalt start applications list file path
1620 * @retval true success
1621 * @retval false fail
1623 /*--------------------------------------------------------------------------*/
1624 static Eina_Bool launchApps(void* data)
1627 launcApps_data_t* x = (launcApps_data_t*) data;
1628 if ((NULL == x) || (NULL == x->hs)) {
1629 ICO_DBG("end fail");
1630 return ECORE_CALLBACK_CANCEL;
1633 vector<pairAppidSubd> apps;
1634 x->hs->readStartupApp(apps);
1636 int sz = apps.size();
1637 for (int i =sz; i > 0; i--) {
1638 string appid = apps[i-1].first;
1639 bool bFLAG = apps[i-1].second;
1640 const char* app = appid.c_str();
1641 ICO_PRF("CHG_APP_STA 1.request app=%s", app);
1642 int pid = aul_launch_app(appid.c_str(), NULL);
1643 ICO_DBG(" 1.request [%d]%d:%s:%d", i, pid, app, (int)bFLAG);
1644 if ((0 < pid) && (NULL != x->hs)) {
1645 x->hs->startupCheckAdd(pid, appid, bFLAG);
1648 ICO_DBG("end success");
1649 return ECORE_CALLBACK_CANCEL;
1652 /*--------------------------------------------------------------------------*/
1654 * @brief CicoHomeScreen::StartHomeScreen
1660 /*--------------------------------------------------------------------------*/
1662 CicoHomeScreen::StartHomeScreen(int orientation)
1666 ICO_TRA("CicoHomeScreen::StartHomeScreen Enter");
1668 /*save instance pointer */
1672 this->config = new CicoGKeyFileConfig();
1673 this->config->Initialize(ICO_HOMESCREEN_CONFIG_FILE);
1675 /* init home screen soud */
1676 CicoSound::GetInstance()->Initialize(this->config);
1678 /*Get application info*/
1679 CreateAppInfoList();
1681 /* get pkg name (home screen,status bar,on screen)*/
1683 ICO_DBG("CicoHomeSceen::StartHomeScreen: %s: %s",
1684 getenv("HOME"), getenv("PKG_NAME"));
1685 pkg = getenv("PKG_NAME");
1686 memset(hs_package_name, 0, ICO_HS_MAX_PROCESS_NAME);
1688 strncpy(hs_package_name, pkg, ICO_HS_MAX_PROCESS_NAME);
1691 strncpy(hs_package_name, ICO_HS_PROC_DEFAULT_HOMESCREEN,
1692 ICO_HS_MAX_PROCESS_NAME);
1695 /* create application control instance */
1696 CicoHSAppControl *m_appctrl = CicoHSAppControl::getInstance();
1698 /* create server instance */
1699 CicoHSServer *server = CicoHSServer::getInstance();
1700 server->setAppCtrl(m_appctrl);
1701 server->startup(10001, (const char*)"ico_hs_protocol");
1703 /* Initialize WindowController */
1704 CicoHSWindowController::Initialize();
1705 ICO_DBG("CicoHomeScreen::StartHomeScreen: window controller initialized");
1707 ICO_DBG("CicoHomeScreen::StartHomeScreen: start connect to systemcontroller");
1708 ico_syc_connect(EventCallBack,NULL);
1709 for (retry = 0; retry < (2000/10); retry++) {
1711 if (ico_syc_isconnect()) break;
1714 ICO_DBG("CicoHomeScreen::StartHomeScreen: end connect to systemcontroller");
1716 /*initialize system controller*/
1718 ICO_DBG("CicoHomeScreen::StartHomeScreen: get package name %s",hs_package_name);
1719 hs_app_info = GetAppInfo(hs_package_name);
1721 /*start home statusbar and onscreen*/
1723 ICO_DBG("CicoHomeScreen::StartHomeScreen: start relation apps");
1725 /* Get screen size */
1726 CicoHSWindowController::GetFullScreenSize(orientation,
1727 &full_width,&full_height);
1729 ICO_DBG("full screen size x=%d y=%d",full_width,full_height);
1731 /* MenuScreen Window Size */
1732 menu_width = full_width;
1733 menu_height = full_height - ICO_HS_STATUSBAR_WINDOW_HEIGHT -
1734 ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
1736 /* BackGround Window Size */
1737 bg_width = full_width;
1738 bg_height = full_height;
1740 /* Control Bar Window Size */
1741 ctl_bar_width = full_width;
1742 ctl_bar_height = ICO_HS_CONTROLBAR_WINDOW_HEIGHT;
1744 // load switch display zone config
1745 moveZoneName = config->ConfigGetString("switchzone", "movezone", NULL);
1747 moveZoneAnimation.name = (char*)config->ConfigGetString("switchzone",
1749 ICO_HS_ANIMATION_FADE);
1750 moveZoneAnimation.time = config->ConfigGetInteger("switchzone",
1753 ICO_DBG("moveZoneName=%s animation=%s time=%d",
1754 moveZoneName, moveZoneAnimation.name, moveZoneAnimation.time);
1756 // AUL Listen Signal set(launch/dead)
1757 initAulListenXSignal();
1759 // application history class init. before call launchApps
1760 InitializeAppHistory();
1762 /* application history launch */
1763 t_launcApps_data* x = new t_launcApps_data;
1764 CicoHSCmdOpts* cmdOpts = CicoHSCmdOpts::getInstance();
1765 x->filePath = cmdOpts->getHistoryFilePath();
1766 x->filePathD = cmdOpts->getDefaultHistoryFilePath();
1768 ecore_timer_add(0.01, launchApps, x);
1770 /* Create BackGround window */
1773 /* Create SwipeInput window */
1774 CicoHSSwipeTouch::Initialize(hs_instance->ctl_bar_window, hs_instance->m_appHis,
1775 full_width, full_height);
1776 CreateSwipeInputWindow();
1778 /* Create ControlBar window */
1779 CreateControlBarWindow();
1781 /* Create Menu window */
1784 /*Show Home Screen*/
1785 ShowHomeScreenLayer();
1787 ICO_TRA("CicoHomeScreen::StartHomeScreen Leave");
1791 /*--------------------------------------------------------------------------*/
1793 * @brief CicoHomeScreen::GetMode
1796 * @param[in] mode status
1799 /*--------------------------------------------------------------------------*/
1801 CicoHomeScreen::GetMode(void)
1806 /*--------------------------------------------------------------------------*/
1808 * @brief CicoHomeScreen::SetMode
1811 * @param[in] mode status
1814 /*--------------------------------------------------------------------------*/
1816 CicoHomeScreen::SetMode(int mode)
1821 /*--------------------------------------------------------------------------*/
1823 * @brief CicoHomeScreen::ChangeMode
1829 /*--------------------------------------------------------------------------*/
1831 CicoHomeScreen::ChangeMode(int pattern)
1835 if (hs_instance->menu_window == NULL) {
1839 if (hs_instance->GetMode() == ICO_HS_MODE_MENU) {
1840 ico_syc_animation_t animation;
1841 ICO_DBG("CicoHomeScreen::ChangeMode: MENU->APP");
1842 if (pattern == ICO_HS_SHOW_HIDE_PATTERN_SLIDE) {
1843 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_SLIDE;
1846 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_FADE;
1848 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
1849 hs_instance->menu_window->Hide(&animation);
1850 for (idx = 0; idx < hs_instance->num_swipe_input_windows; idx++) {
1851 hs_instance->swipe_input_windows[idx]->Show();
1853 hs_instance->SetMode(ICO_HS_MODE_APPLICATION);
1854 CicoHSAppInfo *appinfo = hs_instance->GetActiveAppInfo();
1855 if (NULL != appinfo) {
1856 ico_syc_change_active(appinfo->GetAppId(), appinfo->GetLastSurface());
1859 else if (hs_instance->GetMode() ==ICO_HS_MODE_APPLICATION) {
1860 ico_syc_animation_t animation;
1861 ICO_DBG("CicoHomeScreen::ChangeMode: APP->MENU");
1862 if (pattern == ICO_HS_SHOW_HIDE_PATTERN_SLIDE) {
1863 animation.name = (char*)ICO_HS_MENU_SHOW_ANIMATION_SLIDE;
1866 animation.name = (char*)ICO_HS_MENU_SHOW_ANIMATION_FADE;
1868 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
1869 hs_instance->menu_window->Show(&animation);
1870 for (idx = 0; idx < hs_instance->num_swipe_input_windows; idx++) {
1871 hs_instance->swipe_input_windows[idx]->Hide();
1873 hs_instance->SetMode(ICO_HS_MODE_MENU);
1877 /*--------------------------------------------------------------------------*/
1879 * @brief CicoHomeScreen::ExecuteApp
1880 * execute application
1885 /*--------------------------------------------------------------------------*/
1887 CicoHomeScreen::ExecuteApp(const char*appid)
1889 hs_instance->ExecuteApp_i(appid);
1892 /*--------------------------------------------------------------------------*/
1894 * @brief CicoHomeScreen::TerminateApp
1895 * teminate application
1900 /*--------------------------------------------------------------------------*/
1902 CicoHomeScreen::TerminateApp(const char*appid)
1904 hs_instance->TerminateApp_i(appid);
1907 /*--------------------------------------------------------------------------*/
1909 * @brief CicoHomeScreen::setActiveApp
1910 * active(touch operate app) notice
1915 /*--------------------------------------------------------------------------*/
1917 CicoHomeScreen::setActiveApp(const char* appid)
1919 if ((NULL == appid) || (0 == appid) || (0 == strlen(appid))) {
1922 if (NULL != m_appHis) {
1923 m_appHis->activeApp(appid);
1927 /*--------------------------------------------------------------------------*/
1929 * @brief CicoHomeScreen::SetNightMode
1930 * set night mode theme
1932 * @param[in] data user data
1934 /*--------------------------------------------------------------------------*/
1936 CicoHomeScreen::SetNightMode(void* data)
1938 ICO_TRA("CicoHomeScreen::SetNightMode Enter");
1939 // night mode action
1940 hs_instance->ctl_bar_window->SetNightMode();
1941 hs_instance->menu_window->SetNightMode();
1942 ICO_TRA("CicoHomeScreen::SetNightMode Leave");
1945 /*--------------------------------------------------------------------------*/
1947 * @brief CicoHomeScreen::SetRegulation
1948 * regulation action and set regualtion theme
1950 * @param[in] data user data
1952 /*--------------------------------------------------------------------------*/
1954 CicoHomeScreen::SetRegulation(void* data)
1956 ICO_TRA("CicoHomeScreen::SetRegulation Enter");
1958 hs_instance->controlRegulation();
1959 // regulation action
1960 hs_instance->ctl_bar_window->SetRegulation();
1961 ico_syc_animation_t animation;
1962 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_SLIDE;
1963 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
1964 hs_instance->menu_window->Hide(&animation);
1966 // force focus change
1967 if (false == CicoHSSystemState::getInstance()->getRegulation()) {
1968 CicoHSAppInfo *active_appinfo = hs_instance->GetActiveAppInfo();
1969 if (NULL != active_appinfo) {
1970 ico_syc_change_active(active_appinfo->GetAppId(),
1971 active_appinfo->GetLastSurface());
1972 ico_syc_change_active(active_appinfo->GetAppId(), 0);
1976 if (NULL != hs_instance->ctl_bar_window) {
1977 const char *ctl_bar_appid = hs_instance->ctl_bar_window->GetAppId();
1978 int ctl_bar_surface = hs_instance->ctl_bar_window->GetSurfaceId();
1979 ico_syc_change_active(ctl_bar_appid, ctl_bar_surface);
1980 ico_syc_change_active(ctl_bar_appid, 0);
1984 ICO_TRA("CicoHomeScreen::SetRegulation Leave");
1987 /*--------------------------------------------------------------------------*/
1989 * @brief CicoHomeScreen::RenewAppInfoList_i
1990 * renewal application info list
1995 /*--------------------------------------------------------------------------*/
1997 CicoHomeScreen::RenewAppInfoList_i(void)
2001 CicoHSAppInfo *tmp_apps_info[ICO_HS_MAX_APP_NUM];
2002 int tmp_application_num = 0;
2003 const char *appid_p = 0;
2005 for(ii = 0; ii < ICO_HS_MAX_APP_NUM; ii++){
2006 tmp_apps_info[ii] = NULL;
2009 /* get APP information*/
2010 std::vector<CicoAilItems> aillist = life_cycle_controller->getAilList();
2014 (ii < (int)aillist.size()) && (ii < ICO_HS_MAX_APP_NUM);
2016 ICO_DBG("aillist[%d].m_appid.c_str() = %s",
2017 ii, aillist[ii].m_appid.c_str());
2019 for (kk = 0; kk < ICO_HS_MAX_APP_NUM; kk++) {
2020 if (apps_info[kk] == NULL) {
2024 if (strcmp(aillist[ii].m_appid.c_str(),
2025 apps_info[kk]->GetAppId()) == 0) {
2027 tmp_apps_info[ii] = apps_info[kk];
2028 ICO_DBG("shift aillist[%d].m_appid.c_str() = %s",
2029 ii, aillist[ii].m_appid.c_str());
2033 if (kk == ICO_HS_MAX_APP_NUM) {
2034 tmp_apps_info[ii] = new CicoHSAppInfo(aillist[ii].m_appid.c_str());
2035 ICO_DBG("create aillist[%d].m_appid.c_str() = %s",
2036 ii, aillist[ii].m_appid.c_str());
2038 tmp_application_num++;
2041 /* delete instance */
2042 for (ii = 0; ii < ICO_HS_MAX_APP_NUM; ii++) {
2043 if (apps_info[ii] == NULL) {
2046 appid_p = apps_info[ii]->GetAppId();
2047 for ( kk = 0; kk < tmp_application_num; kk++) {
2048 if (strcmp(appid_p, tmp_apps_info[kk]->GetAppId()) == 0) {
2052 if (kk == tmp_application_num) {
2053 delete apps_info[ii];
2054 ICO_DBG("delete apps_info[%d]->GetAppId() = %s",
2060 for ( ii = 0; ii < ICO_HS_MAX_APP_NUM; ii++) {
2061 apps_info[ii] = tmp_apps_info[ii];
2064 application_num = tmp_application_num;
2067 /*--------------------------------------------------------------------------*/
2069 * @brief CicoHomeScreen::RenewAppInfoList
2070 * renewal appinfolist
2075 /*--------------------------------------------------------------------------*/
2077 CicoHomeScreen::RenewAppInfoList(void)
2079 ICO_TRA("CicoHomeScreen::RenewAppInfoList Enter");
2080 hs_instance->RenewAppInfoList_i();
2081 ICO_TRA("CicoHomeScreen::RenewAppInfoList Leave");
2084 /*--------------------------------------------------------------------------*/
2086 * @brief CicoHomeScreen::startupCheckAdd
2087 * start-up application infomation add
2093 /*--------------------------------------------------------------------------*/
2094 void CicoHomeScreen::startupCheckAdd(int pid, const std::string& appid,
2097 if (NULL != m_appHis) {
2098 m_appHis->startupCheckAdd(pid, appid, bSubDisp);
2102 /*--------------------------------------------------------------------------*/
2104 * @brief CicoHomeScreen::startupCheck
2105 * start-up application check
2107 * @param[in] appid check target
2109 /*--------------------------------------------------------------------------*/
2110 void CicoHomeScreen::startupCheck(const char* appid)
2112 ICO_TRA("CicoHomeScreen::startupCheck Enter");
2113 if (NULL == life_cycle_controller) {
2114 ICO_ERR("life_cycle_controller is null");
2115 ICO_TRA("CicoHomeScreen::startupCheck Leave");
2118 if (NULL == m_appHis) {
2119 ICO_ERR("m_appHis is null");
2120 ICO_TRA("CicoHomeScreen::startupCheck Leave");
2123 if (false == m_appHis->isStartupChecking()) {
2124 ICO_TRA("CicoHomeScreen::startupCheck Leave");
2127 m_appHis->update_appid();
2128 m_appHis->startupEntryFinish(appid);
2129 if (false == m_appHis->isFinish()) {
2130 ICO_TRA("CicoHomeScreen::startupCheck Leave");
2134 ICO_TRA("CicoHomeScreen::startupCheck Leave");
2137 /*--------------------------------------------------------------------------*/
2139 * @brief CicoHomeScreen::finishStartup
2140 * start-up application check
2142 * @param[in] appid check target
2144 /*--------------------------------------------------------------------------*/
2146 void CicoHomeScreen::finishStartup(void)
2148 ICO_TRA("CicoHomeScreen::finishStartup Enter");
2150 string last = m_appHis->getLastStartupAppid();
2151 const string& subDisp = m_appHis->getSubDispAppid();
2153 list<string> h = m_appHis->getAppHistory();
2154 // last appid is empty then get new last appid
2155 if (true == last.empty()) {
2156 list<string>::iterator it_h = h.begin();
2157 while (it_h != h.end()) {
2158 if (0 != subDisp.compare(*it_h)) {
2165 list<string>::reverse_iterator rit_h = h.rbegin();
2166 while(rit_h != h.rend()) {
2167 CicoHSAppInfo *ai = GetAppInfo((*rit_h).c_str());
2172 ICO_DBG("Raise %s", (*rit_h).c_str());
2174 const char* appid = ai->GetAppId();
2175 int surface = ai->GetLastSurface();
2176 if ((0 != last.compare(appid)) && (0 != subDisp.compare(appid))) {
2177 ico_syc_show(appid, surface, NULL);
2178 ico_syc_hide(appid, surface, NULL);
2184 CicoHSAppInfo *ai = GetAppInfo(subDisp.c_str());
2186 requestChangeZone(ai);
2189 ai = GetAppInfo(last.c_str());
2191 const char* appid = ai->GetAppId();
2192 int surface = ai->GetLastSurface();
2193 ico_syc_show(appid, surface, NULL);
2194 ico_syc_change_active(appid, surface);
2195 hs_instance->SetActiveAppInfo(appid);
2198 m_appHis->stopStartupCheck();
2199 ICO_TRA("CicoHomeScreen::finishStartup Leave");
2202 /*--------------------------------------------------------------------------*/
2204 * @brief CicoHomeScreen::readStartupApp
2205 * read start-up application data
2207 * @param[in] appid check target
2209 /*--------------------------------------------------------------------------*/
2210 void CicoHomeScreen::readStartupApp(std::vector<pairAppidSubd>& apps)
2212 ICO_TRA("CicoHomeScreen::readStartupApp Enter");
2213 if (NULL == m_appHis) {
2217 m_appHis->readAppHistory(apps);
2219 ICO_TRA("CicoHomeScreen::readStartupApp Leave(%d)", (int)apps.size());
2223 /*--------------------------------------------------------------------------*/
2225 * @brief CicoHomeScreen::requestHideAppid
2226 * request Hide appid
2230 /*--------------------------------------------------------------------------*/
2231 void CicoHomeScreen::requestHideAppid(const std::string& app)
2233 const char* appid = app.c_str();
2234 ICO_TRA("start %s", appid);
2235 CicoHSAppInfo *ai = GetAppInfo(appid);
2237 ICO_DBG("end %d", appid);
2240 int surface = ai->GetLastSurface();
2241 ico_syc_hide(appid, surface, NULL);
2245 /*--------------------------------------------------------------------------*/
2247 * @brief CicoHomeScreen::requestShowAppid
2248 * request Show appid
2252 /*--------------------------------------------------------------------------*/
2253 void CicoHomeScreen::requestShowAppid(const std::string& app)
2255 const char* appid = app.c_str();
2256 ICO_TRA("start %s", appid);
2257 CicoHSAppInfo *ai = GetAppInfo(appid);
2259 ICO_DBG("end %d", appid);
2262 int surface = ai->GetLastSurface();
2263 ico_syc_show(appid, surface, NULL);
2267 /*--------------------------------------------------------------------------*/
2269 * @brief CicoHomeScreen::requestActivationAppid
2270 * request Activation
2274 /*--------------------------------------------------------------------------*/
2275 void CicoHomeScreen::requestActivationAppid(const std::string& app)
2277 const char* appid = app.c_str();
2278 ICO_TRA("CicoHomeScreen::requestActivationAppid Enter(%s)", appid);
2279 CicoHSAppInfo *ai = GetAppInfo(appid);
2281 ICO_DBG("end %d", appid);
2284 int surface = ai->GetLastSurface();
2285 hs_instance->SetActiveAppInfo(app.c_str());
2286 ico_syc_show(appid, surface, NULL);
2287 ico_syc_change_active(appid, surface);
2288 ICO_TRA("CicoHomeScreen::requestActivationAppid Leave");
2291 /*--------------------------------------------------------------------------*/
2293 * @brief CicoHomeScreen::controlRegulation
2296 * @param reqStt true / false
2298 /*--------------------------------------------------------------------------*/
2299 void CicoHomeScreen::controlRegulation(bool regStt)
2301 ICO_TRA("CicoHomeScreen::controlRegulation Enter(%s)",
2302 regStt? "true": "false");
2303 if (NULL == m_appHis) {
2304 ICO_ERR("m_appHis is null");
2305 ICO_TRA("CicoHomeScreen::controlRegulation Leave");
2308 const string& wapp = m_appHis->getSelectApp(); // select appid get
2309 if (false == wapp.empty()) { // select appid nothing
2310 const string& napp = m_appHis->getNearHistory(); // history top appid get
2311 if (0 != wapp.compare(napp)) { // history top, wait app is Eqale
2312 requestHideAppid(napp);
2313 requestActivationAppid(wapp);
2314 m_appHis->moveHistoryHead(wapp);
2316 m_appHis->clearSelectApp(); // select appid clear
2317 m_appHis->homeSwipe();
2319 ICO_TRA("CicoHomeScreen::controlRegulation Leave");
2322 /*--------------------------------------------------------------------------*/
2324 * @brief CicoHomeScreen::ActivationUpdate
2325 * history update by swipe app
2328 * @retval true history update
2329 * @retval false no history updath
2331 /*--------------------------------------------------------------------------*/
2333 CicoHomeScreen::ActivationUpdate(void)
2335 return hs_instance->ActivationUpdate_i();
2338 /*--------------------------------------------------------------------------*/
2340 * @brief CicoHomeScreen::ActivationUpdate_i
2341 * history update by swipe app
2344 * @retval true history update
2345 * @retval false no history updath
2347 /*--------------------------------------------------------------------------*/
2349 CicoHomeScreen::ActivationUpdate_i(void)
2351 ICO_TRA("CicoHomeScreen::ActivationUpdate_i Enter");
2352 if (NULL == m_appHis) {
2353 ICO_ERR("m_appHis is null");
2354 ICO_TRA("CicoHomeScreen::ActivationUpdate_i Leave(false)");
2358 const string& wapp = m_appHis->getSelectApp(); // select appid get
2359 if (false == wapp.empty()) { // select appid nothing
2360 const string& napp = m_appHis->getNearHistory(); // history top appid get
2361 if (0 != wapp.compare(napp)) { // history top, wait app is Eqale
2362 requestActivationAppid(wapp);
2363 m_appHis->moveHistoryHead(wapp);
2366 m_appHis->clearSelectApp(); // select appid clear
2367 m_appHis->homeSwipe();
2369 ICO_TRA("CicoHomeScreen::ActivationUpdate_i Leave(%s)",
2370 bR? "true": "false");
2374 /*--------------------------------------------------------------------------*/
2376 * @brief CicoHomeScreen::ShowApp_i
2381 /*--------------------------------------------------------------------------*/
2383 CicoHomeScreen::ShowApp_i(const std::string& app)
2385 CicoHSAppInfo *appinfo = GetAppInfo(app.c_str());
2386 if (appinfo == NULL) {
2387 ICO_TRA("end get appinfo is NULL");
2391 ico_syc_animation_t animation;
2392 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_FADE;
2393 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
2395 ico_syc_show(appinfo->GetAppId(), appinfo->GetLastSurface(), &animation);
2396 ico_syc_change_active(appinfo->GetAppId(), appinfo->GetLastSurface());
2397 hs_instance->SetActiveAppInfo(appinfo->GetAppId());
2399 // RaiseApplicationWindow(appinfo->GetAppId(),
2400 // appinfo->GetLastSurface());
2401 ICO_DBG("raise app %s", app.c_str());
2402 m_appHis->moveHistoryHead(app);
2405 /*--------------------------------------------------------------------------*/
2407 * @brief CicoHomeScreen::ShowApp
2412 /*--------------------------------------------------------------------------*/
2414 CicoHomeScreen::ShowApp(const std::string& app)
2416 hs_instance->ShowApp_i(app);
2419 /*--------------------------------------------------------------------------*/
2421 * @brief CicoHomeScreen::HideAppid
2426 /*--------------------------------------------------------------------------*/
2428 CicoHomeScreen::HideApp(const std::string& app)
2430 const char* appid = app.c_str();
2431 ICO_TRA("start %s", appid);
2432 CicoHSAppInfo *ai = GetAppInfo(appid);
2434 ICO_DBG("end %d", appid);
2438 ico_syc_animation_t animation;
2439 animation.name = (char*)ICO_HS_MENU_HIDE_ANIMATION_FADE;
2440 animation.time = ICO_HS_MENU_ANIMATION_DURATION;
2442 int surface = ai->GetLastSurface();
2443 ico_syc_hide(appid, surface, &animation);
2447 /*--------------------------------------------------------------------------*/
2449 * @brief CicoHomeScreen::MoveApp
2455 /*--------------------------------------------------------------------------*/
2457 CicoHomeScreen::MoveApp(const std::string& app, const std::string& zone)
2459 CicoHSAppInfo *appinfo = GetAppInfo((const char*)app.c_str());
2460 if ((CicoHSAppInfo*)0 == appinfo) {
2461 ICO_DBG("GetAppInfo(%s) is NULL" , app.c_str());
2465 int surface = appinfo->GetLastSurface();
2466 ico_hs_window_info* wininfo = appinfo->GetWindowInfobySurface(surface);
2467 int layer = HS_LAYER_APPLICATION;
2468 const char *dispzone = (const char*)zone.c_str();
2469 ico_syc_win_move_t move = {
2470 .zone = (char*)dispzone,
2478 ico_syc_move(wininfo->appid, wininfo->surface, &move,
2479 &hs_instance->moveZoneAnimation);
2481 // vim: set expandtab ts=4 sw=4: