?? guinavigation.cpp.svn-base
字號:
// items[count]->text = items[count]->lang[GetLang()]; SET_LANG(items, count); count++; } m_osdPages[m_activePageId]->lists[listIndex]->nbItemsDisplayed = totalitems; // ARM-elf-gcc generate an error at compilation if redraw is directly affected to m_osdPages structure // this is a work around, but we need to upgrade to arm-elf-gcc 2.95.3 to get rid of this hack m_osdPages[m_activePageId]->lists[listIndex]->object.hasfocus = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->object.redraw = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->object.visible = TRUE; gfxScrolList(m_pRua, &(m_osdPages[m_activePageId]->object), &(m_osdPages[m_activePageId]->lists[listIndex]->object), items, totalitems, m_List.numItems, direction); //m_gui->gui->SetTimer(TIMER_WAIT_ANIMATION, 120); return RM_OK;}RMstatus RMcuracaoGuiNavigation::ScrollSubList(RMuint8 listIndex, RMGuiObjectSelectDirection direction){ RMListItemObject *items[MAX_GUI_LISTITEMS]; //RMTextItemObject txitems[MAX_GUI_TEXTITEMS]; RMuint16 firstitem = 0, lastitem = 0, totalitems = 0; RMuint16 count, parent_selected, numitemsPerPage, numItems; m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE); if (listIndex > MAX_GUI_LISTS) return RM_ERROR; parent_selected = m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem; numItems = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->nbItems; // get from gfx how many items we can display per page numitemsPerPage = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.numitemsPerPage;//gfxGetListItemsPerPage(m_pRua, &m_osdPages[m_activePageId]->lists[listIndex]->object); //if(m_List.numitemsPerPage == 0) // return RM_ERROR; //m_List.numPages = m_List.numItems / m_List.numitemsPerPage + (m_List.numItems % m_List.numitemsPerPage ? 1 : 0); // display current pagem_List.numItems = m_osdPages[pageID]->lists[listIndex]->nbItems; RMMemset(items, 0, sizeof(items)); // copy page to draw if (m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.firstvisible == m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.lastvisible) { m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.firstvisible = 0; firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.firstvisible; totalitems = ((firstitem + numitemsPerPage - 1) < (RMuint16) numItems) ? numitemsPerPage - 1 : numItems - firstitem; m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.lastvisible = firstitem + totalitems - 1; lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.lastvisible; } else { firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.firstvisible; totalitems = ((firstitem + numitemsPerPage) < (RMuint16) numItems) ? (firstitem == m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.selecteditem) ? numitemsPerPage : numitemsPerPage + 1 : numItems - firstitem; // if(firstitem == m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem) // totalitems --; lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.lastvisible; //totalitems = lastitem - firstitem; } count = 0; for (RMuint16 i = firstitem; i <= lastitem; i++) { //RMMemcpy(&items[count], &m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->items[i]->object, sizeof(RMListItemObject)); items[count] = &m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->items[i]->object;// if(items[count])// items[count]->text = items[count]->lang[GetLang()]; SET_LANG(items, count); count++; } m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->nbItemsDisplayed = totalitems; // ARM-elf-gcc generate an error at compilation if redraw is directly affected to m_osdPages structure // this is a work around, but we need to upgrade to arm-elf-gcc 2.95.3 to get rid of this hack m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.hasfocus = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.redraw = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object.visible = TRUE; gfxScrolSubList(m_pRua, &(m_osdPages[m_activePageId]->object), &(m_osdPages[m_activePageId]->lists[listIndex]->items[parent_selected]->list->object), items, totalitems, numItems, direction); //m_gui->gui->SetTimer(TIMER_WAIT_ANIMATION, 120); return RM_OK;}RMstatus RMcuracaoGuiNavigation::ScrollInfoList(RMuint8 listIndex, RMGuiObjectSelectDirection direction){ RMListItemObject *items[MAX_GUI_LISTITEMS]; RMTextItemObject txitems[MAX_GUI_TEXTITEMS]; RMTextItemObject txitems_old[MAX_GUI_TEXTITEMS]; RMuint16 totalitems = 3; RMuint16 count, selected, prevselected; if (listIndex > MAX_GUI_LISTS) return RM_ERROR; m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE); m_List.numItems = m_osdPages[m_activePageId]->lists[listIndex]->nbItems; // get from gfx how many items we can display per page m_List.numitemsPerPage = m_osdPages[m_activePageId]->lists[listIndex]->object.numitemsPerPage;//gfxGetListItemsPerPage(m_pRua, &m_osdPages[m_activePageId]->lists[listIndex]->object); selected = m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem; prevselected = m_osdPages[m_activePageId]->lists[listIndex]->object.previouslyselecteditem; if (m_List.numitemsPerPage == 0) return RM_ERROR; m_List.numPages = m_List.numItems / m_List.numitemsPerPage + (m_List.numItems % m_List.numitemsPerPage ? 1 : 0); // display current pagem_List.numItems = m_osdPages[pageID]->lists[listIndex]->nbItems; RMMemset(items, 0, sizeof(items)); totalitems = 4; if (direction == SELECT_LEFT) { RMuint16 prev = 0; // RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object, sizeof(RMListItemObject)); items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object; if (selected == 0) { // RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject)); // items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object; items[0] = NULL; } else { // RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object, sizeof(RMListItemObject)); items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object; } if (selected == m_List.numItems - 1) { prev = 0; // RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject)); // items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object; items[2] = NULL; } else { prev = selected + 1; // RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object, sizeof(RMListItemObject)); items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object; } if (prev == m_List.numItems - 1) { // RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject)); // items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object; items[3] = NULL; } else { // RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object, sizeof(RMListItemObject)); items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[prev + 1]->object; } } else { RMuint16 prev = 0; // RMMemcpy(&items[2], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object, sizeof(RMListItemObject)); items[2] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object; if (selected == 0) { prev = m_List.numItems - 1; // RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject)); // items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object; items[1] = NULL; } else { prev = selected - 1; // RMMemcpy(&items[1], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object, sizeof(RMListItemObject)); items[1] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected - 1]->object; } if (selected == m_List.numItems - 1) { // RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object, sizeof(RMListItemObject)); // items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[0]->object; items[3] = NULL; } else { // RMMemcpy(&items[3], &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object, sizeof(RMListItemObject)); items[3] = &m_osdPages[m_activePageId]->lists[listIndex]->items[selected + 1]->object; } if (prev == 0) { // RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object, sizeof(RMListItemObject)); // items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[m_List.numItems - 1]->object; items[0] = NULL; } else { // RMMemcpy(&items[0], &m_osdPages[m_activePageId]->lists[listIndex]->items[prev - 1]->object, sizeof(RMListItemObject)); items[0] = &m_osdPages[m_activePageId]->lists[listIndex]->items[prev - 1]->object; } } if (m_osdPages[m_activePageId]->lists[listIndex]->object.hasInfo) { for (RMuint16 i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++) { RMMemcpy(&txitems[i], &m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->object, sizeof(RMTextItemObject)); } for (RMuint16 i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++) { RMMemcpy(&txitems_old[i], &m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->object, sizeof(RMTextItemObject)); } } count = 4; if (m_osdPages[m_activePageId]->lists[listIndex]->object.hasInfo) { m_osdPages[m_activePageId]->lists[listIndex]->info->object.redraw = TRUE; for (int i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++) { // if(RM ) if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "DirectorName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.director); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "StarringName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.actors); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RunTimeName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.time); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RelDateName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.releace); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "PriceName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.price); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "SubtitlesName")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.subtitles); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "Description")) { txitems[i].update = TRUE; RMCopyAscii(txitems[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->object.description); } } for (int i = 0; i < m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems; i++) { // if(RM ) if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "DirectorName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.director); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "StarringName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.actors); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RunTimeName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.time); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "RelDateName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.releace); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "PriceName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.price); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "SubtitlesName")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.subtitles); } if (RMCompareAscii(m_osdPages[m_activePageId]->lists[listIndex]->info->items[i]->name, "Description")) { txitems_old[i].update = TRUE; RMCopyAscii(txitems_old[i].text, m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->object.description); } } } m_osdPages[m_activePageId]->lists[listIndex]->nbItemsDisplayed = totalitems; m_osdPages[m_activePageId]->lists[listIndex]->object.hasfocus = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->object.redraw = TRUE; m_osdPages[m_activePageId]->lists[listIndex]->object.visible = TRUE; gfxScrolTextTableBitmaped(m_pRua, &(m_osdPages[m_activePageId]->object), &(m_osdPages[m_activePageId]->lists[listIndex]->info->object), &(m_osdPages[m_activePageId]->lists[listIndex]->object), txitems, txitems_old, items, m_osdPages[m_activePageId]->lists[listIndex]->info->nbItems, totalitems, direction); // gfxScrolListList(m_pRua, &(m_osdPages[m_activePageId]->object), // &(m_osdPages[m_activePageId]->lists[listIndex]->object), // &(m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object), // &(m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object), // items, subitems, subitems_prev, totalitems, totalsubitems, totalsubitems_prev, direction); //m_gui->gui->SetTimer(TIMER_WAIT_ANIMATION, 120); return RM_OK;}RMstatus RMcuracaoGuiNavigation::ScrollListList(RMuint8 listIndex, RMGuiObjectSelectDirection direction){ RMListItemObject *items[MAX_GUI_LISTITEMS]; RMListItemObject *subitems[MAX_GUI_LISTITEMS]; RMListItemObject *subitems_prev[MAX_GUI_LISTITEMS]; RMuint16 firstitem = 0, lastitem = 0, totalitems = 3, totalsubitems = 0, firstitem_prev = 0, lastitem_prev = 0, totalsubitems_prev = 0; RMuint16 count, subcount, subcountprev, selected, prevselected; if (listIndex > MAX_GUI_LISTS) return RM_ERROR; printf("scroll list direction %d\n", direction); m_gui->gui->KillTimer(TIMER_WAIT_ANIMATION, FALSE); m_List.numItems = m_osdPages[m_activePageId]->lists[listIndex]->nbItems; // get from gfx how many items we can display per page m_List.numitemsPerPage = m_osdPages[m_activePageId]->lists[listIndex]->object.numitemsPerPage;//gfxGetListItemsPerPage(m_pRua, &m_osdPages[m_activePageId]->lists[listIndex]->object); selected = m_osdPages[m_activePageId]->lists[listIndex]->object.selecteditem; prevselected = m_osdPages[m_activePageId]->lists[listIndex]->object.previouslyselecteditem; if (m_List.numitemsPerPage == 0) return RM_ERROR; m_List.numPages = m_List.numItems / m_List.numitemsPerPage + (m_List.numItems % m_List.numitemsPerPage ? 1 : 0); // display current pagem_List.numItems = m_osdPages[pageID]->lists[listIndex]->nbItems; RMMemset(items, 0, sizeof(items)); RMMemset(subitems, 0, sizeof(subitems)); RMMemset(subitems_prev, 0, sizeof(subitems_prev)); RMuint8 numItemsPage = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.numitemsPerPage; RMuint32 numItems = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->nbItems; RMuint8 numItemsPagePrev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.numitemsPerPage; RMuint32 numItemsPrev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->nbItems; // copy page to draw if (m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible == m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible) { m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible = 0; firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible; totalsubitems = ((firstitem + numItemsPage - 1) < (RMuint16) numItems) ? numItemsPage - 1 : numItems - firstitem; m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible = firstitem + totalsubitems - 1; lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible; } else { firstitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.firstvisible; // printf("firstvisible %d \n", firstitem); totalsubitems = ((firstitem + numItemsPage - 1) < (RMuint16) numItems) ? (firstitem == m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.selecteditem) ? numItemsPage - 1 : numItemsPage : numItems - firstitem; //// if(firstitem == selected) //// totalitems --; // lastitem = m_osdPages[m_activePageId]->lists[listIndex]->items[selected]->list->object.lastvisible; // //totalitems = lastitem - firstitem; } if (m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible == m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible) { m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible = 0; firstitem_prev = m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.firstvisible; totalsubitems_prev = ((firstitem_prev + numItemsPagePrev - 1) < (RMuint16) numItemsPrev) ? numItemsPagePrev - 1 : numItemsPrev - firstitem_prev; m_osdPages[m_activePageId]->lists[listIndex]->items[prevselected]->list->object.lastvisible = firstitem_prev + totalsubitems_prev - 1; lastitem_prev = m_osdPages[m_activePageId]-
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -