void CFlashExpert::writemtd(string filename, int mtdNumber) { char message[500]; sprintf(message, g_Locale->getText("flashupdate.reallyflashmtd").c_str(), filename.c_str(), CMTDInfo::getInstance()->getMTDName(mtdNumber).c_str()); if ( ShowMsg ( "messagebox.info", message , CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo, "softupdate.raw" ) != CMessageBox::mbrYes ) { return; } setTitle( g_Locale->getText("flashupdate.titlewriteflash")); paint(); showGlobalStatus(0); CFlashTool ft; ft.setStatusViewer( this ); ft.setMTDDevice( CMTDInfo::getInstance()->getMTDFileName(mtdNumber) ); if(!ft.program( "/tmp/" + filename, 50, 100)) { showStatusMessage( ft.getErrorMessage() ); sleep(10); } else { showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready")); sleep(1); hide(); ShowHint ( "messagebox.info", g_Locale->getText("flashupdate.flashreadyreboot") ); ft.reboot(); } }
void CFlashExpert::readmtd(int readmtd) { char tmp[10]; sprintf(tmp, "%d", readmtd); string filename = "/tmp/mtd" + string(tmp) + string(".img"); if(readmtd==-1) { //ganzes flashimage lesen filename = "/tmp/flashimage.img"; readmtd = 4; } setTitle(g_Locale->getText("flashupdate.titlereadflash")); paint(); showGlobalStatus(0); showStatusMessage(g_Locale->getText("flashupdate.actionreadflash") + " (" + string(CMTDInfo::getInstance()->getMTDName(readmtd)) + ")"); CFlashTool ft; ft.setStatusViewer( this ); ft.setMTDDevice(CMTDInfo::getInstance()->getMTDFileName(readmtd)); if(!ft.readFromMTD(filename, 100)) { showStatusMessage( ft.getErrorMessage() ); sleep(10); } else { showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready")); char message[500]; sprintf(message, g_Locale->getText("flashupdate.savesuccess").c_str(), filename.c_str() ); sleep(1); hide(); ShowHint ( "messagebox.info", message ); } }
void ProcessHint(){ ShowHint(); if(HintTime){ HintTime--; }; if(HintTime1){ HintTime1--; }; };
void TUI::ShowHint(const AnsiString& s) { VERIFY (m_bReady); GetCursorPos (&m_HintPoint); AStringVec SS; SS.push_back (s); Tools->OnShowHint(SS); if (!ShowHint(SS)&&m_pHintWindow) HideHint(); }
bool ActiveWidget::PointerIdle(const Pos& p, bool drag) { bool result=false; if ( IsOver(p) && !_was_over ) { DBG_Text("----->"); if ( !IsActive() ) { ShowHint(); } else if (!drag) { result |= OnMoveOver.Schedule_1(p); ShowHint(); } InputIncEager(this); if (!drag) DBG_Text("MoveOver"); } else if( _was_over && !IsOver(p) || _unsent_outside ) { DBG_Text("<-----"); if ( !IsActive() ) { HideHint(); } else if (!drag) { result |= OnMoveOutside.Schedule_1(p); HideHint(); } InputDecEager(this); if (!drag) DBG_Text("MoveSide"); _unsent_outside = false; } return result; }
BOOL CParmStatDlg::OnInitDialog() { CParamDlg::OnInitDialog(); SetWindowText("Statistic Functions"); InitFunc(); SetFunc(); ShowType(); ShowHint(); EnableFunc(); EnableType(); EnableHint(); EnableValues(); m_pRun->SetValues(this); UpdateData(FALSE); return TRUE; }
void TUI::ShowObjectHint() { VERIFY(m_bReady); if (!EPrefs->object_flags.is(epoShowHint)){ // if (m_bHintShowing) HideHint(); return; } if (EDevice.m_Camera.IsMoving()||m_MouseCaptured) return; if (!m_bAppActive) return; GetCursorPos(&m_HintPoint); TWinControl* ctr = FindVCLWindow(m_HintPoint); if (ctr!=m_D3DWindow) return; AStringVec SS; Tools->OnShowHint(SS); if (!ShowHint(SS)&&m_pHintWindow) HideHint(); }
void ParseTelnetInput(SHORT nClientIndex) { switch (MoxTelnetdConn[nClientIndex]->RecvBuff[0]) { case KEY_LOG: { FlagShowLogData = TRUE; nSleepTick = 500; MoxTelnetdConn[nClientIndex]->nStat = KEY_LOG; break; } case KEY_STATISTIC: { FlagShowLogData = FALSE; nSleepTick = 3000; MoxTelnetdConn[nClientIndex]->nStat = KEY_STATISTIC; break; } case KEY_RESET: { FlagShowLogData = FALSE; //MoxTelnetdConn[nClientIndex]->nStat = KEY_STATISTIC; memset(dwDiag, 0, sizeof(WORD) * DIAG_ITEM_COUNT); break; } default: { MoxTelnetdConn[nClientIndex]->nStat = 0; ShowHint(nClientIndex); FlagShowLogData = FALSE; break; } } MoxTelnetdConn[nClientIndex]->nRecvLen = 0; }
void cbBarDragPlugin::OnMouseMove( cbMotionEvent& event ) { // calculate postion in frame's coordiantes if ( !mBarDragStarted ) { event.Skip(); // pass event to the next plugin return; } wxPoint mousePos = event.mPos; event.mpPane->PaneToFrame( &mousePos.x, &mousePos.y ); bool prevIsInClient = ( mpCurPane == 0 ); AdjustHintRect( mousePos ); // if the hint-rect is not "tempted" to any pane yet if ( mpCurPane == NULL ) { cbDockPane* pPane = HitTestPanes( mHintRect ); // enable sticking again, if we've left the pane completely if ( !pPane ) mCanStick = true; if ( mCanStick && pPane && GetDistanceToPane( pPane, mousePos ) < GetBarHeightInPane( pPane ) ) StickToPane( pPane, mousePos ); else if ( pPane && HitTestPanes( mousePos ) == pPane && 0 ) // FOR NOW:: disabled StickToPane( pPane, mousePos ); } else { // otherwise, when rect is now sticked to some of the panes // check if it should still remain in this pane mCanStick = true; bool mouseInOther = IsInOtherPane( mousePos ); if ( mouseInOther ) { cbDockPane* pPane = HitTestPanes( mousePos ); StickToPane( pPane, mousePos ); } else { if ( IsInClientArea( mousePos ) ) { cbDockPane* pPane = HitTestPanes( mHintRect ); if ( pPane && pPane != mpCurPane && GetDistanceToPane( pPane, mousePos ) < GetBarHeightInPane( pPane ) ) StickToPane( pPane, mousePos ); else if ( !pPane ) { UnstickFromPane( mpCurPane, mousePos ); // FOR NOW:: disabled, would cause some mess // mCanStick = false; // prevents from sticking to this // pane again, flag is reset when hint-rect // leaves the pane completely } else if ( GetDistanceToPane( pPane, mousePos ) > GetBarHeightInPane( pPane ) ) { if ( !HitsPane( mpCurPane, mHintRect ) ) { UnstickFromPane( mpCurPane, mousePos ); // FOR NOW:: disabled, would cause some mess // mCanStick = false; // prevents from sticking to this // pane again, flag is reset when hint-rect // leaves the pane completely } } } } } ShowHint( prevIsInClient ); wxCursor* pPrevCurs = mpCurCursor; if ( mpCurPane ) { mpCurCursor = mpLayout->mpNormalCursor; } else { // if floating is off, and we are in the client // area, the cursor will be invalid, otherwise // it will be the normal cursor if (mpLayout->mFloatingOn) { mpCurCursor = mpLayout->mpNormalCursor; } else { mpCurCursor = mpLayout->mpNECursor; } } if ( pPrevCurs != mpCurCursor ) mpLayout->GetParentFrame().SetCursor( *mpCurCursor ); }
void pgDatabase::ShowTreeDetail(ctlTree *browser, frmMain *form, ctlListView *properties, ctlSQLBox *sqlPane) { if (Connect() == PGCONN_OK) { // Set the icon if required UpdateIcon(browser); // Add child nodes if necessary if (browser->GetChildrenCount(GetId(), false) == 0) { wxLogInfo(wxT("Adding child object to database %s"), GetIdentifier().c_str()); if (settings->GetDisplayOption(_("Catalogs"))) browser->AppendCollection(this, catalogFactory); if (settings->GetDisplayOption(_("Casts"))) browser->AppendCollection(this, castFactory); if (settings->GetDisplayOption(_("Extensions")) && GetConnection()->BackendMinimumVersion(9, 1)) browser->AppendCollection(this, extensionFactory); if (settings->GetDisplayOption(_("Foreign Data Wrappers")) && GetConnection()->BackendMinimumVersion(8, 4)) browser->AppendCollection(this, foreignDataWrapperFactory); if (settings->GetDisplayOption(_("Languages"))) browser->AppendCollection(this, languageFactory); if (settings->GetDisplayOption(_("Synonyms")) && connection()->EdbMinimumVersion(8, 0)) if (!GetConnection()->BackendMinimumVersion(8, 4)) browser->AppendCollection(this, synonymFactory); if (settings->GetDisplayOption(_("Schemas"))) browser->AppendCollection(this, schemaFactory); if (settings->GetDisplayOption(_("Slony-I Clusters"))) browser->AppendCollection(this, slClusterFactory); wxString missingFKsql = wxT("SELECT COUNT(*) FROM\n") wxT(" (SELECT tgargs from pg_trigger tr\n") wxT(" LEFT JOIN pg_depend dep ON dep.objid=tr.oid AND deptype = 'i'\n") wxT(" LEFT JOIN pg_constraint co ON refobjid = co.oid AND contype = 'f'\n") wxT(" WHERE \n"); if (connection()->BackendMinimumVersion(9, 0)) missingFKsql += wxT("tgisinternal\n"); else missingFKsql += wxT("tgisconstraint\n"); missingFKsql += wxT(" AND co.oid IS NULL\n") wxT(" GROUP BY tgargs\n") wxT(" HAVING count(1) = 3) AS foo"); missingFKs = StrToLong(connection()->ExecuteScalar(missingFKsql)); } } GetServer()->iSetLastDatabase(GetName()); if (properties) { // Setup listview CreateListColumns(properties); properties->AppendItem(_("Name"), GetName()); properties->AppendItem(_("OID"), NumToStr(GetOid())); properties->AppendItem(_("Owner"), GetOwner()); properties->AppendItem(_("ACL"), GetAcl()); if (!GetPath().IsEmpty()) properties->AppendItem(_("Path"), GetPath()); // We may not actually be connected... if (GetConnection() && GetConnection()->BackendMinimumVersion(8, 0)) { properties->AppendItem(_("Tablespace"), GetTablespace()); properties->AppendItem(_("Default tablespace"), GetDefaultTablespace()); } properties->AppendItem(_("Encoding"), GetEncoding()); if (GetConnection() && GetConnection()->BackendMinimumVersion(8, 4)) { properties->AppendItem(_("Collation"), GetCollate()); properties->AppendItem(_("Character type"), GetCType()); } properties->AppendItem(_("Default schema"), defaultSchema); properties->AppendItem(_("Default table ACL"), m_defPrivsOnTables); properties->AppendItem(_("Default sequence ACL"), m_defPrivsOnSeqs); properties->AppendItem(_("Default function ACL"), m_defPrivsOnFuncs); size_t i; wxString username; wxString varname; wxString varvalue; for (i = 0 ; i < variables.GetCount() ; i++) { wxStringTokenizer tkz(variables.Item(i), wxT("=")); while (tkz.HasMoreTokens()) { username = tkz.GetNextToken(); varname = tkz.GetNextToken(); varvalue = tkz.GetNextToken(); } if (username.Length() == 0) { properties->AppendItem(varname, varvalue); } else { // should we add the parameters for the username? // I don't think so // but if we want this, how will we display that? } } properties->AppendYesNoItem(_("Allow connections?"), GetAllowConnections()); properties->AppendYesNoItem(_("Connected?"), GetConnected()); if (GetConnection() && GetConnection()->BackendMinimumVersion(8, 1)) { wxString strConnLimit; strConnLimit.Printf(wxT("%ld"), GetConnectionLimit()); properties->AppendItem(_("Connection limit"), strConnLimit); } properties->AppendYesNoItem(_("System database?"), GetSystemObject()); if (GetMissingFKs()) properties->AppendItem(_("Old style FKs"), GetMissingFKs()); if (!GetSchemaRestriction().IsEmpty()) properties->AppendItem(_("Schema restriction"), GetSchemaRestriction()); properties->AppendItem(_("Comment"), firstLineOnly(GetComment())); if (!GetLabels().IsEmpty()) { wxArrayString seclabels = GetProviderLabelArray(); if (seclabels.GetCount() > 0) { for (unsigned int index = 0 ; index < seclabels.GetCount() - 1 ; index += 2) { properties->AppendItem(seclabels.Item(index), seclabels.Item(index + 1)); } } } } if (form && GetCanHint() && !hintShown) { ShowHint(form, false); } }
int CTimerList::show() { neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); bool loop=true; bool update=true; COSDFader fader(g_settings.menu_Content_alpha); fader.StartFadeIn(); while (loop) { if (update) { hide(); updateEvents(); update=false; paint(); } g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); //ignore numeric keys if (g_RCInput->isNumeric(msg)){ msg = CRCInput::RC_nokey; } if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings ::TIMING_MENU]); if((msg == NeutrinoMessages::EVT_TIMER) && (data == fader.GetTimer())) { if(fader.Fade()) loop = false; } else if ( ( msg == CRCInput::RC_timeout ) || ( msg == CRCInput::RC_home) || (msg == CRCInput::RC_left) || (( msg == CRCInput::RC_ok) && (timerlist.empty())) ) { //Exit after timeout or cancel key if(fader.StartFadeOut()) { timeoutEnd = CRCInput::calcTimeoutEnd( 1 ); msg = 0; } else loop=false; } else if ((msg == CRCInput::RC_up || msg == (unsigned int)g_settings.key_channelList_pageup) && !(timerlist.empty())) { int step = 0; int prev_selected = selected; step = (msg == (unsigned int)g_settings.key_channelList_pageup) ? listmaxshow : 1; // browse or step 1 selected -= step; if((prev_selected-step) < 0) // because of uint selected = timerlist.size() - 1; paintItem(prev_selected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if (oldliststart!=liststart) { paint(); } else { paintItem(selected - liststart); } paintFoot(); } else if ((msg == CRCInput::RC_down || msg == (unsigned int)g_settings.key_channelList_pagedown) && !(timerlist.empty())) { unsigned int step = 0; int prev_selected = selected; step = (msg == (unsigned int)g_settings.key_channelList_pagedown) ? listmaxshow : 1; // browse or step 1 selected += step; if(selected >= timerlist.size()) { if (((timerlist.size() / listmaxshow) + 1) * listmaxshow == timerlist.size() + listmaxshow) // last page has full entries selected = 0; else selected = ((step == listmaxshow) && (selected < (((timerlist.size() / listmaxshow) + 1) * listmaxshow))) ? (timerlist.size() - 1) : 0; } paintItem(prev_selected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if (oldliststart!=liststart) { paint(); } else { paintItem(selected - liststart); } paintFoot(); } else if ((msg == CRCInput::RC_right || msg == CRCInput::RC_ok || msg==CRCInput::RC_blue) && !(timerlist.empty())) { if (modifyTimer()==menu_return::RETURN_EXIT_ALL) { res=menu_return::RETURN_EXIT_ALL; loop=false; } else update=true; } else if ((msg == CRCInput::RC_red) && !(timerlist.empty())) { bool killTimer = true; if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id)) { CTimerd::RecordingStopInfo recinfo; recinfo.channel_id = timerlist[selected].channel_id; recinfo.eventID = timerlist[selected].eventID; if (CRecordManager::getInstance()->IsRecording(&recinfo)) { std::string title = ""; char buf1[1024]; CEPGData epgdata; CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata); memset(buf1, '\0', sizeof(buf1)); if (epgdata.title != "") title = "(" + epgdata.title + ")\n"; snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); if(ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrNo) { killTimer = false; update = false; } } } if (killTimer) { Timer->removeTimerEvent(timerlist[selected].eventID); skipEventID=timerlist[selected].eventID; update = true; } } else if (msg==CRCInput::RC_green) { if (newTimer()==menu_return::RETURN_EXIT_ALL) { res=menu_return::RETURN_EXIT_ALL; loop=false; } else update=true; } else if (msg==CRCInput::RC_yellow) { update=true; } #if 0 else if ((msg==CRCInput::RC_blue)|| (CRCInput::isNumeric(msg)) ) { //pushback key if... g_RCInput->postMsg( msg, data ); loop=false; } #endif else if (msg==CRCInput::RC_setup) { res=menu_return::RETURN_EXIT_ALL; loop=false; } else if ( msg == CRCInput::RC_help || msg == CRCInput::RC_info) { CTimerd::responseGetTimer* timer=&timerlist[selected]; if (timer!=NULL) { if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_ZAPTO) { hide(); if (timer->epgID != 0) res = g_EpgData->show(timer->channel_id, timer->epgID, &timer->epg_starttime); else ShowHint(LOCALE_MESSAGEBOX_INFO, LOCALE_EPGVIEWER_NOTFOUND); if (res==menu_return::RETURN_EXIT_ALL) loop=false; else paint(); } } // help key } else if (msg == CRCInput::RC_sat || msg == CRCInput::RC_favorites) { g_RCInput->postMsg (msg, 0); loop = false; res = menu_return::RETURN_EXIT_ALL; } else { if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) { loop = false; res = menu_return::RETURN_EXIT_ALL; } } } hide(); fader.Stop(); return(res); }
int CAdZapMenu::exec(CMenuTarget *parent, const std::string & actionKey) { Init(); int res = menu_return::RETURN_EXIT_ALL; bool marked_ok = (actionKey.length() == 1 && g_settings.adzap_zapBackPeriod == (actionKey[0] - '0') * 60); if (actionKey == "enable" || marked_ok) { if (!monitor) armed = true; alerted = false; Update(); return res; } if (actionKey == "disable") { armed = false; monitor = false; alerted = false; Update(); return res; } if (actionKey == "monitor") { armed = false; monitor = true; alerted = false; if (!evtlist.empty()) monitorLifeTime.tv_sec = getMonitorLifeTime(); printf("CAdZapMenu::%s: monitorLifeTime.tv_sec: %d\n", __func__, (uint) monitorLifeTime.tv_sec); Update(); return res; } if (actionKey == "adzap") { if (armed || monitor) { armed = false; monitor = false; alerted = false; Update(); ShowHint(LOCALE_ADZAP, LOCALE_ADZAP_CANCEL, 450, 1); return res; } } if (actionKey.length() == 1) { g_settings.adzap_zapBackPeriod = actionKey[0] - '0'; for (int shortcut = 1; shortcut < 10; shortcut++) { bool selected = (g_settings.adzap_zapBackPeriod == shortcut); forwarders[shortcut - 1]->setMarked(selected); forwarders[shortcut - 1]->iconName_Info_right = selected ? NEUTRINO_ICON_CHECKMARK : NULL; } nc->setMarked(false); g_settings.adzap_zapBackPeriod *= 60; return menu_return::RETURN_REPAINT; } if (parent) parent->hide(); monitor = false; ShowMenu(); return res; }
void CAdZapMenu::Run() { set_threadname("CAdZapMenu::Run"); while (true) { CChannelList *channelList = NULL; t_channel_id curChannelId = -1; if (monitor) { clock_gettime(CLOCK_REALTIME, &ts); ts.tv_sec += 1; sem_timedwait(&sem, &ts); if (monitor && (monitorLifeTime.tv_sec > ts.tv_sec)) { channelList = CNeutrinoApp::getInstance()->channelList; curChannelId = channelList ? channelList->getActiveChannel_ChannelID() : -1; if (!armed && (channelId != curChannelId)) { armed = true; clock_gettime(CLOCK_REALTIME, &zapBackTime); zapBackTime.tv_sec += g_settings.adzap_zapBackPeriod - ZAPBACK_ALERT_PERIOD; alerted = false; } else if (channelId == curChannelId) { armed = false; alerted = false; } } else { monitor = false; armed = false; alerted = false; } } else if (armed) { if (g_settings.adzap_writeData) { clock_gettime(CLOCK_REALTIME, &ts); ts.tv_sec += 1; sem_timedwait(&sem, &ts); } else sem_timedwait(&sem, &zapBackTime); } else sem_wait(&sem); if (armed) { clock_gettime(CLOCK_REALTIME, &ts); if (ts.tv_sec >= zapBackTime.tv_sec) { if (!channelList) { channelList = CNeutrinoApp::getInstance()->channelList; curChannelId = channelList ? channelList->getActiveChannel_ChannelID() : -1; } if (!alerted) { if (channelId != curChannelId) { char name[1024]; snprintf(name, sizeof(name)-1, g_Locale->getText(LOCALE_ADZAP_ANNOUNCE), ZAPBACK_ALERT_PERIOD, channelName.c_str()); ShowHint(LOCALE_ADZAP, name); } alerted = true; zapBackTime.tv_sec += ZAPBACK_ALERT_PERIOD; } else { alerted = false; if ((channelId != curChannelId) && channelList) channelList->zapTo_ChannelID(channelId); armed = false; } } } if (g_settings.adzap_writeData && (monitor || armed)) WriteData(); else RemoveData(); } }
void CloseDownClient(ClientRec *client) { int index_deleted = 0; if (verbose) { printf ("ICE Connection closed, IceConn fd = %d\n", IceConnectionNumber (client->ice_conn)); printf ("\n"); } SmsCleanUp (client->smsConn); IceSetShutdownNegotiation (client->ice_conn, False); IceCloseConnection (client->ice_conn); client->ice_conn = NULL; client->smsConn = NULL; if (!shutdownInProgress && client_info_visible) { for (index_deleted = 0; index_deleted < numClientListNames; index_deleted++) { if (clientListRecs[index_deleted] == client) break; } } ListSearchAndFreeOne (RunningList, (char *) client); if (saveInProgress) { Status delStatus = ListSearchAndFreeOne ( WaitForSaveDoneList, (char *) client); if (delStatus) { ListAddLast (FailedSaveList, (char *) client); client->freeAfterBadSavePopup = True; } ListSearchAndFreeOne (WaitForInteractList, (char *) client); ListSearchAndFreeOne (WaitForPhase2List, (char *) client); if (delStatus && ListCount (WaitForSaveDoneList) == 0) { if (ListCount (FailedSaveList) > 0 && !checkpoint_from_signal) PopupBadSave (); else FinishUpSave (); } else if (ListCount (WaitForInteractList) > 0 && OkToEnterInteractPhase ()) { LetClientInteract (ListFirst (WaitForInteractList)); } else if (!phase2InProgress && ListCount (WaitForPhase2List) > 0 && OkToEnterPhase2 ()) { StartPhase2 (); } } if (client->restartHint == SmRestartImmediately && !shutdownInProgress) { Clone (client, True /* use saved state */); ListAddLast (RestartImmedList, (char *) client); } else if (client->restartHint == SmRestartAnyway) { ListAddLast (RestartAnywayList, (char *) client); } else if (!client->freeAfterBadSavePopup) { FreeClient (client, True /* free props */); } if (shutdownInProgress) { if (ListCount (RunningList) == 0) EndSession (0); } else if (client_info_visible) { UpdateClientList (); if (current_client_selected == index_deleted) { if (current_client_selected == numClientListNames) current_client_selected--; if (current_client_selected >= 0) { XawListHighlight (clientListWidget, current_client_selected); ShowHint (clientListRecs[current_client_selected]); if (client_prop_visible) { DisplayProps (clientListRecs[current_client_selected]); } } } else { if (index_deleted < current_client_selected) current_client_selected--; XawListHighlight (clientListWidget, current_client_selected); } } }
bool CUserMenu::showUserMenu(neutrino_msg_t msg) { int button = -1; int dummy = 0; unsigned ums = g_settings.usermenu.size(); for (unsigned int i = 0; i < ums; i++) if (g_settings.usermenu[i]->key == msg) { button = i; break; } if (button < 0) return false; int pers = -1; switch(msg) { case CRCInput::RC_red: pers = SNeutrinoSettings::P_MAIN_RED_BUTTON; button = SNeutrinoSettings::BUTTON_RED; break; case CRCInput::RC_green: pers = SNeutrinoSettings::P_MAIN_GREEN_BUTTON; button = SNeutrinoSettings::BUTTON_GREEN; break; case CRCInput::RC_yellow: pers = SNeutrinoSettings::P_MAIN_YELLOW_BUTTON; button = SNeutrinoSettings::BUTTON_YELLOW; break; case CRCInput::RC_blue: pers = SNeutrinoSettings::P_MAIN_BLUE_BUTTON; button = SNeutrinoSettings::BUTTON_BLUE; break; } CNeutrinoApp::getInstance()->StopSubtitles(); if (pers > -1 && (g_settings.personalize[pers] != CPersonalizeGui::PERSONALIZE_ACTIVE_MODE_ENABLED)) { ShowHint(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(LOCALE_PERSONALIZE_MENUDISABLEDHINT),450, 10); CNeutrinoApp::getInstance()->StartSubtitles(); return true; } width = 40; CMenuItem* menu_item = NULL; CMenuItem* last_menu_item = NULL; CColorKeyHelper keyhelper; //set default feature key neutrino_msg_t key = feat_key[CPersonalizeGui::PERSONALIZE_FEAT_KEY_AUTO].key; //CRCInput::RC_nokey const char * icon = NULL; int menu_items = 0; // define classes CSubChannelSelectMenu subchanselect; CNeutrinoApp * neutrino = CNeutrinoApp::getInstance(); std::string txt = g_settings.usermenu[button]->title; if (button < COL_BUTTONMAX && txt.empty()) txt = g_Locale->getText(user_menu[button].caption); CMenuWidget *menu = new CMenuWidget(txt, (button < COL_BUTTONMAX) ? user_menu[button].menu_icon_def : "", width); if (menu == NULL) return true; if (button < COL_BUTTONMAX) menu->setSelected(user_menu[button].selected); //show cancel button if configured if (g_settings.personalize[SNeutrinoSettings::P_UMENU_SHOW_CANCEL]) menu->addIntroItems(NONEXISTANT_LOCALE, NONEXISTANT_LOCALE, CMenuWidget::BTN_TYPE_CANCEL); else menu->addItem(GenericMenuSeparator); std::string itemstr_last("1"); std::vector<std::string> items = ::split(g_settings.usermenu[button]->items, ','); for (std::vector<std::string>::iterator it = items.begin(); it != items.end(); ++it) { if (it->empty()) continue; if (*it == itemstr_last) continue; int item = -1; if (it->find_first_not_of("0123456789") == std::string::npos) item = atoi(*it); menu_item = NULL; switch (item) { case SNeutrinoSettings::ITEM_NONE: continue; case SNeutrinoSettings::ITEM_BAR: menu->addItem(GenericMenuSeparatorLine); break; case SNeutrinoSettings::ITEM_FAVORITS: keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_FAVORIT]].key); //CRCInput::RC_green menu_item = new CMenuDForwarder(LOCALE_FAVORITES_MENUEADD, true, NULL, new CFavorites, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_RECORD: if (g_settings.recording_type == RECORDING_OFF) break; keyhelper.get(&key,&icon,CRCInput::RC_red); menu_item = new CMenuForwarder(LOCALE_MAINMENU_RECORDING, true, NULL, CRecordManager::getInstance(), "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_MOVIEPLAYER_MB: if (g_settings.recording_type == RECORDING_OFF) break; keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, true, NULL, neutrino, "tsmoviebrowser", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_MB, LOCALE_MENU_HINT_MB); break; case SNeutrinoSettings::ITEM_TIMERLIST: keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_TIMERLIST]].key); //CRCInput::RC_yellow menu_item = new CMenuDForwarder(LOCALE_TIMERLIST_NAME, true, NULL, new CTimerList, "-1", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_TIMERS, LOCALE_MENU_HINT_TIMERS); break; case SNeutrinoSettings::ITEM_REMOTE: keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_RC_LOCK]].key); //CRCInput::RC_nokey); menu_item = new CMenuDForwarder(LOCALE_RCLOCK_MENUEADD, true, NULL, new CRCLock, "-1" , key, icon ); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_EPG_SUPER: keyhelper.get(&key,&icon,CRCInput::RC_green); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EPGPLUS , true, NULL, new CEPGplusHandler, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_EPG_LIST: keyhelper.get(&key,&icon,CRCInput::RC_red); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EVENTLIST , true, NULL, new CEventListHandler, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_EPG_INFO: keyhelper.get(&key,&icon,CRCInput::RC_yellow); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EVENTINFO , true, NULL, new CEPGDataHandler, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_EPG_MISC: { dummy = g_Sectionsd->getIsScanningActive(); keyhelper.get(&key,&icon); // new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOMODE, &g_settings.video_Mode, VIDEOMENU_VIDEOMODE_OPTIONS, VIDEOMENU_VIDEOMODE_OPTION_COUNT, true, this, CRCInput::RC_nokey, "", true); menu_item = new CMenuOptionChooser(LOCALE_MAINMENU_PAUSESECTIONSD, &dummy, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this , key, icon ); menu->addItem(menu_item, false); keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MAINMENU_CLEARSECTIONSD, true, NULL, neutrino, "clearSectionsd", key,icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; } case SNeutrinoSettings::ITEM_AUDIO_SELECT: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_AUDIOSELECTMENUE_HEAD, true, NULL, new CAudioSelectMenuHandler, "-1", key,icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_SUBCHANNEL: { if (g_RemoteControl->subChannels.empty()) break; // NVOD/SubService- Kanal! CMenuWidget *tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, NEUTRINO_ICON_VIDEO); if (!subchanselect.getNVODMenu(tmpNVODSelector)) { delete tmpNVODSelector; break; } keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_HEAD, true, NULL, tmpNVODSelector, "-1", key,icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; } case SNeutrinoSettings::ITEM_TECHINFO: keyhelper.get(&key,&icon,CRCInput::RC_blue); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_STREAMINFO, !neutrino->channelList->isEmpty(), NULL, new CStreamInfo2, "-1", key, icon ); menu_item->setHint(NEUTRINO_ICON_HINT_STREAMINFO, LOCALE_MENU_HINT_STREAMINFO); break; case SNeutrinoSettings::ITEM_GAMES: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_MAINMENU_GAMES, g_PluginList->hasPlugin(CPlugins::P_TYPE_GAME), NULL, new CPluginList(LOCALE_MAINMENU_GAMES,CPlugins::P_TYPE_GAME), "-1", key, icon ); menu_item->setHint(NEUTRINO_ICON_HINT_GAMES, LOCALE_MENU_HINT_GAMES); break; case SNeutrinoSettings::ITEM_TOOLS: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_MAINMENU_TOOLS, g_PluginList->hasPlugin(CPlugins::P_TYPE_TOOL), NULL, new CPluginList(LOCALE_MAINMENU_TOOLS,CPlugins::P_TYPE_TOOL), "-1", key, icon ); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_SCRIPTS: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_MAINMENU_SCRIPTS, g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT), NULL, new CPluginList(LOCALE_MAINMENU_SCRIPTS,CPlugins::P_TYPE_SCRIPT), "-1", key, icon ); menu_item->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_SCRIPTS); break; case SNeutrinoSettings::ITEM_LUA: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_MAINMENU_LUA, g_PluginList->hasPlugin(CPlugins::P_TYPE_LUA), NULL, new CPluginList(LOCALE_MAINMENU_LUA,CPlugins::P_TYPE_LUA), "-1", key, icon ); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_PLUGIN_TYPES: { unsigned int number_of_plugins = (unsigned int) g_PluginList->getNumberOfPlugins(); if (!number_of_plugins) continue; for (unsigned int count = 0; count < number_of_plugins; count++) { #if 0 bool show = g_PluginList->getType(count) == CPlugins::P_TYPE_TOOL || g_PluginList->getType(count) == CPlugins::P_TYPE_LUA; #endif bool show = false; if (g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE_GAMES]) show = show || g_PluginList->getType(count) == CPlugins::P_TYPE_GAME; if (g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE_TOOLS]) show = show || g_PluginList->getType(count) == CPlugins::P_TYPE_TOOL; if (g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE_SCRIPTS]) show = show || g_PluginList->getType(count) == CPlugins::P_TYPE_SCRIPT; if (g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE_LUA]) show = show || g_PluginList->getType(count) == CPlugins::P_TYPE_LUA; if (show && !g_PluginList->isHidden(count) && (g_PluginList->getIntegration(count) == CPlugins::I_TYPE_DISABLED)) { menu_items++; neutrino_msg_t d_key = g_PluginList->getKey(count); //printf("[neutrino usermenu] plugin %d, set key %d...\n", count, g_PluginList->getKey(count)); keyhelper.get(&key,&icon, d_key); menu_item = new CMenuForwarder(g_PluginList->getName(count), true, NULL, CPluginsExec::getInstance(), to_string(count).c_str(), key, icon); menu_item->setHint(g_PluginList->getHintIcon(count), g_PluginList->getDescription(count)); menu->addItem(menu_item, false); } } menu_item = NULL; break; } case SNeutrinoSettings::ITEM_VTXT: keyhelper.get(&key,&icon, feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_VTXT]].key); //CRCInput::RC_blue menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_VTXT, true, NULL, CPluginsExec::getInstance(), "teletext", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; case SNeutrinoSettings::ITEM_IMAGEINFO: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_SERVICEMENU_IMAGEINFO, true, NULL, new CImageInfo, NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_IMAGEINFO, LOCALE_MENU_HINT_IMAGEINFO); break; case SNeutrinoSettings::ITEM_BOXINFO: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_EXTRA_DBOXINFO, true, NULL, new CDBoxInfoWidget, NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_DBOXINFO, LOCALE_MENU_HINT_DBOXINFO); break; #if !HAVE_SPARK_HARDWARE case SNeutrinoSettings::ITEM_CAM: //if(cs_get_revision() == 10) continue; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_CI_SETTINGS, true, NULL, g_CamHandler, NULL, key, icon); break; #endif case SNeutrinoSettings::ITEM_CLOCK: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(!g_settings.mode_clock ? LOCALE_CLOCK_SWITCH_ON:LOCALE_CLOCK_SWITCH_OFF, true, NULL, neutrino, "clock_switch", key, icon); menu_item->setHint("", LOCALE_MENU_HINT_CLOCK_MODE); break; #if 0 case SNeutrinoSettings::ITEM_ADZAP: keyhelper.get(&key,&icon,CRCInput::RC_blue); menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_ADZAP, true, NULL, neutrino, "adzap", key, icon); menu_item->setHint("", LOCALE_MENU_HINT_ADZAP); break; case SNeutrinoSettings::ITEM_TUNER_RESTART: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_SERVICEMENU_RESTART_TUNER, true, NULL, neutrino, "restarttuner", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_RELOAD_CHANNELS, LOCALE_MENU_HINT_RESTART_TUNER); break; case SNeutrinoSettings::ITEM_RASS: if (!(neutrino->getMode() == CNeutrinoApp::mode_radio && g_Radiotext && g_Radiotext->haveRASS())) continue; keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_RASS_HEAD, true, NULL, neutrino, "rass", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_RASS, LOCALE_MENU_HINT_RASS); break; case SNeutrinoSettings::ITEM_NETZKINO: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_NKPLAYBACK, true, NULL, neutrino, "nkplayback", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_NKPLAY, LOCALE_MENU_HINT_NKPLAY); break; #endif #if HAVE_SPARK_HARDWARE case SNeutrinoSettings::ITEM_THREE_D_MODE: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_THREE_D_SETTINGS, true, NULL, neutrino, "3dmode", key, icon); menu_item->setHint("", LOCALE_MENU_HINT_VIDEO_THREE_D); break; #endif case SNeutrinoSettings::ITEM_YOUTUBE: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_YTPLAYBACK, true, NULL, neutrino, "ytplayback", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_YTPLAY, LOCALE_MENU_HINT_YTPLAY); break; case SNeutrinoSettings::ITEM_FILEPLAY: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, true, NULL, neutrino, "fileplayback", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY); break; case SNeutrinoSettings::ITEM_AUDIOPLAY: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_AUDIOPLAYER_NAME, true, NULL, neutrino, "audioplayer", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_APLAY, LOCALE_MENU_HINT_APLAY); break; case SNeutrinoSettings::ITEM_INETPLAY: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_INETRADIO_NAME, true, NULL, neutrino, "inetplayer", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_INET_RADIO, LOCALE_MENU_HINT_INET_RADIO); break; case SNeutrinoSettings::ITEM_HDDMENU: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_HDD_SETTINGS, true, NULL, CHDDMenuHandler::getInstance(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_HDD, LOCALE_MENU_HINT_HDD); break; case SNeutrinoSettings::ITEM_NETSETTINGS: keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MAINSETTINGS_NETWORK, true, NULL, CNetworkSetup::getInstance(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_NETWORK, LOCALE_MENU_HINT_NETWORK); break; case SNeutrinoSettings::ITEM_SWUPDATE: keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_SERVICEMENU_UPDATE, true, NULL, new CSoftwareUpdate(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_SW_UPDATE); break; case -1: // plugin { int number_of_plugins = g_PluginList->getNumberOfPlugins(); if (!number_of_plugins) continue; int count = 0; for(; count < number_of_plugins; count++) { const char *pname = g_PluginList->getFileName(count); if (pname && (std::string(pname) == *it) && !g_PluginList->isHidden(count)) { neutrino_msg_t d_key = g_PluginList->getKey(count); keyhelper.get(&key,&icon, d_key); menu_item = new CMenuForwarder(g_PluginList->getName(count), true, NULL, CPluginsExec::getInstance(), to_string(count).c_str(), key, icon); menu_item->setHint(g_PluginList->getHintIcon(count), g_PluginList->getDescription(count)); break; } } if (count == number_of_plugins) continue; } } itemstr_last = *it; if (menu_item) { menu_items++; menu->addItem(menu_item, false); last_menu_item = menu_item; } } extern CInfoClock *InfoClock; InfoClock->enableInfoClock(false); // 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->exec(NULL, ""); else if (last_menu_item) last_menu_item->exec( NULL ); InfoClock->enableInfoClock(true); CNeutrinoApp::getInstance()->StartSubtitles(); if (button < COL_BUTTONMAX) user_menu[button].selected = menu->getSelected(); delete menu; return true; }
int CCAMMenuHandler::doMenu(int slot, CA_SLOT_TYPE slotType) { int res = menu_return::RETURN_REPAINT; neutrino_msg_t msg; neutrino_msg_data_t data; bool doexit = false; menu_slot = slot; menu_type = slotType; while(!doexit) { printf("CCAMMenuHandler::doMenu: enter menu for slot %d\n", slot); timeoutEnd = CRCInput::calcTimeoutEnd(10); ca->MenuEnter(slotType, slot); while(true) { showHintBox(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(slotType == CA_SLOT_TYPE_CI ? LOCALE_CI_WAITING : LOCALE_SC_WAITING)); g_RCInput->getMsgAbsoluteTimeout (&msg, &data, &timeoutEnd); printf("CCAMMenuHandler::doMenu: msg %x data %x\n", msg, data); if (msg == CRCInput::RC_timeout) { printf("CCAMMenuHandler::doMenu: menu timeout\n"); hideHintBox(); ShowHint(LOCALE_MESSAGEBOX_INFO, g_Locale->getText(slotType == CA_SLOT_TYPE_CI ? LOCALE_CI_TIMEOUT : LOCALE_SC_TIMEOUT), 450, 3); ca->MenuClose(slotType, slot); return menu_return::RETURN_REPAINT; } /* -1 = not our event, 0 = back to top menu, 1 = continue loop, 2 = quit , 3 = quit all*/ int msgret; int ret = handleCamMsg(msg, data, msgret, true); printf("CCAMMenuHandler::doMenu: handleCamMsg ret: %d\n", ret); if((msgret & messages_return::unhandled) && (msg > CRCInput::RC_Events)) { if (CNeutrinoApp::getInstance()->handleMsg(msg, data) & (messages_return::cancel_all | messages_return::cancel_info)) { doexit = true; res = menu_return::RETURN_EXIT_ALL; break; } } if (ret == 1) { /* workaround: dont cycle here on timers */ if (msg != NeutrinoMessages::EVT_TIMER) timeoutEnd = CRCInput::calcTimeoutEnd(10); continue; } else if (ret == 2) { doexit = true; break; } else if (ret == 3) { res = menu_return::RETURN_EXIT_ALL; doexit = true; break; } else { // ret == 0 break; } } } ca->MenuClose(slotType, slot); hideHintBox(); menu_type = menu_slot = -1; printf("CCAMMenuHandler::doMenu: return\n"); return res; }
int CCAMMenuHandler::handleCamMsg(const neutrino_msg_t msg, neutrino_msg_data_t data, int &msgret, bool from_menu) { char str[255]; char cnt[5]; int i; MMI_MENU_LIST_INFO Menu; MMI_ENQUIRY_INFO MmiEnquiry; MMI_MENU_LIST_INFO *pMenu = &Menu; MMI_ENQUIRY_INFO *pMmiEnquiry = &MmiEnquiry; CA_MESSAGE Msg, *rMsg; //printf("CCAMMenuHandler::handleCamMsg: msg %x data %x from %s\n", msg, data, from_menu ? "menu" : "neutrino"); msgret = messages_return::unhandled; if ((msg == NeutrinoMessages::EVT_TIMER) && (data == close_timer)) { printf("CCAMMenuHandler::handleCamMsg: EVT_TIMER close_timer %d\n", close_timer); g_RCInput->killTimer(close_timer); msgret = messages_return::cancel_info; } if (msg != NeutrinoMessages::EVT_CA_MESSAGE) return 1; msgret = messages_return::handled; rMsg = (CA_MESSAGE *)data; if (!rMsg) return -1; Msg = *rMsg; delete rMsg; u32 MsgId = Msg.MsgId; CA_SLOT_TYPE SlotType = Msg.SlotType; int curslot = Msg.Slot; printf("CCAMMenuHandler::handleCamMsg: CA msg %x from %s\n", MsgId, from_menu ? "menu" : "neutrino"); if (g_settings.ci_ignore_messages && !from_menu) return 1; hideHintBox(); if (SlotType != CA_SLOT_TYPE_SMARTCARD && SlotType != CA_SLOT_TYPE_CI) return -1; if(MsgId == CA_MESSAGE_MSG_INSERTED) { snprintf(str, sizeof(str), "%s %d", g_Locale->getText(SlotType == CA_SLOT_TYPE_CI ? LOCALE_CI_INSERTED : LOCALE_SC_INSERTED), (int)curslot+1); printf("CCAMMenuHandler::handleCamMsg: %s\n", str); ShowHint(LOCALE_MESSAGEBOX_INFO, str, 450, 3); if (in_menu) msgret = messages_return::cancel_all; } else if (MsgId == CA_MESSAGE_MSG_REMOVED) { snprintf(str, sizeof(str), "%s %d", g_Locale->getText(SlotType == CA_SLOT_TYPE_CI ? LOCALE_CI_REMOVED : LOCALE_SC_REMOVED), (int)curslot+1); printf("CCAMMenuHandler::handleCamMsg: %s\n", str); ShowHint(LOCALE_MESSAGEBOX_INFO, str, 450, 3); #if 0 if (menu_slot == curslot && menu_type == SlotType) return 3; #endif if (in_menu) msgret = messages_return::cancel_all; } else if(MsgId == CA_MESSAGE_MSG_INIT_OK) { char name[255] = "Unknown"; if (ca) ca->ModuleName(SlotType, curslot, name); snprintf(str, sizeof(str), "%s %d: %s", g_Locale->getText(SlotType == CA_SLOT_TYPE_CI ? LOCALE_CI_INIT_OK : LOCALE_SC_INIT_OK), (int)curslot+1, name); printf("CCAMMenuHandler::handleCamMsg: %s\n", str); CCamManager::getInstance()->Start(CZapit::getInstance()->GetCurrentChannelID(), CCamManager::PLAY, true); ShowHint(LOCALE_MESSAGEBOX_INFO, str, 450, 3); } else if(MsgId == CA_MESSAGE_MSG_INIT_FAILED) { char name[255] = "Unknown"; if (ca) ca->ModuleName(SlotType, curslot, name); snprintf(str, sizeof(str), "%s %d: %s", g_Locale->getText(SlotType == CA_SLOT_TYPE_CI ? LOCALE_CI_INIT_FAILED : LOCALE_SC_INIT_FAILED), (int)curslot+1, name); printf("CCAMMenuHandler::handleCamMsg: %s\n", str); ShowHint(LOCALE_MESSAGEBOX_INFO, str, 450, 3); } else if(MsgId == CA_MESSAGE_MSG_MMI_MENU || MsgId == CA_MESSAGE_MSG_MMI_LIST) { bool sublevel = false; if(MsgId != CA_MESSAGE_MSG_MMI_MENU) sublevel = true; if (!(Msg.Flags & CA_MESSAGE_HAS_PARAM1_DATA)) return -1; memmove(pMenu, (MMI_MENU_LIST_INFO*)Msg.Msg.Data[0], sizeof(MMI_MENU_LIST_INFO)); free((void *)Msg.Msg.Data[0]); printf("CCAMMenuHandler::handleCamMsg: slot %d menu ready, title %s choices %d\n", curslot, convertDVBUTF8(pMenu->title, strlen(pMenu->title), 0).c_str(), pMenu->choice_nb); int menuret = menu_return::RETURN_REPAINT; int selected = -1; if(pMenu->choice_nb && from_menu) { CMenuWidget* menu = new CMenuWidget(convertDVBUTF8(pMenu->title, strlen(pMenu->title), 0).c_str(), NEUTRINO_ICON_SETTINGS); menu->enableSaveScreen(true); CMenuSelectorTarget * selector = new CMenuSelectorTarget(&selected); int slen = strlen(pMenu->subtitle); if(slen) { char * sptr = pMenu->subtitle; char * tptr = sptr; int bpos = 0; for(int li = 0; li < slen; li++) { if((tptr[li] == 0x8A) || ((bpos > 38) && (tptr[li] == 0x20)) ) { bpos = 0; tptr[li] = 0; printf("CCAMMenuHandler::handleCamMsg: subtitle: %s\n", sptr); menu->addItem(new CMenuForwarder(convertDVBUTF8(sptr, strlen(sptr), 0).c_str(), false)); sptr = &tptr[li+1]; } bpos++; } if(strlen(sptr)) { printf("CCAMMenuHandler::handleCamMsg: subtitle: %s\n", sptr); menu->addItem(new CMenuForwarder(convertDVBUTF8(sptr, strlen(sptr), 0).c_str(), false)); } } for(i = 0; (i < pMenu->choice_nb) && (i < MAX_MMI_ITEMS); i++) { snprintf(cnt, sizeof(cnt), "%d", i); if(sublevel) menu->addItem(new CMenuForwarder(convertDVBUTF8(pMenu->choice_item[i], strlen(pMenu->choice_item[i]), 0).c_str(), true, NULL, selector, cnt)); else menu->addItem(new CMenuForwarder(convertDVBUTF8(pMenu->choice_item[i], strlen(pMenu->choice_item[i]), 0).c_str(), true, NULL, selector, cnt, CRCInput::convertDigitToKey(i+1))); } slen = strlen(pMenu->bottom); if(slen) { printf("CCAMMenuHandler::handleCamMsg: bottom: %s\n", pMenu->bottom); menu->addItem(new CMenuForwarder(convertDVBUTF8(pMenu->bottom, slen, 0).c_str(), false)); } menuret = menu->exec(NULL, ""); delete menu; delete selector; } else { char lstr[255]; int slen = 0; if(strlen(pMenu->title)) slen += snprintf(&lstr[slen], 255-slen, "%s\n", pMenu->title); if(strlen(pMenu->subtitle)) slen += snprintf(&lstr[slen], 255-slen, "%s\n", pMenu->subtitle); if(strlen(pMenu->bottom)) slen += snprintf(&lstr[slen], 255-slen, "%s\n", pMenu->bottom); for(i = 0; (i < pMenu->choice_nb) && (i < MAX_MMI_ITEMS); i++) slen += snprintf(&lstr[slen], 255-slen, "%s\n", pMenu->choice_item[i]); ShowHint(LOCALE_MESSAGEBOX_INFO, convertDVBUTF8(lstr, slen, 0).c_str()); return 0; } if(sublevel) return menuret == menu_return::RETURN_EXIT_ALL ? 3 : 0; if(selected >= 0) { printf("CCAMMenuHandler::handleCamMsg: selected %d:%s sublevel %s\n", selected, pMenu->choice_item[i], sublevel ? "yes" : "no"); ca->MenuAnswer(SlotType, curslot, selected+1); timeoutEnd = CRCInput::calcTimeoutEnd(10); return 1; } else { return menuret == menu_return::RETURN_EXIT_ALL ? 3 : 2; } } else if(MsgId == CA_MESSAGE_MSG_MMI_REQ_INPUT) { if (!(Msg.Flags & CA_MESSAGE_HAS_PARAM1_DATA)) return -1; memmove(pMmiEnquiry, (MMI_ENQUIRY_INFO *)Msg.Msg.Data[0], sizeof(MMI_ENQUIRY_INFO)); free((void *)Msg.Msg.Data[0]); printf("CCAMMenuHandler::handleCamMsg: slot %d input request, text %s\n", curslot, convertDVBUTF8(pMmiEnquiry->enquiryText, strlen(pMmiEnquiry->enquiryText), 0).c_str()); std::string ENQAnswer; if (/* !from_menu && */ g_settings.ci_save_pincode && pMmiEnquiry->blind != 0 && (int) g_settings.ci_pincode.length() == pMmiEnquiry->answerlen) { static int acount = 0; static time_t last_ask = 0; ENQAnswer = g_settings.ci_pincode; printf("CCAMMenuHandler::handleCamMsg: using saved answer [%s] (#%d, time diff %d)\n", ENQAnswer.c_str(), acount, (int) (time_monotonic() - last_ask)); if ((time_monotonic() - last_ask) < 10) { acount++; if (acount > 4) g_settings.ci_pincode.clear(); } else { last_ask = time_monotonic(); acount = 0; } } else { CEnquiryInput *Inquiry = new CEnquiryInput((char *)convertDVBUTF8(pMmiEnquiry->enquiryText, strlen(pMmiEnquiry->enquiryText), 0).c_str(), &ENQAnswer, pMmiEnquiry->answerlen, pMmiEnquiry->blind != 0, NONEXISTANT_LOCALE); Inquiry->exec(NULL, ""); delete Inquiry; g_settings.ci_pincode = ENQAnswer; } printf("CCAMMenuHandler::handleCamMsg: input=[%s]\n", ENQAnswer.c_str()); if((int) ENQAnswer.length() != pMmiEnquiry->answerlen) { printf("CCAMMenuHandler::handleCamMsg: wrong input len\n"); ca->InputAnswer(SlotType, curslot, (unsigned char *)ENQAnswer.c_str(), 0); return 1; //FIXME } else { ca->InputAnswer(SlotType, curslot, (unsigned char *)ENQAnswer.c_str(), pMmiEnquiry->answerlen); return 1; } } else if(MsgId == CA_MESSAGE_MSG_MMI_CLOSE) { int timeout = 0; if (Msg.Flags & CA_MESSAGE_HAS_PARAM1_INT) timeout = Msg.Msg.Param[0]; printf("CCAMMenuHandler::handleCamMsg: close request slot: %d (timeout %d)\n", curslot, timeout); //ca->MenuClose(SlotType, curslot); if (timeout) close_timer = g_RCInput->addTimer(timeout*1000*1000, true); else msgret = messages_return::cancel_info; return 0; } else if(MsgId == CA_MESSAGE_MSG_MMI_TEXT) { printf("CCAMMenuHandler::handleCamMsg: text\n"); } else if(MsgId == CA_MESSAGE_MSG_CHANNEL_CHANGE) { if (!(Msg.Flags & CA_MESSAGE_HAS_PARAM1_LONG)) return -1; t_channel_id chid = Msg.Msg.ParamLong[0]; printf("CCAMMenuHandler::handleCamMsg: CA_MESSAGE_MSG_CHANNEL_CHANGE: %" PRIx64 "\n", chid); CZapitChannel * channel = CServiceManager::getInstance()->FindChannel48(chid); if (!channel) { printf("CCAMMenuHandler::handleCamMsg: channel %" PRIx64 "not found\n", chid); return -1; } CNeutrinoApp::getInstance()->zapTo(channel->getChannelID()); } return 1; }
void AssignHint(char* s,int time){ strcpy(HintStr,s); ShowHint(); HintTime=time; };
void main(int argc, char *argv[]){ char keypress = START; int ch=0; int moves=0; char mc[10]; set_graphics(VGA_320X200X256); PrintArrow(80, 105); do{ //Game loop PrintBorder(); PrintMenu(); keypress = (char)getch(); if(keypress == QUIT){ keypress = START; //special condition so that it will not exit on Q press at menu }else if(keypress == UP || keypress == UP2){ Erase(80, 120, 15, 15); PrintArrow(80, 105); ch = 0; }else if(keypress == DOWN || keypress == DOWN2){ Erase(80, 100, 15, 15); PrintArrow(80, 125); ch = 1; }else if(keypress == ENTER || keypress == SPACE){ switch(ch){ case 0: EraseAll(); NewGame(board); do{ //Inside-the-game loop PrintInstructions(180, 30); PrintBoard(30, 30); //* Always prints update version of board at coordinates PrintBorder(); //* Always prints border sprintf(mc, "%d", moves); Erase(55, 175, 150, 15); write_text("Moves: ", 55, 175, WHITE, 0); write_text(mc, 120, 175, WHITE, 0); ShowHint(); keypress=(char)getch(); if(keypress == UP || keypress == UP2){ //Erase(15, 15, 150, 150); MovePiece(keypress); moves++; }else if(keypress == LEFT || keypress == LEFT2){ //Erase(15, 15, 150, 150); MovePiece(keypress); moves++; }else if(keypress == RIGHT || keypress == RIGHT2){ //Erase(15, 15, 150, 150); MovePiece(keypress); moves++; }else if(keypress == DOWN || keypress == DOWN2){ //Erase(15, 15, 150, 150); MovePiece(keypress); moves++; }else if(keypress == QUIT){ Erase(55, 175, 150, 15); write_text("Really exit? Y/N", 55, 175, WHITE, 0); do{ keypress=(char)getch(); if(keypress == YES){ moves = 0; keypress = QUIT; break; }else if(keypress == NO){ keypress = YES; Erase(55, 175, 150, 15); break; } }while(1); }else{ Erase(55, 175, 150, 15); write_text("Invalid button!", 55, 175, WHITE, 0); } if(CheckWin(board)){ EraseAll(); write_text("You win!", 125, 85, WHITE, 0); moves = 0; keypress = QUIT; } }while(keypress != QUIT); EraseAll(); PrintArrow(80, 105); keypress = START; break; case 1: keypress = QUIT; break; default: break; } } }while(keypress != QUIT); set_graphics(VGA_TEXT80X25X16); clrscr(); }
int CFlashUpdate::exec(CMenuTarget* parent, string) { if(parent) { parent->hide(); } paint(); if(!checkVersion4Update()) { hide(); return menu_return::RETURN_REPAINT; } showGlobalStatus(19); paint(); showGlobalStatus(20); if(g_settings.softupdate_mode==1) //internet-update { if(!getUpdateImage(newVersion)) { hide(); ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.getupdatefileerror") ); return menu_return::RETURN_REPAINT; } } showGlobalStatus(40); CFlashTool ft; ft.setMTDDevice("/dev/mtd/2"); ft.setStatusViewer(this); string sFileName = gTmpPath+ ImageFile; //image-check showStatusMessage(g_Locale->getText("flashupdate.md5check") ); if(!ft.check_cramfs(sFileName)) { hide(); ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.md5sumerror") ); return menu_return::RETURN_REPAINT; } showGlobalStatus(60); //flash it... if(!ft.program(sFileName, 80, 100)) { hide(); ShowHint ( "messagebox.error", ft.getErrorMessage() ); return menu_return::RETURN_REPAINT; } //status anzeigen showGlobalStatus(100); showStatusMessage( g_Locale->getText("flashupdate.ready") ); CNeutrinoApp::getInstance()->exec(NULL, "savesettings"); sleep(2); hide(); ShowHint ( "messagebox.info", g_Locale->getText("flashupdate.flashreadyreboot") ); ft.reboot(); sleep(20000); hide(); return menu_return::RETURN_REPAINT; }
bool CFlashUpdate::checkVersion4Update() { if(g_settings.softupdate_mode==1) //internet-update { if(!getInfo()) { hide(); ShowHint("messagebox.error", g_Locale->getText("flashupdate.getinfofileerror") ); return false; } showLocalStatus(100); showGlobalStatus(20); showStatusMessage(g_Locale->getText("flashupdate.versioncheck").c_str()); string sFileName = gTmpPath+VersionFile; CConfigFile configfile('\t'); if(!configfile.loadConfig(sFileName)) { ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.getinfofileerror") ); return false; } else { newVersion = configfile.getString( "version", "" ); if(newVersion=="") { ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.getinfofileerror") ); return false; } } printf("internet version: %s\n", newVersion.c_str()); if(newVersion==installedVersion) { ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.nonewversion") ); return false; } } else { //manuelles update -- filecheck + abfrage FILE* fd = fopen((string(gTmpPath+ ImageFile)).c_str(), "r"); if(fd) { fclose(fd); } else { hide(); printf("flash-file not found: %s\n", (string(gTmpPath+ ImageFile)).c_str() ); ShowHint ( "messagebox.error", g_Locale->getText("flashupdate.cantopenfile") ); return false; } hide(); //bestimmung der CramfsDaten char cramfsName[30]; cramfs_name( (char*) (string(gTmpPath+ImageFile)).c_str(), (char*) &cramfsName); CFlashVersionInfo versionInfo(cramfsName); char msg[400]; sprintf( (char*) &msg, g_Locale->getText("flashupdate.msgbox_manual").c_str(), versionInfo.getDate().c_str(), versionInfo.getTime().c_str(), versionInfo.getBaseImageVersion().c_str(), versionInfo.getType().c_str() ); if ( ShowMsg ( "messagebox.info", msg, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, "softupdate.raw" ) != CMessageBox::mbrYes ) { return false; } return true; } showLocalStatus(100); showGlobalStatus(20); hide(); //bestimmung der CramfsDaten CFlashVersionInfo versionInfo(newVersion); char msg[250]; sprintf( (char*) &msg, g_Locale->getText("flashupdate.msgbox").c_str(), versionInfo.getDate().c_str(), versionInfo.getTime().c_str(), versionInfo.getBaseImageVersion().c_str(), versionInfo.getType().c_str() ); if ( ShowMsg ( "messagebox.info", msg, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, "softupdate.raw" ) != CMessageBox::mbrYes ) { return false; } return true; }
SHORT MoxTelnetdCheckConnect() { SHORT nRet = -1; typSOC_ID IncomeSocket = INVALID_SOCKET; typSOC_ADD PeerAddr; SHORT iLoop; DWORD dwTick = 0xFFFFFFFF; SHORT nToFree = 0; if (dsysSocAccept(&MoxTelnetdSocket, &IncomeSocket, &PeerAddr) == 1) { if (nTelnetdConnect >= (MAX_TELNETD_CONN_NUM - 1)) { // if cable lost server can not detect error. //printf("connect full %d\n", nMdnConnect); for (iLoop = 0; iLoop < MAX_TELNETD_CONN_NUM; iLoop++) { if (MoxTelnetdConn[iLoop] != NULL) { if (MoxTelnetdConn[iLoop]->dwLastTick < dwTick) { dwTick = MoxTelnetdConn[iLoop]->dwLastTick; nToFree = iLoop; } } } if (nToFree < MAX_TELNETD_CONN_NUM) { printf("connect full, destroy %d\n", nToFree); TelnetdDestroyClient(nToFree); } } for (iLoop = 0; iLoop < MAX_TELNETD_CONN_NUM; iLoop++) { if (MoxTelnetdConn[iLoop] == NULL) { MoxTelnetdConn[iLoop]= (MOXTELNETDCONN*)malloc(sizeof(MOXTELNETDCONN)); if(MoxTelnetdConn[iLoop] == NULL) { printf("MoxModnetConn mem allocate faile\n"); nRet = -1; break; } MoxTelnetdConn[iLoop]->Socket = IncomeSocket; MoxTelnetdConn[iLoop]->bInUse = TRUE; MoxTelnetdConn[iLoop]->nRecvLen = 0; MoxTelnetdConn[iLoop]->dwLastTick = dsysGetTick(); IncomeSocket = INVALID_SOCKET; MoxTelnetdConn[iLoop]->nStat = 0; nTelnetdConnect++; nRet = 0; ShowHint(iLoop); break; } } } if (ISA_SOC_ISINVALID(&IncomeSocket) == FALSE) { // close connection if client could not create. dsysSocClose(&IncomeSocket, TRUE); } return nRet; }