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
10 * @brief Menu Window class
14 #include "CicoHSMenuWindow.h"
15 #include "CicoHSMenuTouch.h"
16 #include "CicoResourceConfig.h"
17 #include "CicoHomeScreen.h"
18 #include "CicoHSSystemState.h"
21 /*============================================================================*/
23 /*============================================================================*/
24 CicoHSMenuWindow *CicoHSMenuWindow::menu_window_instance;
25 int CicoHSMenuWindow::menu_tile_width = 290;
26 int CicoHSMenuWindow::menu_tile_height = 290;
28 /*============================================================================*/
30 /*============================================================================*/
31 /*--------------------------------------------------------------------------*/
33 * @brief CicoHSMenuWindow::CicoHSMenuWindo
39 /*--------------------------------------------------------------------------*/
40 CicoHSMenuWindow::CicoHSMenuWindow(void)
43 terminate_mode = false;
51 for (int ii = 0;ii < ICO_HS_MENU_MAX_TILE_NUM;ii++) {
54 for (int ii = 0;ii < ICO_HS_MENU_MAX_MENU_PAGE_NUM;ii++) {
55 page_pointer[ii] = NULL;
60 menu_window_instance = this;
62 life_cycle_controller = CicoHSLifeCycleController::getInstance();
64 CicoResourceConfig::GetImagePath(img_dir_path, ICO_HS_MAX_PATH_BUFF_LEN);
69 /*--------------------------------------------------------------------------*/
71 * @brief CicoHSMenuWindow::~CicoHSMenuWindo
77 /*--------------------------------------------------------------------------*/
78 CicoHSMenuWindow::~CicoHSMenuWindow(void)
80 /* Do not somthing to do */
83 /*--------------------------------------------------------------------------*/
85 * @brief CicoHSMenuWindow::SetMenuBack
86 * create object and show (background of menu)
91 /*--------------------------------------------------------------------------*/
93 CicoHSMenuWindow::SetMenuBack(void)
95 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
98 snprintf(img_path, sizeof(img_path), "%s%s",
99 img_dir_path, ICO_HS_IMAGE_FILE_MENU_BACK_GROUND);
102 rectangle = evas_object_rectangle_add(evas);
103 if (true == CicoHSSystemState::getInstance()->getNightMode()) {
104 evas_object_color_set(rectangle,0,0,0,178);
107 evas_object_color_set(rectangle,120,120,120,178);
109 evas_object_move(rectangle, 0, 0);
110 evas_object_resize(rectangle, width, height);
111 evas_object_show(rectangle);
114 canvas = evas_object_image_filled_add(evas);
115 evas_object_image_file_set(canvas, img_path, NULL);
116 int err = evas_object_image_load_error_get(canvas);
117 if (err != EVAS_LOAD_ERROR_NONE) {
118 ICO_ERR("CicoHSMenuWindow::SetMenuBack: backgound image is not exist");
119 ICO_TRA("CicoHSMenuWindow::SetMenuBack Leave(ERR)");
120 evas_object_del(canvas);
123 evas_object_event_callback_add(canvas, EVAS_CALLBACK_MOUSE_DOWN,
124 CicoHSMenuTouch::TouchDownMenu,NULL);
125 evas_object_event_callback_add(canvas, EVAS_CALLBACK_MOUSE_UP,
126 CicoHSMenuTouch::TouchUpMenu,NULL);
127 evas_object_move(canvas, 0, 0);
128 evas_object_resize(canvas, width, height);
129 evas_object_show(canvas);
131 ICO_TRA("CicoHSMenuWindow::SetMenuBack Leave(EOK)");
135 /*--------------------------------------------------------------------------*/
137 * @brief CicoHSMenuWindow::FreeMenuBack
138 * free object (background of menu)
143 /*--------------------------------------------------------------------------*/
145 CicoHSMenuWindow::FreeMenuBack(void)
147 evas_object_del(canvas);
148 evas_object_del(rectangle);
151 /*--------------------------------------------------------------------------*/
153 * @brief CicoHSMenuWindow::GetLayout
156 * @param[in] filename layout file name
157 * @param[out] layout layout data
158 * @param[out] num num of tile
161 /*--------------------------------------------------------------------------*/
163 CicoHSMenuWindow::GetLayout(const char *filename,CicoLayoutInfo *layout,int *num)
168 fp = fopen(filename,"r");
173 while( ( ret = fscanf( fp, "%d,%d,%d,%d,%d",
174 &layout[idx].appidx, &layout[idx].page, &layout[idx].position,
175 &layout[idx].tile_width, &layout[idx].tile_height ) ) != EOF ){
183 /*--------------------------------------------------------------------------*/
185 * @brief CicoHSMenuWindow::GetCategory
188 * @param[in] filename category file name
189 * @param[out] category category data
190 * @param[out] num num of category
193 /*--------------------------------------------------------------------------*/
195 CicoHSMenuWindow::GetCategory(const char *filename, int *category, int *num)
200 fp = fopen(filename,"r");
205 while( ( ret = fscanf( fp, "%d", &category[idx]
213 /*--------------------------------------------------------------------------*/
215 * @brief CicoHSMenuWindow::SetLayout
218 * @param[in] filename layout file name
219 * @param[in] layout layout data
220 * @param[in] num num of tile
223 /*--------------------------------------------------------------------------*/
225 CicoHSMenuWindow::SetLayout(const char *filename,CicoLayoutInfo *layout,int num)
230 fp = fopen(filename,"w+");
234 for (int ii = 0;ii < num;ii++) {
235 ret = fprintf(fp, "%d,%d,%d,%d,%d\n",
236 layout[ii].appidx,layout[ii].page,layout[ii].position,
237 layout[ii].tile_width,layout[ii].tile_height);
245 /*--------------------------------------------------------------------------*/
247 * @brief CicoHSMenuWindow::InitAppTiles
248 * Initialization object (tiles)
253 /*--------------------------------------------------------------------------*/
255 CicoHSMenuWindow::InitAppTiles(void)
257 ICO_TRA("CicoHSMenuWindow::InitAppTiles Enter");
262 for (int ii = 0; ii < ICO_HS_MENU_MAX_MENU_CATEGORY_NUM; ii++){
263 category_info[ii].id= 0;
264 category_info[ii].page = 0;
265 category_info[ii].subpage_max = 0;
266 category_info[ii].tile_num = 0;
272 ICO_TRA("CicoHSMenuWindow::InitAppTiles Leave");
275 /*--------------------------------------------------------------------------*/
277 * @brief CicoHSMenuWindow::SetAppTiles
278 * create object and show (tiles)
281 * @return ERROR or OK
283 /*--------------------------------------------------------------------------*/
285 CicoHSMenuWindow::SetAppTiles(void)
288 int category_num = 0;
289 int category[ICO_HS_MENU_MAX_TILE_NUM];
296 /* get APP information */
297 std::vector<CicoAilItems> aillist =
298 life_cycle_controller->getAilList();
300 /* get category infomation */
301 GetCategory(ICO_HS_MENU_CATEGORY_FILE_PATH, category, &category_num);
302 ICO_DBG("CicoHSMenuWindow::SetAppTiles :category_num %d", category_num);
304 for (int ii = 0; ii < category_num ; ii++) {
305 ICO_DBG("CicoHSMenuWindow::SetAppTiles :category[%d] %d", ii, category[ii]);
308 /* other category add */
309 all_category_num = category_num + 1;
312 for (int ii = 0; ii < all_category_num ; ii++) {
315 category_info[ii].id = ICO_HS_MENU_OTHER_CATEGORY_ID;
316 category_info[ii].page = ii;
320 category_info[ii].id = category[ii - 1];
321 category_info[ii].page = ii;
325 /*first time layout*/
326 for (unsigned int ii = 0; ii < aillist.size(); ii++) {
328 /*all application num*/
329 if((aillist[ii].m_noIcon) ||
330 (strcmp(aillist[ii].m_group.c_str(),
331 ICO_HS_GROUP_SPECIAL) == 0)) {
332 ICO_DBG("CicoHSMenuWindow::SetAppTiles :ignore app appid = [%s] noIcon = [%d]",
333 aillist[ii].m_appid.c_str(),aillist[ii].m_noIcon);
336 ICO_DBG("CicoHSMenuWindow::SetAppTiles :SetApp appid = [%s] noIcon =[%d]",
337 aillist[ii].m_appid.c_str(),aillist[ii].m_noIcon);
338 ICO_DBG("CicoHSMenuWindow::SetAppTile :aillist[%d].m_categoryID = [%d]",
339 ii, aillist[ii].m_categoryID);
342 for (ctg_idx = 0; ctg_idx < category_num ; ctg_idx++ ) {
343 if (aillist[ii].m_categoryID == category[ctg_idx]) {
344 SetCategoryInfo(category[ctg_idx]);
345 GetTileInfo(category[ctg_idx], &page, &subpage, &position);
350 /* Other categories */
351 if (ctg_idx == category_num) {
352 SetCategoryInfo(ICO_HS_MENU_OTHER_CATEGORY_ID);
353 GetTileInfo(ICO_HS_MENU_OTHER_CATEGORY_ID,
354 &page, &subpage, &position);
358 menu_tile[tile_num] =
359 new CicoHSMenuTile(aillist[ii].m_appid.c_str(),
360 aillist[ii].m_icon.c_str(),page, subpage, position,
361 CicoHSMenuWindow::Tile_Width(), CicoHSMenuWindow::Tile_Height());
367 all_tile_num = tile_num;
368 all_page_num = all_category_num;
370 for (int ii = 0; ii < all_category_num ; ii++) {
371 ICO_DBG("CicoHSMenuWindow::SetAppTile :category_info[%d].id = [%d]",
372 ii, category_info[ii].id);
373 ICO_DBG("CicoHSMenuWindow::SetAppTile :category_info[%d].subpage_max = [%d]",
374 ii, category_info[ii].subpage_max);
375 ICO_DBG("CicoHSMenuWindow::SetAppTile :category_info[%d].page = [%d]",
376 ii, category_info[ii].page);
377 ICO_DBG("CicoHSMenuWindow::SetAppTile :category_info[%d].tile_num = [%d]",
378 ii , category_info[ii].tile_num);
381 /*in case of over max num*/
382 if (all_page_num > ICO_HS_MENU_MAX_MENU_PAGE_NUM) {
383 all_page_num = ICO_HS_MENU_MAX_MENU_PAGE_NUM;
387 for (int ii = 0; ii < tile_num; ii++) {
388 if (menu_tile[ii] == NULL) {
391 menu_tile[ii]->CreateObject(evas);
392 if (menu_tile[ii]->GetPage() != 0) {
394 menu_tile[ii]->OffsetMove(width,0);
396 if (menu_tile[ii]->GetSubPage() != 0) {
398 menu_tile[ii]->OffsetMove(height,0);
404 /*--------------------------------------------------------------------------*/
406 * @brief CicoHSMenuWindow::FreeAppTiles
407 * free object (tiles)
412 /*--------------------------------------------------------------------------*/
414 CicoHSMenuWindow::FreeAppTiles(void)
416 for (int ii = 0; ii < all_tile_num; ii++) {
417 if (menu_tile[ii] == NULL) {
420 menu_tile[ii]->FreeObject();
421 delete menu_tile[ii];
425 /*--------------------------------------------------------------------------*/
427 * @brief CicoHSMenuWindow::RenewAppTiles
433 /*--------------------------------------------------------------------------*/
435 CicoHSMenuWindow::RenewAppTiles(void)
437 ICO_TRA("CicoHSMenuWindow::RenewAppTiles Enter");
442 /* backup old data */
443 int all_tile_num_org = all_tile_num;
444 CicoHSMenuTile *menu_tile_org[ICO_HS_MENU_MAX_TILE_NUM];
445 for (cnt=0; cnt < all_tile_num_org; cnt++) {
446 menu_tile_org[cnt]=menu_tile[cnt];
455 ICO_ERR("CicoHSMenuWindow::RenewAppTiles: could not make tiles.");
458 /* update app info list */
459 CicoHomeScreen::RenewAppInfoList();
461 /* set thumbnail from org */
462 for (cnt=0; cnt < all_tile_num; cnt++) {
463 if (menu_tile[cnt] == NULL) {
466 for (cnt2=0; cnt2 < all_tile_num_org; cnt2++) {
467 if (menu_tile_org[cnt2] == NULL) {
470 if (strncmp(menu_tile[cnt]->GetAppId(),
471 menu_tile_org[cnt2]->GetAppId(), ICO_HS_MAX_PROCESS_NAME) == 0) {
472 menu_tile[cnt]->SetOrgThumbnail( menu_tile_org[cnt2] );
478 /* free org app tiles */
479 for (cnt2=0; cnt2 < all_tile_num_org; cnt2++) {
480 if (menu_tile_org[cnt2] == NULL) {
483 menu_tile_org[cnt2]->FreeObject();
484 delete menu_tile_org[cnt2];
487 ICO_TRA("CicoHSMenuWindow::RenewAppTiles Leave");
490 /*--------------------------------------------------------------------------*/
492 * @brief CicoHSMenuWindow::SetPagePointer
493 * create object and show (page pointer)
496 * @return ERROR or OK
498 /*--------------------------------------------------------------------------*/
500 CicoHSMenuWindow::SetPagePointer(void)
503 for (int ii = 0; ii < all_page_num; ii++) {
505 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
508 if(ii == current_page){
509 snprintf(img_path,sizeof(img_path),"%s%s",
510 img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_P);
512 snprintf(img_path,sizeof(img_path),"%s%s",
513 img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_N);
516 page_pointer[ii] = evas_object_image_filled_add(evas);
517 evas_object_image_file_set(page_pointer[ii], img_path, NULL);
518 int err = evas_object_image_load_error_get(page_pointer[ii]);
519 if (err != EVAS_LOAD_ERROR_NONE) {
520 ICO_ERR("CicoHSMenuWindow::SetPagePointer: page pointer image is not exist");
521 evas_object_del(page_pointer[ii]);
524 evas_object_event_callback_add(page_pointer[ii],
525 EVAS_CALLBACK_MOUSE_DOWN,
526 CicoHSMenuTouch::TouchDownMenu,NULL);
527 evas_object_event_callback_add(page_pointer[ii],
528 EVAS_CALLBACK_MOUSE_UP,
529 CicoHSMenuTouch::TouchUpMenu,NULL);
531 int pos_x = ICO_HS_MENU_PAGE_POINTER_START_POS_X +
532 (((width - ICO_HS_MENU_PAGE_POINTER_START_POS_X * 2) /
533 all_page_num ) * ii) +
534 (((width - ICO_HS_MENU_PAGE_POINTER_START_POS_X * 2) /
535 all_page_num ) / 2) -
536 (ICO_HS_MENU_PAGE_POINTER_WIDTH / 2);
537 evas_object_move(page_pointer[ii], pos_x,
538 ICO_HS_MENU_PAGE_POINTER_START_POS_Y);
539 evas_object_resize(page_pointer[ii],
540 ICO_HS_MENU_PAGE_POINTER_WIDTH,
541 ICO_HS_MENU_PAGE_POINTER_HEIGHT);
542 evas_object_show(page_pointer[ii]);
547 /*--------------------------------------------------------------------------*/
549 * @brief CicoHSMenuWindow::FreePagePointer
550 * free object (page pointer)
555 /*--------------------------------------------------------------------------*/
557 CicoHSMenuWindow::FreePagePointer(void)
559 for (int ii = 0; ii < all_page_num; ii++) {
560 evas_object_del(page_pointer[ii]);
564 /*--------------------------------------------------------------------------*/
566 * @brief CicoHSMenuWindow::SetTerminateButton
567 * create object and show (terminate button)
570 * @return ERROR or OK
572 /*--------------------------------------------------------------------------*/
574 CicoHSMenuWindow::SetTerminateButton(void)
577 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
582 terminate_back = evas_object_rectangle_add(evas);
583 evas_object_color_set(terminate_back,0,0,0,178);
584 evas_object_move(terminate_back, 0, 0);
585 evas_object_resize(terminate_back, width, height);
586 evas_object_layer_set(terminate_back, ICO_HS_MENU_TERMINATE_BUTTON_LAYER);
588 snprintf(img_path,sizeof(img_path),"%s%s",
589 img_dir_path,ICO_HS_IMAGE_FILE_MENU_TERMINATE_YES);
590 terminate_button_yes = evas_object_image_filled_add(evas);
591 evas_object_image_file_set(terminate_button_yes, img_path, NULL);
592 err = evas_object_image_load_error_get(terminate_button_yes);
593 if (err != EVAS_LOAD_ERROR_NONE) {
594 ICO_ERR("CicoHSMenuWindow::SetTerminateButton: image is not exist");
595 evas_object_del(terminate_button_yes);
598 evas_object_event_callback_add(terminate_button_yes, EVAS_CALLBACK_MOUSE_UP,
599 CicoHSMenuTouch::TouchUpTerminateYes,
601 evas_object_move(terminate_button_yes, width / 2 - 100 - 64,
603 evas_object_resize(terminate_button_yes,100,64);
604 evas_object_layer_set(terminate_button_yes, ICO_HS_MENU_TERMINATE_BUTTON_LAYER);
607 snprintf(img_path,sizeof(img_path),"%s%s",
608 img_dir_path, ICO_HS_IMAGE_FILE_MENU_TERMINATE_NO);
609 terminate_button_no = evas_object_image_filled_add(evas);
610 evas_object_image_file_set(terminate_button_no, img_path, NULL);
611 err = evas_object_image_load_error_get(terminate_button_no);
612 if (err != EVAS_LOAD_ERROR_NONE) {
613 ICO_ERR("CicoHSMenuWindow::SetTerminateButton: image is not exist");
614 evas_object_del(terminate_button_no);
617 evas_object_event_callback_add(terminate_button_no, EVAS_CALLBACK_MOUSE_UP,
618 CicoHSMenuTouch::TouchUpTerminateNo,
620 evas_object_move(terminate_button_no, width / 2 + 64,
622 evas_object_resize(terminate_button_no,100,64);
623 evas_object_layer_set(terminate_button_no, ICO_HS_MENU_TERMINATE_BUTTON_LAYER);
626 snprintf(img_path,sizeof(img_path),"%s%s",
627 img_dir_path,ICO_HS_IMAGE_FILE_MENU_TERMINATE_REALLY);
628 terminate_really = evas_object_image_filled_add(evas);
629 evas_object_image_file_set(terminate_really, img_path, NULL);
630 err = evas_object_image_load_error_get(terminate_really);
631 if (err != EVAS_LOAD_ERROR_NONE) {
632 ICO_ERR("CicoHSMenuWindow::SetTerminateButton: image is not exist");
633 evas_object_del(terminate_really);
636 evas_object_move(terminate_really, width / 2 - 100,
638 evas_object_resize(terminate_really,200,64);
639 evas_object_layer_set(terminate_really, ICO_HS_MENU_TERMINATE_BUTTON_LAYER);
644 /*--------------------------------------------------------------------------*/
646 * @brief CicoHSMenuWindow::FreeTeiminateButton
647 * free object (terminate button)
652 /*--------------------------------------------------------------------------*/
654 CicoHSMenuWindow::FreeTerminateButton(void)
656 evas_object_del(terminate_back);
657 evas_object_del(terminate_really);
658 evas_object_del(terminate_button_yes);
659 evas_object_del(terminate_button_no);
662 /*--------------------------------------------------------------------------*/
664 * @brief CicoHSMenuWindow::ShowTerminateButton
665 * show terminate button
668 * @return ERROR or OK
670 /*--------------------------------------------------------------------------*/
672 CicoHSMenuWindow::ShowTerminateButton(void)
674 evas_object_show(terminate_back);
675 evas_object_show(terminate_really);
676 evas_object_show(terminate_button_yes);
677 evas_object_show(terminate_button_no);
680 /*--------------------------------------------------------------------------*/
682 * @brief CicoHSMenuWindow::HideTerminateButton
683 * show terminate button
688 /*--------------------------------------------------------------------------*/
690 CicoHSMenuWindow::HideTerminateButton(void)
692 evas_object_hide(terminate_back);
693 evas_object_hide(terminate_really);
694 evas_object_hide(terminate_button_yes);
695 evas_object_hide(terminate_button_no);
698 /*--------------------------------------------------------------------------*/
700 * @brief CicoHSMenuWindow::SetPageCursor
701 * create object and show (page cursor)
704 * @return ERROR or OK
706 /*--------------------------------------------------------------------------*/
708 CicoHSMenuWindow::SetPageCursor(void)
710 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
713 snprintf(img_path,sizeof(img_path),"%s%s",
714 img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGE_UP_CURSOR);
717 page_up_cursor = evas_object_image_filled_add(evas);
718 evas_object_image_file_set(page_up_cursor, img_path, NULL);
719 int err = evas_object_image_load_error_get(page_up_cursor);
720 if (err != EVAS_LOAD_ERROR_NONE) {
721 ICO_ERR("CicoHSMenuWindow::SetPagePointer: page up cursor image is not exist");
722 evas_object_del(page_up_cursor);
726 evas_object_move(page_up_cursor, ICO_HS_MENU_PAGE_UP_CURSOR_START_POS_X,
727 ICO_HS_MENU_PAGE_UP_CURSOR_START_POS_Y);
728 evas_object_resize(page_up_cursor,
729 ICO_HS_MENU_PAGE_UP_CURSOR_WIDTH,
730 ICO_HS_MENU_PAGE_UP_CURSOR_HEIGHT);
733 snprintf(img_path,sizeof(img_path),"%s%s",
734 img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGE_DOWN_CURSOR);
737 page_down_cursor = evas_object_image_filled_add(evas);
738 evas_object_image_file_set(page_down_cursor, img_path, NULL);
739 err = evas_object_image_load_error_get(page_down_cursor);
740 if (err != EVAS_LOAD_ERROR_NONE) {
741 ICO_ERR("CicoHSMenuWindow::SetPagePointer: page down cursor image is not exist");
742 evas_object_del(page_down_cursor);
746 evas_object_move(page_down_cursor, ICO_HS_MENU_PAGE_DOWN_CURSOR_START_POS_X,
747 ICO_HS_MENU_PAGE_DOWN_CURSOR_START_POS_Y);
748 evas_object_resize(page_down_cursor,
749 ICO_HS_MENU_PAGE_DOWN_CURSOR_WIDTH,
750 ICO_HS_MENU_PAGE_DOWN_CURSOR_HEIGHT);
757 /*--------------------------------------------------------------------------*/
759 * @brief CicoHSMenuWindow::FreePageCursor
760 * free object (page cursor)
765 /*--------------------------------------------------------------------------*/
767 CicoHSMenuWindow::FreePageCursor(void)
769 evas_object_del(page_up_cursor);
770 evas_object_del(page_down_cursor);
773 /*--------------------------------------------------------------------------*/
775 * @brief CicoHSMenuWindow::CreateMenuWindow
776 * Create menu window (page pointer)
778 * @param[in] pos_x window position x
779 * @param[in] pos_y window position y
780 * @param[in] width window width
781 * @param[in] height window height
784 /*--------------------------------------------------------------------------*/
786 CicoHSMenuWindow::CreateMenuWindow(int pos_x, int pos_y, int width, int height)
791 ret = CreateWindow(ICO_HS_MENU_WINDOW_TITLE,
792 pos_x, pos_y, width, height, EINA_TRUE);
798 CicoHSMenuWindow::menu_tile_width = (width - (ICO_HS_MENUTILE_START_POS_X * 2)
799 - (ICO_HS_MENUTILE_SPACE_TILE_AND_TILE
800 * (ICO_HS_MENUTILE_ROW-1)))
801 / ICO_HS_MENUTILE_ROW;
802 if (CicoHSMenuWindow::menu_tile_width < 150) {
803 CicoHSMenuWindow::menu_tile_width = 150;
805 CicoHSMenuWindow::menu_tile_height = (height - (ICO_HS_STATUSBAR_WINDOW_HEIGHT
806 + ICO_HS_CONTROLBAR_WINDOW_HEIGHT
807 + ICO_HS_MENUTILE_HEIGHT + 8)
808 - (ICO_HS_MENUTILE_SPACE_TILE_AND_TILE
809 * (ICO_HS_MENUTILE_COLUMN-1)))
810 / ICO_HS_MENUTILE_COLUMN;
811 if (CicoHSMenuWindow::menu_tile_height < 150) {
812 CicoHSMenuWindow::menu_tile_height = 150;
814 ICO_DBG("CicoHSMenuWindow::CreateMenuWindow: tile size(w/h)=%d/%d",
815 CicoHSMenuWindow::menu_tile_width, CicoHSMenuWindow::menu_tile_height);
816 if (CicoHSMenuWindow::menu_tile_width > CicoHSMenuWindow::menu_tile_height) {
817 CicoHSMenuWindow::menu_tile_width = CicoHSMenuWindow::menu_tile_height;
820 CicoHSMenuWindow::menu_tile_height = CicoHSMenuWindow::menu_tile_width;
824 evas = ecore_evas_get(window);
826 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not get evas.");
833 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not make back ground.");
840 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not make tiles.");
847 ret = SetPagePointer();
849 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not make page pointer.");
857 ret = SetPageCursor();
859 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not make page cursor.");
867 /* Terminate Button */
868 ret = SetTerminateButton();
870 ICO_ERR("CicoHSMenuWindow::CreateMenuWindow: could not make teminate button.");
879 /* Initialize Action*/
880 CicoHSMenuTouch::Initialize(this);
885 /*--------------------------------------------------------------------------*/
887 * @brief CicoHSMenuWindow::FreeMenuWindow
893 /*--------------------------------------------------------------------------*/
895 CicoHSMenuWindow::FreeMenuWindow(void)
897 FreeTerminateButton();
905 /*--------------------------------------------------------------------------*/
907 * @brief CicoHSMenuWindow::MoveToNextAnimation
908 * animation parts (move to next)
914 /*--------------------------------------------------------------------------*/
916 CicoHSMenuWindow::MoveToNextAnimation(void *data,double pos)
919 double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_LINEAR, 0.5, 1);
920 current_page = reinterpret_cast<int>(data);
922 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
923 if (menu_window_instance->menu_tile[ii] == NULL) {
926 if ((menu_window_instance->menu_tile[ii]->GetPage() != current_page -1) ||
927 (menu_window_instance->menu_tile[ii]->GetSubPage() != 0)) {
930 menu_window_instance->menu_tile[ii]->OffsetMove(-1 *
931 (menu_window_instance->width * frame),0);
934 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
935 if (menu_window_instance->menu_tile[ii] == NULL) {
938 if ((menu_window_instance->menu_tile[ii]->GetPage() != current_page) ||
939 (menu_window_instance->menu_tile[ii]->GetSubPage() != 0)) {
942 menu_window_instance->menu_tile[ii]->
943 OffsetMove(menu_window_instance->width
944 - (menu_window_instance->width * frame),0);
949 /*--------------------------------------------------------------------------*/
951 * @brief CicoHSMenuWindow::MoveToBackAnimation
952 * animation parts (move to back)
958 /*--------------------------------------------------------------------------*/
960 CicoHSMenuWindow::MoveToBackAnimation(void *data,double pos)
963 double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_LINEAR, 0.5, 1);
964 current_page = reinterpret_cast<int>(data);
966 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
967 if (menu_window_instance->menu_tile[ii] == NULL) {
970 if ((menu_window_instance->menu_tile[ii]->GetPage() != current_page) ||
971 (menu_window_instance->menu_tile[ii]->GetSubPage() != 0)) {
974 menu_window_instance->menu_tile[ii]->OffsetMove(-1 *
975 menu_window_instance->width +
976 (menu_window_instance->width * frame),0);
978 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
979 if (menu_window_instance->menu_tile[ii] == NULL) {
982 if ((menu_window_instance->menu_tile[ii]->GetPage() != current_page + 1) ||
983 (menu_window_instance->menu_tile[ii]->GetSubPage() != 0)) {
986 menu_window_instance->menu_tile[ii]->
987 OffsetMove(menu_window_instance->width * frame,0);
992 /*--------------------------------------------------------------------------*/
994 * @brief CicoHSMenuWindow::MoveToNextSubAnimation
995 * animation parts (move to next)
1001 /*--------------------------------------------------------------------------*/
1003 CicoHSMenuWindow::MoveToNextSubAnimation(void *data,double pos)
1005 CicoCurrentPage *current_info;
1006 double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_LINEAR, 0.5, 1);
1007 current_info = (CicoCurrentPage *)(data);
1009 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
1010 if (menu_window_instance->menu_tile[ii] == NULL) {
1013 if (menu_window_instance->menu_tile[ii]->GetSubPage()
1014 != current_info->subcurrent_page -1) {
1017 if (menu_window_instance->menu_tile[ii]->GetPage() != current_info->current_page) {
1020 menu_window_instance->menu_tile[ii]->
1021 OffsetMove(0, -1 * (menu_window_instance->height * frame));
1024 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
1025 if (menu_window_instance->menu_tile[ii] == NULL) {
1028 if (menu_window_instance->menu_tile[ii]->GetSubPage()
1029 != current_info->subcurrent_page) {
1033 if (menu_window_instance->menu_tile[ii]->GetPage() != current_info->current_page) {
1036 menu_window_instance->menu_tile[ii]->OffsetMove(0, menu_window_instance->height -
1037 (menu_window_instance->height * frame));
1042 /*--------------------------------------------------------------------------*/
1044 * @brief CicoHSMenuWindow::MoveToBackAnimation
1045 * animation parts (move to back)
1051 /*--------------------------------------------------------------------------*/
1053 CicoHSMenuWindow::MoveToBackSubAnimation(void *data,double pos)
1056 CicoCurrentPage *current_info;
1057 double frame = ecore_animator_pos_map(pos, ECORE_POS_MAP_LINEAR, 0.5, 1);
1058 current_info = (CicoCurrentPage *)(data);
1060 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
1061 if (menu_window_instance->menu_tile[ii] == NULL) {
1064 if (menu_window_instance->menu_tile[ii]->GetSubPage()
1065 != current_info->subcurrent_page) {
1068 if (menu_window_instance->menu_tile[ii]->GetPage() != current_info->current_page) {
1071 menu_window_instance->menu_tile[ii]->
1072 OffsetMove(0, -1 * menu_window_instance->height +
1073 (menu_window_instance->height * frame));
1075 for (int ii = 0;ii < menu_window_instance->all_tile_num;ii++) {
1076 if (menu_window_instance->menu_tile[ii] == NULL) {
1079 if (menu_window_instance->menu_tile[ii]->GetSubPage()
1080 != current_info->subcurrent_page + 1) {
1083 if (menu_window_instance->menu_tile[ii]->GetPage() != current_info->current_page) {
1086 menu_window_instance->menu_tile[ii]->
1087 OffsetMove(0, menu_window_instance->height * frame);
1092 /*--------------------------------------------------------------------------*/
1094 * @brief CicoHSMenuWindow::GoNextMenu
1095 * menu change to next
1100 /*--------------------------------------------------------------------------*/
1102 CicoHSMenuWindow::GoNextMenu(void)
1104 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
1106 if ((current_page >= all_page_num -1) || (subcurrent_page > 0)) {
1111 snprintf(img_path, sizeof(img_path), "%s%s",
1112 img_dir_path, ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_N);
1113 evas_object_image_file_set(page_pointer[current_page], img_path, NULL);
1118 /* display cursor */
1119 DspCtrlPageCursor();
1122 snprintf(img_path, sizeof(img_path), "%s%s",
1123 img_dir_path, ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_P);
1124 evas_object_image_file_set(page_pointer[current_page], img_path, NULL);
1127 ecore_animator_frametime_set(1.0f / 30);
1128 ecore_animator_timeline_add(0.4, MoveToNextAnimation,
1129 reinterpret_cast<void*>(current_page));
1132 /*--------------------------------------------------------------------------*/
1134 * @brief CicoHSMenuWindow::GoNextMenu
1135 * menu change to back
1140 /*--------------------------------------------------------------------------*/
1142 CicoHSMenuWindow::GoBackMenu(void)
1144 char img_path[ICO_HS_MAX_PATH_BUFF_LEN];
1146 if((current_page <= 0) || (subcurrent_page > 0)){
1151 snprintf(img_path,sizeof(img_path),"%s%s",img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_N);
1152 evas_object_image_file_set(page_pointer[current_page], img_path, NULL);
1157 /* display cursor */
1158 DspCtrlPageCursor();
1161 snprintf(img_path,sizeof(img_path),"%s%s",img_dir_path,ICO_HS_IMAGE_FILE_MENU_PAGEPOINTER_P);
1162 evas_object_image_file_set(page_pointer[current_page], img_path, NULL);
1165 ecore_animator_frametime_set(1.0f / 30);
1166 ecore_animator_timeline_add(0.4, MoveToBackAnimation,
1167 reinterpret_cast<void*>(current_page));
1171 /*--------------------------------------------------------------------------*/
1173 * @brief CicoHSMenuWindow::DownNextMenu
1174 * menu change to next
1179 /*--------------------------------------------------------------------------*/
1181 CicoHSMenuWindow::DownNextMenu(void)
1183 for (int i = 0; i < all_category_num; i++) {
1184 if (current_page == category_info[i].page) {
1185 if (subcurrent_page >= category_info[i].subpage_max){
1194 /* display cursor */
1195 DspCtrlPageCursor();
1197 /* current page set */
1198 current_info.current_page = current_page;
1199 current_info.subcurrent_page = subcurrent_page;
1202 ecore_animator_frametime_set(1.0f / 30);
1203 ecore_animator_timeline_add(0.4, MoveToNextSubAnimation,
1204 (void*)(¤t_info));
1207 /*--------------------------------------------------------------------------*/
1209 * @brief CicoHSMenuWindow::UpBackMenu
1210 * menu change to back
1215 /*--------------------------------------------------------------------------*/
1217 CicoHSMenuWindow::UpBackMenu(void)
1219 if(subcurrent_page <= 0){
1226 /* display cursor */
1227 DspCtrlPageCursor();
1229 /* current page set */
1230 current_info.current_page = current_page;
1231 current_info.subcurrent_page = subcurrent_page;
1234 ecore_animator_frametime_set(1.0f / 30);
1235 ecore_animator_timeline_add(0.4, MoveToBackSubAnimation,
1236 (void*)(¤t_info));
1239 /*--------------------------------------------------------------------------*/
1241 * @brief CicoHSMenuWindow::DspCtrlPageCursor
1242 * display control page cursor
1247 /*--------------------------------------------------------------------------*/
1249 CicoHSMenuWindow::DspCtrlPageCursor(void)
1251 int subpage_max = 0;
1252 for (int i = 0; i < all_category_num ; i++) {
1253 if (current_page == category_info[i].page) {
1254 subpage_max = category_info[i].subpage_max;
1259 if (subcurrent_page > 0) {
1260 evas_object_show(page_up_cursor);
1263 evas_object_hide(page_up_cursor);
1266 if (subcurrent_page < subpage_max) {
1267 evas_object_show(page_down_cursor);
1270 evas_object_hide(page_down_cursor);
1274 /*--------------------------------------------------------------------------*/
1276 * @brief CicoHSMenuWindow::SetCategoryInfo
1279 * @param[in] id menu category id
1282 /*--------------------------------------------------------------------------*/
1284 CicoHSMenuWindow::SetCategoryInfo(int id)
1286 for (int i = 0; i < all_category_num ; i++) {
1287 if (category_info[i].id == id) {
1289 category_info[i].subpage_max =
1290 category_info[i].tile_num / ICO_HS_MENUTILE_NUM;
1293 category_info[i].tile_num++;
1298 /*--------------------------------------------------------------------------*/
1300 * @brief CicoHSMenuWindow::GetTileInfo
1303 * @param[in] id menu category id
1304 * @param[out] page menu page
1305 * @param[out] subpage menu sub page
1306 * @param[out] position menu tile position
1309 /*--------------------------------------------------------------------------*/
1311 CicoHSMenuWindow::GetTileInfo(int id, int *page, int *subpage, int *position)
1313 for (int i = 0; i < all_category_num ; i++) {
1314 if (category_info[i].id == id) {
1315 if (category_info[i].tile_num == 0) {
1316 ICO_ERR("CicoHSMenuWindow::GetTileInfo: number of tiles is 0.");
1321 *page = category_info[i].page;
1323 *subpage = (category_info[i].tile_num -1) / ICO_HS_MENUTILE_NUM;
1325 *position = (category_info[i].tile_num -1) % ICO_HS_MENUTILE_NUM;
1330 /*--------------------------------------------------------------------------*/
1332 * @brief CicoHSMenuWindow::SetMenuWindowID
1333 * set appid and surface
1338 /*--------------------------------------------------------------------------*/
1340 CicoHSMenuWindow::SetMenuWindowID(const char *appid,int surface)
1342 strncpy(this->appid,appid,ICO_HS_MAX_PROCESS_NAME);
1343 this->surface = surface;
1346 /*--------------------------------------------------------------------------*/
1348 * @brief CicoHSMenuWindow::Show
1354 /*--------------------------------------------------------------------------*/
1356 CicoHSMenuWindow::Show(ico_syc_animation_t *animation)
1358 ICO_TRA("CicoHSMenuWindow::Show Enter");
1360 // if regulation == true, forbid show window.
1361 if (true == CicoHSSystemState::getInstance()->getRegulation()) {
1366 if (true == life_cycle_controller->isAilRenew()) {
1367 ICO_DBG("CicoHSMenuWindow::Show : renew app tiles");
1369 life_cycle_controller->ailRenewFlagOff();
1373 for (int ii = 0; ii < all_tile_num; ii++) {
1374 if (menu_tile[ii]) {
1375 menu_tile[ii]->ShowMenu(true);
1379 ico_syc_show(appid, surface, animation);
1381 ICO_TRA("CicoHSMenuWindow::Show Leave");
1384 /*--------------------------------------------------------------------------*/
1386 * @brief CicoHSMenuWindow::Hide
1392 /*--------------------------------------------------------------------------*/
1394 CicoHSMenuWindow::Hide(ico_syc_animation_t *animation)
1396 ICO_TRA("CicoHSMenuWindow::Hide Enter");
1398 if(terminate_mode == true){
1401 m_showState = false;
1402 ico_syc_hide(appid,surface,animation);
1405 for (int ii = 0; ii < all_tile_num; ii++) {
1406 if (menu_tile[ii]) {
1407 menu_tile[ii]->ShowMenu(false);
1411 ICO_TRA("CicoHSMenuWindow::Hide Leave");
1414 /*--------------------------------------------------------------------------*/
1416 * @brief CicoHSMenuWindow::ExecuteApp
1417 * execute application
1419 * @param[in] appid application id
1422 /*--------------------------------------------------------------------------*/
1424 CicoHSMenuWindow::ExecuteApp(const char *appid)
1426 if(terminate_mode == true){
1427 ICO_DBG("CicoHSMenuWindow::ExecuteApp: exet %s but terminate_mode", appid);
1430 CicoHomeScreen::ExecuteApp(appid);
1433 /*--------------------------------------------------------------------------*/
1435 * @brief CicoHSMenuWindow::TerminateApp
1436 * teminate application
1438 * @param[in] appid application id
1441 /*--------------------------------------------------------------------------*/
1443 CicoHSMenuWindow::TerminateApp(const char *appid)
1445 CicoHomeScreen::TerminateApp(appid);
1447 HideTerminateButton();
1451 /*--------------------------------------------------------------------------*/
1453 * @brief CicoHSMenuWindow::ChangeTerminateMode
1454 * change to terminate mode
1459 /*--------------------------------------------------------------------------*/
1461 CicoHSMenuWindow::ChangeTerminateMode(void)
1466 for (int ii = 0; ii < all_tile_num; ii++) {
1467 if(menu_tile[ii] == NULL){
1470 if(CicoHomeScreen::GetAppStatus(menu_tile[ii]->GetAppId()) == true){
1480 for (int ii = 0; ii < all_tile_num; ii++) {
1481 if(menu_tile[ii] == NULL){
1484 if(CicoHomeScreen::GetAppStatus(menu_tile[ii]->GetAppId()) == false){
1487 menu_tile[ii]->ShowTermIcon();
1489 terminate_mode = true;
1490 ICO_DBG("CicoHSMenuWindow::ChangeTerminateMode: change to terminate mode");
1493 /*--------------------------------------------------------------------------*/
1495 * @brief CicoHSMenuWindow::ChangeNormalMode
1496 * change to terminate mode
1501 /*--------------------------------------------------------------------------*/
1503 CicoHSMenuWindow::ChangeNormalMode(void)
1506 for (int ii = 0; ii < all_tile_num; ii++) {
1507 if(menu_tile[ii] == NULL){
1510 menu_tile[ii]->HideTermIcon();
1512 terminate_mode = false;
1513 ICO_DBG("CicoHSMenuWindow::ChangeNormalMode: change to normal mode");
1516 /*--------------------------------------------------------------------------*/
1518 * @brief CicoHSMenuWindow::ValidMenuIcon
1521 * @param[in] appid application ID
1524 /*--------------------------------------------------------------------------*/
1526 CicoHSMenuWindow::ValidMenuIcon(const char *appid)
1528 ICO_DBG("CicoHSMenuWindow::ValidMenuIcon(%s)", appid ? appid : "(NULL)" );
1529 for (int ii = 0; ii < all_tile_num; ii++) {
1530 if (strncmp(menu_tile[ii]->GetAppId(), appid, ICO_HS_MAX_PROCESS_NAME) == 0) {
1531 menu_tile[ii]->ValidMenuIcon();
1537 /*--------------------------------------------------------------------------*/
1539 * @brief CicoHSMenuWindow::ValidThumbnail
1542 * @param[in] appid application ID
1543 * @param[in] surface surface
1546 /*--------------------------------------------------------------------------*/
1548 CicoHSMenuWindow::ValidThumbnail(const char *appid, int surface)
1550 for (int ii = 0; ii < all_tile_num; ii++) {
1551 if (strncmp(menu_tile[ii]->GetAppId(), appid, ICO_HS_MAX_PROCESS_NAME) == 0) {
1552 menu_tile[ii]->ValidThumbnail(surface);
1558 /*--------------------------------------------------------------------------*/
1560 * @brief CicoHSMenuWindow::SetThumbnail
1563 * @param[in] appid application ID
1564 * @param[in] info thumbnail information
1567 /*--------------------------------------------------------------------------*/
1569 CicoHSMenuWindow::SetThumbnail(const char *appid, ico_syc_thumb_info_t *info)
1571 for (int ii = 0; ii < all_tile_num; ii++) {
1572 if (strncmp(menu_tile[ii]->GetAppId(), appid, ICO_HS_MAX_PROCESS_NAME) == 0) {
1573 menu_tile[ii]->SetThumbnail(info);
1579 /*--------------------------------------------------------------------------*/
1581 * @brief CicoHSMenuWindow::SetNightMode
1582 * set night mode color theme chagne
1587 /*--------------------------------------------------------------------------*/
1589 CicoHSMenuWindow::SetNightMode(void)
1591 ICO_TRA("CicoHSMenuWindow::SetNightMode Enter");
1592 if (true == CicoHSSystemState::getInstance()->getNightMode()) {
1593 evas_object_color_set(rectangle,0,0,0,178);
1596 evas_object_color_set(rectangle,120,120,120,178);
1598 ICO_TRA("CicoHSMenuWindow::SetNightMode Leave");
1601 /*--------------------------------------------------------------------------*/
1603 * @brief CicoHSMenuWindow::Tile_Width
1607 * @return tile width
1609 /*--------------------------------------------------------------------------*/
1611 CicoHSMenuWindow::Tile_Width(void)
1613 return CicoHSMenuWindow::menu_tile_width;
1616 /*--------------------------------------------------------------------------*/
1618 * @brief CicoHSMenuWindow::Tile_Height
1622 * @return tile height
1624 /*--------------------------------------------------------------------------*/
1626 CicoHSMenuWindow::Tile_Height(void)
1628 return CicoHSMenuWindow::menu_tile_height;
1630 // vim: set expandtab ts=4 sw=4: