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 CListBox::exec(CMenuTarget* parent, string actionKey) { int res = menu_return::RETURN_REPAINT; selected=0; if (parent) { parent->hide(); } paintHead(); paint(); paintFoot(); bool loop=true; toSave = false; while (loop) { uint msg; uint data; g_RCInput->getMsg( &msg, &data, g_settings.timing_epg ); if (( msg == (uint) g_settings.key_channelList_cancel) || ( msg ==CRCInput::RC_home)) { loop = false; } else if ( msg ==CRCInput::RC_up) { if(getItemCount()!=0) { int prevselected=selected; if(selected==0) { selected = getItemCount()-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 ==CRCInput::RC_down) { if(getItemCount()!=0) { int prevselected=selected; selected = (selected+1)%getItemCount(); paintItem(prevselected - liststart); unsigned int oldliststart = liststart; liststart = (selected/listmaxshow)*listmaxshow; if(oldliststart!=liststart) { paint(); } else { paintItem(selected - liststart); } } } else if ( msg == (uint) g_settings.key_channelList_pageup) { selected+=listmaxshow; if (selected>getItemCount()-1) selected=0; liststart = (selected/listmaxshow)*listmaxshow; paint(); } else if ( msg == (uint) g_settings.key_channelList_pagedown) { if ((int(selected)-int(listmaxshow))<0) selected=getItemCount()-1; else selected -= listmaxshow; liststart = (selected/listmaxshow)*listmaxshow; paint(); } else if( msg ==CRCInput::RC_ok) { onOkKeyPressed(); } else if ( msg ==CRCInput::RC_red) { onRedKeyPressed(); } else if ( msg ==CRCInput::RC_green) { onGreenKeyPressed(); } else if ( msg ==CRCInput::RC_yellow) { onYellowKeyPressed(); } else if ( msg ==CRCInput::RC_blue) { onBlueKeyPressed(); } else { CNeutrinoApp::getInstance()->handleMsg( msg, data ); // kein canceling... } } //want2save? if((toSave) && (saveBoxCaption!="") && (saveBoxText!="")) { if( ShowMsg ( saveBoxCaption, saveBoxText, CMessageBox::mbrNo, CMessageBox::mbYes | CMessageBox::mbNo ) == CMessageBox::mbrYes ) { onSaveData(); } } hide(); return res; }