/* Neutrino-GUI - DBoxII-Project Copyright (C) 2001 Steffen Hehn 'McClean' and some other guys Homepage: http://dbox.cyberphoria.org/ Kommentar: Diese GUI wurde von Grund auf neu programmiert und sollte nun vom Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert auf der Client-Server Idee, diese GUI ist also von der direkten DBox- Steuerung getrennt. Diese wird dann von Daemons uebernommen. License: GPL This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "global.h" #include "neutrino.h" #include #include #include #include #include #include #include #include #include #include #include "gui/widget/colorchooser.h" #include "gui/widget/menue.h" #include "gui/widget/messagebox.h" #include "gui/widget/hintbox.h" #include "gui/widget/icons.h" #include "gui/widget/lcdcontroler.h" #include "gui/widget/vfdcontroler.h" #include "gui/widget/rgbcsynccontroler.h" #include "gui/widget/keychooser.h" #include "gui/widget/stringinput.h" #include "gui/widget/stringinput_ext.h" #include "gui/widget/mountchooser.h" #include "gui/color.h" #include "gui/customcolor.h" #include "gui/bedit/bouqueteditor_bouquets.h" #include "gui/bouquetlist.h" #include "gui/eventlist.h" #include "gui/channellist.h" #include "gui/screensetup.h" #include "gui/pluginlist.h" #include "gui/plugins.h" #include "gui/infoviewer.h" #include "gui/epgview.h" #include "gui/epg_menu.h" #include "gui/update.h" #include "gui/scan.h" #include "gui/favorites.h" #include "gui/sleeptimer.h" #include "gui/rc_lock.h" #include "gui/timerlist.h" #include "gui/alphasetup.h" #include "gui/audioplayer.h" #include "gui/imageinfo.h" #include "gui/movieplayer.h" #include "gui/nfs.h" #include "gui/pictureviewer.h" #include "gui/motorcontrol.h" #include "gui/filebrowser.h" #include "gui/scale.h" #include "gui/upnpbrowser.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "gui/infoclock.h" #include "mymenu.h" #include "gui/dboxinfo.h" #include "gui/hdd_menu.h" #include "gui/audio_select.h" #include "gui/cam_menu.h" #include #include //#define TEST_MENU extern CFrontend * frontend; extern CAudioPlayerGui * audioPlayer; extern CMoviePlayerGui* moviePlayerGui; extern CPlugins * g_PluginList; extern bool has_hdd; extern CZapitClient::SatelliteList satList; extern Zapit_config zapitCfg; extern char zapit_lat[20]; extern char zapit_long[20]; extern char current_timezone[50]; extern cVideo *videoDecoder; extern cAudio *audioDecoder; extern int prev_video_mode; extern bool parentallocked; extern const char * locale_real_names[]; extern CFontSizeNotifier fontsizenotifier; extern CFanControlNotifier * funNotifier; extern CRemoteControl * g_RemoteControl; extern CCAMMenuHandler * g_CamHandler; extern bool autoshift; extern unsigned int system_rev; //extern int sectionsd_scanning; static CTimingSettingsNotifier timingsettingsnotifier; #define get_set CNeutrinoApp::getInstance()->getScanSettings() int safe_mkdir(char * path); #define OPTIONS_OFF0_ON1_OPTION_COUNT 2 const CMenuOptionChooser::keyval OPTIONS_OFF0_ON1_OPTIONS[OPTIONS_OFF0_ON1_OPTION_COUNT] = { { 0, LOCALE_OPTIONS_OFF }, { 1, LOCALE_OPTIONS_ON } }; #define OPTIONS_OFF1_ON0_OPTION_COUNT 2 const CMenuOptionChooser::keyval OPTIONS_OFF1_ON0_OPTIONS[OPTIONS_OFF1_ON0_OPTION_COUNT] = { { 1, LOCALE_OPTIONS_OFF }, { 0, LOCALE_OPTIONS_ON } }; #define VIDEOMENU_VIDEOSIGNAL_HD1_OPTION_COUNT 8 const CMenuOptionChooser::keyval VIDEOMENU_VIDEOSIGNAL_HD1_OPTIONS[VIDEOMENU_VIDEOSIGNAL_HD1_OPTION_COUNT] = { { ANALOG_SD_RGB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_SD_RGB_SCART }, /* composite + RGB (for both SCART and Cinch) */ { ANALOG_SD_RGB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_SD_RGB_CINCH }, /* composite + RGB (for both SCART and Cinch) */ { ANALOG_SD_YPRPB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_SD_YPRPB_SCART }, /* YPbPr SCART (with wrongly connected Cinch) */ { ANALOG_SD_YPRPB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_SD_YPRPB_CINCH }, /* YPbPr Cinch (with wrongly connected SCART) */ { ANALOG_HD_RGB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_HD_RGB_SCART }, { ANALOG_HD_RGB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_HD_RGB_CINCH }, { ANALOG_HD_YPRPB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_HD_YPRPB_SCART }, { ANALOG_HD_YPRPB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_HD_YPRPB_CINCH } }; #define VIDEOMENU_VIDEOSIGNAL_HD1PLUS_SCART_OPTION_COUNT 4 const CMenuOptionChooser::keyval VIDEOMENU_VIDEOSIGNAL_HD1PLUS_SCART_OPTIONS[VIDEOMENU_VIDEOSIGNAL_HD1PLUS_SCART_OPTION_COUNT] = { { ANALOG_SD_RGB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_SD_RGB_SCART }, /* composite + RGB */ { ANALOG_SD_YPRPB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_SD_YPRPB_SCART }, /* YPbPr SCART */ { ANALOG_HD_RGB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_HD_RGB_SCART }, { ANALOG_HD_YPRPB_SCART, LOCALE_VIDEOMENU_ANALOG_MODE_HD_YPRPB_SCART }, }; #define VIDEOMENU_VIDEOSIGNAL_HD1PLUS_CINCH_OPTION_COUNT 4 const CMenuOptionChooser::keyval VIDEOMENU_VIDEOSIGNAL_HD1PLUS_CINCH_OPTIONS[VIDEOMENU_VIDEOSIGNAL_HD1PLUS_CINCH_OPTION_COUNT] = { { ANALOG_SD_RGB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_SD_RGB_CINCH }, /* composite + RGB (for both SCART and Cinch) */ { ANALOG_SD_YPRPB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_SD_YPRPB_CINCH }, /* YPbPr Cinch (with wrongly connected SCART) */ { ANALOG_HD_RGB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_HD_RGB_CINCH }, { ANALOG_HD_YPRPB_CINCH, LOCALE_VIDEOMENU_ANALOG_MODE_HD_YPRPB_CINCH } }; #define VIDEOMENU_VCRSIGNAL_OPTION_COUNT 2 const CMenuOptionChooser::keyval VIDEOMENU_VCRSIGNAL_OPTIONS[VIDEOMENU_VCRSIGNAL_OPTION_COUNT] = { { 2, LOCALE_VIDEOMENU_VCRSIGNAL_SVIDEO }, { 0, LOCALE_VIDEOMENU_VCRSIGNAL_COMPOSITE } }; #define VIDEOMENU_VIDEOFORMAT_OPTION_COUNT 3//2 const CMenuOptionChooser::keyval VIDEOMENU_VIDEOFORMAT_OPTIONS[VIDEOMENU_VIDEOFORMAT_OPTION_COUNT] = { { 1, LOCALE_VIDEOMENU_VIDEOFORMAT_43 }, { 3, LOCALE_VIDEOMENU_VIDEOFORMAT_169 }, { 2, LOCALE_VIDEOMENU_VIDEOFORMAT_149 } }; #define VIDEOMENU_43MODE_OPTION_COUNT 4 const CMenuOptionChooser::keyval VIDEOMENU_43MODE_OPTIONS[VIDEOMENU_43MODE_OPTION_COUNT] = { { DISPLAY_AR_MODE_PANSCAN, LOCALE_VIDEOMENU_PANSCAN }, { DISPLAY_AR_MODE_PANSCAN2, LOCALE_VIDEOMENU_PANSCAN2 }, { DISPLAY_AR_MODE_LETTERBOX, LOCALE_VIDEOMENU_LETTERBOX }, { DISPLAY_AR_MODE_NONE, LOCALE_VIDEOMENU_FULLSCREEN } //{ 2, LOCALE_VIDEOMENU_AUTO } // whatever is this auto mode, it seems its totally broken }; /* numbers corresponding to video.cpp from zapit */ //#define VIDEOMENU_VIDEOMODE_OPTION_COUNT 11 const CMenuOptionChooser::keyval VIDEOMENU_VIDEOMODE_OPTIONS[VIDEOMENU_VIDEOMODE_OPTION_COUNT] = { { 1, NONEXISTANT_LOCALE, "SECAM" }, { 2, NONEXISTANT_LOCALE, "PAL" }, { 4, NONEXISTANT_LOCALE, "576p" }, { 7, NONEXISTANT_LOCALE, "720p 50Hz" }, { 8, NONEXISTANT_LOCALE, "1080i 50Hz" }, { 10, NONEXISTANT_LOCALE, "1080p 24Hz" }, { 11, NONEXISTANT_LOCALE, "1080p 25Hz" }, { 0, NONEXISTANT_LOCALE, "NTSC" }, { 3, NONEXISTANT_LOCALE, "480p" }, { 5, NONEXISTANT_LOCALE, "720p 60Hz" }, { 6, NONEXISTANT_LOCALE, "1080i 60Hz" }, { VIDEO_STD_AUTO, NONEXISTANT_LOCALE, "Auto" } }; #define VIDEOMENU_DBDR_OPTION_COUNT 3 const CMenuOptionChooser::keyval VIDEOMENU_DBDR_OPTIONS[VIDEOMENU_DBDR_OPTION_COUNT] = { { 0, LOCALE_VIDEOMENU_DBDR_NONE }, { 1, LOCALE_VIDEOMENU_DBDR_DEBLOCK }, { 2, LOCALE_VIDEOMENU_DBDR_BOTH } }; #include "videosettings.h" CVideoSettings::CVideoSettings() : CMenuWidget(LOCALE_VIDEOMENU_HEAD, "video.raw"), RGBCSyncControler(LOCALE_VIDEOMENU_RGB_CENTERING, &g_settings.video_csync) { addItem(GenericMenuSeparator); addItem(GenericMenuBack); addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_VIDEOMENU_TV_SCART)); if (system_rev == 0x06) { addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_ANALOG_MODE, &g_settings.analog_mode1, VIDEOMENU_VIDEOSIGNAL_HD1_OPTIONS, VIDEOMENU_VIDEOSIGNAL_HD1_OPTION_COUNT, true, this)); } else if (system_rev > 0x06) { addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_SCART, &g_settings.analog_mode1, VIDEOMENU_VIDEOSIGNAL_HD1PLUS_SCART_OPTIONS, VIDEOMENU_VIDEOSIGNAL_HD1PLUS_SCART_OPTION_COUNT, true, this)); addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_CINCH, &g_settings.analog_mode2, VIDEOMENU_VIDEOSIGNAL_HD1PLUS_CINCH_OPTIONS, VIDEOMENU_VIDEOSIGNAL_HD1PLUS_CINCH_OPTION_COUNT, true, this)); } addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOFORMAT, &g_settings.video_Format, VIDEOMENU_VIDEOFORMAT_OPTIONS, VIDEOMENU_VIDEOFORMAT_OPTION_COUNT, true, this)); addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_43MODE, &g_settings.video_43mode, VIDEOMENU_43MODE_OPTIONS, VIDEOMENU_43MODE_OPTION_COUNT, true, this)); addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOMODE, &g_settings.video_Mode, VIDEOMENU_VIDEOMODE_OPTIONS, VIDEOMENU_VIDEOMODE_OPTION_COUNT, true, this, CRCInput::RC_nokey, "", true)); addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_DBDR, &g_settings.video_dbdr, VIDEOMENU_DBDR_OPTIONS, VIDEOMENU_DBDR_OPTION_COUNT, true, this)); CMenuWidget* menu = new CMenuWidget(LOCALE_VIDEOMENU_ENABLED_MODES, NEUTRINO_ICON_SETTINGS); for(int i = 0; i < VIDEOMENU_VIDEOMODE_OPTION_COUNT; i++) menu->addItem(new CMenuOptionChooser(VIDEOMENU_VIDEOMODE_OPTIONS[i].valname, &g_settings.enabled_video_modes[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); addItem(new CMenuForwarder(LOCALE_VIDEOMENU_ENABLED_MODES, true, NULL, menu)); #if 0 addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_VIDEOMENU_VCR_SCART)); addItem(new CMenuOptionChooser(LOCALE_VIDEOMENU_VCRSWITCH, &g_settings.vcr_AutoSwitch, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_VIDEOMENU_OSD)); addItem(new CMenuForwarder(LOCALE_VIDEOMENU_SCREENSETUP, true, NULL, &ScreenSetup, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); #endif changeNotify(LOCALE_VIDEOMENU_VIDEOFORMAT, NULL); if (system_rev == 0x06) { changeNotify(LOCALE_VIDEOMENU_ANALOG_MODE, NULL); } else { changeNotify(LOCALE_VIDEOMENU_SCART, NULL); changeNotify(LOCALE_VIDEOMENU_CINCH, NULL); } }; void CVideoSettings::nextMode(void) { const char * text; int curmode = 0; int i; for(i = 0; i < VIDEOMENU_VIDEOMODE_OPTION_COUNT; i++) { if(VIDEOMENU_VIDEOMODE_OPTIONS[i].key == g_settings.video_Mode) { curmode = i; break; } } i = 0; while(true) { curmode++; if(curmode >= VIDEOMENU_VIDEOMODE_OPTION_COUNT) curmode = 0; if(g_settings.enabled_video_modes[curmode]) break; i++; if(i >= VIDEOMENU_VIDEOMODE_OPTION_COUNT) return; } text = VIDEOMENU_VIDEOMODE_OPTIONS[curmode].valname; g_settings.video_Mode = VIDEOMENU_VIDEOMODE_OPTIONS[curmode].key; videoDecoder->SetVideoSystem(g_settings.video_Mode); //videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode);//FIXME ShowHintUTF(LOCALE_VIDEOMENU_VIDEOMODE, text, 450, 2); } void CVideoSettings::next43Mode(void) { neutrino_locale_t text; int curmode = 0; for(int i = 0; i < VIDEOMENU_43MODE_OPTION_COUNT; i++) { if(VIDEOMENU_43MODE_OPTIONS[i].key == g_settings.video_43mode) { curmode = i; break; } } curmode++; if(curmode >= VIDEOMENU_43MODE_OPTION_COUNT) curmode = 0; text = VIDEOMENU_43MODE_OPTIONS[curmode].value; g_settings.video_43mode = VIDEOMENU_43MODE_OPTIONS[curmode].key; videoDecoder->setAspectRatio(-1, g_settings.video_43mode); ShowHintUTF(LOCALE_VIDEOMENU_43MODE, g_Locale->getText(text), 450, 2); } void CVideoSettings::SwitchFormat(void) { neutrino_locale_t text; int curmode = 0; for(int i = 0; i < VIDEOMENU_VIDEOFORMAT_OPTION_COUNT; i++) { if(VIDEOMENU_VIDEOFORMAT_OPTIONS[i].key == g_settings.video_Format) { curmode = i; break; } } curmode++; if(curmode >= VIDEOMENU_VIDEOFORMAT_OPTION_COUNT) curmode = 0; text = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].value; g_settings.video_Format = VIDEOMENU_VIDEOFORMAT_OPTIONS[curmode].key; videoDecoder->setAspectRatio(g_settings.video_Format, -1); ShowHintUTF(LOCALE_VIDEOMENU_VIDEOFORMAT, g_Locale->getText(text), 450, 2); } bool CVideoSettings::changeNotify(const neutrino_locale_t OptionName, void *) { if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_ANALOG_MODE)) { videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode1); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_SCART)) { videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode1); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_CINCH)) { videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode2); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_DBDR)) { videoDecoder->SetDBDR(g_settings.video_dbdr); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_VCRSIGNAL)) { } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_VIDEOFORMAT) || ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_43MODE)) { //if(g_settings.video_Format != 1 && g_settings.video_Format != 3) if(g_settings.video_Format != 1 && g_settings.video_Format != 3 && g_settings.video_Format != 2) g_settings.video_Format = 3; videoDecoder->setAspectRatio(g_settings.video_Format, g_settings.video_43mode); } else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_VIDEOMENU_VIDEOMODE)) { videoDecoder->SetVideoSystem(g_settings.video_Mode); //videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode);//FIXME if(prev_video_mode != g_settings.video_Mode) { frameBuffer->paintBackground(); if(ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_VIDEOMODE_OK), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, "info.raw") != CMessageBox::mbrYes) { g_settings.video_Mode = prev_video_mode; videoDecoder->SetVideoSystem(g_settings.video_Mode); //videoDecoder->SetVideoMode((analog_mode_t) g_settings.analog_mode);//FIXME } else prev_video_mode = g_settings.video_Mode; } } return true; }; void CVideoSettings::paint() { CMenuWidget::paint(); }; #ifdef TEST_MENU class CTestMenu : public CMenuTarget { public: int exec(CMenuTarget* parent, const std::string &actionkey); }; #include #include #include int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) { if(parent) parent->hide(); printf("CTestMenu::exec: %s\n", actionKey.c_str()); if(actionKey == "vfd") { CVFD::getInstance()->Clear(); int icon = 0x00040000; while(icon > 0x2) { CVFD::getInstance()->ShowIcon((vfd_icon) icon, true); icon /= 2; } for(int i = 0x01000001; i <= 0x0C000001; i+= 0x01000000) { CVFD::getInstance()->ShowIcon((vfd_icon) i, true); } CVFD::getInstance()->ShowIcon((vfd_icon) 0x09000002, true); CVFD::getInstance()->ShowIcon((vfd_icon) 0x0B000002, true); char text[255]; char buf[XML_UTF8_ENCODE_MAX]; int ch = 0x2588; int len = XmlUtf8Encode(ch, buf); for(int i = 0; i < 12; i++) { memcpy(&text[i*len], buf, len); } text[12*len] = 0; CVFD::getInstance()->ShowText(text); ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, "VFD test, Press OK to return", CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); CVFD::getInstance()->Clear(); } else if(actionKey == "network") { int fd, ret; struct ifreq ifr; char * ip = NULL, str[255]; struct sockaddr_in *addrp=NULL; fd = socket(AF_INET, SOCK_DGRAM, 0); ifr.ifr_addr.sa_family = AF_INET; strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1); ret = ioctl(fd, SIOCGIFHWADDR, &ifr); if(ret < 0) perror("SIOCGIFHWADDR"); ret = ioctl(fd, SIOCGIFADDR, &ifr ); if(ret < 0) perror("SIOCGIFADDR"); else { addrp = (struct sockaddr_in *)&(ifr.ifr_addr); ip = inet_ntoa(addrp->sin_addr); } sprintf(str, "MAC: %.2x:%.2x:%.2x:%.2x:%.2x:%.2x\nIP: %s", (unsigned char)ifr.ifr_hwaddr.sa_data[0], (unsigned char)ifr.ifr_hwaddr.sa_data[1], (unsigned char)ifr.ifr_hwaddr.sa_data[2], (unsigned char)ifr.ifr_hwaddr.sa_data[3], (unsigned char)ifr.ifr_hwaddr.sa_data[4], (unsigned char)ifr.ifr_hwaddr.sa_data[5], ip == NULL ? "Unknown" : ip); close(fd); ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, str, CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); } else if(actionKey == "card") { } else if(actionKey == "hdd") { char buffer[255]; FILE *f = fopen("/proc/mounts", "r"); bool mounted = false; if(f != NULL) { while (fgets (buffer, 255, f) != NULL) { if(strstr(buffer, "/dev/sda1")) { mounted = true; break; } } fclose(f); } sprintf(buffer, "HDD: /dev/sda1 is %s", mounted ? "mounted" : "NOT mounted"); printf("%s\n", buffer); ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, buffer, CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); } else if(actionKey == "buttons") { neutrino_msg_t msg; neutrino_msg_data_t data; CHintBox * khintBox = NULL; CHintBox * hintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, "Press button, or press EXIT to return"); hintBox->paint(); while(1) { g_RCInput->getMsg(&msg, &data, 100); if(msg == CRCInput::RC_home) break; if (msg != CRCInput::RC_timeout && msg <= CRCInput::RC_MaxRC) { char keyname[50]; sprintf(keyname, "Button [%s] pressed (EXIT to return)", g_RCInput->getKeyName(msg).c_str()); if(khintBox) { delete khintBox; } khintBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, keyname); hintBox->hide(); khintBox->paint(); } } if(khintBox) delete khintBox; delete hintBox; } else if(actionKey == "22kon" || actionKey == "22koff") { CScanTs * scanTs = new CScanTs(); int freq = (actionKey == "22kon") ? 12000*1000: 11000*1000; sprintf(get_set.TP_freq, "%d", freq); #if 0 // not needed ? switch(frontend->getInfo()->type) { case FE_QPSK: sprintf(get_set.TP_rate, "%d", tmpI->second.feparams.u.qpsk.symbol_rate); get_set.TP_fec = tmpI->second.feparams.u.qpsk.fec_inner; get_set.TP_pol = tmpI->second.polarization; break; case FE_QAM: sprintf(get_set.TP_rate, "%d", tmpI->second.feparams.u.qam.symbol_rate); get_set.TP_fec = tmpI->second.feparams.u.qam.fec_inner; get_set.TP_mod = tmpI->second.feparams.u.qam.modulation; break; } #endif scanTs->exec(NULL, "test"); delete scanTs; } else if(actionKey == "scan") { CScanTs * scanTs = new CScanTs(); int freq = 12538000; sprintf(get_set.TP_freq, "%d", freq); switch(frontend->getInfo()->type) { case FE_QPSK: sprintf(get_set.TP_rate, "%d", 41250*1000); get_set.TP_fec = 1; get_set.TP_pol = 1; break; case FE_QAM: #if 0 sprintf(get_set.TP_rate, "%d", tmpI->second.feparams.u.qam.symbol_rate); get_set.TP_fec = tmpI->second.feparams.u.qam.fec_inner; get_set.TP_mod = tmpI->second.feparams.u.qam.modulation; #endif break; case FE_OFDM: case FE_ATSC: break; } scanTs->exec(NULL, "manual"); delete scanTs; } return menu_return::RETURN_REPAINT; } CMenuWidget * TestMenu; #endif CVideoSettings * videoSettings; CMenuOptionStringChooser* tzSelect; /************************************************************************************** * CNeutrinoApp - init main menu * **************************************************************************************/ void CNeutrinoApp::InitMainMenu(CMenuWidget &mainMenu, CMenuWidget &mainSettings, CMenuWidget &audioSettings, CMenuWidget &parentallockSettings, CMenuWidget &networkSettings, CMenuWidget &recordingSettings, CMenuWidget &colorSettings, CMenuWidget &lcdSettings, CMenuWidget &keySettings, CMenuWidget &languageSettings, CMenuWidget &miscSettings, CMenuWidget &service, CMenuWidget &fontSettings, CMenuWidget &audiopl_picSettings, CMenuWidget &streamingSettings, CMenuWidget &moviePlayer) { #ifdef TEST_MENU TestMenu = new CMenuWidget("Test menu"); CTestMenu * testHandler = new CTestMenu(); TestMenu->addItem(new CMenuForwarderNonLocalized("VFD", true, NULL, testHandler, "vfd")); TestMenu->addItem(new CMenuForwarderNonLocalized("Network", true, NULL, testHandler, "network")); TestMenu->addItem(new CMenuForwarderNonLocalized("Smartcard", true, NULL, testHandler, "card")); TestMenu->addItem(new CMenuForwarderNonLocalized("HDD", true, NULL, testHandler, "hdd")); TestMenu->addItem(new CMenuForwarderNonLocalized("Buttons", true, NULL, testHandler, "buttons")); TestMenu->addItem(new CMenuForwarderNonLocalized("Scan 12538000", true, NULL, testHandler, "scan")); //TestMenu->addItem(new CMenuForwarderNonLocalized("22 Khz ON", true, NULL, testHandler, "22kon")); //TestMenu->addItem(new CMenuForwarderNonLocalized("22 Khz OFF", true, NULL, testHandler, "22koff")); #endif videoSettings = new CVideoSettings(); dprintf(DEBUG_DEBUG, "init mainmenue\n"); mainMenu.addItem(GenericMenuSeparator); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_TVMODE, true, NULL, this, "tv", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED), true); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_RADIOMODE, true, NULL, this, "radio", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); //mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_SCARTMODE, true, NULL, this, "scart", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_GAMES, true, NULL, new CPluginList(LOCALE_MAINMENU_GAMES,CPlugins::P_TYPE_GAME), "", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); mainMenu.addItem(GenericMenuSeparatorLine); mainMenu.addItem(new CMenuForwarder(LOCALE_UPNPBROWSER_HEAD, true, NULL, new CUpnpBrowserGui(), NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); audioPlayer = new CAudioPlayerGui(); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_AUDIOPLAYER, true, NULL, audioPlayer, NULL, CRCInput::RC_1)); moviePlayerGui = new CMoviePlayerGui(); //mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, true, NULL, &moviePlayer, NULL, CRCInput::RC_2)); #if 0 mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, true, NULL, moviePlayerGui, "tsmoviebrowser", CRCInput::RC_2)); #else moviePlayer.addItem(GenericMenuSeparator); moviePlayer.addItem(GenericMenuBack); moviePlayer.addItem(GenericMenuSeparatorLine); moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, true, NULL, moviePlayerGui, "tsmoviebrowser", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, true, NULL, moviePlayerGui, "fileplayback", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_MOVIEPLAYER, true, NULL, &moviePlayer, NULL, CRCInput::RC_2)); #endif #if 0 moviePlayer.addItem(GenericMenuSeparator); moviePlayer.addItem(GenericMenuBack); moviePlayer.addItem(GenericMenuSeparatorLine); //moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_PESPLAYBACK, true, NULL, moviePlayerGui, "pesplayback")); //moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_TSPLAYBACK_PC, true, NULL, moviePlayerGui, "tsplayback_pc")); moviePlayer.addItem(new CLockedMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, g_settings.parentallock_pincode, false, true, NULL, moviePlayerGui, "tsmoviebrowser")); moviePlayer.addItem(new CLockedMenuForwarder(LOCALE_MOVIEPLAYER_TSPLAYBACK, g_settings.parentallock_pincode, false, true, NULL, moviePlayerGui, "tsplayback", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); moviePlayer.addItem(new CLockedMenuForwarder(LOCALE_MOVIEPLAYER_BOOKMARK, g_settings.parentallock_pincode, false, true, NULL, moviePlayerGui, "bookmarkplayback")); moviePlayer.addItem(GenericMenuSeparator); moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, true, NULL, moviePlayerGui, "fileplayback", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_DVDPLAYBACK, true, NULL, moviePlayerGui, "dvdplayback", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); moviePlayer.addItem(new CMenuForwarder(LOCALE_MOVIEPLAYER_VCDPLAYBACK, true, NULL, moviePlayerGui, "vcdplayback", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); moviePlayer.addItem(GenericMenuSeparatorLine); moviePlayer.addItem(new CMenuForwarder(LOCALE_MAINMENU_SETTINGS, true, NULL, &streamingSettings, NULL, CRCInput::RC_help, NEUTRINO_ICON_BUTTON_HELP_SMALL)); moviePlayer.addItem(new CMenuForwarder(LOCALE_NFSMENU_HEAD, true, NULL, new CNFSSmallMenu(), NULL, CRCInput::RC_setup, NEUTRINO_ICON_BUTTON_DBOX_SMALL)); #endif mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_PICTUREVIEWER, true, NULL, new CPictureViewerGui(), NULL, CRCInput::RC_3)); int shortcut = 4; if (g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT)) mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_SCRIPTS, true, NULL, new CPluginList(LOCALE_MAINMENU_SCRIPTS,CPlugins::P_TYPE_SCRIPT), "", CRCInput::convertDigitToKey(shortcut++))); mainMenu.addItem(GenericMenuSeparatorLine); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_SETTINGS, true, NULL, &mainSettings, NULL, CRCInput::convertDigitToKey(shortcut++))); mainMenu.addItem(new CLockedMenuForwarder(LOCALE_MAINMENU_SERVICE, g_settings.parentallock_pincode, false, true, NULL, &service, NULL, CRCInput::convertDigitToKey(shortcut++))); mainMenu.addItem(GenericMenuSeparatorLine); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_SLEEPTIMER, true, NULL, new CSleepTimerWidget, NULL, CRCInput::convertDigitToKey(shortcut++))); mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_REBOOT, true, NULL, this, "reboot", CRCInput::convertDigitToKey(shortcut++))); //mainMenu.addItem(new CMenuForwarder(LOCALE_MAINMENU_SHUTDOWN, true, NULL, this, "shutdown", CRCInput::RC_standby, "power.raw"));//FIXME mainMenu.addItem( new CMenuSeparator(CMenuSeparator::LINE) ); mainMenu.addItem( new CMenuForwarder(LOCALE_DBOXINFO, true, NULL, new CDBoxInfoWidget, NULL, CRCInput::convertDigitToKey(shortcut++))); mainSettings.addItem(GenericMenuSeparator); mainSettings.addItem(GenericMenuBack); mainSettings.addItem(GenericMenuSeparatorLine); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_SAVESETTINGSNOW, true, NULL, this, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); mainSettings.addItem(new CMenuForwarder(LOCALE_EXTRA_LOADCONFIG, true, NULL, this, "loadconfig")); mainSettings.addItem(new CMenuForwarder(LOCALE_EXTRA_SAVECONFIG, true, NULL, this, "saveconfig")); CDataResetNotifier * resetNotifier = new CDataResetNotifier(); mainSettings.addItem(new CMenuForwarder(LOCALE_RESET_SETTINGS , true, NULL, resetNotifier, "settings")); mainSettings.addItem(GenericMenuSeparatorLine); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_VIDEO , true, NULL, videoSettings , NULL, CRCInput::RC_1)); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_AUDIO , true, NULL, &audioSettings , NULL, CRCInput::RC_2)); mainSettings.addItem(new CLockedMenuForwarder(LOCALE_PARENTALLOCK_PARENTALLOCK, g_settings.parentallock_pincode, true, true, NULL, &parentallockSettings, NULL, CRCInput::RC_3)); #if 0 if(g_settings.parentallock_prompt) mainSettings.addItem(new CLockedMenuForwarder(LOCALE_PARENTALLOCK_PARENTALLOCK, g_settings.parentallock_pincode, true, true, NULL, &parentallockSettings, NULL, CRCInput::RC_3)); else mainSettings.addItem(new CMenuForwarder(LOCALE_PARENTALLOCK_PARENTALLOCK, true, NULL, &parentallockSettings, NULL, CRCInput::RC_3)); #endif mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_NETWORK , true, NULL, &networkSettings , NULL, CRCInput::RC_4)); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_RECORDING , true, NULL, &recordingSettings, NULL, CRCInput::RC_5)); //mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_STREAMING , true, NULL, &streamingSettings, NULL, CRCInput::RC_6)); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_LANGUAGE , true, NULL, &languageSettings , NULL, CRCInput::RC_6)); xmlDocPtr parser; parser = parseXmlFile("/etc/timezone.xml"); if (parser != NULL) { tzSelect = new CMenuOptionStringChooser(LOCALE_MAINSETTINGS_TIMEZONE, g_settings.timezone, true, new CTZChangeNotifier(), CRCInput::RC_7, "", true); xmlNodePtr search = xmlDocGetRootElement(parser)->xmlChildrenNode; bool found = false; while (search) { if (!strcmp(xmlGetName(search), "zone")) { std::string name = xmlGetAttribute(search, (char *) "name"); std::string zone = xmlGetAttribute(search, (char *) "zone"); //printf("Timezone: %s -> %s\n", name.c_str(), zone.c_str()); tzSelect->addOption(name.c_str()); found = true; } search = search->xmlNextNode; } if(found) mainSettings.addItem(tzSelect); else { delete tzSelect; tzSelect = NULL; } xmlFreeDoc(parser); } mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_OSD , true, NULL, &colorSettings , NULL, CRCInput::RC_8)); if(CVFD::getInstance()->has_lcd) mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_LCD , true, NULL, &lcdSettings , NULL, CRCInput::RC_9)); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_KEYBINDING, true, NULL, &keySettings , NULL, CRCInput::RC_blue , NEUTRINO_ICON_BUTTON_BLUE )); mainSettings.addItem(new CMenuForwarder(LOCALE_AUDIOPLAYERPICSETTINGS_GENERAL , true, NULL, &audiopl_picSettings , NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_MISC , true, NULL, &miscSettings , NULL, CRCInput::RC_green , NEUTRINO_ICON_BUTTON_GREEN )); mainSettings.addItem(new CMenuForwarder(LOCALE_HDD_SETTINGS, true, NULL, new CHDDMenuHandler())); mainSettings.addItem(new CMenuForwarder(LOCALE_CAM_SETTINGS, true, NULL, g_CamHandler)); #ifdef TEST_MENU mainMenu.addItem(new CMenuForwarderNonLocalized("Test menu", true, NULL, TestMenu)); #endif #if 0 g_RFmod = new RFmod(); if(g_RFmod->rfmodfd >=0) { g_RFmod->init(); CMenuWidget * rfmenu = new CMenuWidget(LOCALE_RFMOD, "settings.raw"); CRfNotifier * rfnot = new CRfNotifier(); CRfExec * rfexec = new CRfExec(); rfmenu->addItem( GenericMenuBack ); rfmenu->addItem( new CMenuForwarder(LOCALE_RECORDINGMENU_SETUPNOW, true, NULL, rfexec, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); rfmenu->addItem( GenericMenuSeparatorLine ); rfmenu->addItem( new CMenuOptionChooser(LOCALE_RF_CARRIER, &g_settings.rf_subcarrier, RF_CARRIER_OPTIONS, RF_CARRIER_OPTION_COUNT, true, rfnot)); rfmenu->addItem( new CMenuOptionChooser(LOCALE_RF_ENABLE, &g_settings.rf_soundenable, OPTIONS_OFF1_ON0_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, rfnot)); rfmenu->addItem( new CMenuOptionNumberChooser(LOCALE_RF_CHANNEL, &g_settings.rf_channel, true, 21, 69) ); rfmenu->addItem( new CMenuOptionNumberChooser(LOCALE_RF_FINETUNE, &g_settings.rf_finetune, true, 0, 64) ); rfmenu->addItem( new CMenuOptionChooser(LOCALE_RF_STANDBY, &g_settings.rf_standby, OPTIONS_OFF1_ON0_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, rfnot)); rf_dummy = 0; rfmenu->addItem( new CMenuOptionChooser(LOCALE_RF_TEST, &rf_dummy, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, rfnot)); mainSettings.addItem(new CMenuForwarder(LOCALE_RFMOD, true, NULL, rfmenu)); } #endif } #define SCANTS_BOUQUET_OPTION_COUNT 3 const CMenuOptionChooser::keyval SCANTS_BOUQUET_OPTIONS[SCANTS_BOUQUET_OPTION_COUNT] = { { CZapitClient::BM_DELETEBOUQUETS , LOCALE_SCANTS_BOUQUET_ERASE }, /*{ CZapitClient::BM_CREATEBOUQUETS , LOCALE_SCANTS_BOUQUET_CREATE },*/ { CZapitClient::BM_DONTTOUCHBOUQUETS , LOCALE_SCANTS_BOUQUET_LEAVE }, { CZapitClient::BM_UPDATEBOUQUETS , LOCALE_SCANTS_BOUQUET_UPDATE } /*{ CZapitClient::BM_CREATESATELLITEBOUQUET, LOCALE_SCANTS_BOUQUET_SATELLITE }*/ }; #define SCANTS_ZAPIT_SCANTYPE_COUNT 4 const CMenuOptionChooser::keyval SCANTS_ZAPIT_SCANTYPE[SCANTS_ZAPIT_SCANTYPE_COUNT] = { { CZapitClient::ST_TVRADIO , LOCALE_ZAPIT_SCANTYPE_TVRADIO }, { CZapitClient::ST_TV , LOCALE_ZAPIT_SCANTYPE_TV }, { CZapitClient::ST_RADIO , LOCALE_ZAPIT_SCANTYPE_RADIO }, { CZapitClient::ST_ALL , LOCALE_ZAPIT_SCANTYPE_ALL } }; #define SATSETUP_DISEQC_OPTION_COUNT 6 const CMenuOptionChooser::keyval SATSETUP_DISEQC_OPTIONS[SATSETUP_DISEQC_OPTION_COUNT] = { { NO_DISEQC , LOCALE_SATSETUP_NODISEQC, NULL }, { MINI_DISEQC , LOCALE_SATSETUP_MINIDISEQC, NULL }, { DISEQC_1_0 , LOCALE_SATSETUP_DISEQC10, NULL }, { DISEQC_1_1 , LOCALE_SATSETUP_DISEQC11, NULL }, /*{ DISEQC_1_2 , LOCALE_SATSETUP_DISEQC12, NULL },*/ { DISEQC_ADVANCED , LOCALE_SATSETUP_DISEQ_ADVANCED, NULL }, { SMATV_REMOTE_TUNING, LOCALE_SATSETUP_SMATVREMOTE, NULL } }; #define SATSETUP_SCANTP_FEC_COUNT 23 #define CABLESETUP_SCANTP_FEC_COUNT 5 const CMenuOptionChooser::keyval SATSETUP_SCANTP_FEC[SATSETUP_SCANTP_FEC_COUNT] = { { FEC_1_2, LOCALE_SCANTP_FEC_1_2 }, { FEC_2_3, LOCALE_SCANTP_FEC_2_3 }, { FEC_3_4, LOCALE_SCANTP_FEC_3_4 }, { FEC_5_6, LOCALE_SCANTP_FEC_5_6 }, { FEC_7_8, LOCALE_SCANTP_FEC_7_8 }, { FEC_S2_QPSK_1_2, LOCALE_FEC_S2_QPSK_1_2 }, { FEC_S2_QPSK_2_3, LOCALE_FEC_S2_QPSK_2_3 }, { FEC_S2_QPSK_3_4, LOCALE_FEC_S2_QPSK_3_4 }, { FEC_S2_QPSK_5_6, LOCALE_FEC_S2_QPSK_5_6 }, { FEC_S2_QPSK_7_8, LOCALE_FEC_S2_QPSK_7_8 }, { FEC_S2_QPSK_8_9, LOCALE_FEC_S2_QPSK_8_9 }, { FEC_S2_QPSK_3_5, LOCALE_FEC_S2_QPSK_3_5 }, { FEC_S2_QPSK_4_5, LOCALE_FEC_S2_QPSK_4_5 }, { FEC_S2_QPSK_9_10, LOCALE_FEC_S2_QPSK_9_10 }, { FEC_S2_8PSK_1_2, LOCALE_FEC_S2_8PSK_1_2 }, { FEC_S2_8PSK_2_3, LOCALE_FEC_S2_8PSK_2_3 }, { FEC_S2_8PSK_3_4, LOCALE_FEC_S2_8PSK_3_4 }, { FEC_S2_8PSK_5_6, LOCALE_FEC_S2_8PSK_5_6 }, { FEC_S2_8PSK_7_8, LOCALE_FEC_S2_8PSK_7_8 }, { FEC_S2_8PSK_8_9, LOCALE_FEC_S2_8PSK_8_9 }, { FEC_S2_8PSK_3_5, LOCALE_FEC_S2_8PSK_3_5 }, { FEC_S2_8PSK_4_5, LOCALE_FEC_S2_8PSK_4_5 }, { FEC_S2_8PSK_9_10, LOCALE_FEC_S2_8PSK_9_10 } }; #define SATSETUP_SCANTP_MOD_COUNT 5 const CMenuOptionChooser::keyval SATSETUP_SCANTP_MOD[SATSETUP_SCANTP_MOD_COUNT] = { { 1, LOCALE_SCANTP_MOD_16 }, { 2, LOCALE_SCANTP_MOD_32 }, { 3, LOCALE_SCANTP_MOD_64 }, { 4, LOCALE_SCANTP_MOD_128}, { 5, LOCALE_SCANTP_MOD_256} }; #define SATSETUP_SCANTP_POL_COUNT 2 const CMenuOptionChooser::keyval SATSETUP_SCANTP_POL[SATSETUP_SCANTP_POL_COUNT] = { { 0, LOCALE_EXTRA_POL_H }, { 1, LOCALE_EXTRA_POL_V } }; #if 0 /*Cable*/ #define CABLESETUP_SCANTP_MOD_COUNT 7 const CMenuOptionChooser::keyval CABLESETUP_SCANTP_MOD[CABLESETUP_SCANTP_MOD_COUNT] = { {0, LOCALE_SCANTP_MOD_QPSK } , {1, LOCALE_SCANTP_MOD_QAM_16 } , {2, LOCALE_SCANTP_MOD_QAM_32 } , {3, LOCALE_SCANTP_MOD_QAM_64 } , {4, LOCALE_SCANTP_MOD_QAM_128 } , {5, LOCALE_SCANTP_MOD_QAM_256 } , {6, LOCALE_SCANTP_MOD_QAM_AUTO } }; #endif #define SECTIONSD_SCAN_OPTIONS_COUNT 3 const CMenuOptionChooser::keyval SECTIONSD_SCAN_OPTIONS[SECTIONSD_SCAN_OPTIONS_COUNT] = { { 0, LOCALE_OPTIONS_OFF }, { 1, LOCALE_OPTIONS_ON }, { 2, LOCALE_OPTIONS_ON_WITHOUT_MESSAGES } }; #define DISEQC_ORDER_OPTION_COUNT 2 const CMenuOptionChooser::keyval DISEQC_ORDER_OPTIONS[DISEQC_ORDER_OPTION_COUNT] = { { COMMITED_FIRST, LOCALE_SATSETUP_DISEQC_COM_UNCOM }, { UNCOMMITED_FIRST, LOCALE_SATSETUP_DISEQC_UNCOM_COM } }; class CTPSelectHandler : public CMenuTarget { public: int exec(CMenuTarget* parent, const std::string &actionkey); }; extern std::map select_transponders; int CTPSelectHandler::exec(CMenuTarget* parent, const std::string &actionkey) { transponder_list_t::iterator tI; sat_iterator_t sit; t_satellite_position position = 0; std::map tmplist; std::map::iterator tmpI; int i; char cnt[5]; int select = -1; static int old_selected = 0; static t_satellite_position old_position = 0; if (parent) parent->hide(); for(sit = satellitePositions.begin(); sit != satellitePositions.end(); sit++) { if(!strcmp(sit->second.name.c_str(), CNeutrinoApp::getInstance()->getScanSettings().satNameNoDiseqc)) { position = sit->first; break; } } if(old_position != position) { old_selected = 0; old_position = position; } CMenuWidget* menu = new CMenuWidget(LOCALE_SCANTS_SELECT_TP, NEUTRINO_ICON_SETTINGS); CMenuSelectorTarget * selector = new CMenuSelectorTarget(&select); i = 0; for(tI = select_transponders.begin(); tI != select_transponders.end(); tI++) { t_satellite_position satpos = GET_SATELLITEPOSITION_FROM_TRANSPONDER_ID(tI->first) & 0xFFF; if(GET_SATELLITEPOSITION_FROM_TRANSPONDER_ID(tI->first) & 0xF000) satpos = -satpos; if(satpos != position) continue; char buf[128]; sprintf(cnt, "%d", i); char * f, *s, *m; switch(frontend->getInfo()->type) { case FE_QPSK: frontend->getDelSys(tI->second.feparams.u.qpsk.fec_inner, dvbs_get_modulation(tI->second.feparams.u.qpsk.fec_inner), f, s, m); snprintf(buf, sizeof(buf), "%d %c %d %s %s %s ", tI->second.feparams.frequency/1000, tI->second.polarization ? 'V' : 'H', tI->second.feparams.u.qpsk.symbol_rate/1000, f, s, m); break; case FE_QAM: frontend->getDelSys(tI->second.feparams.u.qam.fec_inner, tI->second.feparams.u.qam.modulation, f, s, m); snprintf(buf, sizeof(buf), "%d %d %s %s %s ", tI->second.feparams.frequency/1000, tI->second.feparams.u.qam.symbol_rate/1000, f, s, m); break; case FE_OFDM: case FE_ATSC: break; } menu->addItem(new CMenuForwarderNonLocalized(buf, true, NULL, selector, cnt), old_selected == i); tmplist.insert(std::pair (i, tI->second)); i++; } if(i == 0) { char text[255]; sprintf(text, "No transponders found for %s\n", CNeutrinoApp::getInstance()->getScanSettings().satNameNoDiseqc); ShowHintUTF(LOCALE_MESSAGEBOX_ERROR, text, 450, 2); return menu_return::RETURN_REPAINT; } int retval = menu->exec(NULL, ""); delete menu; delete selector; if(select >= 0) { old_selected = select; tmpI = tmplist.find(select); printf("CTPSelectHandler::exec: selected TP: freq %d pol %d SR %d\n", tmpI->second.feparams.frequency, tmpI->second.polarization, tmpI->second.feparams.u.qpsk.symbol_rate); sprintf(get_set.TP_freq, "%d", tmpI->second.feparams.frequency); switch(frontend->getInfo()->type) { case FE_QPSK: sprintf(get_set.TP_rate, "%d", tmpI->second.feparams.u.qpsk.symbol_rate); get_set.TP_fec = tmpI->second.feparams.u.qpsk.fec_inner; get_set.TP_pol = tmpI->second.polarization; break; case FE_QAM: sprintf(get_set.TP_rate, "%d", tmpI->second.feparams.u.qam.symbol_rate); get_set.TP_fec = tmpI->second.feparams.u.qam.fec_inner; get_set.TP_mod = tmpI->second.feparams.u.qam.modulation; break; case FE_OFDM: case FE_ATSC: break; } } if(retval == menu_return::RETURN_EXIT_ALL) return menu_return::RETURN_EXIT_ALL; return menu_return::RETURN_REPAINT; } extern int scan_pids; void CNeutrinoApp::InitScanSettings(CMenuWidget &settings) { dprintf(DEBUG_DEBUG, "init scansettings\n"); int sfound = 0; int dmode = scanSettings.diseqcMode; int shortcut = 1; CTPSelectHandler * tpSelect = new CTPSelectHandler(); CSatelliteSetupNotifier * satNotify = new CSatelliteSetupNotifier(); CMenuOptionChooser* ojScantype = new CMenuOptionChooser(LOCALE_ZAPIT_SCANTYPE, (int *)&scanSettings.scanType, SCANTS_ZAPIT_SCANTYPE, SCANTS_ZAPIT_SCANTYPE_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++), "", true); CMenuOptionChooser* ojBouquets = new CMenuOptionChooser(LOCALE_SCANTS_BOUQUET, (int *)&scanSettings.bouquetMode, SCANTS_BOUQUET_OPTIONS, SCANTS_BOUQUET_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++), "", true); CMenuOptionChooser* useNit = new CMenuOptionChooser(LOCALE_SATSETUP_USE_NIT, (int *)&scanSettings.scan_mode, OPTIONS_OFF1_ON0_OPTIONS, OPTIONS_OFF1_ON0_OPTION_COUNT, true, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN); CMenuOptionChooser* scanPids = new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_SCANPIDS, &scan_pids, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW); CMenuWidget* satSetup = new CMenuWidget(LOCALE_SATSETUP_SAT_SETUP, NEUTRINO_ICON_SETTINGS); satSetup->addItem(GenericMenuSeparator); satSetup->addItem(GenericMenuBack); satSetup->addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_SAVESETTINGSNOW, true, NULL, this, "savescansettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); satSetup->addItem(GenericMenuSeparatorLine); CMenuWidget* satfindMenu = new CMenuWidget(LOCALE_MOTORCONTROL_HEAD, NEUTRINO_ICON_SETTINGS); satfindMenu->addItem(GenericMenuSeparator); satfindMenu->addItem(GenericMenuBack); satfindMenu->addItem(GenericMenuSeparatorLine); CMenuOptionStringChooser *satSelect = NULL; CMenuWidget* satOnOff = NULL; sat_iterator_t sit; t_satellite_position currentSatellitePosition = frontend->getCurrentSatellitePosition(); if(g_info.delivery_system == DVB_S) { satSelect = new CMenuOptionStringChooser(LOCALE_SATSETUP_SATELLITE, scanSettings.satNameNoDiseqc, true, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED, true); satOnOff = new CMenuWidget(LOCALE_SATSETUP_SATELLITE, NEUTRINO_ICON_SETTINGS); satOnOff->addItem(GenericMenuSeparator); satOnOff->addItem(GenericMenuBack); satOnOff->addItem(GenericMenuSeparatorLine); for(sit = satellitePositions.begin(); sit != satellitePositions.end(); sit++) { printf("Adding sat menu for %s position %d\n", sit->second.name.c_str(), sit->first); satSelect->addOption(sit->second.name.c_str()); if (strcmp(scanSettings.satNameNoDiseqc,sit->second.name.c_str()) == 0) { sfound = 1; } CMenuWidget* tempsat = new CMenuWidget(sit->second.name.c_str(), NEUTRINO_ICON_SETTINGS); tempsat->addItem(GenericMenuSeparator); tempsat->addItem(GenericMenuBack); tempsat->addItem(GenericMenuSeparatorLine); CMenuOptionChooser * inuse = new CMenuOptionChooser(sit->second.name.c_str(), &sit->second.use_in_scan, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionNumberChooser * diseqc = new CMenuOptionNumberChooser(LOCALE_SATSETUP_DISEQC_INPUT, &sit->second.diseqc, ((dmode != NO_DISEQC) && (dmode != DISEQC_ADVANCED)), -1, 15, NULL, 1, -1, LOCALE_OPTIONS_OFF); CMenuOptionNumberChooser * comm = new CMenuOptionNumberChooser(LOCALE_SATSETUP_COMM_INPUT, &sit->second.commited, dmode == DISEQC_ADVANCED, -1, 15, NULL, 1, -1, LOCALE_OPTIONS_OFF); CMenuOptionNumberChooser * uncomm = new CMenuOptionNumberChooser(LOCALE_SATSETUP_UNCOMM_INPUT, &sit->second.uncommited, dmode == DISEQC_ADVANCED, -1, 15, NULL, 1, -1, LOCALE_OPTIONS_OFF); //CMenuOptionNumberChooser * motor = new CMenuOptionNumberChooser(LOCALE_SATSETUP_MOTOR_POS, &sit->second.motor_position, dmode == DISEQC_ADVANCED, 0, 64, NULL, 0, 0, LOCALE_OPTIONS_OFF); CMenuOptionNumberChooser * motor = new CMenuOptionNumberChooser(LOCALE_SATSETUP_MOTOR_POS, &sit->second.motor_position, true, 0, 64, NULL, 0, 0, LOCALE_OPTIONS_OFF); //CMenuOptionChooser * usals = new CMenuOptionChooser(LOCALE_EXTRA_USE_GOTOXX, &sit->second.use_usals, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, dmode == DISEQC_ADVANCED); CMenuOptionChooser * usals = new CMenuOptionChooser(LOCALE_EXTRA_USE_GOTOXX, &sit->second.use_usals, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); satNotify->addItem(1, diseqc); satNotify->addItem(0, comm); satNotify->addItem(0, uncomm); //satNotify->addItem(0, motor); //FIXME testing motor with not DISEQC_ADVANCED //satNotify->addItem(0, usals); CIntInput* lofL = new CIntInput(LOCALE_SATSETUP_LOFL, (int&) sit->second.lnbOffsetLow, 5, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE); CIntInput* lofH = new CIntInput(LOCALE_SATSETUP_LOFH, (int&) sit->second.lnbOffsetHigh, 5, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE); CIntInput* lofS = new CIntInput(LOCALE_SATSETUP_LOFS, (int&) sit->second.lnbSwitch, 5, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE); satOnOff->addItem(inuse); tempsat->addItem(diseqc); tempsat->addItem(comm); tempsat->addItem(uncomm); tempsat->addItem(motor); tempsat->addItem(usals); tempsat->addItem(new CMenuForwarder(LOCALE_SATSETUP_LOFL, true, lofL->getValue(), lofL)); tempsat->addItem(new CMenuForwarder(LOCALE_SATSETUP_LOFH, true, lofH->getValue(), lofH)); tempsat->addItem(new CMenuForwarder(LOCALE_SATSETUP_LOFS, true, lofS->getValue(), lofS)); satSetup->addItem(new CMenuForwarderNonLocalized(sit->second.name.c_str(), true, NULL, tempsat)); } } else if (g_info.delivery_system == DVB_C) { satSelect = new CMenuOptionStringChooser(LOCALE_CABLESETUP_PROVIDER, (char*)scanSettings.satNameNoDiseqc, true); for(sit = satellitePositions.begin(); sit != satellitePositions.end(); sit++) { printf("Adding cable menu for %s position %d\n", sit->second.name.c_str(), sit->first); satSelect->addOption(sit->second.name.c_str()); if(currentSatellitePosition == sit->first) { strcpy(scanSettings.satNameNoDiseqc, sit->second.name.c_str()); sfound = 1; } dprintf(DEBUG_DEBUG, "got scanprovider (cable): %s\n", sit->second.name.c_str()); } } satfindMenu->addItem(satSelect); int freq_length = (g_info.delivery_system == DVB_S) ? 8 : 6; CStringInput* freq = new CStringInput(LOCALE_EXTRA_FREQ, (char *) scanSettings.TP_freq, freq_length, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789"); CStringInput* rate = new CStringInput(LOCALE_EXTRA_RATE, (char *) scanSettings.TP_rate, 8, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789"); CMenuForwarder * Freq = new CMenuForwarder(LOCALE_EXTRA_FREQ, true, scanSettings.TP_freq, freq, "", CRCInput::convertDigitToKey(1)); CMenuForwarder * Rate = new CMenuForwarder(LOCALE_EXTRA_RATE, true, scanSettings.TP_rate, rate, "", CRCInput::convertDigitToKey(2)); int fec_count = (g_info.delivery_system == DVB_S) ? SATSETUP_SCANTP_FEC_COUNT : CABLESETUP_SCANTP_FEC_COUNT; CMenuOptionChooser* fec = new CMenuOptionChooser(LOCALE_EXTRA_FEC, (int *)&scanSettings.TP_fec, SATSETUP_SCANTP_FEC, fec_count, true, NULL, CRCInput::convertDigitToKey(3), "", true); CMenuOptionChooser* mod_pol = NULL; if (g_info.delivery_system == DVB_S) mod_pol = new CMenuOptionChooser(LOCALE_EXTRA_POL, (int *)&scanSettings.TP_pol, SATSETUP_SCANTP_POL, SATSETUP_SCANTP_POL_COUNT, true, NULL, CRCInput::convertDigitToKey(4)); else if(g_info.delivery_system == DVB_C) mod_pol = new CMenuOptionChooser(LOCALE_EXTRA_MOD, (int *)&scanSettings.TP_mod, SATSETUP_SCANTP_MOD, SATSETUP_SCANTP_MOD_COUNT, true, NULL, CRCInput::convertDigitToKey(4)); satfindMenu->addItem(Freq); satfindMenu->addItem(Rate); satfindMenu->addItem(fec); satfindMenu->addItem(mod_pol); CMenuWidget* motorMenu = NULL; if (g_info.delivery_system == DVB_S) { satfindMenu->addItem(new CMenuForwarder(LOCALE_MOTORCONTROL_HEAD, true, NULL, new CMotorControl(), "", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); motorMenu = new CMenuWidget(LOCALE_SATSETUP_EXTENDED_MOTOR, NEUTRINO_ICON_SETTINGS); motorMenu->addItem(GenericMenuSeparator); motorMenu->addItem(GenericMenuBack); motorMenu->addItem(new CMenuForwarder(LOCALE_SATSETUP_SAVESETTINGSNOW, true, NULL, this, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); //motorMenu->addItem(new CMenuForwarder(LOCALE_SATSETUP_MOTORCONTROL , true, NULL, new CMotorControl())); motorMenu->addItem(new CMenuForwarder(LOCALE_MOTORCONTROL_HEAD, true, NULL, satfindMenu, "", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); motorMenu->addItem(GenericMenuSeparatorLine); motorMenu->addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_ZAPIT_ROTATION_SPEED, (int *)&zapitCfg.motorRotationSpeed, true, 0, 64, NULL) ); //motorMenu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_USE_GOTOXX, (int *)&zapitCfg.useGotoXX, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); CStringInput * toff; sprintf(zapit_lat, "%3.6f", zapitCfg.gotoXXLatitude); sprintf(zapit_long, "%3.6f", zapitCfg.gotoXXLongitude); motorMenu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_LADIR, (int *)&zapitCfg.gotoXXLaDirection, OPTIONS_SOUTH0_NORTH1_OPTIONS, OPTIONS_SOUTH0_NORTH1_OPTION_COUNT, true)); toff = new CStringInput(LOCALE_EXTRA_LAT, (char *) zapit_lat, 10, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789."); motorMenu->addItem(new CMenuForwarder(LOCALE_EXTRA_LAT, true, zapit_lat, toff)); motorMenu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_LODIR, (int *)&zapitCfg.gotoXXLoDirection, OPTIONS_EAST0_WEST1_OPTIONS, OPTIONS_EAST0_WEST1_OPTION_COUNT, true)); toff = new CStringInput(LOCALE_EXTRA_LONG, (char *) zapit_long, 10, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789."); motorMenu->addItem(new CMenuForwarder(LOCALE_EXTRA_LONG, true, zapit_long, toff)); motorMenu->addItem(new CMenuOptionNumberChooser(LOCALE_SATSETUP_USALS_REPEAT, (int *)&zapitCfg.repeatUsals, true, 0, 10, NULL, 0, 0, LOCALE_OPTIONS_OFF) ); } if(!sfound && satellitePositions.size()) { sit = satellitePositions.begin(); strcpy(scanSettings.satNameNoDiseqc, sit->second.name.c_str()); } CMenuWidget* manualScan = new CMenuWidget(LOCALE_SATSETUP_MANUAL_SCAN, NEUTRINO_ICON_SETTINGS); CScanTs * scanTs = new CScanTs(); manualScan->addItem(GenericMenuSeparator); manualScan->addItem(GenericMenuBack); manualScan->addItem(GenericMenuSeparatorLine); manualScan->addItem(satSelect); manualScan->addItem(new CMenuForwarder(LOCALE_SCANTS_SELECT_TP, true, NULL, tpSelect, "test")); manualScan->addItem(Freq); manualScan->addItem(Rate); manualScan->addItem(fec); manualScan->addItem(mod_pol); manualScan->addItem(useNit); manualScan->addItem(GenericMenuSeparatorLine); manualScan->addItem(new CMenuForwarder(LOCALE_SCANTS_TEST, true, NULL, scanTs, "test", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); manualScan->addItem(new CMenuForwarder(LOCALE_SCANTS_STARTNOW, true, NULL, scanTs, "manual", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); CMenuWidget* autoScan = new CMenuWidget(LOCALE_SATSETUP_AUTO_SCAN, NEUTRINO_ICON_SETTINGS); autoScan->addItem(GenericMenuSeparator); autoScan->addItem(GenericMenuBack); autoScan->addItem(GenericMenuSeparatorLine); autoScan->addItem(satSelect); autoScan->addItem(useNit); autoScan->addItem(scanPids); autoScan->addItem(new CMenuForwarder(LOCALE_SCANTS_STARTNOW, true, NULL, scanTs, "auto", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); CMenuOptionChooser* ojDiseqc = NULL; CMenuOptionNumberChooser * ojDiseqcRepeats = NULL; CMenuForwarder *fsatSetup = NULL; CMenuForwarder *fmotorMenu = NULL; CMenuForwarder *fautoScanAll = NULL; if (g_info.delivery_system == DVB_S) { ojDiseqc = new CMenuOptionChooser(LOCALE_SATSETUP_DISEQC, (int *)&scanSettings.diseqcMode, SATSETUP_DISEQC_OPTIONS, SATSETUP_DISEQC_OPTION_COUNT, true, satNotify, CRCInput::convertDigitToKey(shortcut++), "", true); ojDiseqcRepeats = new CMenuOptionNumberChooser(LOCALE_SATSETUP_DISEQCREPEAT, (int *)&scanSettings.diseqcRepeat, (dmode != NO_DISEQC) && (dmode != DISEQC_ADVANCED), 0, 2, NULL); satNotify->addItem(1, ojDiseqcRepeats); fsatSetup = new CMenuForwarder(LOCALE_SATSETUP_SAT_SETUP, true, NULL, satSetup, "", CRCInput::convertDigitToKey(shortcut++)); //fmotorMenu = new CMenuForwarder(LOCALE_SATSETUP_EXTENDED_MOTOR, (dmode == DISEQC_ADVANCED), NULL, motorMenu, "", CRCInput::convertDigitToKey(shortcut++)); //satNotify->addItem(0, fmotorMenu); //FIXME testing motor with not DISEQC_ADVANCED fmotorMenu = new CMenuForwarder(LOCALE_SATSETUP_EXTENDED_MOTOR, true, NULL, motorMenu, "", CRCInput::convertDigitToKey(shortcut++)); CMenuWidget* autoScanAll = new CMenuWidget(LOCALE_SATSETUP_AUTO_SCAN_ALL, NEUTRINO_ICON_SETTINGS); fautoScanAll = new CMenuForwarder(LOCALE_SATSETUP_AUTO_SCAN_ALL, (dmode != NO_DISEQC), NULL, autoScanAll, "", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE); satNotify->addItem(2, fautoScanAll); autoScanAll->addItem(GenericMenuSeparator); autoScanAll->addItem(GenericMenuBack); autoScanAll->addItem(GenericMenuSeparatorLine); autoScanAll->addItem(new CMenuForwarder(LOCALE_SATSETUP_SATELLITE, true, NULL, satOnOff, "", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); autoScanAll->addItem(useNit); autoScanAll->addItem(scanPids); autoScanAll->addItem(new CMenuForwarder(LOCALE_SCANTS_STARTNOW, true, NULL, scanTs, "all", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); } settings.addItem(GenericMenuSeparator); settings.addItem(GenericMenuBack); settings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_SAVESETTINGSNOW, true, NULL, this, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); settings.addItem(GenericMenuSeparatorLine); settings.addItem(ojScantype); settings.addItem(ojBouquets); if(g_info.delivery_system == DVB_S) { settings.addItem(ojDiseqc); settings.addItem(ojDiseqcRepeats); settings.addItem(fsatSetup); settings.addItem(fmotorMenu); } settings.addItem(new CMenuForwarder(LOCALE_SATSETUP_MANUAL_SCAN, true, NULL, manualScan, "", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); settings.addItem(new CMenuForwarder(LOCALE_SATSETUP_AUTO_SCAN, true, NULL, autoScan, "", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); if(g_info.delivery_system == DVB_S) { settings.addItem(fautoScanAll); } } #define FLASHUPDATE_UPDATEMODE_OPTION_COUNT 2 const CMenuOptionChooser::keyval FLASHUPDATE_UPDATEMODE_OPTIONS[FLASHUPDATE_UPDATEMODE_OPTION_COUNT] = { { 0, LOCALE_FLASHUPDATE_UPDATEMODE_MANUAL }, { 1, LOCALE_FLASHUPDATE_UPDATEMODE_INTERNET } }; void getZapitConfig(Zapit_config *Cfg); void CNeutrinoApp::InitServiceSettings(CMenuWidget &service, CMenuWidget &scanSettings) { dprintf(DEBUG_DEBUG, "init serviceSettings\n"); getZapitConfig(&zapitCfg); #if 0 CZapitDestExec * zexec = new CZapitDestExec(); CMenuWidget* zapit_menu = new CMenuWidget(LOCALE_EXTRA_ZAPIT_MENU, "settings.raw"); zapit_menu->addItem( GenericMenuBack ); //zapit_menu->addItem(new CMenuForwarder(LOCALE_EXTRA_SAVESETTINGS, true, "", new CZapitDestExec, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); zapit_menu->addItem(new CMenuForwarder(LOCALE_EXTRA_SAVESETTINGS, true, "", this, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); zapit_menu->addItem( GenericMenuSeparatorLine ); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_MAKE_BOUQUET, (int *)&zapitCfg.makeRemainingChannelsBouquet, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_SAVE_LAST, (int *)&zapitCfg.saveLastChannel, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_WRITE_NAMES, (int *)&zapitCfg.writeChannelsNames, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_SORTNAMES, (int *)&zapitCfg.sortNames, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); #if 0 zapit_menu->addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_ZAPIT_TIMEOUT, (int *)&zapitCfg.feTimeout, true, 0, 100) ); #else zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_FASTZAP, (int *)&zapitCfg.fastZap, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); #endif zapit_menu->addItem( new CMenuOptionChooser(LOCALE_ZAPIT_SCANSDT, (int *)&zapitCfg.scanSDT, SECTIONSD_SCAN_OPTIONS, SECTIONSD_SCAN_OPTIONS_COUNT, true)); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_SCANPIDS, (int *)&zapitCfg.scanPids, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); zapit_menu->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAPIT_HVOLTAGE, (int *)&zapitCfg.highVoltage, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); zapit_menu->addItem( GenericMenuSeparatorLine ); zapit_menu->addItem(new CMenuForwarder(LOCALE_EXTRA_ZAPIT_DELETE, true, "", zexec /*new CZapitDestExec*/, "delete")); zapit_menu->addItem(new CMenuForwarder(LOCALE_EXTRA_ZAPIT_BACKUP, true, "", zexec /*new CZapitDestExec*/, "backup")); zapit_menu->addItem(new CMenuForwarder(LOCALE_EXTRA_ZAPIT_RESTORE, true, "", zexec /*new CZapitDestExec*/, "restore")); #endif service.addItem(GenericMenuSeparator); service.addItem(GenericMenuBack); service.addItem(GenericMenuSeparatorLine); service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_SCANTS , true, NULL, &scanSettings, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED) ); // service.addItem(new CMenuForwarder(LOCALE_EXTRA_ZAPIT_MENU , true, NULL, zapit_menu, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_RELOAD , true, NULL, this, "reloadchannels", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); service.addItem(new CMenuForwarder(LOCALE_BOUQUETEDITOR_NAME , true, NULL, new CBEBouquetWidget(), NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE )); CDataResetNotifier * resetNotifier = new CDataResetNotifier(); service.addItem(new CMenuForwarder(LOCALE_RESET_CHANNELS , true, NULL, resetNotifier, "channels", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN )); //service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_GETPLUGINS, true, NULL, this, "reloadplugins")); service.addItem(GenericMenuSeparatorLine); service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_IMAGEINFO, true, NULL, new CImageInfo(), NULL, CRCInput::RC_help, NEUTRINO_ICON_BUTTON_HELP_SMALL ), false); service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_RESTART , true, NULL, this, "restart", CRCInput::RC_standby, "power.raw")); //softupdate //if(softupdate) { dprintf(DEBUG_DEBUG, "init soft-update-stuff\n"); CMenuWidget* updateSettings = new CMenuWidget(LOCALE_SERVICEMENU_UPDATE, "softupdate.raw", 550); updateSettings->addItem(GenericMenuSeparator); updateSettings->addItem(GenericMenuBack); updateSettings->addItem(GenericMenuSeparatorLine); //experten-funktionen für mtd lesen/schreiben CMenuWidget* mtdexpert = new CMenuWidget(LOCALE_FLASHUPDATE_EXPERTFUNCTIONS, "softupdate.raw"); mtdexpert->addItem(GenericMenuSeparator); mtdexpert->addItem(GenericMenuBack); mtdexpert->addItem(GenericMenuSeparatorLine); CFlashExpert* fe = new CFlashExpert(); //mtdexpert->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_READFLASH , true, NULL, fe, "readflash" )); //if(softupdate) // mtdexpert->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_WRITEFLASH , true, NULL, fe, "writeflash" )); mtdexpert->addItem(GenericMenuSeparatorLine); mtdexpert->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_READFLASHMTD , true, NULL, fe, "readflashmtd" )); if(softupdate) mtdexpert->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_WRITEFLASHMTD, true, NULL, fe, "writeflashmtd")); mtdexpert->addItem(GenericMenuSeparatorLine); CStringInputSMS * updateSettings_url_file = new CStringInputSMS(LOCALE_FLASHUPDATE_URL_FILE, g_settings.softupdate_url_file, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789!""§$%&/()=?-. "); mtdexpert->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_URL_FILE, true, g_settings.softupdate_url_file, updateSettings_url_file)); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_EXPERTFUNCTIONS, true, NULL, mtdexpert, "", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); updateSettings->addItem(GenericMenuSeparatorLine); CMenuOptionChooser *oj = new CMenuOptionChooser(LOCALE_FLASHUPDATE_UPDATEMODE, &g_settings.softupdate_mode, FLASHUPDATE_UPDATEMODE_OPTIONS, FLASHUPDATE_UPDATEMODE_OPTION_COUNT, true, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN); updateSettings->addItem( oj ); updateSettings->addItem( new CMenuForwarder(LOCALE_EXTRA_UPDATE_DIR, true, g_settings.update_dir , this, "update_dir", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW) ); /* show current version */ updateSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_FLASHUPDATE_CURRENTVERSION_SEP)); /* get current version SBBBYYYYMMTTHHMM -- formatsting */ CConfigFile configfile('\t'); const char * versionString = (configfile.loadConfig("/.version")) ? (configfile.getString( "version", "????????????????").c_str()) : "????????????????"; dprintf(DEBUG_INFO, "current flash-version: %s\n", versionString); static CFlashVersionInfo versionInfo(versionString); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_CURRENTVERSIONDATE , false, versionInfo.getDate())); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_CURRENTVERSIONTIME , false, versionInfo.getTime())); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_CURRENTRELEASECYCLE , false, versionInfo.getReleaseCycle())); /* versionInfo.getType() returns const char * which is never deallocated */ updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_CURRENTVERSIONSNAPSHOT, false, versionInfo.getType())); updateSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_FLASHUPDATE_PROXYSERVER_SEP)); CStringInputSMS * updateSettings_proxy = new CStringInputSMS(LOCALE_FLASHUPDATE_PROXYSERVER, g_settings.softupdate_proxyserver, 23, LOCALE_FLASHUPDATE_PROXYSERVER_HINT1, LOCALE_FLASHUPDATE_PROXYSERVER_HINT2, "abcdefghijklmnopqrstuvwxyz0123456789-.: "); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_PROXYSERVER, true, g_settings.softupdate_proxyserver, updateSettings_proxy)); CStringInputSMS * updateSettings_proxyuser = new CStringInputSMS(LOCALE_FLASHUPDATE_PROXYUSERNAME, g_settings.softupdate_proxyusername, 23, LOCALE_FLASHUPDATE_PROXYUSERNAME_HINT1, LOCALE_FLASHUPDATE_PROXYUSERNAME_HINT2, "abcdefghijklmnopqrstuvwxyz0123456789!""§$%&/()=?-. "); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_PROXYUSERNAME, true, g_settings.softupdate_proxyusername, updateSettings_proxyuser)); CStringInputSMS * updateSettings_proxypass = new CStringInputSMS(LOCALE_FLASHUPDATE_PROXYPASSWORD, g_settings.softupdate_proxypassword, 20, LOCALE_FLASHUPDATE_PROXYPASSWORD_HINT1, LOCALE_FLASHUPDATE_PROXYPASSWORD_HINT2, "abcdefghijklmnopqrstuvwxyz0123456789!""§$%&/()=?-. "); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_PROXYPASSWORD, true, g_settings.softupdate_proxypassword, updateSettings_proxypass)); updateSettings->addItem(GenericMenuSeparatorLine); updateSettings->addItem(new CMenuForwarder(LOCALE_FLASHUPDATE_CHECKUPDATE, true, NULL, new CFlashUpdate(), "", CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); service.addItem(new CMenuForwarder(LOCALE_SERVICEMENU_UPDATE, true, NULL, updateSettings)); } } #define MESSAGEBOX_NO_YES_OPTION_COUNT 2 const CMenuOptionChooser::keyval MESSAGEBOX_NO_YES_OPTIONS[MESSAGEBOX_NO_YES_OPTION_COUNT] = { { 0, LOCALE_MESSAGEBOX_NO }, { 1, LOCALE_MESSAGEBOX_YES } }; #define PICTUREVIEWER_SCALING_OPTION_COUNT 3 const CMenuOptionChooser::keyval PICTUREVIEWER_SCALING_OPTIONS[PICTUREVIEWER_SCALING_OPTION_COUNT] = { { CPictureViewer::SIMPLE, LOCALE_PICTUREVIEWER_RESIZE_SIMPLE }, { CPictureViewer::COLOR , LOCALE_PICTUREVIEWER_RESIZE_COLOR_AVERAGE }, { CPictureViewer::NONE , LOCALE_PICTUREVIEWER_RESIZE_NONE } }; #define AUDIOPLAYER_DISPLAY_ORDER_OPTION_COUNT 2 const CMenuOptionChooser::keyval AUDIOPLAYER_DISPLAY_ORDER_OPTIONS[AUDIOPLAYER_DISPLAY_ORDER_OPTION_COUNT] = { { CAudioPlayerGui::ARTIST_TITLE, LOCALE_AUDIOPLAYER_ARTIST_TITLE }, { CAudioPlayerGui::TITLE_ARTIST, LOCALE_AUDIOPLAYER_TITLE_ARTIST } }; void CNeutrinoApp::InitAudioplPicSettings(CMenuWidget &audioplPicSettings) { audioplPicSettings.addItem(GenericMenuSeparator); audioplPicSettings.addItem(GenericMenuBack); audioplPicSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_PICTUREVIEWER_HEAD)); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_PICTUREVIEWER_SCALING , &g_settings.picviewer_scaling , PICTUREVIEWER_SCALING_OPTIONS , PICTUREVIEWER_SCALING_OPTION_COUNT , true )); CStringInput * pic_timeout= new CStringInput(LOCALE_PICTUREVIEWER_SLIDE_TIME, g_settings.picviewer_slide_time, 2, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789 "); audioplPicSettings.addItem(new CMenuForwarder(LOCALE_PICTUREVIEWER_SLIDE_TIME, true, g_settings.picviewer_slide_time, pic_timeout)); audioplPicSettings.addItem(new CMenuForwarder(LOCALE_PICTUREVIEWER_DEFDIR, true, g_settings.network_nfs_picturedir, this, "picturedir")); audioplPicSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_AUDIOPLAYER_NAME)); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_DISPLAY_ORDER, &g_settings.audioplayer_display , AUDIOPLAYER_DISPLAY_ORDER_OPTIONS, AUDIOPLAYER_DISPLAY_ORDER_OPTION_COUNT, true )); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_FOLLOW , &g_settings.audioplayer_follow , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_SELECT_TITLE_BY_NAME , &g_settings.audioplayer_select_title_by_name , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_REPEAT_ON , &g_settings.audioplayer_repeat_on , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_SHOW_PLAYLIST, &g_settings.audioplayer_show_playlist, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true )); CStringInput * audio_screensaver= new CStringInput(LOCALE_AUDIOPLAYER_SCREENSAVER_TIMEOUT, g_settings.audioplayer_screensaver, 2, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789 "); audioplPicSettings.addItem(new CMenuForwarder(LOCALE_AUDIOPLAYER_SCREENSAVER_TIMEOUT, true, g_settings.audioplayer_screensaver, audio_screensaver)); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_HIGHPRIO , &g_settings.audioplayer_highprio , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); if(CVFD::getInstance()->has_lcd) //FIXME audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_SPECTRUM , &g_settings.spectrum , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); audioplPicSettings.addItem(new CMenuForwarder(LOCALE_AUDIOPLAYER_DEFDIR, true, g_settings.network_nfs_audioplayerdir, this, "audioplayerdir")); audioplPicSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYER_ENABLE_SC_METADATA, &g_settings.audioplayer_enable_sc_metadata, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true )); } #define MISCSETTINGS_FB_DESTINATION_OPTION_COUNT 3 const CMenuOptionChooser::keyval MISCSETTINGS_FB_DESTINATION_OPTIONS[MISCSETTINGS_FB_DESTINATION_OPTION_COUNT] = { { 0, LOCALE_OPTIONS_NULL }, { 1, LOCALE_OPTIONS_SERIAL }, { 2, LOCALE_OPTIONS_FB } }; #define MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTION_COUNT 2 const CMenuOptionChooser::keyval MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTIONS[MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTION_COUNT] = { { 0, LOCALE_FILESYSTEM_IS_UTF8_OPTION_ISO8859_1 }, { 1, LOCALE_FILESYSTEM_IS_UTF8_OPTION_UTF8 } }; #define INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT 4 const CMenuOptionChooser::keyval INFOBAR_SUBCHAN_DISP_POS_OPTIONS[INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT]= { { 0 , LOCALE_SETTINGS_POS_TOP_RIGHT }, { 1 , LOCALE_SETTINGS_POS_TOP_LEFT }, { 2 , LOCALE_SETTINGS_POS_BOTTOM_LEFT }, { 3 , LOCALE_SETTINGS_POS_BOTTOM_RIGHT } }; #define CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT 2 const CMenuOptionChooser::keyval CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS[CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT]= { { 0 , LOCALE_CHANNELLIST_EPGTEXT_ALIGN_LEFT }, { 1 , LOCALE_CHANNELLIST_EPGTEXT_ALIGN_RIGHT } }; #define CPU_FREQ_OPTION_COUNT 13 const CMenuOptionChooser::keyval CPU_FREQ_OPTIONS[CPU_FREQ_OPTION_COUNT] = { { 0, LOCALE_CPU_FREQ_DEFAULT }, { 50, NONEXISTANT_LOCALE, "50 Mhz"}, { 100, NONEXISTANT_LOCALE, "100 Mhz"}, { 150, NONEXISTANT_LOCALE, "150 Mhz"}, { 200, NONEXISTANT_LOCALE, "200 Mhz"}, { 250, NONEXISTANT_LOCALE, "250 Mhz"}, { 300, NONEXISTANT_LOCALE, "300 Mhz"}, { 350, NONEXISTANT_LOCALE, "350 Mhz"}, { 400, NONEXISTANT_LOCALE, "400 Mhz"}, { 450, NONEXISTANT_LOCALE, "450 Mhz"}, { 500, NONEXISTANT_LOCALE, "500 Mhz"}, { 550, NONEXISTANT_LOCALE, "550 Mhz"}, { 600, NONEXISTANT_LOCALE, "600 Mhz"}, }; void CNeutrinoApp::InitMiscSettings(CMenuWidget &miscSettings) { dprintf(DEBUG_DEBUG, "init miscsettings\n"); miscSettings.addItem(GenericMenuSeparator); miscSettings.addItem(GenericMenuBack); miscSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_SAVESETTINGSNOW, true, NULL, this, "savesettings", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); miscSettings.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_GENERAL)); #if 0 CMenuOptionChooser *m1 = new CMenuOptionChooser(LOCALE_MISCSETTINGS_SHUTDOWN_REAL_RCDELAY, &g_settings.shutdown_real_rcdelay, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, !g_settings.shutdown_real); CMiscNotifier* miscNotifier = new CMiscNotifier( m1 ); miscSettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_SHUTDOWN_REAL, &g_settings.shutdown_real, OPTIONS_OFF1_ON0_OPTIONS, OPTIONS_OFF1_ON0_OPTION_COUNT, true, miscNotifier)); #endif CStringInput * miscSettings_shutdown_count = new CStringInput(LOCALE_MISCSETTINGS_SHUTDOWN_COUNT, g_settings.shutdown_count, 3, LOCALE_MISCSETTINGS_SHUTDOWN_COUNT_HINT1, LOCALE_MISCSETTINGS_SHUTDOWN_COUNT_HINT2, "0123456789 "); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_SHUTDOWN_COUNT, true, g_settings.shutdown_count, miscSettings_shutdown_count)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_STARTSTANDBY, &g_settings.power_standby, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); //miscSettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_INFOBAR_SAT_DISPLAY, &g_settings.infobar_sat_display, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_ROTORSWAP, &g_settings.rotor_swap, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_INFOVIEWER_SUBCHAN_DISP_POS, &g_settings.infobar_subchan_disp_pos, INFOBAR_SUBCHAN_DISP_POS_OPTIONS, INFOBAR_SUBCHAN_DISP_POS_OPTIONS_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_CACHE_TXT, (int *)&g_settings.cacheTXT, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_VIRTUAL_ZAP_MODE, &g_settings.virtual_zap_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); //channellist miscSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_CHANNELLIST)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_CHANNELLIST_EPGTEXT_ALIGN, &g_settings.channellist_epgtext_align_right, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS, CHANNELLIST_EPGTEXT_ALIGN_RIGHT_OPTIONS_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.channellist_extended, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_CHANNELLIST_MAKE_HDLIST, &g_settings.make_hd_list, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAP_CYCLE, &g_settings.zap_cycle, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); miscSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_EPG_HEAD)); CSectionsdConfigNotifier* sectionsdConfigNotifier = new CSectionsdConfigNotifier; miscSettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_EPG_SAVE, &g_settings.epg_save, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); CStringInput * miscSettings_epg_cache = new CStringInput(LOCALE_MISCSETTINGS_EPG_CACHE, &g_settings.epg_cache, 2,LOCALE_MISCSETTINGS_EPG_CACHE_HINT1, LOCALE_MISCSETTINGS_EPG_CACHE_HINT2 , "0123456789 ", sectionsdConfigNotifier); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_CACHE, true, g_settings.epg_cache, miscSettings_epg_cache)); CStringInput * miscSettings_epg_cache_e = new CStringInput(LOCALE_MISCSETTINGS_EPG_EXTENDEDCACHE, &g_settings.epg_extendedcache, 3,LOCALE_MISCSETTINGS_EPG_EXTENDEDCACHE_HINT1, LOCALE_MISCSETTINGS_EPG_EXTENDEDCACHE_HINT2 , "0123456789 ", sectionsdConfigNotifier); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_EXTENDEDCACHE, true, g_settings.epg_extendedcache, miscSettings_epg_cache_e)); CStringInput * miscSettings_epg_old_events = new CStringInput(LOCALE_MISCSETTINGS_EPG_OLD_EVENTS, &g_settings.epg_old_events, 2,LOCALE_MISCSETTINGS_EPG_OLD_EVENTS_HINT1, LOCALE_MISCSETTINGS_EPG_OLD_EVENTS_HINT2 , "0123456789 ", sectionsdConfigNotifier); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_OLD_EVENTS, true, g_settings.epg_old_events, miscSettings_epg_old_events)); CStringInput * miscSettings_epg_max_events = new CStringInput(LOCALE_MISCSETTINGS_EPG_MAX_EVENTS, &g_settings.epg_max_events, 5,LOCALE_MISCSETTINGS_EPG_MAX_EVENTS_HINT1, LOCALE_MISCSETTINGS_EPG_MAX_EVENTS_HINT2 , "0123456789 ", sectionsdConfigNotifier); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_MAX_EVENTS, true, g_settings.epg_max_events, miscSettings_epg_max_events)); miscSettings.addItem(new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_DIR, true, g_settings.epg_dir, this, "epgdir")); #if 0 miscSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MISCSETTINGS_DRIVER_BOOT)); if(access("/var/tuxbox/emlog", F_OK) == 0) g_settings.emlog = 1; miscSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_USELOG, &g_settings.emlog, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, new CLogChangeNotifier)); #endif #if 0 keySetupNotifier = new CKeySetupNotifier; CStringInput * keySettings_repeat_genericblocker = new CStringInput(LOCALE_KEYBINDINGMENU_REPEATBLOCKGENERIC, g_settings.repeat_genericblocker, 3, LOCALE_REPEATBLOCKER_HINT_1, LOCALE_REPEATBLOCKER_HINT_2, "0123456789 ", keySetupNotifier); CStringInput * keySettings_repeatBlocker = new CStringInput(LOCALE_KEYBINDINGMENU_REPEATBLOCK, g_settings.repeat_blocker, 3, LOCALE_REPEATBLOCKER_HINT_1, LOCALE_REPEATBLOCKER_HINT_2, "0123456789 ", keySetupNotifier); keySetupNotifier->changeNotify(NONEXISTANT_LOCALE, NULL); miscSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_RC)); miscSettings.addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_REPEATBLOCK, true, g_settings.repeat_blocker, keySettings_repeatBlocker)); miscSettings.addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_REPEATBLOCKGENERIC, true, g_settings.repeat_genericblocker, keySettings_repeat_genericblocker)); miscSettings.addItem(m1); #endif miscSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_FILEBROWSER_HEAD)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_FILESYSTEM_IS_UTF8 , &g_settings.filesystem_is_utf8 , MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTIONS, MISCSETTINGS_FILESYSTEM_IS_UTF8_OPTION_COUNT, true )); miscSettings.addItem(new CMenuOptionChooser(LOCALE_FILEBROWSER_SHOWRIGHTS , &g_settings.filebrowser_showrights , MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); miscSettings.addItem(new CMenuOptionChooser(LOCALE_FILEBROWSER_DENYDIRECTORYLEAVE, &g_settings.filebrowser_denydirectoryleave, MESSAGEBOX_NO_YES_OPTIONS , MESSAGEBOX_NO_YES_OPTION_COUNT , true )); // miscSettings.addItem(new CMenuForwarder(LOCALE_EXTRA_KEY_PLUGIN, true, g_settings.onekey_plugin,this,"onekeyplugin")); funNotifier = new CFanControlNotifier(); //miscSettings.addItem(new CMenuOptionNumberChooser(LOCALE_FAN_SPEED, &g_settings.fan_speed, true, 0, 14, funNotifier, 0, 0, LOCALE_OPTIONS_OFF) ); miscSettings.addItem(GenericMenuSeparatorLine); miscSettings.addItem(new CMenuOptionNumberChooser(LOCALE_FAN_SPEED, &g_settings.fan_speed, true, 1, 14, funNotifier, 0, 0, LOCALE_OPTIONS_OFF) ); funNotifier->changeNotify(NONEXISTANT_LOCALE, (void*) &g_settings.fan_speed); #if 0 CCpuFreqNotifier * cpuNotifier = new CCpuFreqNotifier(); miscSettings.addItem(new CMenuOptionChooser(LOCALE_CPU_FREQ_NORMAL, &g_settings.cpufreq, CPU_FREQ_OPTIONS, CPU_FREQ_OPTION_COUNT, true, cpuNotifier)); miscSettings.addItem(new CMenuOptionChooser(LOCALE_CPU_FREQ_STANDBY, &g_settings.standby_cpufreq, CPU_FREQ_OPTIONS, CPU_FREQ_OPTION_COUNT, true)); #endif } void CNeutrinoApp::InitLanguageSettings(CMenuWidget &languageSettings) { languageSettings.addItem(GenericMenuSeparator); languageSettings.addItem(GenericMenuBack); languageSettings.addItem(GenericMenuSeparatorLine); struct dirent **namelist; int n; // printf("scanning locale dir now....(perhaps)\n"); char *pfad[] = {(char *) DATADIR "/neutrino/locale",(char *) "/var/tuxbox/config/locale"}; for(int p = 0;p < 2;p++) { n = scandir(pfad[p], &namelist, 0, alphasort); if(n < 0) { perror("loading locales: scandir"); } else { for(int count=0;countd_name); char * pos = strstr(locale, ".locale"); if(pos != NULL) { char iname[50]; *pos = '\0'; sprintf(iname, "%s.raw", locale); CMenuOptionLanguageChooser* oj = new CMenuOptionLanguageChooser((char*)locale, this, iname); oj->addOption(locale); languageSettings.addItem( oj ); } else free(locale); free(namelist[count]); } free(namelist); } } } #define AUDIOMENU_ANALOGOUT_OPTION_COUNT 3 const CMenuOptionChooser::keyval AUDIOMENU_ANALOGOUT_OPTIONS[AUDIOMENU_ANALOGOUT_OPTION_COUNT] = { { 0, LOCALE_AUDIOMENU_STEREO }, { 1, LOCALE_AUDIOMENU_MONOLEFT }, { 2, LOCALE_AUDIOMENU_MONORIGHT } }; #define AUDIOMENU_AVS_CONTROL_OPTION_COUNT 3 const CMenuOptionChooser::keyval AUDIOMENU_AVS_CONTROL_OPTIONS[AUDIOMENU_AVS_CONTROL_OPTION_COUNT] = { { CControld::TYPE_OST , LOCALE_AUDIOMENU_OST }, { CControld::TYPE_AVS , LOCALE_AUDIOMENU_AVS }, { CControld::TYPE_LIRC, LOCALE_AUDIOMENU_LIRC } }; #define AUDIOMENU_SRS_OPTION_COUNT 2 const CMenuOptionChooser::keyval AUDIOMENU_SRS_OPTIONS[AUDIOMENU_SRS_OPTION_COUNT] = { { 0 , LOCALE_SRS_ALGO_LIGHT }, { 1 , LOCALE_SRS_ALGO_NORMAL } }; #define AUDIOMENU_AVSYNC_OPTION_COUNT 3 const CMenuOptionChooser::keyval AUDIOMENU_AVSYNC_OPTIONS[AUDIOMENU_AVSYNC_OPTION_COUNT] = { { 0, LOCALE_OPTIONS_OFF }, { 1, LOCALE_OPTIONS_ON }, { 2, LOCALE_AUDIOMENU_AVSYNC_AM } }; #define AUDIOMENU_CLOCKREC_OPTION_COUNT 3 const CMenuOptionChooser::keyval AUDIOMENU_CLOCKREC_OPTIONS[AUDIOMENU_CLOCKREC_OPTION_COUNT] = { { 0, LOCALE_OPTIONS_OFF }, { 1, LOCALE_OPTIONS_ON }, }; void CNeutrinoApp::InitAudioSettings(CMenuWidget &audioSettings, CAudioSetupNotifier* audioSetupNotifier) { audioSettings.addItem(GenericMenuSeparator); audioSettings.addItem(GenericMenuBack); audioSettings.addItem(GenericMenuSeparatorLine); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_ANALOGOUT, &g_settings.audio_AnalogMode, AUDIOMENU_ANALOGOUT_OPTIONS, AUDIOMENU_ANALOGOUT_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_DOLBYDIGITAL, &g_settings.audio_DolbyDigital, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_ENGLISH, &g_settings.audio_english, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_HDMI_DD, &g_settings.hdmi_dd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_SPDIF_DD, &g_settings.spdif_dd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_AVSYNC, &g_settings.avsync, AUDIOMENU_AVSYNC_OPTIONS, AUDIOMENU_AVSYNC_OPTION_COUNT, true, audioSetupNotifier)); #if 0 audioSettings.addItem(new CMenuOptionChooser(LOCALE_AUDIOMENU_CLOCKREC, &g_settings.clockrec, AUDIOMENU_CLOCKREC_OPTIONS, AUDIOMENU_CLOCKREC_OPTION_COUNT, true, audioSetupNotifier)); #endif audioSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_SRS_IQ)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_SRS_IQ, &g_settings.srs_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_SRS_ALGO, &g_settings.srs_algo, AUDIOMENU_SRS_OPTIONS, AUDIOMENU_SRS_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionChooser(LOCALE_SRS_NMGR, &g_settings.srs_nmgr_enable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, audioSetupNotifier)); audioSettings.addItem(new CMenuOptionNumberChooser(LOCALE_SRS_VOLUME, &g_settings.srs_ref_volume, true, 1, 100, audioSetupNotifier)); #if 0 CStringInput * audio_PCMOffset = new CStringInput(LOCALE_AUDIOMENU_PCMOFFSET, g_settings.audio_PCMOffset, 2, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "0123456789 ", audioSetupNotifier); CMenuForwarder *mf = new CMenuForwarder(LOCALE_AUDIOMENU_PCMOFFSET, (g_settings.audio_avs_Control == CControld::TYPE_LIRC), g_settings.audio_PCMOffset, audio_PCMOffset ); audioSettings.addItem(mf); #endif } #if 1 #define PARENTALLOCK_PROMPT_OPTION_COUNT 3 #else #define PARENTALLOCK_PROMPT_OPTION_COUNT 4 #endif const CMenuOptionChooser::keyval PARENTALLOCK_PROMPT_OPTIONS[PARENTALLOCK_PROMPT_OPTION_COUNT] = { { PARENTALLOCK_PROMPT_NEVER , LOCALE_PARENTALLOCK_NEVER }, #if 0 { PARENTALLOCK_PROMPT_ONSTART , LOCALE_PARENTALLOCK_ONSTART }, #endif { PARENTALLOCK_PROMPT_CHANGETOLOCKED, LOCALE_PARENTALLOCK_CHANGETOLOCKED }, { PARENTALLOCK_PROMPT_ONSIGNAL , LOCALE_PARENTALLOCK_ONSIGNAL } }; #define PARENTALLOCK_LOCKAGE_OPTION_COUNT 3 const CMenuOptionChooser::keyval PARENTALLOCK_LOCKAGE_OPTIONS[PARENTALLOCK_LOCKAGE_OPTION_COUNT] = { { 12, LOCALE_PARENTALLOCK_LOCKAGE12 }, { 16, LOCALE_PARENTALLOCK_LOCKAGE16 }, { 18, LOCALE_PARENTALLOCK_LOCKAGE18 } }; void CNeutrinoApp::InitParentalLockSettings(CMenuWidget &parentallockSettings) { parentallockSettings.addItem(GenericMenuSeparator); parentallockSettings.addItem(GenericMenuBack); parentallockSettings.addItem(GenericMenuSeparatorLine); parentallockSettings.addItem(new CMenuOptionChooser(LOCALE_PARENTALLOCK_PROMPT , &g_settings.parentallock_prompt , PARENTALLOCK_PROMPT_OPTIONS , PARENTALLOCK_PROMPT_OPTION_COUNT , !parentallocked)); parentallockSettings.addItem(new CMenuOptionChooser(LOCALE_PARENTALLOCK_LOCKAGE, &g_settings.parentallock_lockage, PARENTALLOCK_LOCKAGE_OPTIONS, PARENTALLOCK_LOCKAGE_OPTION_COUNT, !parentallocked)); CPINChangeWidget * pinChangeWidget = new CPINChangeWidget(LOCALE_PARENTALLOCK_CHANGEPIN, g_settings.parentallock_pincode, 4, LOCALE_PARENTALLOCK_CHANGEPIN_HINT1); parentallockSettings.addItem( new CMenuForwarder(LOCALE_PARENTALLOCK_CHANGEPIN, true, g_settings.parentallock_pincode, pinChangeWidget)); } void CNeutrinoApp::InitNetworkSettings(CMenuWidget &networkSettings) { CIPInput * networkSettings_NetworkIP = new CIPInput(LOCALE_NETWORKMENU_IPADDRESS , networkConfig.address , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, MyIPChanger); CIPInput * networkSettings_NetMask = new CIPInput(LOCALE_NETWORKMENU_NETMASK , networkConfig.netmask , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CIPInput * networkSettings_Broadcast = new CIPInput(LOCALE_NETWORKMENU_BROADCAST , networkConfig.broadcast , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CIPInput * networkSettings_Gateway = new CIPInput(LOCALE_NETWORKMENU_GATEWAY , networkConfig.gateway , LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CIPInput * networkSettings_NameServer = new CIPInput(LOCALE_NETWORKMENU_NAMESERVER, networkConfig.nameserver, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CSectionsdConfigNotifier* sectionsdConfigNotifier = new CSectionsdConfigNotifier; CStringInputSMS * networkSettings_NtpServer = new CStringInputSMS(LOCALE_NETWORKMENU_NTPSERVER, &g_settings.network_ntpserver, 30, LOCALE_NETWORKMENU_NTPSERVER_HINT1, LOCALE_NETWORKMENU_NTPSERVER_HINT2, "abcdefghijklmnopqrstuvwxyz0123456789-. ", sectionsdConfigNotifier); CStringInput * networkSettings_NtpRefresh = new CStringInput(LOCALE_NETWORKMENU_NTPREFRESH, &g_settings.network_ntprefresh, 3,LOCALE_NETWORKMENU_NTPREFRESH_HINT1, LOCALE_NETWORKMENU_NTPREFRESH_HINT2 , "0123456789 ", sectionsdConfigNotifier); CMenuForwarder *m0 = new CMenuForwarder(LOCALE_NETWORKMENU_SETUPNOW, true, NULL, this, "network", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED); CMenuForwarder *m1 = new CMenuForwarder(LOCALE_NETWORKMENU_IPADDRESS , networkConfig.inet_static, networkConfig.address , networkSettings_NetworkIP ); CMenuForwarder *m2 = new CMenuForwarder(LOCALE_NETWORKMENU_NETMASK , networkConfig.inet_static, networkConfig.netmask , networkSettings_NetMask ); CMenuForwarder *m3 = new CMenuForwarder(LOCALE_NETWORKMENU_BROADCAST , networkConfig.inet_static, networkConfig.broadcast , networkSettings_Broadcast ); CMenuForwarder *m4 = new CMenuForwarder(LOCALE_NETWORKMENU_GATEWAY , networkConfig.inet_static, networkConfig.gateway , networkSettings_Gateway ); CMenuForwarder *m5 = new CMenuForwarder(LOCALE_NETWORKMENU_NAMESERVER, networkConfig.inet_static, networkConfig.nameserver, networkSettings_NameServer); CMenuForwarder *m6 = new CMenuForwarder( LOCALE_NETWORKMENU_NTPSERVER, true , g_settings.network_ntpserver, networkSettings_NtpServer ); CMenuForwarder *m7 = new CMenuForwarder( LOCALE_NETWORKMENU_NTPREFRESH, true , g_settings.network_ntprefresh, networkSettings_NtpRefresh ); CDHCPNotifier* dhcpNotifier = new CDHCPNotifier(m1,m2,m3,m4,m5); network_automatic_start = networkConfig.automatic_start ? 1 : 0; CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_NETWORKMENU_SETUPONSTARTUP, &network_automatic_start, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); networkSettings.addItem(GenericMenuSeparator); networkSettings.addItem(GenericMenuBack); networkSettings.addItem(GenericMenuSeparatorLine); networkSettings.addItem( oj ); networkSettings.addItem(new CMenuForwarder(LOCALE_NETWORKMENU_TEST, true, NULL, this, "networktest")); networkSettings.addItem(new CMenuForwarder(LOCALE_NETWORKMENU_SHOW, true, NULL, this, "networkshow", CRCInput::RC_help, NEUTRINO_ICON_BUTTON_HELP_SMALL)); networkSettings.addItem( m0 ); networkSettings.addItem(GenericMenuSeparatorLine); network_dhcp = networkConfig.inet_static ? 0 : 1; oj = new CMenuOptionChooser(LOCALE_NETWORKMENU_DHCP, &network_dhcp, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, dhcpNotifier); networkSettings.addItem(oj); networkSettings.addItem(GenericMenuSeparatorLine); networkSettings.addItem( m1); networkSettings.addItem( m2); networkSettings.addItem( m3); networkSettings.addItem(GenericMenuSeparatorLine); networkSettings.addItem( m4); networkSettings.addItem( m5); networkSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_NETWORKMENU_NTPTITLE)); networkSettings.addItem(new CMenuOptionChooser(LOCALE_NETWORKMENU_NTPENABLE, &g_settings.network_ntpenable, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, sectionsdConfigNotifier)); networkSettings.addItem( m6); networkSettings.addItem( m7); networkSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_NETWORKMENU_MOUNT)); networkSettings.addItem(new CMenuForwarder(LOCALE_NFS_MOUNT , true, NULL, new CNFSMountGui(), NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); networkSettings.addItem(new CMenuForwarder(LOCALE_NFS_UMOUNT, true, NULL, new CNFSUmountGui(), NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); } #define RECORDINGMENU_RECORDING_TYPE_OPTION_COUNT 4 const CMenuOptionChooser::keyval RECORDINGMENU_RECORDING_TYPE_OPTIONS[RECORDINGMENU_RECORDING_TYPE_OPTION_COUNT] = { { CNeutrinoApp::RECORDING_OFF , LOCALE_RECORDINGMENU_OFF }, { CNeutrinoApp::RECORDING_SERVER, LOCALE_RECORDINGMENU_SERVER }, { CNeutrinoApp::RECORDING_VCR , LOCALE_RECORDINGMENU_VCR }, { CNeutrinoApp::RECORDING_FILE , LOCALE_RECORDINGMENU_FILE } }; #define CHOOSE_DIRECT_REC_DIR_COUNT 3 const CMenuOptionChooser::keyval CHOOSE_DIRECT_REC_DIR[RECORDINGMENU_RECORDING_TYPE_OPTION_COUNT] = { {0, LOCALE_OPTIONS_OFF}, {1, LOCALE_NFS_TYPE_NFS}, {2, LOCALE_NFS_LOCALDIR} }; void CNeutrinoApp::InitRecordingSettings(CMenuWidget &recordingSettings) { #if 0 CIPInput * recordingSettings_server_ip = new CIPInput(LOCALE_RECORDINGMENU_SERVER_IP, g_settings.recording_server_ip, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CStringInput * recordingSettings_server_port = new CStringInput(LOCALE_RECORDINGMENU_SERVER_PORT, g_settings.recording_server_port, 6, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, "0123456789 "); CMenuForwarder * mf1 = new CMenuForwarder(LOCALE_RECORDINGMENU_SERVER_IP, (g_settings.recording_type == RECORDING_SERVER), g_settings.recording_server_ip, recordingSettings_server_ip); CMenuForwarder * mf2 = new CMenuForwarder(LOCALE_RECORDINGMENU_SERVER_PORT, (g_settings.recording_type == RECORDING_SERVER), g_settings.recording_server_port, recordingSettings_server_port); CMACInput * recordingSettings_server_mac = new CMACInput(LOCALE_RECORDINGMENU_SERVER_MAC, g_settings.recording_server_mac, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CMenuForwarder * mf3 = new CMenuForwarder(LOCALE_RECORDINGMENU_SERVER_MAC, ((g_settings.recording_type == RECORDING_SERVER) && g_settings.recording_server_wakeup==1), g_settings.recording_server_mac, recordingSettings_server_mac); CRecordingNotifier2 * RecordingNotifier2 = new CRecordingNotifier2(mf3); CMenuOptionChooser * oj2 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_SERVER_WAKEUP, &g_settings.recording_server_wakeup, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_SERVER), RecordingNotifier2); CMenuOptionChooser* oj3 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STOPPLAYBACK, &g_settings.recording_stopplayback, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_SERVER || g_settings.recording_type == RECORDING_FILE)); CMenuOptionChooser* oj4 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STOPSECTIONSD, &g_settings.recording_stopsectionsd, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_SERVER || g_settings.recording_type == RECORDING_FILE)); CMenuOptionChooser* oj4b = new CMenuOptionChooser(LOCALE_RECORDINGMENU_ZAP_ON_ANNOUNCE, &g_settings.recording_zap_on_announce, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj5 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_NO_SCART, &g_settings.recording_vcr_no_scart, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_VCR)); CMenuOptionChooser* oj12 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_RECORD_IN_SPTS_MODE, &g_settings.recording_in_spts_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT,(g_settings.recording_type == RECORDING_SERVER || g_settings.recording_type == RECORDING_FILE) ); #endif int pre,post; g_Timerd->getRecordingSafety(pre,post); sprintf(g_settings.record_safety_time_before, "%02d", pre/60); sprintf(g_settings.record_safety_time_after, "%02d", post/60); CRecordingSafetyNotifier *RecordingSafetyNotifier = new CRecordingSafetyNotifier; CStringInput * timerBefore = new CStringInput(LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_BEFORE, g_settings.record_safety_time_before, 2, LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_BEFORE_HINT_1, LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_BEFORE_HINT_2,"0123456789 ", RecordingSafetyNotifier); CMenuForwarder *fTimerBefore = new CMenuForwarder(LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_BEFORE, true, g_settings.record_safety_time_before, timerBefore); CStringInput * timerAfter = new CStringInput(LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_AFTER, g_settings.record_safety_time_after, 2, LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_AFTER_HINT_1, LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_AFTER_HINT_2,"0123456789 ", RecordingSafetyNotifier); CMenuForwarder *fTimerAfter = new CMenuForwarder(LOCALE_TIMERSETTINGS_RECORD_SAFETY_TIME_AFTER, true, g_settings.record_safety_time_after, timerAfter); // default recording audio pids //CMenuWidget * apidMenu = new CMenuWidget(LOCALE_RECORDINGMENU_APIDS, "audio.raw"); //CMenuForwarder* fApidMenu = new CMenuForwarder(LOCALE_RECORDINGMENU_APIDS ,true, NULL, apidMenu); g_settings.recording_audio_pids_std = ( g_settings.recording_audio_pids_default & TIMERD_APIDS_STD ) ? 1 : 0 ; g_settings.recording_audio_pids_alt = ( g_settings.recording_audio_pids_default & TIMERD_APIDS_ALT ) ? 1 : 0 ; g_settings.recording_audio_pids_ac3 = ( g_settings.recording_audio_pids_default & TIMERD_APIDS_AC3 ) ? 1 : 0 ; CRecAPIDSettingsNotifier * an = new CRecAPIDSettingsNotifier; CMenuOptionChooser* aoj1 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_STD, &g_settings.recording_audio_pids_std, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true, an); CMenuOptionChooser* aoj2 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_ALT, &g_settings.recording_audio_pids_alt, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true, an); CMenuOptionChooser* aoj3 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_APIDS_AC3, &g_settings.recording_audio_pids_ac3, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true, an); #if 0 apidRecordingSettings->addItem(GenericMenuSeparator); apidRecordingSettings->addItem(GenericMenuBack); apidRecordingSettings->addItem(GenericMenuSeparatorLine); apidRecordingSettings->addItem(aoj1); apidRecordingSettings->addItem(aoj2); apidRecordingSettings->addItem(aoj3); #endif CMenuForwarder* fRecDir = new CMenuForwarder(LOCALE_RECORDINGMENU_DEFDIR, true, g_settings.network_nfs_recordingdir, this, "recordingdir"); CMenuForwarder* fTsDir = new CMenuForwarder(LOCALE_RECORDINGMENU_TSDIR, true, g_settings.timeshiftdir, this, "timeshiftdir"); CMenuOptionChooser* zapAnnounce = new CMenuOptionChooser(LOCALE_RECORDINGMENU_ZAP_ON_ANNOUNCE, &g_settings.recording_zap_on_announce, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); recordingSettings.addItem(GenericMenuSeparator); recordingSettings.addItem(GenericMenuBack); recordingSettings.addItem(new CMenuForwarder(LOCALE_RECORDINGMENU_SETUPNOW, true, NULL, this, "recording", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); recordingSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_TIMERSETTINGS_SEPARATOR)); recordingSettings.addItem(fTimerBefore); recordingSettings.addItem(fTimerAfter); recordingSettings.addItem(zapAnnounce); recordingSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_RECORDINGMENU_APIDS)); recordingSettings.addItem(aoj1); recordingSettings.addItem(aoj2); recordingSettings.addItem(aoj3); recordingSettings.addItem(GenericMenuSeparatorLine); recordingSettings.addItem(fRecDir); recordingSettings.addItem(fTsDir); recordingSettings.addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_RECORD_TIME, &g_settings.record_hours, true, 1, 24, NULL) ); if(1) { //has_hdd) { recordingSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_TIMESHIFT_PAUSE, &g_settings.timeshift_pause, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); recordingSettings.addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_AUTO_TIMESHIFT, &g_settings.auto_timeshift, true, 0, 300, NULL)); recordingSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_AUTO_DELETE, &g_settings.auto_delete, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); recordingSettings.addItem(new CMenuOptionChooser(LOCALE_EXTRA_TEMP_TIMESHIFT, &g_settings.temp_timeshift, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); } #if 0 // for direct recording CMenuWidget *directRecordingSettings = new CMenuWidget(LOCALE_RECORDINGMENU_FILESETTINGS, NEUTRINO_ICON_RECORDING); CMenuForwarder* mf7 = new CMenuForwarder(LOCALE_RECORDINGMENU_FILESETTINGS,(g_settings.recording_type == RECORDING_FILE),NULL,directRecordingSettings, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN); CStringInput * recordingSettings_splitsize = new CStringInput(LOCALE_RECORDINGMENU_SPLITSIZE, g_settings.recording_splitsize, 6, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, "0123456789 "); CMenuForwarder* mf9 = new CMenuForwarder(LOCALE_RECORDINGMENU_SPLITSIZE, true, g_settings.recording_splitsize,recordingSettings_splitsize); CMenuOptionChooser* oj6 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_USE_O_SYNC, &g_settings.recording_use_o_sync, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj7 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_USE_FDATASYNC, &g_settings.recording_use_fdatasync, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj8 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STREAM_VTXT_PID, &g_settings.recording_stream_vtxt_pid, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj9 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STREAM_PMT_PID, &g_settings.recording_stream_pmt_pid, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CStringInput * recordingSettings_ringbuffers = new CStringInput(LOCALE_RECORDINGMENU_RINGBUFFERS, g_settings.recording_ringbuffers, 2, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, "0123456789 "); CMenuForwarder* mf10 = new CMenuForwarder(LOCALE_RECORDINGMENU_RINGBUFFERS, true, g_settings.recording_ringbuffers,recordingSettings_ringbuffers); //CMenuOptionChooser* oj10 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_CHOOSE_DIRECT_REC_DIR, &g_settings.recording_choose_direct_rec_dir, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj10 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_CHOOSE_DIRECT_REC_DIR, &g_settings.recording_choose_direct_rec_dir, CHOOSE_DIRECT_REC_DIR, CHOOSE_DIRECT_REC_DIR_COUNT, true); CMenuOptionChooser* oj11 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_EPG_FOR_FILENAME, &g_settings.recording_epg_for_filename, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CMenuOptionChooser* oj13 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_SAVE_IN_CHANNELDIR, &g_settings.recording_save_in_channeldir, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); CRecordingNotifier *RecordingNotifier = new CRecordingNotifier(mf1,mf2,oj2,mf3,oj3,oj4,oj5,mf7,oj12); CMenuOptionChooser* oj1 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_RECORDING_TYPE, &g_settings.recording_type, RECORDINGMENU_RECORDING_TYPE_OPTIONS, RECORDINGMENU_RECORDING_TYPE_OPTION_COUNT, true, RecordingNotifier); recordingSettings.addItem(GenericMenuSeparator); recordingSettings.addItem(GenericMenuBack); //recordingSettings.addItem(new CMenuForwarder(LOCALE_SETTINGS_HELP, true, NULL, this, "help_recording", CRCInput::RC_help, NEUTRINO_ICON_BUTTON_HELP_SMALL)); recordingSettings.addItem(new CMenuForwarder(LOCALE_RECORDINGMENU_SETUPNOW, true, NULL, this, "recording", CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); recordingSettings.addItem(GenericMenuSeparatorLine); recordingSettings.addItem( oj1); recordingSettings.addItem(GenericMenuSeparatorLine); recordingSettings.addItem( mf1); recordingSettings.addItem( mf2); recordingSettings.addItem( oj2); recordingSettings.addItem( mf3); recordingSettings.addItem( oj3); recordingSettings.addItem( oj4); recordingSettings.addItem(GenericMenuSeparatorLine); recordingSettings.addItem( oj5); recordingSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_TIMERSETTINGS_SEPARATOR)); recordingSettings.addItem( mf5); recordingSettings.addItem( mf6); recordingSettings.addItem( oj4b); recordingSettings.addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_RECORD_TIME, &g_settings.record_hours, true, 1, 24) ); recordingSettings.addItem(GenericMenuSeparatorLine); #if 0 recordingSettings.addItem(oj12); #endif recordingSettings.addItem( mf13); recordingSettings.addItem( mf7); directRecordingSettings->addItem(GenericMenuSeparator); directRecordingSettings->addItem(GenericMenuBack); directRecordingSettings->addItem(GenericMenuSeparatorLine); directRecordingSettings->addItem(mf8); directRecordingSettings->addItem(mf9); directRecordingSettings->addItem(mf10); directRecordingSettings->addItem(oj6); directRecordingSettings->addItem(oj7); directRecordingSettings->addItem(oj8); directRecordingSettings->addItem(oj9); directRecordingSettings->addItem(oj10); directRecordingSettings->addItem(oj11); directRecordingSettings->addItem(oj13); recordingstatus = 0; if(has_hdd) { directRecordingSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_TIMESHIFT_PAUSE, &g_settings.timeshift_pause, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); directRecordingSettings->addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_AUTO_TIMESHIFT, &g_settings.auto_timeshift, true, 0, 300)); directRecordingSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_AUTO_DELETE, &g_settings.auto_delete, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); directRecordingSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_TEMP_TIMESHIFT, &g_settings.temp_timeshift, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); } #endif } #define STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC_OPTION_COUNT 2 const CMenuOptionChooser::keyval STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC_OPTIONS[STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC_OPTION_COUNT] = { { 0, LOCALE_STREAMINGMENU_MPEG1 }, { 1, LOCALE_STREAMINGMENU_MPEG2 } }; #define STREAMINGMENU_STREAMING_RESOLUTION_OPTION_COUNT 4 const CMenuOptionChooser::keyval STREAMINGMENU_STREAMING_RESOLUTION_OPTIONS[STREAMINGMENU_STREAMING_RESOLUTION_OPTION_COUNT] = { { 0, LOCALE_STREAMINGMENU_352X288 }, { 1, LOCALE_STREAMINGMENU_352X576 }, { 2, LOCALE_STREAMINGMENU_480X576 }, { 3, LOCALE_STREAMINGMENU_704X576 } }; #define STREAMINGMENU_STREAMING_TYPE_OPTION_COUNT 2 const CMenuOptionChooser::keyval STREAMINGMENU_STREAMING_TYPE_OPTIONS[STREAMINGMENU_STREAMING_TYPE_OPTION_COUNT] = { { 0, LOCALE_STREAMINGMENU_OFF }, { 1, LOCALE_STREAMINGMENU_ON } }; void CNeutrinoApp::InitStreamingSettings(CMenuWidget &streamingSettings) { streamingSettings.addItem(GenericMenuSeparator); streamingSettings.addItem(GenericMenuBack); streamingSettings.addItem(GenericMenuSeparatorLine); CIPInput * streamingSettings_server_ip = new CIPInput(LOCALE_STREAMINGMENU_SERVER_IP, g_settings.streaming_server_ip, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2); CStringInput * streamingSettings_server_port = new CStringInput(LOCALE_STREAMINGMENU_SERVER_PORT, g_settings.streaming_server_port, 6, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2,"0123456789 "); CStringInputSMS * cddriveInput = new CStringInputSMS(LOCALE_STREAMINGMENU_STREAMING_SERVER_CDDRIVE, g_settings.streaming_server_cddrive, 20, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, "abcdefghijklmnopqrstuvwxyz0123456789!""§$%&/()=?-:\\ "); CStringInput * streamingSettings_videorate = new CStringInput(LOCALE_STREAMINGMENU_STREAMING_VIDEORATE, g_settings.streaming_videorate, 5, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2,"0123456789 "); CStringInput * streamingSettings_audiorate = new CStringInput(LOCALE_STREAMINGMENU_STREAMING_AUDIORATE, g_settings.streaming_audiorate, 5, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2,"0123456789 "); CStringInputSMS * startdirInput = new CStringInputSMS(LOCALE_STREAMINGMENU_STREAMING_SERVER_STARTDIR, g_settings.streaming_server_startdir, 30, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"abcdefghijklmnopqrstuvwxyz0123456789!""§$%&/()=?-:\\ "); CMenuForwarder* mf1 = new CMenuForwarder(LOCALE_STREAMINGMENU_SERVER_IP , (g_settings.streaming_type==1), g_settings.streaming_server_ip , streamingSettings_server_ip); CMenuForwarder* mf2 = new CMenuForwarder(LOCALE_STREAMINGMENU_SERVER_PORT , (g_settings.streaming_type==1), g_settings.streaming_server_port , streamingSettings_server_port); CMenuForwarder* mf3 = new CMenuForwarder(LOCALE_STREAMINGMENU_STREAMING_SERVER_CDDRIVE , (g_settings.streaming_type==1), g_settings.streaming_server_cddrive , cddriveInput); CMenuForwarder* mf4 = new CMenuForwarder(LOCALE_STREAMINGMENU_STREAMING_VIDEORATE , (g_settings.streaming_type==1), g_settings.streaming_videorate , streamingSettings_videorate); CMenuForwarder* mf5 = new CMenuForwarder(LOCALE_STREAMINGMENU_STREAMING_AUDIORATE , (g_settings.streaming_type==1), g_settings.streaming_audiorate , streamingSettings_audiorate); CMenuForwarder* mf6 = new CMenuForwarder(LOCALE_STREAMINGMENU_STREAMING_SERVER_STARTDIR, (g_settings.streaming_type==1), g_settings.streaming_server_startdir, startdirInput); CMenuForwarder* mf7 = new CMenuForwarder(LOCALE_MOVIEPLAYER_DEFDIR, true, g_settings.network_nfs_moviedir,this,"moviedir"); CMenuForwarder* mf8 = new CMenuForwarder(LOCALE_MOVIEPLAYER_DEFPLUGIN, true, g_settings.movieplayer_plugin,this,"movieplugin"); CMenuOptionChooser* oj1 = new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_TRANSCODE_AUDIO , &g_settings.streaming_transcode_audio , MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true); CMenuOptionChooser* oj2 = new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_FORCE_AVI_RAWAUDIO , &g_settings.streaming_force_avi_rawaudio , MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true); CMenuOptionChooser* oj3 = new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_FORCE_TRANSCODE_VIDEO, &g_settings.streaming_force_transcode_video, MESSAGEBOX_NO_YES_OPTIONS, MESSAGEBOX_NO_YES_OPTION_COUNT, true); // not yet supported by VLC CMenuOptionChooser* oj4 = new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC, &g_settings.streaming_transcode_video_codec, STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC_OPTIONS, STREAMINGMENU_STREAMING_TRANSCODE_VIDEO_CODEC_OPTION_COUNT, true); CMenuOptionChooser* oj5 = new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_RESOLUTION , &g_settings.streaming_resolution , STREAMINGMENU_STREAMING_RESOLUTION_OPTIONS, STREAMINGMENU_STREAMING_RESOLUTION_OPTION_COUNT, true); CStreamingNotifier *StreamingNotifier = new CStreamingNotifier(mf1,mf2,mf3,mf4,mf5,mf6,oj1,oj2,oj3,oj4,oj5); streamingSettings.addItem(new CMenuOptionChooser(LOCALE_STREAMINGMENU_STREAMING_TYPE , &g_settings.streaming_type , STREAMINGMENU_STREAMING_TYPE_OPTIONS, STREAMINGMENU_STREAMING_TYPE_OPTION_COUNT, true, StreamingNotifier)); streamingSettings.addItem(GenericMenuSeparatorLine); streamingSettings.addItem( mf1); //Server IP streamingSettings.addItem( mf2); //Server Port streamingSettings.addItem( mf3); //CD-Drive streamingSettings.addItem( mf6); //Startdir streamingSettings.addItem(GenericMenuSeparatorLine); streamingSettings.addItem( mf4); //Video-Rate streamingSettings.addItem( oj3); streamingSettings.addItem( oj4); streamingSettings.addItem( oj5); streamingSettings.addItem(GenericMenuSeparatorLine); streamingSettings.addItem( mf5); //Audiorate streamingSettings.addItem( oj1); streamingSettings.addItem( oj2); streamingSettings.addItem(GenericMenuSeparatorLine); streamingSettings.addItem( mf7); //default dir streamingSettings.addItem( mf8); //default movieplugin } class CMenuNumberInput : public CMenuForwarder, CMenuTarget, CChangeObserver { private: CChangeObserver * observer; CConfigFile * configfile; int32_t defaultvalue; char value[11]; protected: virtual const char * getOption(void) { sprintf(value, "%u", configfile->getInt32(locale_real_names[text], defaultvalue)); return value; } virtual bool changeNotify(const neutrino_locale_t OptionName, void * Data) { configfile->setInt32(locale_real_names[text], atoi(value)); return observer->changeNotify(OptionName, Data); } public: CMenuNumberInput(const neutrino_locale_t Text, const int32_t DefaultValue, CChangeObserver * const _observer, CConfigFile * const _configfile) : CMenuForwarder(Text, true, NULL, this) { observer = _observer; configfile = _configfile; defaultvalue = DefaultValue; } int exec(CMenuTarget * parent, const std::string & actionKey) { CStringInput input(text, (char *)getOption(), 3, LOCALE_IPSETUP_HINT_1, LOCALE_IPSETUP_HINT_2, "0123456789 ", this); return input.exec(parent, actionKey); } }; const SNeutrinoSettings::FONT_TYPES channellist_font_sizes[4] = { SNeutrinoSettings::FONT_TYPE_CHANNELLIST, SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR, SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER, SNeutrinoSettings::FONT_TYPE_CHANNEL_NUM_ZAP }; const SNeutrinoSettings::FONT_TYPES eventlist_font_sizes[4] = { SNeutrinoSettings::FONT_TYPE_EVENTLIST_TITLE, SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMLARGE, SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL, SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME, }; const SNeutrinoSettings::FONT_TYPES infobar_font_sizes[4] = { SNeutrinoSettings::FONT_TYPE_INFOBAR_NUMBER, SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME, SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO, SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL }; const SNeutrinoSettings::FONT_TYPES epg_font_sizes[4] = { SNeutrinoSettings::FONT_TYPE_EPG_TITLE, SNeutrinoSettings::FONT_TYPE_EPG_INFO1, SNeutrinoSettings::FONT_TYPE_EPG_INFO2, SNeutrinoSettings::FONT_TYPE_EPG_DATE }; const SNeutrinoSettings::FONT_TYPES gamelist_font_sizes[2] = { SNeutrinoSettings::FONT_TYPE_GAMELIST_ITEMLARGE, SNeutrinoSettings::FONT_TYPE_GAMELIST_ITEMSMALL }; const SNeutrinoSettings::FONT_TYPES other_font_sizes[4] = { SNeutrinoSettings::FONT_TYPE_MENU, SNeutrinoSettings::FONT_TYPE_MENU_TITLE, SNeutrinoSettings::FONT_TYPE_MENU_INFO, SNeutrinoSettings::FONT_TYPE_FILEBROWSER_ITEM }; font_sizes_groups font_sizes_groups[6] = { {LOCALE_FONTMENU_CHANNELLIST, 4, channellist_font_sizes, "fontsize.dcha"}, {LOCALE_FONTMENU_EVENTLIST , 4, eventlist_font_sizes , "fontsize.deve"}, {LOCALE_FONTMENU_EPG , 4, epg_font_sizes , "fontsize.depg"}, {LOCALE_FONTMENU_INFOBAR , 4, infobar_font_sizes , "fontsize.dinf"}, {LOCALE_FONTMENU_GAMELIST , 2, gamelist_font_sizes , "fontsize.dgam"}, {NONEXISTANT_LOCALE , 4, other_font_sizes , "fontsize.doth"} }; #define FONT_STYLE_REGULAR 0 #define FONT_STYLE_BOLD 1 #define FONT_STYLE_ITALIC 2 font_sizes_struct neutrino_font[FONT_TYPE_COUNT] = { {LOCALE_FONTSIZE_MENU , 20, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_MENU_TITLE , 30, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_MENU_INFO , 16, FONT_STYLE_REGULAR, 0}, {LOCALE_FONTSIZE_EPG_TITLE , 25, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_EPG_INFO1 , 17, FONT_STYLE_ITALIC , 2}, {LOCALE_FONTSIZE_EPG_INFO2 , 17, FONT_STYLE_REGULAR, 2}, {LOCALE_FONTSIZE_EPG_DATE , 15, FONT_STYLE_REGULAR, 2}, {LOCALE_FONTSIZE_EVENTLIST_TITLE , 30, FONT_STYLE_REGULAR, 0}, {LOCALE_FONTSIZE_EVENTLIST_ITEMLARGE, 20, FONT_STYLE_BOLD , 1}, {LOCALE_FONTSIZE_EVENTLIST_ITEMSMALL, 14, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_EVENTLIST_DATETIME , 16, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_GAMELIST_ITEMLARGE , 20, FONT_STYLE_BOLD , 1}, {LOCALE_FONTSIZE_GAMELIST_ITEMSMALL , 16, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_CHANNELLIST , 20, FONT_STYLE_BOLD , 1}, {LOCALE_FONTSIZE_CHANNELLIST_DESCR , 20, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_CHANNELLIST_NUMBER , 14, FONT_STYLE_BOLD , 2}, {LOCALE_FONTSIZE_CHANNEL_NUM_ZAP , 40, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_NUMBER , 30 /* orig 50*/, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_CHANNAME , 30, FONT_STYLE_BOLD , 0}, {LOCALE_FONTSIZE_INFOBAR_INFO , 20, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_INFOBAR_SMALL , 14, FONT_STYLE_REGULAR, 1}, {LOCALE_FONTSIZE_FILEBROWSER_ITEM , 16, FONT_STYLE_BOLD , 1} }; void CNeutrinoApp::AddFontSettingItem(CMenuWidget &fontSettings, const SNeutrinoSettings::FONT_TYPES number_of_fontsize_entry) { fontSettings.addItem(new CMenuNumberInput(neutrino_font[number_of_fontsize_entry].name, neutrino_font[number_of_fontsize_entry].defaultsize, &fontsizenotifier, &configfile)); } void CNeutrinoApp::InitFontSettings(CMenuWidget &fontSettings) { fontSettings.addItem(GenericMenuSeparator); fontSettings.addItem(GenericMenuBack); fontSettings.addItem(GenericMenuSeparatorLine); //fontSettings.addItem( new CMenuForwarder(LOCALE_EPGPLUS_SELECT_FONT_NAME, true, NULL, this, "select_font")); AddFontSettingItem(fontSettings, SNeutrinoSettings::FONT_TYPE_MENU); AddFontSettingItem(fontSettings, SNeutrinoSettings::FONT_TYPE_MENU_TITLE); AddFontSettingItem(fontSettings, SNeutrinoSettings::FONT_TYPE_MENU_INFO); fontSettings.addItem(GenericMenuSeparatorLine); for (int i = 0; i < 5; i++) { CMenuWidget * fontSettingsSubMenu = new CMenuWidget(font_sizes_groups[i].groupname, "colors.raw"); fontSettingsSubMenu->addItem(GenericMenuSeparator); fontSettingsSubMenu->addItem(GenericMenuBack); fontSettingsSubMenu->addItem(GenericMenuSeparatorLine); for (unsigned int j = 0; j < font_sizes_groups[i].count; j++) { AddFontSettingItem(*fontSettingsSubMenu, font_sizes_groups[i].content[j]); } fontSettingsSubMenu->addItem(GenericMenuSeparatorLine); fontSettingsSubMenu->addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[i].actionkey)); fontSettings.addItem(new CMenuForwarder(font_sizes_groups[i].groupname, true, NULL, fontSettingsSubMenu)); } AddFontSettingItem(fontSettings, SNeutrinoSettings::FONT_TYPE_FILEBROWSER_ITEM); fontSettings.addItem(GenericMenuSeparatorLine); fontSettings.addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, font_sizes_groups[5].actionkey)); } void CNeutrinoApp::InitColorSettings(CMenuWidget &colorSettings, CMenuWidget &fontSettings ) { CScreenSetup * ScreenSetup = new CScreenSetup(); colorSettings.addItem(GenericMenuSeparator); colorSettings.addItem(GenericMenuBack); colorSettings.addItem(GenericMenuSeparatorLine); CMenuWidget *colorSettings_Themes = new CMenuWidget(LOCALE_COLORTHEMEMENU_HEAD, NEUTRINO_ICON_SETTINGS); InitColorThemesSettings(*colorSettings_Themes); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_THEMESELECT, true, NULL, colorSettings_Themes, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED) ); CMenuWidget *colorSettings_menuColors = new CMenuWidget(LOCALE_COLORMENUSETUP_HEAD, NEUTRINO_ICON_SETTINGS, 400, 400); InitColorSettingsMenuColors(*colorSettings_menuColors); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_MENUCOLORS, true, NULL, colorSettings_menuColors, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN) ); CMenuWidget *colorSettings_statusbarColors = new CMenuWidget(LOCALE_COLORMENU_STATUSBAR, NEUTRINO_ICON_SETTINGS); InitColorSettingsStatusBarColors(*colorSettings_statusbarColors); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORSTATUSBAR_HEAD, true, NULL, colorSettings_statusbarColors, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW) ); colorSettings.addItem(GenericMenuSeparatorLine); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_FONT, true, NULL, &fontSettings, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE) ); colorSettings.addItem( new CMenuForwarder(LOCALE_EPGPLUS_SELECT_FONT_NAME, true, NULL, this, "select_font")); CMenuWidget *colorSettings_timing = new CMenuWidget(LOCALE_COLORMENU_TIMING, NEUTRINO_ICON_SETTINGS); InitColorSettingsTiming(*colorSettings_timing); colorSettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_VIDEOMENU_OSD)); colorSettings.addItem(new CMenuForwarder(LOCALE_TIMING_HEAD, true, NULL, colorSettings_timing)); colorSettings.addItem(new CMenuForwarder(LOCALE_VIDEOMENU_SCREENSETUP, true, NULL, ScreenSetup));//, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); #if 0 colorSettings.addItem(GenericMenuSeparatorLine); //menuefaden nur bei enx-chips! CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_COLORMENU_FADE, &g_settings.widget_fade, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true ); colorSettings.addItem( oj ); CAlphaSetup* chAlphaSetup = new CAlphaSetup(LOCALE_COLORMENU_GTX_ALPHA, &g_settings.gtx_alpha1, &g_settings.gtx_alpha2); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_GTX_ALPHA, true, NULL, chAlphaSetup)); #endif } void CNeutrinoApp::InitColorThemesSettings(CMenuWidget &colorSettings_Themes) { colorSettings_Themes.addItem(GenericMenuSeparator); colorSettings_Themes.addItem(GenericMenuBack); colorSettings_Themes.addItem(GenericMenuSeparatorLine); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_EXTRA_LOADCOLORS, true, NULL, this, "loadcolors")); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_EXTRA_SAVECOLORS, true, NULL, this, "savecolors")); colorSettings_Themes.addItem(GenericMenuSeparatorLine); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_COLORTHEMEMENU_NEUTRINO_THEME, true, NULL, this, "theme_neutrino")); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_COLORTHEMEMENU_CLASSIC_THEME, true, NULL, this, "theme_classic")); colorSettings_Themes.addItem( new CMenuForwarder(LOCALE_COLORTHEMEMENU_GRAY, true, NULL, this, "theme_ru") ); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_COLORTHEMEMENU_DBLUE_THEME, true, NULL, this, "theme_dblue")); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_COLORTHEMEMENU_DVB2K_THEME, true, NULL, this, "theme_dvb2k")); colorSettings_Themes.addItem(new CMenuForwarder(LOCALE_COLORTHEMEMENU_RED_THEME, true, NULL, this, "theme_red")); } void CNeutrinoApp::InitColorSettingsMenuColors(CMenuWidget &colorSettings_menuColors) { colorSettings_menuColors.addItem(GenericMenuSeparator); colorSettings_menuColors.addItem(GenericMenuBack); CColorChooser* chHeadcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &g_settings.menu_Head_red, &g_settings.menu_Head_green, &g_settings.menu_Head_blue, &g_settings.menu_Head_alpha, colorSetupNotifier); CColorChooser* chHeadTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &g_settings.menu_Head_Text_red, &g_settings.menu_Head_Text_green, &g_settings.menu_Head_Text_blue, NULL, colorSetupNotifier); CColorChooser* chContentcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &g_settings.menu_Content_red, &g_settings.menu_Content_green, &g_settings.menu_Content_blue, &g_settings.menu_Content_alpha, colorSetupNotifier); CColorChooser* chContentTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &g_settings.menu_Content_Text_red, &g_settings.menu_Content_Text_green, &g_settings.menu_Content_Text_blue, NULL, colorSetupNotifier); CColorChooser* chContentSelectedcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &g_settings.menu_Content_Selected_red, &g_settings.menu_Content_Selected_green, &g_settings.menu_Content_Selected_blue, &g_settings.menu_Content_Selected_alpha, colorSetupNotifier); CColorChooser* chContentSelectedTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &g_settings.menu_Content_Selected_Text_red, &g_settings.menu_Content_Selected_Text_green, &g_settings.menu_Content_Selected_Text_blue, NULL, colorSetupNotifier); CColorChooser* chContentInactivecolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &g_settings.menu_Content_inactive_red, &g_settings.menu_Content_inactive_green, &g_settings.menu_Content_inactive_blue, &g_settings.menu_Content_inactive_alpha, colorSetupNotifier); CColorChooser* chContentInactiveTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &g_settings.menu_Content_inactive_Text_red, &g_settings.menu_Content_inactive_Text_green, &g_settings.menu_Content_inactive_Text_blue, NULL, colorSetupNotifier); colorSettings_menuColors.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUHEAD)); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chHeadcolor )); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chHeadTextcolor )); colorSettings_menuColors.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT)); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentcolor )); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentTextcolor )); colorSettings_menuColors.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT_INACTIVE)); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentInactivecolor )); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentInactiveTextcolor)); colorSettings_menuColors.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORMENUSETUP_MENUCONTENT_SELECTED)); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chContentSelectedcolor )); colorSettings_menuColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chContentSelectedTextcolor )); } void CNeutrinoApp::InitColorSettingsStatusBarColors(CMenuWidget &colorSettings_statusbarColors) { colorSettings_statusbarColors.addItem(GenericMenuSeparator); colorSettings_statusbarColors.addItem(GenericMenuBack); CColorChooser* chInfobarcolor = new CColorChooser(LOCALE_COLORMENU_BACKGROUND, &g_settings.infobar_red, &g_settings.infobar_green, &g_settings.infobar_blue, &g_settings.infobar_alpha, colorSetupNotifier); CColorChooser* chInfobarTextcolor = new CColorChooser(LOCALE_COLORMENU_TEXTCOLOR, &g_settings.infobar_Text_red, &g_settings.infobar_Text_green, &g_settings.infobar_Text_blue, NULL, colorSetupNotifier); colorSettings_statusbarColors.addItem( new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_COLORSTATUSBAR_TEXT)); colorSettings_statusbarColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_BACKGROUND, true, NULL, chInfobarcolor )); colorSettings_statusbarColors.addItem( new CMenuForwarder(LOCALE_COLORMENU_TEXTCOLOR, true, NULL, chInfobarTextcolor )); } void CNeutrinoApp::InitColorSettingsTiming(CMenuWidget &colorSettings_timing) { colorSettings_timing.addItem(GenericMenuSeparator); colorSettings_timing.addItem(GenericMenuBack); colorSettings_timing.addItem(GenericMenuSeparatorLine); for (int i = 0; i < TIMING_SETTING_COUNT; i++) { CStringInput * colorSettings_timing_item = new CStringInput(timing_setting_name[i], g_settings.timing_string[i], 3, LOCALE_TIMING_HINT_1, LOCALE_TIMING_HINT_2, "0123456789 ", &timingsettingsnotifier); colorSettings_timing.addItem(new CMenuForwarder(timing_setting_name[i], true, g_settings.timing_string[i], colorSettings_timing_item)); } colorSettings_timing.addItem(GenericMenuSeparatorLine); colorSettings_timing.addItem(new CMenuForwarder(LOCALE_OPTIONS_DEFAULT, true, NULL, this, "osd.def")); } #define LCDMENU_STATUSLINE_OPTION_COUNT 2 const CMenuOptionChooser::keyval LCDMENU_STATUSLINE_OPTIONS[LCDMENU_STATUSLINE_OPTION_COUNT] = { { 0, LOCALE_LCDMENU_STATUSLINE_PLAYTIME }, { 1, LOCALE_LCDMENU_STATUSLINE_VOLUME } //,{ 2, LOCALE_LCDMENU_STATUSLINE_BOTH } }; void CNeutrinoApp::InitLcdSettings(CMenuWidget &lcdSettings) { lcdSettings.addItem(GenericMenuSeparator); lcdSettings.addItem(GenericMenuBack); lcdSettings.addItem(GenericMenuSeparatorLine); CVfdControler* lcdsliders = new CVfdControler(LOCALE_LCDMENU_HEAD, NULL); #if 0 CLcdNotifier* lcdnotifier = new CLcdNotifier(); CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_LCDMENU_INVERSE, &g_settings.lcd_setting[SNeutrinoSettings::LCD_INVERSE], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, lcdnotifier); lcdSettings.addItem(oj); oj = new CMenuOptionChooser(LOCALE_LCDMENU_POWER, &g_settings.lcd_setting[SNeutrinoSettings::LCD_POWER], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, lcdnotifier); lcdSettings.addItem(oj); #endif CStringInput * dim_time = new CStringInput(LOCALE_LCDMENU_DIM_TIME, g_settings.lcd_setting_dim_time, 3, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"0123456789 "); lcdSettings.addItem(new CMenuForwarder(LOCALE_LCDMENU_DIM_TIME,true, g_settings.lcd_setting_dim_time,dim_time)); CStringInput * dim_brightness = new CStringInput(LOCALE_LCDMENU_DIM_BRIGHTNESS, g_settings.lcd_setting_dim_brightness, 3, NONEXISTANT_LOCALE, NONEXISTANT_LOCALE,"0123456789 "); lcdSettings.addItem(new CMenuForwarder(LOCALE_LCDMENU_DIM_BRIGHTNESS,true, g_settings.lcd_setting_dim_brightness,dim_brightness)); lcdSettings.addItem(GenericMenuSeparatorLine); lcdSettings.addItem(new CMenuForwarder(LOCALE_LCDMENU_LCDCONTROLER, true, NULL, lcdsliders)); lcdSettings.addItem(GenericMenuSeparatorLine); CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_LCDMENU_STATUSLINE, &g_settings.lcd_setting[SNeutrinoSettings::LCD_SHOW_VOLUME], LCDMENU_STATUSLINE_OPTIONS, LCDMENU_STATUSLINE_OPTION_COUNT, true); lcdSettings.addItem(oj); } #define KEYBINDINGMENU_BOUQUETHANDLING_OPTION_COUNT 3 const CMenuOptionChooser::keyval KEYBINDINGMENU_BOUQUETHANDLING_OPTIONS[KEYBINDINGMENU_BOUQUETHANDLING_OPTION_COUNT] = { { 0, LOCALE_KEYBINDINGMENU_BOUQUETCHANNELS_ON_OK }, { 1, LOCALE_KEYBINDINGMENU_BOUQUETLIST_ON_OK }, { 2, LOCALE_KEYBINDINGMENU_ALLCHANNELS_ON_OK } }; enum keynames { KEY_TV_RADIO_MODE, KEY_PAGE_UP, KEY_PAGE_DOWN, KEY_LIST_START, KEY_LIST_END, KEY_CANCEL_ACTION, KEY_SORT, KEY_ADD_RECORD, KEY_ADD_REMIND, KEY_BOUQUET_UP, KEY_BOUQUET_DOWN, KEY_CHANNEL_UP, KEY_CHANNEL_DOWN, KEY_SUBCHANNEL_UP, KEY_SUBCHANNEL_DOWN, KEY_ZAP_HISTORY, KEY_LASTCHANNEL, MPKEY_REWIND, MPKEY_FORWARD, MPKEY_PAUSE, MPKEY_STOP, MPKEY_PLAY, MPKEY_AUDIO, MPKEY_TIME, MPKEY_BOOKMARK, KEY_TIMESHIFT, MPKEY_PLUGIN, KEY_PLUGIN, KEY_UNLOCK }; #define KEYBINDS_COUNT 29 const neutrino_locale_t keydescription_head[KEYBINDS_COUNT] = { LOCALE_KEYBINDINGMENU_TVRADIOMODE, LOCALE_KEYBINDINGMENU_PAGEUP, LOCALE_KEYBINDINGMENU_PAGEDOWN, LOCALE_EXTRA_KEY_LIST_START, LOCALE_EXTRA_KEY_LIST_END, LOCALE_KEYBINDINGMENU_CANCEL, LOCALE_KEYBINDINGMENU_SORT, LOCALE_KEYBINDINGMENU_ADDRECORD, LOCALE_KEYBINDINGMENU_ADDREMIND, LOCALE_KEYBINDINGMENU_BOUQUETUP, LOCALE_KEYBINDINGMENU_BOUQUETDOWN, LOCALE_KEYBINDINGMENU_CHANNELUP, LOCALE_KEYBINDINGMENU_CHANNELDOWN, LOCALE_KEYBINDINGMENU_SUBCHANNELUP, LOCALE_KEYBINDINGMENU_SUBCHANNELDOWN, LOCALE_KEYBINDINGMENU_ZAPHISTORY, LOCALE_KEYBINDINGMENU_LASTCHANNEL, LOCALE_MPKEY_REWIND, LOCALE_MPKEY_FORWARD, LOCALE_MPKEY_PAUSE, LOCALE_MPKEY_STOP, LOCALE_MPKEY_PLAY, LOCALE_MPKEY_AUDIO, LOCALE_MPKEY_TIME, LOCALE_MPKEY_BOOKMARK, LOCALE_EXTRA_KEY_TIMESHIFT, LOCALE_MPKEY_PLUGIN, LOCALE_EXTRA_KEY_PLUGIN, LOCALE_EXTRA_KEY_UNLOCK }; const neutrino_locale_t keydescription[KEYBINDS_COUNT] = { LOCALE_KEYBINDINGMENU_TVRADIOMODE, LOCALE_KEYBINDINGMENU_PAGEUP, LOCALE_KEYBINDINGMENU_PAGEDOWN, LOCALE_EXTRA_KEY_LIST_START, LOCALE_EXTRA_KEY_LIST_END, LOCALE_KEYBINDINGMENU_CANCEL, LOCALE_KEYBINDINGMENU_SORT, LOCALE_KEYBINDINGMENU_ADDRECORD, LOCALE_KEYBINDINGMENU_ADDREMIND, LOCALE_KEYBINDINGMENU_BOUQUETUP, LOCALE_KEYBINDINGMENU_BOUQUETDOWN, LOCALE_KEYBINDINGMENU_CHANNELUP, LOCALE_KEYBINDINGMENU_CHANNELDOWN, LOCALE_KEYBINDINGMENU_SUBCHANNELUP, LOCALE_KEYBINDINGMENU_SUBCHANNELDOWN, LOCALE_KEYBINDINGMENU_ZAPHISTORY, LOCALE_KEYBINDINGMENU_LASTCHANNEL, LOCALE_MPKEY_REWIND, LOCALE_MPKEY_FORWARD, LOCALE_MPKEY_PAUSE, LOCALE_MPKEY_STOP, LOCALE_MPKEY_PLAY, LOCALE_MPKEY_AUDIO, LOCALE_MPKEY_TIME, LOCALE_MPKEY_BOOKMARK, LOCALE_EXTRA_KEY_TIMESHIFT, LOCALE_MPKEY_PLUGIN, LOCALE_EXTRA_KEY_PLUGIN, LOCALE_EXTRA_KEY_UNLOCK }; void CNeutrinoApp::InitKeySettings(CMenuWidget &keySettings) { CMenuWidget* bindSettings = new CMenuWidget(LOCALE_KEYBINDINGMENU_HEAD, "keybinding.raw", 400); keySettings.addItem(GenericMenuSeparator); keySettings.addItem(GenericMenuBack); keySettings.addItem(GenericMenuSeparatorLine); keySettings.addItem(new CMenuForwarder(LOCALE_EXTRA_LOADKEYS, true, NULL, this, "loadkeys")); keySettings.addItem(new CMenuForwarder(LOCALE_EXTRA_SAVEKEYS, true, NULL, this, "savekeys")); //keySettings.addItem(GenericMenuSeparatorLine); keySetupNotifier = new CKeySetupNotifier; CStringInput * keySettings_repeat_genericblocker = new CStringInput(LOCALE_KEYBINDINGMENU_REPEATBLOCKGENERIC, g_settings.repeat_genericblocker, 3, LOCALE_REPEATBLOCKER_HINT_1, LOCALE_REPEATBLOCKER_HINT_2, "0123456789 ", keySetupNotifier); CStringInput * keySettings_repeatBlocker = new CStringInput(LOCALE_KEYBINDINGMENU_REPEATBLOCK, g_settings.repeat_blocker, 3, LOCALE_REPEATBLOCKER_HINT_1, LOCALE_REPEATBLOCKER_HINT_2, "0123456789 ", keySetupNotifier); keySetupNotifier->changeNotify(NONEXISTANT_LOCALE, NULL); keySettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_RC)); keySettings.addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_REPEATBLOCK, true, g_settings.repeat_blocker, keySettings_repeatBlocker)); keySettings.addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_REPEATBLOCKGENERIC, true, g_settings.repeat_genericblocker, keySettings_repeat_genericblocker)); keySettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MAINMENU_SHUTDOWN)); CMenuOptionChooser *m1 = new CMenuOptionChooser(LOCALE_MISCSETTINGS_SHUTDOWN_REAL_RCDELAY, &g_settings.shutdown_real_rcdelay, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, !g_settings.shutdown_real); CMiscNotifier* miscNotifier = new CMiscNotifier( m1 ); keySettings.addItem(new CMenuOptionChooser(LOCALE_MISCSETTINGS_SHUTDOWN_REAL, &g_settings.shutdown_real, OPTIONS_OFF1_ON0_OPTIONS, OPTIONS_OFF1_ON0_OPTION_COUNT, true, miscNotifier)); keySettings.addItem(m1); int * keyvalue_p[KEYBINDS_COUNT] = { &g_settings.key_tvradio_mode, &g_settings.key_channelList_pageup, &g_settings.key_channelList_pagedown, &g_settings.key_list_start, &g_settings.key_list_end, &g_settings.key_channelList_cancel, &g_settings.key_channelList_sort, &g_settings.key_channelList_addrecord, &g_settings.key_channelList_addremind, &g_settings.key_bouquet_up, &g_settings.key_bouquet_down, &g_settings.key_quickzap_up, &g_settings.key_quickzap_down, &g_settings.key_subchannel_up, &g_settings.key_subchannel_down, &g_settings.key_zaphistory, &g_settings.key_lastchannel, &g_settings.mpkey_rewind, &g_settings.mpkey_forward, &g_settings.mpkey_pause, &g_settings.mpkey_stop, &g_settings.mpkey_play, &g_settings.mpkey_audio, &g_settings.mpkey_time, &g_settings.mpkey_bookmark, &g_settings.key_timeshift, &g_settings.mpkey_plugin, &g_settings.key_plugin, &g_settings.key_unlock }; CKeyChooser * keychooser[KEYBINDS_COUNT]; for (int i = 0; i < KEYBINDS_COUNT; i++) keychooser[i] = new CKeyChooser(keyvalue_p[i], keydescription_head[i], NEUTRINO_ICON_SETTINGS); keySettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_HEAD)); bindSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_MODECHANGE)); bindSettings->addItem(new CMenuForwarder(keydescription[KEY_TV_RADIO_MODE], true, NULL, keychooser[KEY_TV_RADIO_MODE])); bindSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_CHANNELLIST)); CMenuOptionChooser *oj = new CMenuOptionChooser(LOCALE_KEYBINDINGMENU_BOUQUETHANDLING, &g_settings.bouquetlist_mode, KEYBINDINGMENU_BOUQUETHANDLING_OPTIONS, KEYBINDINGMENU_BOUQUETHANDLING_OPTION_COUNT, true ); bindSettings->addItem(oj); for (int i = KEY_PAGE_UP; i <= KEY_BOUQUET_DOWN; i++) bindSettings->addItem(new CMenuForwarder(keydescription[i], true, NULL, keychooser[i])); bindSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_SMS_CHANNEL, &g_settings.sms_channel, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); // Zapping keys bindSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_KEYBINDINGMENU_QUICKZAP)); for (int i = KEY_CHANNEL_UP; i <= KEY_LASTCHANNEL; i++) bindSettings->addItem(new CMenuForwarder(keydescription[i], true, NULL, keychooser[i])); bindSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MAINMENU_MOVIEPLAYER)); for (int i = MPKEY_REWIND; i <= MPKEY_PLUGIN; i++) bindSettings->addItem(new CMenuForwarder(keydescription[i], true, NULL, keychooser[i])); bindSettings->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MAINSETTINGS_MISC)); //bindSettings->addItem(new CMenuForwarder(keydescription[KEY_PLUGIN], true, NULL, keychooser[KEY_PLUGIN])); bindSettings->addItem(new CMenuForwarder(keydescription[KEY_UNLOCK], true, NULL, keychooser[KEY_UNLOCK])); //bindSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_ZAP_CYCLE, &g_settings.zap_cycle, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); bindSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_MENU_LEFT_EXIT, &g_settings.menu_left_exit, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); bindSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_AUDIO_RUN_PLAYER, &g_settings.audio_run_player, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); //bindSettings->addItem(new CMenuOptionChooser(LOCALE_EXTRA_KEY_CLICK, &g_settings.key_click, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); keySettings.addItem(new CMenuForwarder(LOCALE_KEYBINDINGMENU_HEAD, true, NULL, bindSettings)); //mainSettings.addItem(new CMenuForwarder(LOCALE_MAINSETTINGS_KEYBINDING, true, NULL, &keySettings , NULL, CRCInput::RC_blue , NEUTRINO_ICON_BUTTON_BLUE )); // USERMENU keySettings.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_USERMENU_HEAD)); keySettings.addItem(new CMenuForwarder(LOCALE_USERMENU_BUTTON_RED, true, NULL, new CUserMenuMenu(LOCALE_USERMENU_BUTTON_RED,0))); keySettings.addItem(new CMenuForwarder(LOCALE_USERMENU_BUTTON_GREEN, true, NULL, new CUserMenuMenu(LOCALE_USERMENU_BUTTON_GREEN,1))); keySettings.addItem(new CMenuForwarder(LOCALE_USERMENU_BUTTON_YELLOW, true, NULL, new CUserMenuMenu(LOCALE_USERMENU_BUTTON_YELLOW,2))); keySettings.addItem(new CMenuForwarder(LOCALE_USERMENU_BUTTON_BLUE, true, NULL, new CUserMenuMenu(LOCALE_USERMENU_BUTTON_BLUE,3))); } // USERMENU // leave this functions, somebody might want to use it in the future again void CNeutrinoApp::SelectNVOD() { if (!(g_RemoteControl->subChannels.empty())) { // NVOD/SubService- Kanal! CMenuWidget NVODSelector(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, "video.raw", 350); if(getNVODMenu(&NVODSelector)) NVODSelector.exec(NULL, ""); } } bool CNeutrinoApp::getNVODMenu(CMenuWidget* menu) { if(menu == NULL) return false; if (g_RemoteControl->subChannels.empty()) return false; menu->addItem(GenericMenuSeparator); int count = 0; char nvod_id[5]; for( CSubServiceListSorted::iterator e=g_RemoteControl->subChannels.begin(); e!=g_RemoteControl->subChannels.end(); ++e) { sprintf(nvod_id, "%d", count); if( !g_RemoteControl->are_subchannels ) { char nvod_time_a[50], nvod_time_e[50], nvod_time_x[50]; char nvod_s[100]; struct tm *tmZeit; tmZeit= localtime(&e->startzeit); sprintf(nvod_time_a, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min); time_t endtime = e->startzeit+ e->dauer; tmZeit= localtime(&endtime); sprintf(nvod_time_e, "%02d:%02d", tmZeit->tm_hour, tmZeit->tm_min); time_t jetzt=time(NULL); if(e->startzeit > jetzt) { int mins=(e->startzeit- jetzt)/ 60; sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_STARTING), mins); } else if( (e->startzeit<= jetzt) && (jetzt < endtime) ) { int proz=(jetzt- e->startzeit)*100/ e->dauer; sprintf(nvod_time_x, g_Locale->getText(LOCALE_NVOD_PERCENTAGE), proz); } else nvod_time_x[0]= 0; sprintf(nvod_s, "%s - %s %s", nvod_time_a, nvod_time_e, nvod_time_x); menu->addItem(new CMenuForwarderNonLocalized(nvod_s, true, NULL, NVODChanger, nvod_id), (count == g_RemoteControl->selected_subchannel)); } else { menu->addItem(new CMenuForwarderNonLocalized(e->subservice_name.c_str(), true, NULL, NVODChanger, nvod_id, CRCInput::convertDigitToKey(count)), (count == g_RemoteControl->selected_subchannel)); } count++; } if( g_RemoteControl->are_subchannels ) { menu->addItem(GenericMenuSeparatorLine); CMenuOptionChooser* oj = new CMenuOptionChooser(LOCALE_NVODSELECTOR_DIRECTORMODE, &g_RemoteControl->director_mode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW); menu->addItem(oj); } return true; } void CNeutrinoApp::SelectAPID() { #if 0 if( g_RemoteControl->current_PIDs.APIDs.size()> 1 ) { // wir haben APIDs für diesen Kanal! CMenuWidget APIDSelector(LOCALE_APIDSELECTOR_HEAD, "audio.raw", 300); APIDSelector.addItem(GenericMenuSeparator); for( unsigned int count=0; countcurrent_PIDs.APIDs.size(); count++ ) { char apid[5]; sprintf(apid, "%d", count); APIDSelector.addItem(new CMenuForwarderNonLocalized(g_RemoteControl->current_PIDs.APIDs[count].desc, true, NULL, APIDChanger, apid, CRCInput::convertDigitToKey(count + 1)), (count == g_RemoteControl->current_PIDs.PIDs.selected_apid)); } APIDSelector.exec(NULL, ""); } #endif } #define MAINMENU_RECORDING_OPTION_COUNT 2 const CMenuOptionChooser::keyval MAINMENU_RECORDING_OPTIONS[MAINMENU_RECORDING_OPTION_COUNT] = { { 0, LOCALE_MAINMENU_RECORDING_START }, { 1, LOCALE_MAINMENU_RECORDING_STOP } }; // USERMENU // This is just a quick helper for the usermenu only. I already made it a class for future use. #define BUTTONMAX 4 const neutrino_msg_t key_helper_msg_def[BUTTONMAX]={CRCInput::RC_red,CRCInput::RC_green,CRCInput::RC_yellow,CRCInput::RC_blue}; const char * key_helper_icon_def[BUTTONMAX]={NEUTRINO_ICON_BUTTON_RED,NEUTRINO_ICON_BUTTON_GREEN,NEUTRINO_ICON_BUTTON_YELLOW,NEUTRINO_ICON_BUTTON_BLUE}; class CKeyHelper { private: int number_key; bool color_key_used[BUTTONMAX]; public: CKeyHelper(){reset();}; void reset(void) { number_key = 1; for(int i= 0; i < BUTTONMAX; i++ ) color_key_used[i] = false; }; /* Returns the next available button, to be used in menu as 'direct' keys. Appropriate * definitions are returnd in msp and icon * A color button could be requested as prefered button (other buttons are not supported yet). * If the appropriate button is already in used, the next number_key button is returned instead * (first 1-9 and than 0). */ bool get(neutrino_msg_t* msg, const char** icon, neutrino_msg_t prefered_key = CRCInput::RC_nokey) { bool result = false; int button = -1; if(prefered_key == CRCInput::RC_red) button = 0; if(prefered_key == CRCInput::RC_green) button = 1; if(prefered_key == CRCInput::RC_yellow) button = 2; if(prefered_key == CRCInput::RC_blue) button = 3; *msg = CRCInput::RC_nokey; *icon = ""; if(button >= 0 && button < BUTTONMAX) { // try to get color button if( color_key_used[button] == false) { color_key_used[button] = true; *msg = key_helper_msg_def[button]; *icon = key_helper_icon_def[button]; result = true; } } if( result == false && number_key < 10) // no key defined yet, at least try to get a numbered key { // there is still a available number_key *msg = CRCInput::convertDigitToKey(number_key); *icon = ""; if(number_key == 9) number_key = 0; else if(number_key == 0) number_key = 10; else number_key++; result = true; } return (result); }; }; // USERMENU bool CNeutrinoApp::showUserMenu(int button) { if(button < 0 || button >= SNeutrinoSettings::BUTTON_MAX) return false; CMenuItem* menu_item = NULL; CKeyHelper keyhelper; neutrino_msg_t key = CRCInput::RC_nokey; const char * icon = NULL; int dummy; int menu_items = 0; int menu_prev = -1; static int selected[SNeutrinoSettings::BUTTON_MAX] = {-1, -1, -1, -1}; // define classes CFavorites* tmpFavorites = NULL; CPauseSectionsdNotifier* tmpPauseSectionsdNotifier = NULL; CAudioSelectMenuHandler* tmpAudioSelectMenuHandler = NULL; CMenuWidget* tmpNVODSelector = NULL; CStreamInfo2Handler* tmpStreamInfo2Handler = NULL; CEventListHandler* tmpEventListHandler = NULL; CEPGplusHandler* tmpEPGplusHandler = NULL; CEPGDataHandler* tmpEPGDataHandler = NULL; std::string txt = g_settings.usermenu_text[button]; if (button == SNeutrinoSettings::BUTTON_RED) { if( txt.empty() ) txt = g_Locale->getText(LOCALE_INFOVIEWER_EVENTLIST); } else if( button == SNeutrinoSettings::BUTTON_GREEN) { if( txt.empty() ) txt = g_Locale->getText(LOCALE_INFOVIEWER_LANGUAGES); } else if( button == SNeutrinoSettings::BUTTON_YELLOW) { if( txt.empty() ) txt = g_Locale->getText((g_RemoteControl->are_subchannels) ? LOCALE_INFOVIEWER_SUBSERVICE : LOCALE_INFOVIEWER_SELECTTIME); //txt = g_Locale->getText(LOCALE_NVODSELECTOR_DIRECTORMODE); } else if( button == SNeutrinoSettings::BUTTON_BLUE) { if( txt.empty() ) txt = g_Locale->getText(LOCALE_INFOVIEWER_STREAMINFO); } CMenuWidget *menu = new CMenuWidget(txt.c_str() , "features.raw", 350); if (menu == NULL) return 0; menu->addItem(GenericMenuSeparator); // go through any postition number for(int pos = 0; pos < SNeutrinoSettings::ITEM_MAX ; pos++) { // now compare pos with the position of any item. Add this item if position is the same switch(g_settings.usermenu[button][pos]) { case SNeutrinoSettings::ITEM_NONE: // do nothing break; case SNeutrinoSettings::ITEM_BAR: if(menu_prev == -1 || menu_prev == SNeutrinoSettings::ITEM_BAR ) break; menu->addItem(GenericMenuSeparatorLine); menu_prev = SNeutrinoSettings::ITEM_BAR; break; case SNeutrinoSettings::ITEM_FAVORITS: menu_items++; menu_prev = SNeutrinoSettings::ITEM_FAVORITS; tmpFavorites = new CFavorites; keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuForwarder(LOCALE_FAVORITES_MENUEADD, true, NULL, tmpFavorites, "-1", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_RECORD: if(g_settings.recording_type == RECORDING_OFF) break; menu_items++; menu_prev = SNeutrinoSettings::ITEM_RECORD; keyhelper.get(&key,&icon,CRCInput::RC_red); menu_item = new CMenuOptionChooser(LOCALE_MAINMENU_RECORDING, &recordingstatus, MAINMENU_RECORDING_OPTIONS, MAINMENU_RECORDING_OPTION_COUNT, true, this, key, icon); menu->addItem(menu_item, false); //if(has_hdd) // menu->addItem(new CMenuForwarder(LOCALE_EXTRA_AUTO_TO_RECORD, autoshift, NULL, this, "autolink"), false); break; case SNeutrinoSettings::ITEM_MOVIEPLAYER_MB: menu_items++; menu_prev = SNeutrinoSettings::ITEM_MOVIEPLAYER_MB; keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, true, NULL, moviePlayerGui, "tsmoviebrowser", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_TIMERLIST: menu_items++; menu_prev = SNeutrinoSettings::ITEM_TIMERLIST; keyhelper.get(&key,&icon,CRCInput::RC_yellow); menu_item = new CMenuForwarder(LOCALE_TIMERLIST_NAME, true, NULL, Timerlist, "-1", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_REMOTE: menu_items++; menu_prev = SNeutrinoSettings::ITEM_REMOTE; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_RCLOCK_MENUEADD, true, NULL, this->rcLock, "-1" , key, icon ); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_EPG_SUPER: menu_items++; menu_prev = SNeutrinoSettings::ITEM_EPG_SUPER; tmpEPGplusHandler = new CEPGplusHandler(); keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuForwarder(LOCALE_EPGMENU_EPGPLUS , true, NULL, tmpEPGplusHandler , "-1", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_EPG_LIST: menu_items++; menu_prev = SNeutrinoSettings::ITEM_EPG_LIST; tmpEventListHandler = new CEventListHandler(); keyhelper.get(&key,&icon,CRCInput::RC_red); menu_item = new CMenuForwarder(LOCALE_EPGMENU_EVENTLIST , true, NULL, tmpEventListHandler, "-1", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_EPG_INFO: menu_items++; menu_prev = SNeutrinoSettings::ITEM_EPG_INFO; tmpEPGDataHandler = new CEPGDataHandler(); keyhelper.get(&key,&icon,CRCInput::RC_yellow); menu_item = new CMenuForwarder(LOCALE_EPGMENU_EVENTINFO , true, NULL, tmpEPGDataHandler , "-1", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_EPG_MISC: menu_items++; menu_prev = SNeutrinoSettings::ITEM_EPG_MISC; dummy = g_Sectionsd->getIsScanningActive(); //dummy = sectionsd_scanning; tmpPauseSectionsdNotifier = new CPauseSectionsdNotifier; keyhelper.get(&key,&icon); menu_item = new CMenuOptionChooser(LOCALE_MAINMENU_PAUSESECTIONSD, &dummy, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, tmpPauseSectionsdNotifier , key, icon ); menu->addItem(menu_item, false); menu_items++; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MAINMENU_CLEARSECTIONSD, true, NULL, this, "clearSectionsd", key,icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_AUDIO_SELECT: //g_settings.audio_left_right_selectable || g_RemoteControl->current_PIDs.APIDs.size() > 1) if (1) { menu_items++; menu_prev = SNeutrinoSettings::ITEM_AUDIO_SELECT; tmpAudioSelectMenuHandler = new CAudioSelectMenuHandler; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_AUDIOSELECTMENUE_HEAD, true, NULL, tmpAudioSelectMenuHandler, "-1", key,icon); menu->addItem(menu_item, false); } break; case SNeutrinoSettings::ITEM_SUBCHANNEL: if (!(g_RemoteControl->subChannels.empty())) { // NVOD/SubService- Kanal! tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, "video.raw", 350); if(getNVODMenu(tmpNVODSelector)) { menu_items++; menu_prev = SNeutrinoSettings::ITEM_SUBCHANNEL; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, true, NULL, tmpNVODSelector, "-1", key,icon); menu->addItem(menu_item, false); } } break; case SNeutrinoSettings::ITEM_TECHINFO: menu_items++; menu_prev = SNeutrinoSettings::ITEM_TECHINFO; tmpStreamInfo2Handler = new CStreamInfo2Handler(); keyhelper.get(&key,&icon,CRCInput::RC_blue); menu_item = new CMenuForwarder(LOCALE_EPGMENU_STREAMINFO, true, NULL, tmpStreamInfo2Handler , "-1", key, icon ); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_PLUGIN: { char id[5]; int cnt = 0; for(unsigned int count = 0; count < (unsigned int) g_PluginList->getNumberOfPlugins(); count++) { std::string tmp = g_PluginList->getName(count); if (g_PluginList->getType(count)== CPlugins::P_TYPE_TOOL && !g_PluginList->isHidden(count) && tmp.find("Teletext") == std::string::npos) { sprintf(id, "%d", count); menu_items++; menu_prev = SNeutrinoSettings::ITEM_PLUGIN; //keyhelper.get(&key,&icon,CRCInput::RC_blue); keyhelper.get(&key,&icon); menu_item = new CMenuForwarderNonLocalized(g_PluginList->getName(count), true, NULL, StreamFeaturesChanger, id, key, icon); //menu->addItem(menu_item, (cnt == 0)); menu->addItem(menu_item, 0); cnt++; } } } break; case SNeutrinoSettings::ITEM_VTXT: menu_items++; menu_prev = SNeutrinoSettings::ITEM_VTXT; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_VTXT, true, NULL, StreamFeaturesChanger, "teletext", key, icon); menu->addItem(menu_item, 0); break; #if 0 // FIXME not supported yet case SNeutrinoSettings::ITEM_MOVIEPLAYER_TS: menu_items++; menu_prev = SNeutrinoSettings::ITEM_MOVIEPLAYER_TS; keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_TSPLAYBACK, true, NULL, moviePlayerGui, "tsplayback", key, icon); menu->addItem(menu_item, false); break; case SNeutrinoSettings::ITEM_VTXT: for(unsigned int count = 0; count < (unsigned int) g_PluginList->getNumberOfPlugins(); count++) { std::string tmp = g_PluginList->getName(count); if (g_PluginList->getType(count)== CPlugins::P_TYPE_TOOL && !g_PluginList->isHidden(count) && tmp.find("Teletext") != std::string::npos) { sprintf(id, "%d", count); menu_items++; menu_prev = SNeutrinoSettings::ITEM_VTXT; //keyhelper.get(&key,&icon,CRCInput::RC_blue); keyhelper.get(&key,&icon); menu_item = new CMenuForwarderNonLocalized(g_PluginList->getName(count), true, NULL, StreamFeaturesChanger, id, key, icon); menu->addItem(menu_item, 0); } } break; #endif default: printf("[neutrino] WARNING! menu wrong item!!\n"); break; } } // Allow some tailoring for privat image bakers ;) if (button == SNeutrinoSettings::BUTTON_RED) { } else if( button == SNeutrinoSettings::BUTTON_GREEN) { } else if( button == SNeutrinoSettings::BUTTON_YELLOW) { } else if( button == SNeutrinoSettings::BUTTON_BLUE) { #ifdef _EXPERIMENTAL_SETTINGS_ //Experimental Settings if(menu_prev != -1) menu->addItem(GenericMenuSeparatorLine); menu_items ++; menu_key++; // FYI: there is a memory leak with 'new CExperimentalSettingsMenuHandler() menu_item = new CMenuForwarder(LOCALE_EXPERIMENTALSETTINGS, true, NULL, new CExperimentalSettingsMenuHandler(), "-1", CRCInput::convertDigitToKey(menu_key), ""); menu->addItem(menu_item, false); #endif } // show menu if there are more than 2 items only // otherwise, we start the item directly (must be the last one) if(menu_items > 1 ) { menu->setSelected(selected[button]); menu->exec(NULL,""); selected[button] = menu->getSelected(); } else if (menu_item != NULL) menu_item->exec( NULL ); // restore mute symbol //AudioMute(current_muted, true); // clear the heap if(tmpFavorites) delete tmpFavorites; if(tmpPauseSectionsdNotifier) delete tmpPauseSectionsdNotifier; if(tmpAudioSelectMenuHandler) delete tmpAudioSelectMenuHandler; if(tmpNVODSelector) delete tmpNVODSelector; if(tmpStreamInfo2Handler) delete tmpStreamInfo2Handler; if(tmpEventListHandler) delete tmpEventListHandler; if(tmpEPGplusHandler) delete tmpEPGplusHandler; if(tmpEPGDataHandler) delete tmpEPGDataHandler; if(menu) delete menu; return 0; } void CNeutrinoApp::ShowStreamFeatures() { }