X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=platform%2Fuiq3%2FDialogs.cpp;fp=platform%2Fuiq3%2FDialogs.cpp;h=0000000000000000000000000000000000000000;hb=fb7a7fea8735400818773dd47f1e6913bd1ceecf;hp=923a457f206e69a6dc2e18b2a1ca1b6c0904415f;hpb=1b85bf1c2307c548a637f988eb69f615864f1685;p=picodrive.git diff --git a/platform/uiq3/Dialogs.cpp b/platform/uiq3/Dialogs.cpp deleted file mode 100644 index 923a457..0000000 --- a/platform/uiq3/Dialogs.cpp +++ /dev/null @@ -1,361 +0,0 @@ -/******************************************************************* - * - * File: Dialogs.cpp - * - * Author: Peter van Sebille (peter@yipton.net) - * - * Modified/adapted for picodriveN by notaz, 2006 - * - * (c) Copyright 2006, notaz - * (c) Copyright 2002, Peter van Sebille - * All Rights Reserved - * - *******************************************************************/ - -#include "Dialogs.h" -#include "Engine.h" -#include "picodrive.hrh" -#include "rsc/picodrive.rsg" - -#include "version.h" -#include "CSimpleTextParser.h" -#include // CRichText -#include // CEikRichTextEditor -#include // CEikHorOptionButtonList -#include // CEikOptionButton -#include // CEikEdwin -#include // EQuartzKeyTwoWayDown - -#include -#include "../common/emu.h" - - -/************************************************ - * - * config Dialog - * - ************************************************/ - -CPicoConfigDialog::CPicoConfigDialog(_currentConfig_t &cfg) : config(cfg) -{ -} - -void CPicoConfigDialog::PostLayoutDynInitL() -{ - CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation ); - CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode ); - CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend ); -// CEikCheckBox *chkbox_acctmng= (CEikCheckBox*) Control( ECtlOptUseAccTiming ); - CEikCheckBox *chkbox_sram = (CEikCheckBox*) Control( ECtlOptUseSRAM ); - CEikCheckBox *chkbox_fps = (CEikCheckBox*) Control( ECtlOptShowFPS ); - CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound ); - CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 ); - CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 ); - CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 ); - CEikChoiceListBase *combo_sndq = (CEikChoiceListBase*) Control( ECtlOptSndQuality ); - CEikCheckBox *chkbox_6bpad = (CEikCheckBox*) Control( ECtlOpt6ButtonPad ); - CEikCheckBox *chkbox_gzipst = (CEikCheckBox*) Control( ECtlOptGzipStates ); -// CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites ); - CEikChoiceListBase *combo_region = (CEikChoiceListBase*) Control( ECtlOptRegion ); - CEikOptionButton *opt_fit2 = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit2 ); - CEikCheckBox *chkbox_cdda = (CEikCheckBox*) Control( ECtlOptCDcdda ); - CEikCheckBox *chkbox_pcm = (CEikCheckBox*) Control( ECtlOptCDpcm ); - CEikCheckBox *chkbox_ramcart= (CEikCheckBox*) Control( ECtlOptCDramcart ); - CEikCheckBox *chkbox_sclrot = (CEikCheckBox*) Control( ECtlOptCDscalerot ); - CEikCheckBox *chkbox_bsync = (CEikCheckBox*) Control( ECtlOptCDbettersync ); - - buttons_rot ->SetButtonById(ECtlOptRotation0 + config.rotation); - buttons_disp->SetButtonById(ECtlOptScreenModeCenter + config.scaling); - chkbox_sram ->SetState(config.EmuOpt & 1 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_fps ->SetState(config.EmuOpt & 2 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_sound ->SetState(config.EmuOpt & 4 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_gzipst ->SetState(config.EmuOpt & 8 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_z80 ->SetState(config.s_PicoOpt& 4 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_ym2612 ->SetState(config.s_PicoOpt& 1 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_sn76496->SetState(config.s_PicoOpt& 2 ? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_altrend->SetState(config.s_PicoOpt& 0x10? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_6bpad ->SetState(config.s_PicoOpt& 0x20? CEikButtonBase::ESet : CEikButtonBase::EClear); -// chkbox_acctmng->SetState(config.s_PicoOpt& 0x40? CEikButtonBase::ESet : CEikButtonBase::EClear); -// chkbox_accsprt->SetState(config.s_PicoOpt& 0x80? CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_cdda ->SetState(config.s_PicoOpt&0x0800?CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_pcm ->SetState(config.s_PicoOpt&0x0400?CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_ramcart->SetState(config.s_PicoOpt&0x8000?CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_sclrot ->SetState(config.s_PicoOpt&0x1000?CEikButtonBase::ESet : CEikButtonBase::EClear); - chkbox_bsync ->SetState(config.s_PicoOpt&0x2000?CEikButtonBase::ESet : CEikButtonBase::EClear); - - // dim "fit2" if we are not in 0 or 180 mode - if (config.rotation != TPicoConfig::PRot0 && config.rotation != TPicoConfig::PRot180) - opt_fit2->SetDimmed(ETrue); - // dim some stuff for alternative renderer - if (config.s_PicoOpt & 0x10) { - // dim accurate sprites - //chkbox_accsprt->SetState(CEikButtonBase::EClear); - //chkbox_accsprt->SetDimmed(ETrue); - // dim fit - if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) - ((CEikOptionButton*)(buttons_disp->ComponentControl(TPicoConfig::PMFit)))->SetDimmed(ETrue); - } - - TInt sel = 0; - switch (config.s_PsndRate) { - case 11025: sel = 1; break; - case 16000: sel = 2; break; - case 22050: sel = 3; break; - case 44100: sel = 4; break; - } - sel += (config.s_PicoOpt&8) ? 5 : 0; - if (sel >= 10) sel = 0; - combo_sndq->SetCurrentItem(sel); - - switch(config.s_PicoRegion) { - case 1: sel = 4; break; - case 2: sel = 3; break; - case 4: sel = 2; break; - case 8: sel = 1; break; - default:sel = 0; // auto - } - combo_region->SetCurrentItem(sel); -} - -TBool CPicoConfigDialog::OkToExitL(TInt aButtonId) -{ - if(aButtonId != EEikBidOk) return ETrue; - - CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation ); - CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode ); - CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend ); -// CEikCheckBox *chkbox_acctmng= (CEikCheckBox*) Control( ECtlOptUseAccTiming ); - CEikCheckBox *chkbox_sram = (CEikCheckBox*) Control( ECtlOptUseSRAM ); - CEikCheckBox *chkbox_fps = (CEikCheckBox*) Control( ECtlOptShowFPS ); - CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound ); - CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 ); - CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 ); - CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 ); - CEikChoiceListBase *combo_sndq = (CEikChoiceListBase*) Control( ECtlOptSndQuality ); - CEikCheckBox *chkbox_6bpad = (CEikCheckBox*) Control( ECtlOpt6ButtonPad ); - CEikCheckBox *chkbox_gzipst = (CEikCheckBox*) Control( ECtlOptGzipStates ); -// CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites ); - CEikChoiceListBase *combo_region = (CEikChoiceListBase*) Control( ECtlOptRegion ); - CEikCheckBox *chkbox_cdda = (CEikCheckBox*) Control( ECtlOptCDcdda ); - CEikCheckBox *chkbox_pcm = (CEikCheckBox*) Control( ECtlOptCDpcm ); - CEikCheckBox *chkbox_ramcart= (CEikCheckBox*) Control( ECtlOptCDramcart ); - CEikCheckBox *chkbox_sclrot = (CEikCheckBox*) Control( ECtlOptCDscalerot ); - CEikCheckBox *chkbox_bsync = (CEikCheckBox*) Control( ECtlOptCDbettersync ); - - config.rotation = (TPicoConfig::TPicoScreenRotation) (buttons_rot->LabeledButtonId() - ECtlOptRotation0); - config.scaling = (TPicoConfig::TPicoScreenMode) (buttons_disp->LabeledButtonId() - ECtlOptScreenModeCenter); - - if(chkbox_sram ->State() == CEikButtonBase::ESet) config.EmuOpt |= 1; else config.EmuOpt &= ~1; - if(chkbox_fps ->State() == CEikButtonBase::ESet) config.EmuOpt |= 2; else config.EmuOpt &= ~2; - if(chkbox_sound ->State() == CEikButtonBase::ESet) config.EmuOpt |= 4; else config.EmuOpt &= ~4; - if(chkbox_gzipst ->State() == CEikButtonBase::ESet) config.EmuOpt |= 8; else config.EmuOpt &= ~8; - if(chkbox_z80 ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 4; else config.s_PicoOpt&= ~4; - if(chkbox_ym2612 ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 1; else config.s_PicoOpt&= ~1; - if(chkbox_sn76496->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 2; else config.s_PicoOpt&= ~2; - if(chkbox_altrend->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x10;else config.s_PicoOpt&= ~0x10; - if(chkbox_6bpad ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x20;else config.s_PicoOpt&= ~0x20; -// if(chkbox_acctmng->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x40;else config.s_PicoOpt&= ~0x40; -// if(chkbox_accsprt->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x80;else config.s_PicoOpt&= ~0x80; - if(chkbox_cdda ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0800; else config.s_PicoOpt&= ~0x0800; - if(chkbox_pcm ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0400; else config.s_PicoOpt&= ~0x0400; - if(chkbox_ramcart->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x8000; else config.s_PicoOpt&= ~0x8000; - if(chkbox_sclrot ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x1000; else config.s_PicoOpt&= ~0x1000; - if(chkbox_bsync ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x2000; else config.s_PicoOpt&= ~0x2000; - - TInt sel = combo_sndq->CurrentItem(); - if(sel >= 5) { config.s_PicoOpt |= 8; sel-=5; } else config.s_PicoOpt &= ~8; - switch (sel) { - default:config.s_PsndRate = 8000; break; - case 1: config.s_PsndRate = 11025; break; - case 2: config.s_PsndRate = 16000; break; - case 3: config.s_PsndRate = 22050; break; - case 4: config.s_PsndRate = 44100; break; - } - - switch (combo_region->CurrentItem()) { - case 4: config.s_PicoRegion = 1; break; - case 3: config.s_PicoRegion = 2; break; - case 2: config.s_PicoRegion = 4; break; - case 1: config.s_PicoRegion = 8; break; - default:config.s_PicoRegion = 0; // auto - } - - return ETrue; -} - -// simple GUI stuff needs lots of code -void CPicoConfigDialog::HandleControlStateChangeL(TInt aControlId) -{ - if (aControlId == ECtlOptEnableSound) - { - CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound ); - CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 ); - CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 ); - CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 ); - - if(chkbox_sound->State() == CEikButtonBase::ESet) { - // check all sound chips too, but only if they all are not set - if((chkbox_z80->State() | chkbox_ym2612->State() | chkbox_sn76496->State()) == CEikButtonBase::EClear) { // (==0) - chkbox_z80 ->SetState(CEikButtonBase::ESet); - chkbox_ym2612 ->SetState(CEikButtonBase::ESet); - chkbox_sn76496->SetState(CEikButtonBase::ESet); - chkbox_z80 ->DrawDeferred(); - chkbox_ym2612 ->DrawDeferred(); - chkbox_sn76496->DrawDeferred(); - } - } else { - // clear everything, but only if everything is set - if((chkbox_z80->State() & chkbox_ym2612->State() & chkbox_sn76496->State()) == CEikButtonBase::ESet) { // (==1) - chkbox_z80 ->SetState(CEikButtonBase::EClear); - chkbox_ym2612 ->SetState(CEikButtonBase::EClear); - chkbox_sn76496->SetState(CEikButtonBase::EClear); - chkbox_z80 ->DrawDeferred(); - chkbox_ym2612 ->DrawDeferred(); - chkbox_sn76496->DrawDeferred(); - } - } - } - else if(aControlId == ECtlOptUseAltRend || aControlId == ECtlOptRotation) - { - CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend ); -// CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites ); - CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation ); - CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode ); - CEikOptionButton *opt_fit = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit ); - CEikOptionButton *opt_fit2 = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit2 ); - - TBool dimmed = chkbox_altrend->State() == CEikButtonBase::ESet; - // show/hide more stuff for alternative renderer -// chkbox_accsprt->SetDimmed(dimmed); - if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) { - opt_fit->SetDimmed(dimmed); - if(dimmed && buttons_disp->LabeledButtonId() == ECtlOptScreenModeFit) - buttons_disp->SetButtonById(ECtlOptScreenModeFit2); - } - else opt_fit->SetDimmed(EFalse); -// chkbox_accsprt->DrawDeferred(); - buttons_disp->DrawDeferred(); - - if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) { - opt_fit2->SetDimmed(EFalse); - } else { - if(opt_fit2->State() == CEikButtonBase::ESet) { - buttons_disp->SetButtonById(ECtlOptScreenModeFit); - buttons_disp->DrawDeferred(); - } - opt_fit2->SetDimmed(ETrue); - } - opt_fit2->DrawDeferred(); - } -} - - -/************************************************ - * - * About Dialog - * - ************************************************/ - -void CAboutDialog::PostLayoutDynInitL() -{ - TBuf<16> versionText; - TBuf<512> text; - - #if (KPicoBuildNumber != 0) - versionText.Format(_L("%d.%d%d"), KPicoMajorVersionNumber, KPicoMinorVersionNumber, KPicoBuildNumber); - #else - versionText.Format(_L("%d.%d"), KPicoMajorVersionNumber, KPicoMinorVersionNumber); - #endif - - CEikRichTextEditor* richTextEd = LocateControlByUniqueHandle(ECtlPicoAboutText); - User::LeaveIfNull(richTextEd); - - HBufC *aboutFormat = CEikonEnv::Static()->AllocReadResourceLC(R_PICO_TEXT_ABOUT); - CSimpleTextFormatParser *parser = CSimpleTextFormatParser::NewLC(); - - text.Format(*aboutFormat, &versionText); - parser->ParseL(text, *richTextEd->RichText()); - - richTextEd->UpdateAllFieldsL(); // Updates all the fields in the document - - CleanupStack::PopAndDestroy(parser); - CleanupStack::PopAndDestroy(aboutFormat); -} - -/************************************************************* -* -* Credits dialog -* -**************************************************************/ - -void CCreditsDialog::PreLayoutDynInitL() -{ - CEikEdwin *edwin = LocateControlByUniqueHandle(ECtlPicoCreditsText); - User::LeaveIfNull(edwin); - - CDesCArrayFlat* desArray = CEikonEnv::Static()->ReadDesCArrayResourceL(R_PICO_TBUF_CREDITS); - CleanupStack::PushL(desArray); - - edwin->SetTextLimit(2048); // to prevent stupid "too big" warning - TInt count = desArray->Count(); - for (TInt i = 0; i < count; i++) - { - edwin->Text()->InsertL(edwin->TextLength(), desArray->operator[](i)); - edwin->Text()->InsertL(edwin->TextLength(), CEditableText::ELineBreak); - } - CleanupStack::PopAndDestroy(desArray); -} - -TKeyResponse CCreditsDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) -{ - if (aType == EEventKey) - { - CEikEdwin *edwin = LocateControlByUniqueHandle(ECtlPicoCreditsText); - User::LeaveIfNull(edwin); - - if (aKeyEvent.iCode == EQuartzKeyTwoWayDown) - { - edwin->MoveDisplayL(TCursorPosition::EFLineDown); - edwin->UpdateScrollBarsL(); - return EKeyWasConsumed; - } - else if (aKeyEvent.iCode == EQuartzKeyTwoWayUp) - { - edwin->MoveDisplayL(TCursorPosition::EFLineUp); - edwin->UpdateScrollBarsL(); - return EKeyWasConsumed; - } - } - return CQikSimpleDialog::OfferKeyEventL(aKeyEvent, aType); -} - -/************************************************************* -* -* Debug dialog -* -**************************************************************/ - -CDebugDialog::CDebugDialog(char *t) -{ - Mem::Copy(iText, t, 1024); - iText[1023] = 0; -} - -void CDebugDialog::PreLayoutDynInitL() -{ - char *p = iText, *line = iText; - TBool end=0; - TBuf<128> tbuf; - CEikEdwin *editor = LocateControlByUniqueHandle(ECtlPicoCreditsText); - - while(!end) { - while(*p && *p != '\r' && *p != '\n') p++; - if(!*p) end=1; - *p = 0; - TPtrC8 ptr((TUint8*) line); - tbuf.Copy(ptr); - editor->Text()->InsertL(editor->TextLength(), tbuf); - editor->Text()->InsertL(editor->TextLength(), CEditableText::ELineBreak); - line = ++p; - } -}