int CFavorites::exec(CMenuTarget* parent, const std::string & actionKey) { int status; std::string str; int res = menu_return::RETURN_EXIT_ALL; bool show_list; //printf("[favorites] key %s\n", actionKey.c_str()); show_list = (actionKey == "showlist"); if (parent) parent->hide(); if (!bouquetList) { ShowLocalizedMessage(LOCALE_FAVORITES_BOUQUETNAME, LOCALE_FAVORITES_NOBOUQUETS, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_INFO); return res; } CHintBox* hintBox = new CHintBox(LOCALE_FAVORITES_BOUQUETNAME, g_Locale->getText(LOCALE_FAVORITES_ADDCHANNEL), 380); // UTF-8 if(!show_list) hintBox->paint(); status = addChannelToFavorites(show_list); hintBox->hide(); delete hintBox; // -- Display result //printf("[favorites] status %d\n", status); if(status < 0) return menu_return::RETURN_REPAINT; str = ""; if(show_list) { if (status & 2) str += g_Locale->getText(LOCALE_EXTRA_CHADDED); else str += g_Locale->getText(LOCALE_EXTRA_CHALREADYINBQ); ShowMsgUTF(LOCALE_EXTRA_ADD_TO_BOUQUET, str, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_INFO); // UTF-8 } else { if (status & 1) str += g_Locale->getText(LOCALE_FAVORITES_BQCREATED); if (status & 2) str += g_Locale->getText(LOCALE_FAVORITES_CHADDED); else str += g_Locale->getText(LOCALE_FAVORITES_CHALREADYINBQ); if (status) str += g_Locale->getText(LOCALE_FAVORITES_FINALHINT); ShowMsgUTF(LOCALE_FAVORITES_BOUQUETNAME, str, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_INFO); // UTF-8 } // if (status) { // g_RCInput->postMsg( NeutrinoMessages::EVT_BOUQUETSCHANGED, 0 ); // } return res; }
//check for addresses, if dhcp disabled, returns false if any address no definied and shows a message bool CNetworkSetup::checkForIP() { n_settings_t n_settings[] = { {LOCALE_NETWORKMENU_IPADDRESS, network_address }, {LOCALE_NETWORKMENU_NETMASK, network_netmask }, {LOCALE_NETWORKMENU_BROADCAST, network_broadcast }, {LOCALE_NETWORKMENU_GATEWAY, network_gateway }, {LOCALE_NETWORKMENU_NAMESERVER, network_nameserver } }; if (!network_dhcp) { for (uint i = 0; i < (sizeof(n_settings) / sizeof(n_settings[0])); i++) { if (n_settings[i].network_settings.empty()) //no definied setting { printf("[network setup] empty address %s\n", g_Locale->getText(n_settings[i].addr_name)); char msg[64]; snprintf(msg, 64, g_Locale->getText(LOCALE_NETWORKMENU_ERROR_NO_ADDRESS), g_Locale->getText(n_settings[i].addr_name)); ShowMsgUTF(LOCALE_MAINSETTINGS_NETWORK, msg, CMessageBox::mbrOk, CMessageBox::mbOk, NEUTRINO_ICON_ERROR, width); return false; } } } return true; }
void testNetworkSettings(const char* ip, const char* netmask, const char* broadcast, const char* gateway, const char* nameserver, bool ip_static) { char our_ip[16]; char our_mask[16]; char our_broadcast[16]; char our_gateway[16]; char our_nameserver[16]; std::string text, ethID, testsite; //set default testdomain and wiki-IP std::string defaultsite = "www.google.de", wiki_IP = "88.198.50.98"; //set physical adress static CNetAdapter netadapter; ethID=netadapter.getMacAddr(); //get www-domain testsite from /.version CConfigFile config('\t'); config.loadConfig("/.version"); testsite = config.getString("homepage",defaultsite); testsite.replace( 0, testsite.find("www",0), "" ); //use default testdomain if testsite missing if (testsite.length()==0) testsite = defaultsite; if (ip_static) { strcpy(our_ip, ip); strcpy(our_mask, netmask); strcpy(our_broadcast, broadcast); strcpy(our_gateway, gateway); strcpy(our_nameserver, nameserver); } else { netGetIP("eth0", our_ip, our_mask, our_broadcast); netGetDefaultRoute(our_gateway); netGetNameserver(our_nameserver); } printf("testNw IP: %s\n", our_ip); printf("testNw MAC-address: %s\n", ethID.c_str()); printf("testNw Netmask: %s\n", our_mask); printf("testNw Broadcast: %s\n", our_broadcast); printf("testNw Gateway: %s\n", our_gateway); printf("testNw Nameserver: %s\n", our_nameserver); printf("testNw Testsite %s\n", testsite.c_str()); text = (std::string)"dbox:\n" + " " + our_ip + ": " + mypinghost(our_ip) + '\n' + " " + "eth-ID: " + ethID + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_GATEWAY) + ":\n" + " " + our_gateway + ": " + ' ' + mypinghost(our_gateway) + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_NAMESERVER) + ":\n" + " " + our_nameserver + ": " + ' ' + mypinghost(our_nameserver) + '\n' + "wiki.tuxbox.org:\n" + " via IP (" + wiki_IP + "): " + mypinghost(wiki_IP.c_str()) + '\n'; if (1 == pinghost(our_nameserver)) text += (std::string) " via DNS: " + mypinghost("wiki.tuxbox.org") + '\n' + testsite + ":\n" + " via DNS: " + mypinghost(testsite.c_str()) + '\n'; ShowMsgUTF(LOCALE_NETWORKMENU_TEST, text, CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 }
void showCurrentNetworkSettings() { char ip[16]; char mask[16]; char broadcast[16]; char router[16]; char nameserver[16]; std::string text; netGetIP("eth0", ip, mask, broadcast); if (ip[0] == 0) { text = g_Locale->getText(LOCALE_NETWORKMENU_INACTIVE); } else { netGetNameserver(nameserver); netGetDefaultRoute(router); CNetworkConfig networkConfig; std::string dhcp = networkConfig.inet_static ? g_Locale->getText(LOCALE_OPTIONS_OFF) : g_Locale->getText(LOCALE_OPTIONS_ON); text = (std::string)g_Locale->getText(LOCALE_NETWORKMENU_DHCP) + ": " + dhcp + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_IPADDRESS ) + ": " + ip + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_NETMASK ) + ": " + mask + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_BROADCAST ) + ": " + broadcast + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_NAMESERVER) + ": " + nameserver + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_GATEWAY ) + ": " + router; } ShowMsgUTF(LOCALE_NETWORKMENU_SHOW, text, CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 }
void CNetworkSetup::showCurrentNetworkSettings() { char ip[16] = {0}; char mask[16] = {0}; char broadcast[16] = {0}; char router[16] = {0}; char nameserver[16] = {0}; std::string text; netGetIP(g_settings.ifname, ip, mask, broadcast); if (ip[0] == 0) { text = g_Locale->getText(LOCALE_NETWORKMENU_INACTIVE_NETWORK); } else { netGetNameserver(nameserver); netGetDefaultRoute(router); #if 0 // i think we can use current networkConfig instance for that CNetworkConfig _networkConfig; std::string dhcp = _networkConfig.inet_static ? g_Locale->getText(LOCALE_OPTIONS_OFF) : g_Locale->getText(LOCALE_OPTIONS_ON); #endif std::string dhcp = networkConfig->inet_static ? g_Locale->getText(LOCALE_OPTIONS_OFF) : g_Locale->getText(LOCALE_OPTIONS_ON); text = (std::string)g_Locale->getText(LOCALE_NETWORKMENU_DHCP) + ": " + dhcp + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_IPADDRESS ) + ": " + ip + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_NETMASK ) + ": " + mask + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_BROADCAST ) + ": " + broadcast + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_NAMESERVER) + ": " + nameserver + '\n' + g_Locale->getText(LOCALE_NETWORKMENU_GATEWAY ) + ": " + router; } ShowMsgUTF(LOCALE_NETWORKMENU_SHOW, text, CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 }
void CListBoxExt::hide() { //want2save? if ((modified) && (saveBoxCaption != NONEXISTANT_LOCALE) && (saveBoxText != NULL)) { if (ShowMsgUTF(saveBoxCaption, saveBoxText, CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo) == CMessageBox::mbrYes) // UTF-8 onSaveData(); } CListBox::hide(); }
int CNetworkSetup::exec(CMenuTarget* parent, const std::string &actionKey) { int res = menu_return::RETURN_REPAINT; if (parent) parent->hide(); if(actionKey=="networkapply") { applyNetworkSettings(); readNetworkSettings(); backupNetworkSettings(); return res; } else if(actionKey=="networktest") { printf("[network setup] doing network test...\n"); #if 0 testNetworkSettings( networkConfig->address.c_str(), networkConfig->netmask.c_str(), networkConfig->broadcast.c_str(), networkConfig->gateway.c_str(), networkConfig->nameserver.c_str(), networkConfig->inet_static); #endif testNetworkSettings(); return res; } else if(actionKey=="networkshow") { dprintf(DEBUG_INFO, "show current network settings...\n"); showCurrentNetworkSettings(); return res; } else if(actionKey=="restore") { int result = ShowMsgUTF(LOCALE_MAINSETTINGS_NETWORK, g_Locale->getText(LOCALE_NETWORKMENU_RESET_SETTINGS_NOW), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo , NEUTRINO_ICON_QUESTION, width); if (result == CMessageBox::mbrYes) { restoreNetworkSettings(); } return res; } printf("[neutrino] init network setup...\n"); res = showNetworkSetup(); return res; }
int CDVBInfoExec::exec(CMenuTarget*, const std::string &) { std::stringstream text; // text<<std::hex<<std::setfill('0')<<std::setw(2)<<(int)addr[i]<<':'; text << g_Locale->getText(LOCALE_TIMERLIST_MODETV) << ": " << CNeutrinoApp::getInstance()->channelListTV->getSize() << "\n"; text << g_Locale->getText(LOCALE_TIMERLIST_MODERADIO) << ": " << CNeutrinoApp::getInstance()->channelListRADIO->getSize() << "\n \n"; text << g_Locale->getText(LOCALE_SERVICEMENU_CHAN_EPG_STAT_EPG_STAT) << ":\n" << g_Sectionsd->getStatusinformation() << "\n"; ShowMsgUTF(LOCALE_SERVICEMENU_CHAN_EPG_STAT, text.str(), CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 return 1; }
bool CExtUpdate::checkSpecialFolders(std::string line, bool copy) { if ((line == "/") || (line == "/*") || (line == "/*.*") || (line.find("/dev") == 0) || (line.find("/proc") == 0) || (line.find("/sys") == 0) || (line.find("/mnt") == 0) || (line.find("/tmp") == 0)) { char buf[PATH_MAX]; neutrino_locale_t msg = (copy) ? LOCALE_FLASHUPDATE_UPDATE_WITH_SETTINGS_SKIPPED : LOCALE_FLASHUPDATE_UPDATE_WITH_SETTINGS_DEL_SKIPPED; snprintf(buf, sizeof(buf), g_Locale->getText(msg), line.c_str()); WRITE_UPDATE_LOG("%s%s", buf, "\n"); ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, buf, CMessageBox::mbrOk, CMessageBox::mbOk, NEUTRINO_ICON_INFO); return true; } return false; }
void CPictureViewerGui::deletePicFile(unsigned int index, bool mode) { CVFD::getInstance()->showMenuText(0, playlist[index].Name.c_str()); if (ShowMsgUTF(LOCALE_FILEBROWSER_DELETE, playlist[index].Filename, CMessageBox::mbrNo, CMessageBox::mbYes|CMessageBox::mbNo)==CMessageBox::mbrYes) { unlink(playlist[index].Filename.c_str()); printf("[ %s ] delete file: %s\r\n",__FUNCTION__,playlist[index].Filename.c_str()); CViewList::iterator p = playlist.begin()+index; playlist.erase(p); if(mode) selected = selected-1; if (selected >= playlist.size()) selected = playlist.size()-1; } }
void CBEChannelWidget::deleteChannel() { if (selected >= Channels->size()) /* Channels.size() might be 0 */ return; if (ShowMsgUTF(LOCALE_FILEBROWSER_DELETE, (*Channels)[selected]->getName(), CMessageBox::mbrNo, CMessageBox::mbYes|CMessageBox::mbNo)!=CMessageBox::mbrYes) return; g_bouquetManager->Bouquets[bouquet]->removeService((*Channels)[selected]->channel_id); Channels = mode == CZapitClient::MODE_TV ? &(g_bouquetManager->Bouquets[bouquet]->tvChannels) : &(g_bouquetManager->Bouquets[bouquet]->radioChannels); if (selected >= Channels->size()) selected = Channels->empty() ? 0 : (Channels->size() - 1); channelsChanged = true; paint(); }
void CBEBouquetWidget::deleteBouquet() { if (selected >= Bouquets->size()) /* Bouquets->size() might be 0 */ return; if (ShowMsgUTF(LOCALE_FILEBROWSER_DELETE, (*Bouquets)[selected]->bFav ? g_Locale->getText(LOCALE_FAVORITES_BOUQUETNAME) : (*Bouquets)[selected]->Name, CMessageBox::mbrNo, CMessageBox::mbYes|CMessageBox::mbNo)!=CMessageBox::mbrYes) return; //g_Zapit->deleteBouquet(selected); //Bouquets.clear(); //g_Zapit->getBouquets(Bouquets, true, true); g_bouquetManager->deleteBouquet(selected); Bouquets = &g_bouquetManager->Bouquets; if (selected >= Bouquets->size()) selected = Bouquets->empty() ? 0 : (Bouquets->size() - 1); bouquetsChanged = true; paint(); }
int CUCodeCheckExec::exec(CMenuTarget*, const std::string &) { std::stringstream text; char res[60]; text << g_Locale->getText(LOCALE_UCODECHECK_AVIA500) << ": "; checkFile(UCODEDIR "/avia500.ux", (char*) &res); text << (std::string)res + '\n' + g_Locale->getText(LOCALE_UCODECHECK_AVIA600) << ": "; checkFile(UCODEDIR "/avia600.ux", (char*) &res); text << (std::string)res + '\n' + g_Locale->getText(LOCALE_UCODECHECK_UCODE) << ": "; checkFile(UCODEDIR "/ucode.bin", (char*) &res); if (strcmp("not found", res) == 0) text << "ucode_0014 (built-in)"; else text << res; text << (std::string)"\n" + g_Locale->getText(LOCALE_UCODECHECK_CAM_ALPHA) << ": "; checkFile(UCODEDIR "/cam-alpha.bin", (char*) &res); text << res; ShowMsgUTF(LOCALE_UCODECHECK_HEAD, text.str(), CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 return 1; }
//open a message dialog with buttons, //yes: applies networksettings and exit network setup //no: ask to restore networksettings, and return to menu int CNetworkSetup::saveChangesDialog() { // Save the settings after changes, if user wants to! int result = ShowMsgUTF(LOCALE_MAINSETTINGS_NETWORK, g_Locale->getText(LOCALE_NETWORKMENU_APPLY_SETTINGS_NOW), CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo , NEUTRINO_ICON_QUESTION, width); switch(result) { case CMessageBox::mbrYes: if (!checkForIP()) return menu_return::RETURN_REPAINT; return exec(NULL, "networkapply"); break; case CMessageBox::mbrNo: //no return exec(NULL, "restore"); break; } return menu_return::RETURN_REPAINT; }
int ShowMsgUTF(const neutrino_locale_t Caption, const std::string & Text, const CMessageBox::result_ Default, const uint32_t ShowButtons, const char * const Icon, const int Width, const int timeout, bool returnDefaultOnTimeout) { return ShowMsgUTF(Caption, Text.c_str(), Default, ShowButtons, Icon, Width, timeout,returnDefaultOnTimeout); }
int ShowLocalizedMessage(const neutrino_locale_t Caption, const neutrino_locale_t Text, const CMessageBox::result_ Default, const uint32_t ShowButtons, const char * const Icon, const int Width, const int timeout, bool returnDefaultOnTimeout) { return ShowMsgUTF(Caption, g_Locale->getText(Text), Default, ShowButtons, Icon, Width, timeout,returnDefaultOnTimeout); }
int CHDDFmtExec::exec(CMenuTarget* /*parent*/, const std::string& key) { char cmd[100]; char cmd2[100]; CHintBox * hintbox; int res; FILE * f; char src[128], dst[128]; CProgressWindow * progress; snprintf(src, sizeof(src), "/dev/%s1", key.c_str()); snprintf(dst, sizeof(dst), "/media/%s1", key.c_str()); printf("CHDDFmtExec: key %s\n", key.c_str()); res = ShowMsgUTF ( LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_WARN), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo ); if(res != CMessageBox::mbrYes) return 0; bool srun = system("killall -9 smbd"); //res = check_and_umount(dst); res = check_and_umount(src, dst); printf("CHDDFmtExec: umount res %d\n", res); if(res) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_UMOUNT_WARN)); hintbox->paint(); sleep(2); delete hintbox; goto _return; } f = fopen("/proc/sys/kernel/hotplug", "w"); if(f) { fprintf(f, "none\n"); fclose(f); } progress = new CProgressWindow(); progress->setTitle(LOCALE_HDD_FORMAT); progress->exec(NULL,""); progress->showStatusMessageUTF("Executing fdisk"); progress->showGlobalStatus(0); if (access("/sbin/sfdisk", X_OK) == 0) { snprintf(cmd, sizeof(cmd), "/sbin/sfdisk -f -uM /dev/%s", key.c_str()); strcpy(cmd2, "0,\n;\n;\n;\ny\n"); } else { snprintf(cmd, sizeof(cmd), "/sbin/fdisk /dev/%s", key.c_str()); strcpy(cmd2, "o\nn\np\n1\n\n\nw\n"); } printf("CHDDFmtExec: executing %s\n", cmd); f=popen(cmd, "w"); if (!f) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_FAILED)); hintbox->paint(); sleep(2); delete hintbox; goto _remount; } fprintf(f, "%s", cmd2); pclose(f); //sleep(1); switch(g_settings.hdd_fs) { case 0: snprintf(cmd, sizeof(cmd), "/sbin/mkfs.ext3 -T largefile -m0 %s", src); break; case 1: snprintf(cmd, sizeof(cmd), "/sbin/mkreiserfs -f -f %s", src); break; default: return 0; } printf("CHDDFmtExec: executing %s\n", cmd); f=popen(cmd, "r"); if (!f) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_FAILED)); hintbox->paint(); sleep(2); delete hintbox; goto _remount; } char buf[256]; setbuf(f, NULL); int n, t, in, pos, stage; pos = 0; stage = 0; while (true) { in = fgetc(f); if (in == EOF) break; buf[pos] = (char)in; pos++; buf[pos] = 0; if (in == '\b' || in == '\n') pos = 0; /* start a new line */ //printf("%s", buf); switch (stage) { case 0: if (strcmp(buf, "Writing inode tables:") == 0) { stage++; progress->showGlobalStatus(20); progress->showStatusMessageUTF(buf); } break; case 1: if (in == '\b' && sscanf(buf, "%d/%d\b", &n, &t) == 2) { int percent = 100 * n / t; progress->showLocalStatus(percent); progress->showGlobalStatus(20 + percent / 5); } if (strstr(buf, "done")) { stage++; pos = 0; } break; case 2: if (strstr(buf, "blocks):") && sscanf(buf, "Creating journal (%d blocks):", &n) == 1) { progress->showLocalStatus(0); progress->showGlobalStatus(60); progress->showStatusMessageUTF(buf); pos = 0; } if (strstr(buf, "done")) { stage++; pos = 0; } break; case 3: if (strcmp(buf, "Writing superblocks and filesystem accounting information:") == 0) { progress->showGlobalStatus(80); progress->showStatusMessageUTF(buf); pos = 0; } break; default: // printf("unknown stage! %d \n\t", stage); break; } } progress->showLocalStatus(100); pclose(f); progress->showGlobalStatus(100); sleep(2); snprintf(cmd, sizeof(cmd), "/sbin/tune2fs -r 0 -c 0 -i 0 %s", src); printf("CHDDFmtExec: executing %s\n", cmd); system(cmd); _remount: progress->hide(); delete progress; switch(g_settings.hdd_fs) { case 0: safe_mkdir(dst); res = mount(src, dst, "ext3", 0, NULL); break; case 1: safe_mkdir(dst); res = mount(src, dst, "reiserfs", 0, NULL); break; default: break; } f = fopen("/proc/sys/kernel/hotplug", "w"); if(f) { fprintf(f, "/sbin/hotplug\n"); fclose(f); } if(!res) { snprintf(cmd, sizeof(cmd), "%s/movies", dst); safe_mkdir((char *) cmd); snprintf(cmd, sizeof(cmd), "%s/pictures", dst); safe_mkdir((char *) cmd); snprintf(cmd, sizeof(cmd), "%s/epg", dst); safe_mkdir((char *) cmd); snprintf(cmd, sizeof(cmd), "%s/music", dst); safe_mkdir((char *) cmd); sync(); #if HAVE_TRIPLEDRAGON /* on the tripledragon, we mount via fstab, so we need to add an fstab entry for dst */ FILE *g; char *line = NULL; unlink("/etc/fstab.new"); g = fopen("/etc/fstab.new", "w"); f = fopen("/etc/fstab", "r"); if (!g) perror("open /etc/fstab.new"); else { if (f) { int ret; while (true) { size_t dummy; ret = getline(&line, &dummy, f); if (ret < 0) break; /* remove lines that start with the same disk we formatted src is "/dev/xda1", we only compare "/dev/xda" */ if (strncmp(line, src, strlen(src)-1) != 0) fprintf(g, "%s", line); } free(line); fclose(f); } /* now add our new entry */ fprintf(g, "%s %s auto defaults 0 0\n", src, dst); fclose(g); rename("/etc/fstab", "/etc/fstab.old"); rename("/etc/fstab.new", "/etc/fstab"); } #endif } _return: if(!srun) system("smbd"); return menu_return::RETURN_REPAINT; }
void CPersonalizeGui::ShowServiceOptions() { /* Here we give the user the option to enable, disable, or PIN protect items on the Service Menu. We also provide a means of PIN protecting the menu itself. */ int old_svprotect = g_settings.personalize_service; int old_bouqueteditor = g_settings.personalize_bouqueteditor; int old_scants = g_settings.personalize_scants; int old_reload = g_settings.personalize_reload; int old_getplugins = g_settings.personalize_getplugins; int old_restart = g_settings.personalize_restart; int old_epgrestart = g_settings.personalize_epgrestart; int old_ucodecheck = g_settings.personalize_ucodecheck; int old_imageinfo = g_settings.personalize_imageinfo; int old_update = g_settings.personalize_update; int old_chan_epg_stat = g_settings.personalize_chan_epg_stat; CMenuWidget* pSMMenu = new CMenuWidget(LOCALE_MAINMENU_SERVICE,NEUTRINO_ICON_PROTECTING, width); pSMMenu->addItem(GenericMenuSeparator); pSMMenu->addItem(GenericMenuBack); pSMMenu->addItem(GenericMenuSeparatorLine); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_PERSONALIZE_SVPROTECT, (int *)&g_settings.personalize_service, PERSONALIZE_YON_OPTIONS, PERSONALIZE_YON_OPTION_COUNT, true, NULL)); pSMMenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_PERSONALIZE_ACCESS)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_BOUQUETEDITOR_NAME, (int *)&g_settings.personalize_bouqueteditor, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_SCANTS, (int *)&g_settings.personalize_scants, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); pSMMenu->addItem(GenericMenuSeparatorLine); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_RELOAD, (int *)&g_settings.personalize_reload, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_1)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_GETPLUGINS, (int *)&g_settings.personalize_getplugins, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_2)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_RESTART, (int *)&g_settings.personalize_restart, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_3)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_EPGRESTART, (int *)&g_settings.personalize_epgrestart, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_4)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_UCODECHECK, (int *)&g_settings.personalize_ucodecheck, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_5)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_CHAN_EPG_STAT, (int *)&g_settings.personalize_chan_epg_stat, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_6)); pSMMenu->addItem(GenericMenuSeparatorLine); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_IMAGEINFO, (int *)&g_settings.personalize_imageinfo, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); pSMMenu->addItem(new CMenuOptionChooser(LOCALE_SERVICEMENU_UPDATE, (int *)&g_settings.personalize_update, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); pSMMenu->exec (NULL, ""); pSMMenu->hide (); delete pSMMenu; // Check for changes if ( old_svprotect != g_settings.personalize_service || old_bouqueteditor != g_settings.personalize_bouqueteditor || old_scants != g_settings.personalize_scants || old_reload != g_settings.personalize_reload || old_getplugins != g_settings.personalize_getplugins || old_restart != g_settings.personalize_restart || old_epgrestart != g_settings.personalize_epgrestart || old_ucodecheck != g_settings.personalize_ucodecheck || old_imageinfo != g_settings.personalize_imageinfo || old_update != g_settings.personalize_update || old_chan_epg_stat != g_settings.personalize_chan_epg_stat) { if (ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_PERSONALIZE_SAVERESTART), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NEUTRINO_ICON_PROTECTING) == CMessageBox::mbrYes) { SaveAndRestart(); } } }
void CPersonalizeGui::ShowSettingsOptions() { /* Here we give the user the option to enable, disable, or PIN protect items on the Settings Menu. We also provide a means of PIN protecting the menu itself. */ int old_stprotect = g_settings.personalize_settings; int old_video = g_settings.personalize_video; int old_audio = g_settings.personalize_audio; int old_youth = g_settings.personalize_youth; int old_network = g_settings.personalize_network; int old_recording = g_settings.personalize_recording; int old_streaming = g_settings.personalize_streaming; int old_language = g_settings.personalize_language; int old_colors = g_settings.personalize_colors; int old_lcd = g_settings.personalize_lcd; int old_keybinding = g_settings.personalize_keybinding; int old_audpic = g_settings.personalize_audpic; int old_driver = g_settings.personalize_driver; int old_misc = g_settings.personalize_misc; CMenuWidget* pSTMenu = new CMenuWidget(LOCALE_MAINMENU_SETTINGS,NEUTRINO_ICON_PROTECTING, width); pSTMenu->addItem(GenericMenuSeparator); pSTMenu->addItem(GenericMenuBack); pSTMenu->addItem(GenericMenuSeparatorLine); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_PERSONALIZE_SETUPMENUWITHPIN, (int *)&g_settings.personalize_settings, PERSONALIZE_YON_OPTIONS, PERSONALIZE_YON_OPTION_COUNT, true, NULL)); pSTMenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_PERSONALIZE_ACCESS)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_VIDEO, (int *)&g_settings.personalize_video, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_1)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_AUDIO, (int *)&g_settings.personalize_audio, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_2)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_PARENTALLOCK_PARENTALLOCK, (int *)&g_settings.personalize_youth, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_3)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_NETWORK, (int *)&g_settings.personalize_network, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_4)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_RECORDING, (int *)&g_settings.personalize_recording, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_5)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_STREAMING, (int *)&g_settings.personalize_streaming, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_6)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_LANGUAGE, (int *)&g_settings.personalize_language, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_7)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_COLORS, (int *)&g_settings.personalize_colors, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_8)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_LCD, (int *)&g_settings.personalize_lcd, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_9)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_KEYBINDING, (int *)&g_settings.personalize_keybinding, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_0)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_AUDIOPLAYERPICSETTINGS_GENERAL, (int *)&g_settings.personalize_audpic, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_DRIVER, (int *)&g_settings.personalize_driver, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); pSTMenu->addItem(new CMenuOptionChooser(LOCALE_MAINSETTINGS_MISC, (int *)&g_settings.personalize_misc, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); pSTMenu->exec (NULL, ""); pSTMenu->hide (); delete pSTMenu; // Check for changes if ( old_stprotect != g_settings.personalize_settings || old_video != g_settings.personalize_video || old_audio != g_settings.personalize_audio || old_youth != g_settings.personalize_youth || old_network != g_settings.personalize_network || old_recording != g_settings.personalize_recording || old_streaming != g_settings.personalize_streaming || old_language != g_settings.personalize_language || old_colors != g_settings.personalize_colors || old_lcd != g_settings.personalize_lcd || old_keybinding != g_settings.personalize_keybinding || old_audpic != g_settings.personalize_audpic || old_driver != g_settings.personalize_driver || old_misc != g_settings.personalize_misc) { if (ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_PERSONALIZE_SAVERESTART), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NEUTRINO_ICON_PROTECTING) == CMessageBox::mbrYes) { SaveAndRestart(); } } }
void CPersonalizeGui::ShowMainMenuOptions() { /* Here we give the user the option to enable, disable, or PIN protect items on the Main Menu. We also provide a means of PIN protecting the menu itself. */ int old_tvmode = g_settings.personalize_tvmode; int old_radiomode = g_settings.personalize_radiomode; int old_scartmode = g_settings.personalize_scartmode; int old_games = g_settings.personalize_games; int old_audioplayer = g_settings.personalize_audioplayer; int old_inetradio = g_settings.personalize_inetradio; int old_movieplayer = g_settings.personalize_movieplayer; int old_pictureviewer = g_settings.personalize_pictureviewer; #ifdef ENABLE_UPNP int old_upnpbrowser = g_settings.personalize_upnpbrowser; #endif int old_settings = g_settings.personalize_settings; int old_service = g_settings.personalize_service; int old_sleeptimer = g_settings.personalize_sleeptimer; int old_reboot = g_settings.personalize_reboot; int old_shutdown = g_settings.personalize_shutdown; int shortcut = 1; CMenuWidget* pMMMenu = new CMenuWidget(LOCALE_MAINMENU_HEAD,NEUTRINO_ICON_PROTECTING, width); pMMMenu->addItem(GenericMenuSeparator); pMMMenu->addItem(GenericMenuBack); pMMMenu->addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_PERSONALIZE_ACCESS)); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_TVMODE, (int *)&g_settings.personalize_tvmode, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_red, NEUTRINO_ICON_BUTTON_RED)); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_RADIOMODE, (int *)&g_settings.personalize_radiomode, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_SCARTMODE, (int *)&g_settings.personalize_scartmode, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_GAMES, (int *)&g_settings.personalize_games, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE)); pMMMenu->addItem(GenericMenuSeparatorLine); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_AUDIOPLAYER, (int *)&g_settings.personalize_audioplayer,PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_INETRADIO_NAME, (int *)&g_settings.personalize_inetradio,PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_MOVIEPLAYER, (int *)&g_settings.personalize_movieplayer, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_PICTUREVIEWER, (int *)&g_settings.personalize_pictureviewer, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); #ifdef ENABLE_UPNP pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_UPNPBROWSER, (int *)&g_settings.personalize_upnpbrowser, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); #endif pMMMenu->addItem(GenericMenuSeparatorLine); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_SLEEPTIMER, (int *)&g_settings.personalize_sleeptimer, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_REBOOT, (int *)&g_settings.personalize_reboot, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::convertDigitToKey(shortcut++))); pMMMenu->addItem(new CMenuOptionChooser(LOCALE_MAINMENU_SHUTDOWN, (int *)&g_settings.personalize_shutdown, PERSONALIZE_STD_OPTIONS, PERSONALIZE_STD_OPTION_COUNT, true, NULL, CRCInput::RC_standby, NEUTRINO_ICON_BUTTON_POWER)); pMMMenu->addItem(GenericMenuSeparator); pMMMenu->exec (NULL, ""); pMMMenu->hide (); delete pMMMenu; // Check for changes if ( old_tvmode != g_settings.personalize_tvmode || old_radiomode != g_settings.personalize_radiomode || old_scartmode != g_settings.personalize_scartmode || old_games != g_settings.personalize_games || old_audioplayer != g_settings.personalize_audioplayer || old_inetradio != g_settings.personalize_inetradio || old_movieplayer != g_settings.personalize_movieplayer || old_pictureviewer != g_settings.personalize_pictureviewer #ifdef ENABLE_UPNP || old_upnpbrowser != g_settings.personalize_upnpbrowser #endif || old_settings != g_settings.personalize_settings || old_service != g_settings.personalize_service || old_sleeptimer != g_settings.personalize_sleeptimer || old_reboot != g_settings.personalize_reboot || old_shutdown != g_settings.personalize_shutdown) { if (ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_PERSONALIZE_SAVERESTART), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NEUTRINO_ICON_PROTECTING) == CMessageBox::mbrYes) { SaveAndRestart(); } } }
bool CExtUpdate::readBackupList(const std::string & dstPath) { char buf[PATH_MAX]; static struct stat FileInfo; vector<std::string>::iterator it; f1 = fopen(backupList.c_str(), "r"); if (f1 == NULL) { f1 = fopen(backupList.c_str(), "w"); if (f1 != NULL) { char tmp1[1024]; snprintf(tmp1, sizeof(tmp1), "Log=%d\nLogFile=%s\n\n%s\n\n", fLogEnabled, fLogfile.c_str(), defaultBackup.c_str()); fwrite(tmp1, 1, strlen(tmp1), f1); fclose(f1); } else return ErrorReset(0, "cannot create missing backuplist file: " + backupList); } f1 = fopen(backupList.c_str(), "r"); if (f1 == NULL) return ErrorReset(0, "cannot read backuplist file: " + backupList); fpos_t fz; fseek(f1, 0, SEEK_END); fgetpos(f1, &fz); fseek(f1, 0, SEEK_SET); if (fz.__pos == 0) return ErrorReset(CLOSE_F1, "backuplist filesize is 0"); size_t pos; std::string line; // read blacklist and config vars copyList.clear(); blackList.clear(); deleteList.clear(); while(fgets(buf, sizeof(buf), f1) != NULL) { std::string tmpLine; line = buf; line = trim(line); // ignore comments if (line.find_first_of("#") == 0) { // config vars if (line.find_first_of(":") == 1) { if (line.length() > 1) readConfig(line); } continue; } pos = line.find_first_of("#"); if (pos != std::string::npos) { line = line.substr(0, pos); line = trim(line); } // find blackList entry if (line.find_first_of("-") == 0) { tmpLine = line.substr(1); if ((tmpLine.length() > 1) && (lstat(tmpLine.c_str(), &FileInfo) != -1)) { if (S_ISREG(FileInfo.st_mode)) blackList.push_back(tmpLine); } } // find deleteList entry else if (line.find_first_of("~") == 0) { tmpLine = line.substr(1); if (checkSpecialFolders(tmpLine, false)) continue; tmpLine = dstPath + tmpLine; if (line.length() > 2) deleteList.push_back(tmpLine); } // find copyList entry else { tmpLine = (line.find_first_of("+") == 0) ? line.substr(1) : line; // '+' add entry = default if (checkSpecialFolders(tmpLine, true)) continue; if (tmpLine.length() > 1) copyList.push_back(tmpLine); } } fclose(f1); // read DeleteList for(it = deleteList.begin(); it != deleteList.end(); ++it) { line = *it; if ((line.find("*") != std::string::npos) || (line.find("?") != std::string::npos)) { // Wildcards WRITE_UPDATE_LOG("delete file list: %s\n", line.c_str()); deleteFileList(line.c_str()); } else if (lstat(line.c_str(), &FileInfo) != -1) { if (S_ISREG(FileInfo.st_mode)) { // File WRITE_UPDATE_LOG("delete file: %s\n", line.c_str()); unlink(line.c_str()); } else if (S_ISDIR(FileInfo.st_mode)){ // Directory WRITE_UPDATE_LOG("delete directory: %s\n", line.c_str()); FileHelpers->removeDir(line.c_str()); } } } sync(); if (get_fs_usage(mountPkt.c_str(), total, used, &bsize)) free2 = (total * bsize) / 1024 - (used * bsize) / 1024; // read copyList for(it = copyList.begin(); it != copyList.end(); ++it) { line = *it; line = trim(line); // remove '/' from line end size_t len = line.length(); pos = line.find_last_of("/"); if (len == pos+1) line = line.substr(0, pos); std::string dst = dstPath + line; if ((line.find("*") != std::string::npos) || (line.find("?") != std::string::npos)) { // Wildcards DBG_MSG("Wildcards: %s\n", dst.c_str()); WRITE_UPDATE_LOG("\n"); WRITE_UPDATE_LOG("--------------------\n"); WRITE_UPDATE_LOG("Wildcards: %s\n", dst.c_str()); copyFileList(line, dstPath); } else { if (lstat(line.c_str(), &FileInfo) != -1) { if (S_ISREG(FileInfo.st_mode)) { // one file only pos = dst.find_last_of("/"); std::string dir = dst.substr(0, pos); FileHelpers->createDir(dir.c_str(), 0755); DBG_MSG("file: %s => %s\n", line.c_str(), dst.c_str()); WRITE_UPDATE_LOG("\n"); WRITE_UPDATE_LOG("file: %s => %s\n", line.c_str(), dst.c_str()); WRITE_UPDATE_LOG("--------------------\n"); std::string save = (isBlacklistEntry(line)) ? ".save" : ""; if (!FileHelpers->copyFile(line.c_str(), (dst + save).c_str(), FileInfo.st_mode & 0x0FFF)) return ErrorReset(0, "copyFile error"); } else if (S_ISDIR(FileInfo.st_mode)) { // directory DBG_MSG("directory: %s => %s\n", line.c_str(), dst.c_str()); WRITE_UPDATE_LOG("\n"); WRITE_UPDATE_LOG("directory: %s => %s\n", line.c_str(), dst.c_str()); WRITE_UPDATE_LOG("--------------------\n"); FileHelpers->copyDir(line.c_str(), dst.c_str(), true); } } } } sync(); if (get_fs_usage(mountPkt.c_str(), total, used, &bsize)) { uint64_t flashWarning = 1000; // 1MB uint64_t flashError = 600; // 600KB char buf1[1024]; total = (total * bsize) / 1024; free3 = total - (used * bsize) / 1024; printf("##### [%s] %llu KB free org, %llu KB free after delete, %llu KB free now\n", __FUNCTION__, free1, free2, free3); memset(buf1, '\0', sizeof(buf1)); if (free3 <= flashError) { snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_FLASHUPDATE_UPDATE_WITH_SETTINGS_ERROR), free3, total); ShowMsgUTF(LOCALE_MESSAGEBOX_ERROR, buf1, CMessageBox::mbrOk, CMessageBox::mbOk, NEUTRINO_ICON_ERROR); flashErrorFlag = true; return false; } else if (free3 <= flashWarning) { snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_FLASHUPDATE_UPDATE_WITH_SETTINGS_WARNING), free3, total); if (ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, buf1, CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, NEUTRINO_ICON_INFO) != CMessageBox::mbrYes) { flashErrorFlag = true; return false; } } } return true; }
void CUpnpBrowserGui::playnext(void) { while (true) { std::list<UPnPAttribute>attribs; std::list<UPnPAttribute>results; std::list<UPnPAttribute>::iterator i; std::stringstream sindex; std::vector<UPnPEntry> *entries = NULL; bool rfound = false; bool nfound = false; bool tfound = false; sindex << m_playid; attribs.push_back(UPnPAttribute("ObjectID", m_playfolder)); attribs.push_back(UPnPAttribute("BrowseFlag", "BrowseDirectChildren")); attribs.push_back(UPnPAttribute("Filter", "*")); attribs.push_back(UPnPAttribute("StartingIndex", sindex.str())); attribs.push_back(UPnPAttribute("RequestedCount", "1")); attribs.push_back(UPnPAttribute("SortCriteria", "")); #if 0 try { results=m_devices[m_selecteddevice].SendSOAP("urn:schemas-upnp-org:service:ContentDirectory:1", "Browse", attribs); } catch (std::runtime_error error) { ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); m_folderplay = false; return; } #endif results=m_devices[m_selecteddevice].SendSOAP("urn:schemas-upnp-org:service:ContentDirectory:1", "Browse", attribs); for (i=results.begin(); i!=results.end(); i++) { if (i->first=="NumberReturned") { if (atoi(i->second.c_str()) != 1) { m_folderplay = false; return; } nfound=true; } if (i->first=="TotalMatches") { tfound=true; } if (i->first=="Result") { entries=decodeResult(i->second); rfound=true; } } m_playid++; if ((entries != NULL) && (!(*entries)[0].isdir)) { int preferred=(*entries)[0].preferred; if (preferred != -1) { std::string protocol, prot, network, mime, additional; protocol=(*entries)[0].resources[preferred].protocol; splitProtocol(protocol, prot, network, mime, additional); if (mime == "audio/mpeg") { m_playing_entry = (*entries)[0]; m_playing_entry_is_shown = false; CAudiofile mp3((*entries)[0].resources[preferred].url, CFile::FILE_MP3); CAudioPlayer::getInstance()->play(&mp3, g_settings.audioplayer_highprio == 1); return; } else if (mime == "audio/x-vorbis+ogg") { m_playing_entry = (*entries)[0]; m_playing_entry_is_shown = false; CAudiofile mp3((*entries)[0].resources[preferred].url, CFile::FILE_OGG); CAudioPlayer::getInstance()->play(&mp3, g_settings.audioplayer_highprio == 1); return; } } } else { neutrino_msg_t msg; neutrino_msg_data_t data; g_RCInput->getMsg(&msg, &data, 10); // 1 sec timeout to update play/stop state display if( msg == CRCInput::RC_home) { m_folderplay = false; break; } } } }
bool CFileBrowser::exec(const char * const dirname) { neutrino_msg_t msg; neutrino_msg_data_t data; bool res = false; #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) { m_baseurl = base; } else #endif { m_baseurl = "http://" + g_settings.streaming_server_ip + ':' + g_settings.streaming_server_port + "/requests/browse.xml?dir="; } name = dirname; std::replace(name.begin(), name.end(), '\\', '/'); paintHead(); ChangeDir(name); paint(); paintFoot(); int oldselected = selected; unsigned long long timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_FILEBROWSER]); bool loop=true; while (loop) { g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); neutrino_msg_t msg_repeatok = msg & ~CRCInput::RC_Repeat; if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_FILEBROWSER]); if(!CRCInput::isNumeric(msg)) { m_SMSKeyInput.resetOldKey(); } if (msg == CRCInput::RC_yellow) { if ((Multi_Select) && (selected < filelist.size())) { if(filelist[selected].getFileName() != "..") { if( (S_ISDIR(filelist[selected].Mode) && Dirs_Selectable) || !S_ISDIR(filelist[selected].Mode) ) { filelist[selected].Marked = !filelist[selected].Marked; paintItem(selected - liststart); } } msg_repeatok = CRCInput::RC_down; // jump to next item } } if ((msg == CRCInput::RC_red) || msg == CRCInput::RC_page_down) { selected += listmaxshow; if (selected >= filelist.size()) { if (((filelist.size() / listmaxshow) + 1) * listmaxshow == filelist.size() + listmaxshow) // last page has full entries selected = 0; else selected = selected < (((filelist.size() / listmaxshow) + 1) * listmaxshow) ? (filelist.size() - 1) : 0; } liststart = (selected / listmaxshow) * listmaxshow; paint(); } else if ((msg == CRCInput::RC_green) || (msg == CRCInput::RC_page_up) ) { if ((int(selected)-int(listmaxshow))<0) selected=filelist.size()-1; else selected -= listmaxshow; liststart = (selected/listmaxshow)*listmaxshow; paint(); } else if (msg_repeatok == CRCInput::RC_up) { int prevselected=selected; if(selected==0) { selected = filelist.size()-1; } else selected--; paintItem(prevselected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if(oldliststart!=liststart) { paint(); } else { paintItem(selected - liststart); } } else if (msg_repeatok == CRCInput::RC_down) { if (!(filelist.empty())) { int prevselected=selected; selected = (selected + 1) % filelist.size(); paintItem(prevselected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if(oldliststart!=liststart) paint(); else paintItem(selected - liststart); } } else if ( ( msg == CRCInput::RC_timeout ) ) { selected = oldselected; loop=false; } else if ( msg == CRCInput::RC_right ) { if (!(filelist.empty())) { if (S_ISDIR(filelist[selected].Mode)) { #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) { ChangeDir(filelist[selected].Url); } else #endif { if (filelist[selected].getFileName() != "..") { selections.push_back(selected); ChangeDir(filelist[selected].Name); } } } } } else if ( msg == CRCInput::RC_left ) { #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) { for(unsigned int i = 0; i < filelist.size();i++) { if (S_ISDIR(filelist[i].Mode) && filelist[i].getFileName() == "..") { ChangeDir(filelist[i].Url); break; } } } else #endif if (selections.size() > 0) { ChangeDir("..",selections.back()); selections.pop_back(); } else { ChangeDir(".."); } } else if ( msg == CRCInput::RC_blue ) { if(Filter != NULL) { use_filter = !use_filter; paintFoot(); ChangeDir(Path); } } else if ( msg == CRCInput::RC_home ) { loop = false; } else if ( msg == CRCInput::RC_spkr && strncmp(Path.c_str(), VLC_URI, strlen(VLC_URI)) != 0) //Not in vlc mode { if(".." !=(filelist[selected].getFileName().substr(0,2))) // do not delete that { std::stringstream _msg; _msg << g_Locale->getText(LOCALE_FILEBROWSER_DODELETE1) << " "; if (filelist[selected].getFileName().length() > 25) { _msg << filelist[selected].getFileName().substr(0, 25) << "..."; } else _msg << filelist[selected].getFileName(); _msg << " " << g_Locale->getText(LOCALE_FILEBROWSER_DODELETE2); if (ShowMsgUTF(LOCALE_FILEBROWSER_DELETE, _msg.str(), CMessageBox::mbrNo, CMessageBox::mbYes|CMessageBox::mbNo)==CMessageBox::mbrYes) { recursiveDelete(filelist[selected].Name.c_str()); if(".ts" ==(filelist[selected].getFileName().substr(filelist[selected].getFileName().length()-3,filelist[selected].getFileName().length())))//if bla.ts { recursiveDelete((filelist[selected].Name.substr(0,filelist[selected].Name.length()-7)+".xml").c_str());//remove bla.xml von bla.ts } ChangeDir(Path); } } } else if (msg == CRCInput::RC_ok) { if (!(filelist.empty())) { if (filelist[selected].getFileName() == "..") { #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) ChangeDir(filelist[selected].Url); else #endif { if (selections.size() > 0) { ChangeDir("..",selections.back()); selections.pop_back(); } else { std::string::size_type pos = Path.substr(0,Path.length()-1).rfind('/'); if (pos != std::string::npos) { ChangeDir(".."); } else { loop = false; res = true; filelist[selected].Name = "/"; } } } } else { std::string filename = filelist[selected].Name; if ( filename.length() > 1 ) { if((!Multi_Select) && S_ISDIR(filelist[selected].Mode) && !Dir_Mode) { #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) ChangeDir(filelist[selected].Url); else #endif ChangeDir(filelist[selected].Name); } else { filelist[selected].Marked = true; loop = false; res = true; } } } } } else if (msg==CRCInput::RC_help) { if (++g_settings.filebrowser_sortmethod >= FILEBROWSER_NUMBER_OF_SORT_VARIANTS) g_settings.filebrowser_sortmethod = 0; sort(filelist.begin(), filelist.end(), sortBy[g_settings.filebrowser_sortmethod]); paint(); paintFoot(); } else if (CRCInput::isNumeric(msg_repeatok)) { if (!(filelist.empty())) SMSInput(msg_repeatok); } else { if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) { loop = false; } } } hide(); selected_filelist.clear(); if(res && Multi_Select) { CProgressWindow * progress = new CProgressWindow(); progress->setTitle(LOCALE_FILEBROWSER_SCAN); progress->exec(NULL,""); for(unsigned int i = 0; i < filelist.size();i++) if(filelist[i].Marked) { if(S_ISDIR(filelist[i].Mode)) { #ifdef ENABLE_INTERNETRADIO if (m_Mode == ModeSC) addRecursiveDir(&selected_filelist,filelist[i].Url, true, progress); else #endif addRecursiveDir(&selected_filelist,filelist[i].Name, true, progress); } else selected_filelist.push_back(filelist[i]); } progress->hide(); delete progress; } return res; }
void DisplayErrorMessage(const char * const ErrorMsg) { ShowMsgUTF(LOCALE_MESSAGEBOX_ERROR, ErrorMsg, CMessageBox::mbrCancel, CMessageBox::mbCancel, "error.raw"); }
int CHDDFmtExec::exec(CMenuTarget* parent, const std::string& key) { char cmd[100]; CHintBox * hintbox; int res; FILE * f; char src[128], dst[128]; CProgressWindow * progress; bool idone; sprintf(src, "/dev/%s1", key.c_str()); sprintf(dst, "/media/%s1", key.c_str()); printf("CHDDFmtExec: key %s\n", key.c_str()); res = ShowMsgUTF ( LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_WARN), CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo ); if(res != CMessageBox::mbrYes) return 0; bool srun = system("killall -9 smbd"); //res = check_and_umount(dst); res = check_and_umount(src, dst); printf("CHDDFmtExec: umount res %d\n", res); if(res) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_UMOUNT_WARN)); hintbox->paint(); sleep(2); delete hintbox; goto _return; } f = fopen("/proc/sys/kernel/hotplug", "w"); if(f) { fprintf(f, "none\n"); fclose(f); } progress = new CProgressWindow(); progress->setTitle(LOCALE_HDD_FORMAT); progress->exec(NULL,""); progress->showStatusMessageUTF("Executing fdisk"); progress->showGlobalStatus(0); sprintf(cmd, "/sbin/sfdisk -f -uM /dev/%s", key.c_str()); printf("CHDDFmtExec: executing %s\n", cmd); f=popen(cmd, "w"); if (!f) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_FAILED)); hintbox->paint(); sleep(2); delete hintbox; goto _remount; } fprintf(f, "0,\n;\n;\n;\ny\n"); pclose(f); //sleep(1); switch(g_settings.hdd_fs) { case 0: sprintf(cmd, "/sbin/mkfs.ext3 -L RECORD -T largefile -j -m0 %s", src); break; case 1: sprintf(cmd, "/sbin/mkfs.ext2 -L RECORD -T largefile -m0 %s", src); break; case 2: sprintf(cmd, "/sbin/mkreiserfs -f -f %s", src); break; default: return 0; } printf("CHDDFmtExec: executing %s\n", cmd); f=popen(cmd, "r"); if (!f) { hintbox = new CHintBox(LOCALE_HDD_FORMAT, g_Locale->getText(LOCALE_HDD_FORMAT_FAILED)); hintbox->paint(); sleep(2); delete hintbox; goto _remount; } char buf[256]; idone = false; while(fgets(buf, 255, f) != NULL) { printf("%s", buf); if(!idone && strncmp(buf, "Writing inode", 13)) { idone = true; buf[21] = 0; progress->showGlobalStatus(20); progress->showStatusMessageUTF(buf); } else if(strncmp(buf, "Creating", 8)) { progress->showGlobalStatus(40); progress->showStatusMessageUTF(buf); } else if(strncmp(buf, "Writing superblocks", 19)) { progress->showGlobalStatus(60); progress->showStatusMessageUTF(buf); } } pclose(f); progress->showGlobalStatus(100); sleep(2); sprintf(cmd, "/sbin/tune2fs -r 0 -c 0 -i 0 %s", src); printf("CHDDFmtExec: executing %s\n", cmd); system(cmd); _remount: progress->hide(); delete progress; switch(g_settings.hdd_fs) { case 0: res = mount(src, dst, "ext3", 0, NULL); break; case 1: res = mount(src, dst, "ext2", 0, NULL); break; case 2: res = mount(src, dst, "reiserfs", 0, NULL); break; default: break; } f = fopen("/proc/sys/kernel/hotplug", "w"); if(f) { fprintf(f, "/sbin/hotplug\n"); fclose(f); } if(!res) { sprintf(cmd, "%s/movies", dst); safe_mkdir((char *) cmd); sprintf(cmd, "%s/pictures", dst); safe_mkdir((char *) cmd); sprintf(cmd, "%s/epg", dst); safe_mkdir((char *) cmd); sprintf(cmd, "%s/music", dst); safe_mkdir((char *) cmd); sync(); } _return: if(!srun) system("smbd"); return menu_return::RETURN_REPAINT; }
void CUpnpBrowserGui::selectDevice() { bool loop = true; bool changed = true; neutrino_msg_t msg; neutrino_msg_data_t data; CHintBox *scanBox = new CHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_UPNPBROWSER_SCANNING)); // UTF-8 scanBox->paint(); #if 0 try { m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); } catch (std::runtime_error error) { delete scanBox; ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); return; } #endif m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); scanBox->hide(); if (!m_devices.size()) { ShowLocalizedMessage(LOCALE_MESSAGEBOX_INFO, LOCALE_UPNPBROWSER_NOSERVERS, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_UPDATE); delete scanBox; return; } // control loop while (loop) { if (changed) { paintDevice(); changed=false; } g_RCInput->getMsg(&msg, &data, 10); // 1 sec timeout to update play/stop state display neutrino_msg_t msg_repeatok = msg & ~CRCInput::RC_Repeat; if( msg == CRCInput::RC_timeout) { // nothing } else if( msg == CRCInput::RC_home) { loop = false; } else if (msg_repeatok == CRCInput::RC_up && m_selecteddevice > 0) { m_selecteddevice--; if (m_selecteddevice < m_indexdevice) m_indexdevice-=m_listmaxshow; changed = true; } else if (msg_repeatok == CRCInput::RC_down && m_selecteddevice + 1 < m_devices.size()) { m_selecteddevice++; if (m_selecteddevice + 1 > m_indexdevice + m_listmaxshow) m_indexdevice+=m_listmaxshow; changed=true; } else if( msg == CRCInput::RC_right || msg == CRCInput::RC_ok) { m_folderplay = false; selectItem("0"); changed=true; } else if( msg == CRCInput::RC_blue) { scanBox->paint(); #if 0 try { m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); } catch (std::runtime_error error) { delete scanBox; ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); return; } #endif m_devices = m_socket->Discover("urn:schemas-upnp-org:service:ContentDirectory:1"); scanBox->hide(); if (!m_devices.size()) { ShowLocalizedMessage(LOCALE_MESSAGEBOX_INFO, LOCALE_UPNPBROWSER_NOSERVERS, CMessageBox::mbrBack, CMessageBox::mbBack, NEUTRINO_ICON_UPDATE); delete scanBox; return; } changed=true; } else if(msg == NeutrinoMessages::RECORD_START || msg == NeutrinoMessages::ZAPTO || msg == NeutrinoMessages::STANDBY_ON || msg == NeutrinoMessages::SHUTDOWN || msg == NeutrinoMessages::SLEEPTIMER) { loop=false; g_RCInput->postMsg(msg, data); } else if(msg == NeutrinoMessages::EVT_TIMER) { CNeutrinoApp::getInstance()->handleMsg( msg, data ); } else { if( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) loop = false; changed=true; } #ifdef FB_BLIT m_frameBuffer->blit();//FIXME #endif } delete scanBox; }
void CNetworkSetup::testNetworkSettings() { char our_ip[16]; char our_mask[16]; char our_broadcast[16]; char our_gateway[16]; char our_nameserver[16]; std::string text, testsite, offset = " "; //set default testdomain std::string defaultsite = "www.google.de"; //set wiki-URL and wiki-IP std::string wiki_URL = "wiki.neutrino-hd.de"; std::string wiki_IP = "89.31.143.1"; //get www-domain testsite from /.version CConfigFile config('\t'); config.loadConfig("/.version"); testsite = config.getString("homepage",defaultsite); testsite.replace( 0, testsite.find("www",0), "" ); //use default testdomain if testsite missing if (testsite.length()==0) testsite = defaultsite; if (networkConfig->inet_static) { strcpy(our_ip, networkConfig->address.c_str()); strcpy(our_mask, networkConfig->netmask.c_str()); strcpy(our_broadcast, networkConfig->broadcast.c_str()); strcpy(our_gateway, networkConfig->gateway.c_str()); strcpy(our_nameserver, networkConfig->nameserver.c_str()); } else { // FIXME test with current, not changed ifname ? netGetIP((char *) old_ifname.c_str(), our_ip, our_mask, our_broadcast); netGetDefaultRoute(our_gateway); netGetNameserver(our_nameserver); } printf("testNw IP: %s\n", our_ip); printf("testNw MAC-address: %s\n", old_mac_addr.c_str()); printf("testNw Netmask: %s\n", our_mask); printf("testNw Broadcast: %s\n", our_broadcast); printf("testNw Gateway: %s\n", our_gateway); printf("testNw Nameserver: %s\n", our_nameserver); printf("testNw Testsite: %s\n", testsite.c_str()); if (our_ip[0] == 0) { text = g_Locale->getText(LOCALE_NETWORKMENU_INACTIVE_NETWORK); } else { //Box text = "Box (" + old_mac_addr + "):\n"; text += offset + (std::string)our_ip + " " + (std::string)mypinghost(our_ip) + "\n"; //Gateway text += (std::string)g_Locale->getText(LOCALE_NETWORKMENU_GATEWAY) + " (Router):\n"; text += offset + (std::string)our_gateway + " " + (std::string)mypinghost(our_gateway) + "\n"; //Nameserver text += (std::string)g_Locale->getText(LOCALE_NETWORKMENU_NAMESERVER) + ":\n"; text += offset + (std::string)our_nameserver + " " + (std::string)mypinghost(our_nameserver) + "\n"; //NTPserver if ( (pinghost(our_nameserver) == 1) && g_settings.network_ntpenable && (g_settings.network_ntpserver != "") ) { text += (std::string)g_Locale->getText(LOCALE_NETWORKMENU_NTPSERVER) + ":\n"; text += offset + g_settings.network_ntpserver + " " + (std::string)mypinghost(g_settings.network_ntpserver.c_str()) + "\n"; } //Wiki text += wiki_URL + ":\n"; text += offset + "via IP (" + wiki_IP + "): " + (std::string)mypinghost(wiki_IP.c_str()) + "\n"; if (pinghost(our_nameserver) == 1) { text += offset + "via DNS: " + (std::string)mypinghost(wiki_URL.c_str()) + "\n"; //testsite (or defaultsite) text += testsite + ":\n"; text += offset + "via DNS: " + (std::string)mypinghost(testsite.c_str()) + "\n"; } } ShowMsgUTF(LOCALE_NETWORKMENU_TEST, text, CMessageBox::mbrBack, CMessageBox::mbBack); // UTF-8 }
bool CUpnpBrowserGui::selectItem(std::string id) { bool loop = true; bool endall = false; bool changed = true; bool rchanged = true; neutrino_msg_t msg; neutrino_msg_data_t data; std::vector<UPnPEntry> *entries; unsigned int index, selected, dirnum; index=0; selected=0; dirnum=0; entries=NULL; while (loop) { updateTimes(); if (rchanged) { if (entries) delete entries; entries=NULL; std::list<UPnPAttribute>attribs; std::list<UPnPAttribute>results; std::list<UPnPAttribute>::iterator i; std::stringstream sindex; std::stringstream scount; unsigned int returned = 0; bool rfound = false; bool nfound = false; bool tfound = false; sindex << index; scount << m_listmaxshow; attribs.push_back(UPnPAttribute("ObjectID", id)); attribs.push_back(UPnPAttribute("BrowseFlag", "BrowseDirectChildren")); attribs.push_back(UPnPAttribute("Filter", "*")); attribs.push_back(UPnPAttribute("StartingIndex", sindex.str())); attribs.push_back(UPnPAttribute("RequestedCount", scount.str())); attribs.push_back(UPnPAttribute("SortCriteria", "")); #if 0 try { results=m_devices[m_selecteddevice].SendSOAP("urn:schemas-upnp-org:service:ContentDirectory:1", "Browse", attribs); } catch (std::runtime_error error) { ShowMsgUTF(LOCALE_MESSAGEBOX_INFO, error.what(), CMessageBox::mbrBack, CMessageBox::mbBack, "info.raw"); if (entries) delete entries; return endall; } #endif results=m_devices[m_selecteddevice].SendSOAP("urn:schemas-upnp-org:service:ContentDirectory:1", "Browse", attribs); for (i=results.begin(); i!=results.end(); i++) { if (i->first=="NumberReturned") { returned=atoi(i->second.c_str()); nfound=true; } if (i->first=="TotalMatches") { dirnum=atoi(i->second.c_str()); tfound=true; } if (i->first=="Result") { entries=decodeResult(i->second); rfound=true; } } if (!entries) return endall; if (!nfound || !tfound || !rfound) { delete entries; return endall; } if (returned != entries->size()) { delete entries; return endall; } if (returned == 0) { delete entries; return endall; } rchanged=false; changed=true; } if (changed) { paintItem(entries, selected - index, dirnum - index, index); changed=false; } g_RCInput->getMsg(&msg, &data, 10); // 1 sec timeout to update play/stop state display neutrino_msg_t msg_repeatok = msg & ~CRCInput::RC_Repeat; if( msg == CRCInput::RC_timeout) { // nothing } else if(msg == CRCInput::RC_home) { loop=false; endall=true; } else if(msg == CRCInput::RC_left) { loop=false; } else if (msg_repeatok == CRCInput::RC_up && selected > 0) { selected--; if (selected < index) { index-=m_listmaxshow; rchanged=true; } changed=true; } else if(msg == CRCInput::RC_green && selected > 0) { if (index > 0) { index-=m_listmaxshow; selected-=m_listmaxshow; rchanged=true; } else selected=0; changed=true; } else if (msg_repeatok == CRCInput::RC_down && selected + 1 < dirnum) { selected++; if (selected + 1 > index + m_listmaxshow) { index+=m_listmaxshow; rchanged=true; } changed=true; } else if(msg == CRCInput::RC_red && selected + 1 < dirnum) { if (index < ((dirnum - 1) / m_listmaxshow) * m_listmaxshow) { index+=m_listmaxshow; selected+=m_listmaxshow; if (selected + 1 >= dirnum) selected=dirnum - 1; rchanged=true; } else selected=dirnum - 1; changed=true; } else if(msg == CRCInput::RC_right) { if ((*entries)[selected - index].isdir) { endall=selectItem((*entries)[selected - index].id); if (endall) loop=false; } changed=true; } else if(msg == CRCInput::RC_ok) { if (!(*entries)[selected - index].isdir) { m_folderplay = false; int preferred=(*entries)[selected - index].preferred; if (preferred != -1) { std::string protocol, prot, network, mime, additional; protocol=(*entries)[selected - index].resources[preferred].protocol; splitProtocol(protocol, prot, network, mime, additional); if (mime == "audio/mpeg") { CAudiofile mp3((*entries)[selected - index].resources[preferred].url, CFile::FILE_MP3); CAudioPlayer::getInstance()->play(&mp3, g_settings.audioplayer_highprio == 1); } else if (mime == "audio/x-vorbis+ogg") { CAudiofile mp3((*entries)[selected - index].resources[preferred].url, CFile::FILE_OGG); CAudioPlayer::getInstance()->play(&mp3, g_settings.audioplayer_highprio == 1); } m_playing_entry = (*entries)[selected - index]; #if 0 // #ifdef ENABLE_PICTUREVIEWER else if ((mime == "image/gif") || (mime == "image/jpeg")) { CPictureViewer *viewer = new CPictureViewer(); bool loop=true; viewer->SetScaling((CPictureViewer::ScalingMode)g_settings.picviewer_scaling); viewer->SetVisible(g_settings.screen_StartX, g_settings.screen_EndX, g_settings.screen_StartY, g_settings.screen_EndY); if(g_settings.video_Format==1) viewer->SetAspectRatio(16.0/9); else if(g_settings.video_Format==0) { CControldClient cdc; cdc.setVideoFormat(CControldClient::VIDEOFORMAT_4_3); viewer->SetAspectRatio(4.0/3); } else viewer->SetAspectRatio(4.0/3); m_frameBuffer->setMode(720, 576, 16); m_frameBuffer->setTransparency(0); viewer->ShowImage((*entries)[selected - index].resources[preferred].url, true); while (loop) { g_RCInput->getMsg(&msg, &data, 10); // 1 sec timeout to update play/stop state display if( msg == CRCInput::RC_home) loop=false; } m_frameBuffer->setMode(720, 576, 8 * sizeof(fb_pixel_t)); m_frameBuffer->setBlendLevel(g_settings.gtx_alpha1, g_settings.gtx_alpha2); m_frameBuffer->ClearFrameBuffer(); delete viewer; } // #endif #endif } }
void DisplayErrorMessage(const char * const ErrorMsg) { ShowMsgUTF(LOCALE_MESSAGEBOX_ERROR, ErrorMsg, CMessageBox::mbrCancel, CMessageBox::mbCancel, NEUTRINO_ICON_ERROR); }