?? guinavigation.cpp.svn-base
字號:
/***************************************** Copyright (c) 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************/#ifndef ALLOW_OS_CODE#define ALLOW_OS_CODE 1#endif //ALLOW_OS_CODE#include "guinavigation.h"#include "guicommands.h"#include "rmlibcw/include/rmlibcw.h"#include "rmlibhttp/include/rmlibhttp.h"#include "../rmgfx_library/include/stream.h"#include <sys/types.h>#include <dirent.h>#include <sys/stat.h>#include <ctype.h>#include <fcntl.h>#include <sys/time.h>#include <time.h>#if 1#define GUIDBG ENABLE#else#define GUIDBG DISABLE#endif#ifdef WITH_WMVHD_SUPPORT#define EVENT_BITMAP_XOFFSET 950#define EVENT_BITMAP_YOFFSET 30#define SLIDER_XOFFSET 390#define SLIDER_YOFFSET 650#define POPUP_XOFFSET 428#define POPUP_YOFFSET 300#define INFO_XOFFSET 350#define INFO_YOFFSET 250#define SET_LANG(item, index) \ if(item[index]) \ if(item[index]->lang[GetLang()]) \ item[index]->text = item[index]->lang[GetLang()]; \ else \ item[index]->text = item[index]->lang[0]; \#define SET_LANG_STRING(txt) \ if(txt->object.type != STRING_PASSWORD && txt->object.type != STRING_FIELD) \ if(txt->object.lang[GetLang()]) \ txt->object.text = txt->object.lang[GetLang()]; \ else \ txt->object.text = txt->object.lang[0]; \#endif // WITH_WMVHD_SUPPORTextern RMuint32 VolumeLevels[MAX_VOLUME_LEVELS];RMcuracaoGuiNavigation::RMcuracaoGuiNavigation(typeGuiContext *context) : m_gui(context), m_bcsSliderId(BRIGHTNESS_CONTROL){ m_pRua = m_gui->pRua; m_initialized = FALSE; m_parser = NULL; m_gfxInitialized = FALSE; m_OSDProfileAddr = 0; m_pOSDSource = NULL; m_osdOn = FALSE; m_wmvHDOn = FALSE; m_curLanguage = 0; RMMemset(&m_NTSCvideoOutCommandList, 0, sizeof(typeVideoOutCommands)); RMMemset(&m_PALvideoOutCommandList, 0, sizeof(typeVideoOutCommands));#ifdef GUI_REFID_2 m_languageParser = NULL;#endif#ifdef WITH_WMVHD_SUPPORT m_wmvHDparser = NULL;#endif}RMcuracaoGuiNavigation::~RMcuracaoGuiNavigation(){ Close();}RMstatus RMcuracaoGuiNavigation::Close(){ ReleaseDisplay(); if (m_parser) { delete m_parser; m_parser = NULL; }#ifdef WITH_WMVHD_SUPPORT if (m_wmvHDparser) { delete m_wmvHDparser; m_wmvHDparser = NULL; }#endif // WITH_WMVHD_SUPPORT ClearIsoData(); if (m_tvList.path) { RFREE(m_tvList.path); m_tvList.path = NULL; } FreeTVList(); return RM_OK;}RMstatus RMcuracaoGuiNavigation::Init(RMnonAscii *xmlFile){ RMstatus status = RM_ERROR; if (m_initialized) return ReInit(xmlFile); InitVars(); RMASSERT(m_parser == NULL); m_parser = new RMcuracaoGuiParser(); if (m_parser == NULL) return RM_ERROR; status = m_parser->DoParsing(xmlFile); if (RMFAILED(status)) return status; status = m_parser->GetPlayerParams(&m_playerParams); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetScreenFormat(&m_screenFormat); if (RMFAILED(status)) { m_screenFormat.width = DEFAULT_OSD_WIDTH; m_screenFormat.height = DEFAULT_OSD_HEIGHT; } status = m_parser->GetPages(m_osdPages, &m_nbOsdPages); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetMediaControls(&m_mediaControls); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetAnimation(&m_loadAnimation); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetCommands(m_Commands, &m_nbCommands); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetPopups(m_Popups, &m_nbPopups); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetIcons(m_Icons, &m_nbIcons); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetEventBitmaps(m_EventBitmaps, &m_nbEventBitmaps); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetSliders(m_Sliders, &m_nbSliders); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetTextTables(m_TextTables, &m_nbTextTables); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetMediaFiles(m_MediaFiles, &m_nbMediaFiles); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetEvents(m_Events, &m_nbEvents); if (RMFAILED(status)) { goto cleanup; }#ifdef GUI_REFID_2 // GenerateXMLFile();#endif // start graphic engine status = InitDisplay(); if (RMFAILED(status)) goto cleanup; //ReadTVList(); m_tvList.badchannel = -1; return SetPredefinedIds(); cleanup: Close(); return status;}RMstatus RMcuracaoGuiNavigation::ReInit(RMnonAscii *xmlFile){ RMstatus status = RM_ERROR; // reset wmvhd flag m_wmvHDOn = FALSE; ReleaseDisplay(); InitVars(); RMASSERT(m_parser != NULL); status = m_parser->GetPlayerParams(&m_playerParams); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetScreenFormat(&m_screenFormat); if (RMFAILED(status)) { m_screenFormat.width = DEFAULT_OSD_WIDTH; m_screenFormat.height = DEFAULT_OSD_HEIGHT; } status = m_parser->GetPages(m_osdPages, &m_nbOsdPages); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetCommands(m_Commands, &m_nbCommands); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetPopups(m_Popups, &m_nbPopups); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetIcons(m_Icons, &m_nbIcons); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetEventBitmaps(m_EventBitmaps, &m_nbEventBitmaps); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetSliders(m_Sliders, &m_nbSliders); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetTextTables(m_TextTables, &m_nbTextTables); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetMediaFiles(m_MediaFiles, &m_nbMediaFiles); if (RMFAILED(status)) { goto cleanup; } status = m_parser->GetEvents(m_Events, &m_nbEvents); if (RMFAILED(status)) { goto cleanup; } // start graphic engine status = InitDisplay(); if (RMFAILED(status)) goto cleanup; return SetPredefinedIds(); cleanup: Close(); return status;}void RMcuracaoGuiNavigation::InitVars(){ // global objects count m_nbOsdPages = 0; m_nbCommands = 0; m_nbPopups = 0; m_nbIcons = 0; m_nbEventBitmaps = 0; m_nbSliders = 0; m_nbTextTables = 0; m_nbMediaFiles = 0; m_nbEvents = 0; m_selectedObjectId = 0; m_activePageId = 0; m_mainPageId = 0; m_medialibraryPageId = 0; m_setupPageId = 0; m_parentObjectId = 0; m_messagePopupId = 0; m_activeMenuId = 0; m_infoId = 0; m_popupSelectedObjectId = 0; m_globalEventId = EVENT_IDMASK; m_screenSaverPageId = 0; m_timedPopupId = 0; m_isoReset = FALSE; m_displayFileType = FILETYPE_UNKNOWN;#ifdef GUI_REFID_2 m_menuPageId = 0; m_activeKeyboard = KBD_NORMAL_LOWERCASE; m_parentPageId = 0; m_keyboardInput[0] = '\0'; m_capsLockOn = FALSE; m_keyboardListener = 0; pcLinkhostlist = 0; maxHostItems = 0;#endif RMMemset(&m_playerParams, 0, sizeof(guiPlayerParams)); RMMemset(&m_screenFormat, 0, sizeof(guiScreenFormatType)); RMMemset(&m_osdPages, 0, MAX_GUI_PAGES * sizeof(guiOsdPageType*)); RMMemset(&m_Commands, 0, MAX_GUI_COMMANDS * sizeof(guiCommandType*)); RMMemset(&m_Popups, 0, MAX_GUI_POPUPS * sizeof(guiPopupType*)); RMMemset(&m_Icons, 0, MAX_GUI_ICONS * sizeof(guiIconType*)); RMMemset(&m_EventBitmaps, 0, MAX_GUI_EVENTBITMAPS * sizeof(guiBitmapType*)); RMMemset(&m_Sliders, 0, MAX_GUI_SLIDERS * sizeof(guiSliderType*)); RMMemset(&m_TextTables, 0, MAX_GUI_TEXTTABLES * sizeof(guiTextTableType*)); RMMemset(&m_MediaFiles, 0, MAX_GUI_MEDIA * sizeof(guiMediaType*)); RMMemset(&m_Events, 0, MAX_GUI_EVENTS * sizeof(guiEventType*)); RMMemset(&m_isoData, 0, sizeof(typeIsoData)); RMMemset(&m_isoList, 0, sizeof(typeIsoListData)); RMMemset(&m_List, 0, sizeof(typeListData)); RMMemset(&m_PopupList, 0, sizeof(typeListData)); RMMemset(&m_tvList, 0, sizeof(RMTVListItem)); m_tvList.up = TRUE;}RMTVListItem* read_line(stream_t* fd, RMTVListItem* current){ RMascii line[256]; RMascii line2[256]; do { if (!stream_read_line(fd, (RMuint8*) line, 256)) return NULL; } while (sscanf(line, "#EXTINF:%ld,%[^\r\n]", &(current->number), line2) < 2); current->name = STRDUP(line2); do { if (!stream_read_line(fd, (RMuint8*) line, 256)) return NULL; } while (sscanf(line, "#EXTVLCOPT:%[^\r\n]", line2) < 1); do { if (!stream_read_line(fd, (RMuint8*) line, 256)) return NULL; } while (sscanf(line, "%[^\r\n]", line2) < 1); current->url = STRDUP(line2); printf("%ld, %s, url: %s\n", current->number, current->name, line); return current;}void RMcuracaoGuiNavigation::FreeTVList(){ for (RMuint16 i = 0; i < m_tvList.nbItems; i++) { RFREE(m_tvList.items[i].name); RFREE(m_tvList.items[i].url);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -