UIQ3 update, some makefile unification, rm old configs, stuff
[picodrive.git] / platform / uiq3 / Dialogs.cpp
index 60b8685..4440bdf 100644 (file)
 #include <qikvertoptionbuttonlist.h> // CEikHorOptionButtonList\r
 #include <eikopbut.h>   // CEikOptionButton\r
 #include <eikedwin.h>   // CEikEdwin\r
-#include <QuartzKeys.h> // EQuartzKeyTwoWayDown\r
+#include <quartzkeys.h> // EQuartzKeyTwoWayDown\r
 \r
-#include <QikCommand.h>\r
+#include <qikcommand.h>\r
+#include "../common/emu.h"\r
 \r
 \r
 /************************************************\r
@@ -35,7 +36,7 @@
  *\r
  ************************************************/\r
 \r
-CPicoConfigDialog::CPicoConfigDialog(TPicoConfig &cfg) : config(cfg)\r
+CPicoConfigDialog::CPicoConfigDialog(_currentConfig_t &cfg) : config(cfg)\r
 {\r
 }\r
 \r
@@ -44,7 +45,7 @@ void CPicoConfigDialog::PostLayoutDynInitL()
        CEikHorOptionButtonList *buttons_rot   = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r
        CEikHorOptionButtonList *buttons_disp  = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r
        CEikCheckBox            *chkbox_altrend= (CEikCheckBox*)            Control( ECtlOptUseAltRend );\r
-       CEikCheckBox            *chkbox_acctmng= (CEikCheckBox*)            Control( ECtlOptUseAccTiming );\r
+//     CEikCheckBox            *chkbox_acctmng= (CEikCheckBox*)            Control( ECtlOptUseAccTiming );\r
        CEikCheckBox            *chkbox_sram   = (CEikCheckBox*)            Control( ECtlOptUseSRAM );\r
        CEikCheckBox            *chkbox_fps    = (CEikCheckBox*)            Control( ECtlOptShowFPS );\r
        CEikCheckBox            *chkbox_sound  = (CEikCheckBox*)            Control( ECtlOptEnableSound );\r
@@ -54,41 +55,59 @@ void CPicoConfigDialog::PostLayoutDynInitL()
        CEikChoiceListBase      *combo_sndq    = (CEikChoiceListBase*)      Control( ECtlOptSndQuality );\r
        CEikCheckBox            *chkbox_6bpad  = (CEikCheckBox*)            Control( ECtlOpt6ButtonPad );\r
        CEikCheckBox            *chkbox_gzipst = (CEikCheckBox*)            Control( ECtlOptGzipStates );\r
-       CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
+//     CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
        CEikChoiceListBase      *combo_region  = (CEikChoiceListBase*)      Control( ECtlOptRegion );\r
        CEikOptionButton        *opt_fit2      = (CEikOptionButton*)        buttons_disp->ComponentControl( TPicoConfig::PMFit2 );\r
-\r
-       buttons_rot ->SetButtonById(ECtlOptRotation0 + config.iScreenRotation);\r
-       buttons_disp->SetButtonById(ECtlOptScreenModeCenter + config.iScreenMode);\r
-       chkbox_sram   ->SetState(config.iFlags & 1     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_fps    ->SetState(config.iFlags & 2     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_sound  ->SetState(config.iFlags & 4     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_gzipst ->SetState(config.iFlags & 0x80  ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_z80    ->SetState(config.iPicoOpt & 4   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_ym2612 ->SetState(config.iPicoOpt & 1   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_sn76496->SetState(config.iPicoOpt & 2   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_altrend->SetState(config.iPicoOpt & 0x10? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_6bpad  ->SetState(config.iPicoOpt & 0x20? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_acctmng->SetState(config.iPicoOpt & 0x40? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
-       chkbox_accsprt->SetState(config.iPicoOpt & 0x80? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       CEikCheckBox            *chkbox_cdda   = (CEikCheckBox*)            Control( ECtlOptCDcdda );\r
+       CEikCheckBox            *chkbox_pcm    = (CEikCheckBox*)            Control( ECtlOptCDpcm );\r
+       CEikCheckBox            *chkbox_ramcart= (CEikCheckBox*)            Control( ECtlOptCDramcart );\r
+       CEikCheckBox            *chkbox_sclrot = (CEikCheckBox*)            Control( ECtlOptCDscalerot );\r
+       CEikCheckBox            *chkbox_bsync  = (CEikCheckBox*)            Control( ECtlOptCDbettersync );\r
+\r
+       buttons_rot ->SetButtonById(ECtlOptRotation0 + config.rotation);\r
+       buttons_disp->SetButtonById(ECtlOptScreenModeCenter + config.scaling);\r
+       chkbox_sram   ->SetState(config.EmuOpt & 1     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_fps    ->SetState(config.EmuOpt & 2     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_sound  ->SetState(config.EmuOpt & 4     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_gzipst ->SetState(config.EmuOpt & 8     ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_z80    ->SetState(config.s_PicoOpt& 4   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_ym2612 ->SetState(config.s_PicoOpt& 1   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_sn76496->SetState(config.s_PicoOpt& 2   ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_altrend->SetState(config.s_PicoOpt& 0x10? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_6bpad  ->SetState(config.s_PicoOpt& 0x20? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+//     chkbox_acctmng->SetState(config.s_PicoOpt& 0x40? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+//     chkbox_accsprt->SetState(config.s_PicoOpt& 0x80? CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_cdda   ->SetState(config.s_PicoOpt&0x0800?CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_pcm    ->SetState(config.s_PicoOpt&0x0400?CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_ramcart->SetState(config.s_PicoOpt&0x8000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_sclrot ->SetState(config.s_PicoOpt&0x1000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r
+       chkbox_bsync  ->SetState(config.s_PicoOpt&0x2000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r
 \r
        // dim "fit2" if we are not in 0 or 180 mode\r
-       if(config.iScreenRotation != TPicoConfig::PRot0 && config.iScreenRotation != TPicoConfig::PRot180) opt_fit2->SetDimmed(ETrue);\r
+       if (config.rotation != TPicoConfig::PRot0 && config.rotation != TPicoConfig::PRot180)\r
+               opt_fit2->SetDimmed(ETrue);\r
        // dim some stuff for alternative renderer\r
-       if(config.iPicoOpt & 0x10) {\r
+       if (config.s_PicoOpt & 0x10) {\r
                // dim accurate sprites\r
-               chkbox_accsprt->SetState(CEikButtonBase::EClear);\r
-               chkbox_accsprt->SetDimmed(ETrue);\r
+               //chkbox_accsprt->SetState(CEikButtonBase::EClear);\r
+               //chkbox_accsprt->SetDimmed(ETrue);\r
                // dim fit\r
                if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180)\r
                        ((CEikOptionButton*)(buttons_disp->ComponentControl(TPicoConfig::PMFit)))->SetDimmed(ETrue);\r
        }\r
 \r
-       TInt sel = (config.iPicoOpt&8) ? 5 : 0;\r
-       sel+= (config.iFlags>>3)&7;\r
+       TInt sel = 0;\r
+       switch (config.s_PsndRate) {\r
+               case 11025: sel = 1; break;\r
+               case 16000: sel = 2; break;\r
+               case 22050: sel = 3; break;\r
+               case 44100: sel = 4; break;\r
+       }\r
+       sel += (config.s_PicoOpt&8) ? 5 : 0;\r
        if (sel >= 10) sel = 0;\r
        combo_sndq->SetCurrentItem(sel);\r
-       switch(config.PicoRegion) {\r
+\r
+       switch(config.s_PicoRegion) {\r
                case 1: sel = 4; break;\r
                case 2: sel = 3; break;\r
                case 4: sel = 2; break;\r
@@ -105,7 +124,7 @@ TBool CPicoConfigDialog::OkToExitL(TInt aButtonId)
        CEikHorOptionButtonList *buttons_rot   = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r
        CEikHorOptionButtonList *buttons_disp  = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r
        CEikCheckBox            *chkbox_altrend= (CEikCheckBox*)            Control( ECtlOptUseAltRend );\r
-       CEikCheckBox            *chkbox_acctmng= (CEikCheckBox*)            Control( ECtlOptUseAccTiming );\r
+//     CEikCheckBox            *chkbox_acctmng= (CEikCheckBox*)            Control( ECtlOptUseAccTiming );\r
        CEikCheckBox            *chkbox_sram   = (CEikCheckBox*)            Control( ECtlOptUseSRAM );\r
        CEikCheckBox            *chkbox_fps    = (CEikCheckBox*)            Control( ECtlOptShowFPS );\r
        CEikCheckBox            *chkbox_sound  = (CEikCheckBox*)            Control( ECtlOptEnableSound );\r
@@ -115,35 +134,50 @@ TBool CPicoConfigDialog::OkToExitL(TInt aButtonId)
        CEikChoiceListBase      *combo_sndq    = (CEikChoiceListBase*)      Control( ECtlOptSndQuality );\r
        CEikCheckBox            *chkbox_6bpad  = (CEikCheckBox*)            Control( ECtlOpt6ButtonPad );\r
        CEikCheckBox            *chkbox_gzipst = (CEikCheckBox*)            Control( ECtlOptGzipStates );\r
-       CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
+//     CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
        CEikChoiceListBase      *combo_region  = (CEikChoiceListBase*)      Control( ECtlOptRegion );\r
-\r
-       config.iScreenRotation = (TPicoConfig::TPicoScreenRotation) (buttons_rot->LabeledButtonId() - ECtlOptRotation0);\r
-       config.iScreenMode = (TPicoConfig::TPicoScreenMode) (buttons_disp->LabeledButtonId() - ECtlOptScreenModeCenter);\r
-\r
-       if(chkbox_sram   ->State() == CEikButtonBase::ESet) config.iFlags |= 1;     else config.iFlags   &= ~1;\r
-       if(chkbox_fps    ->State() == CEikButtonBase::ESet) config.iFlags |= 2;     else config.iFlags   &= ~2;\r
-       if(chkbox_sound  ->State() == CEikButtonBase::ESet) config.iFlags |= 4;     else config.iFlags   &= ~4;\r
-       if(chkbox_gzipst ->State() == CEikButtonBase::ESet) config.iFlags |= 0x80;  else config.iFlags   &= ~0x80;\r
-       if(chkbox_z80    ->State() == CEikButtonBase::ESet) config.iPicoOpt |= 4;   else config.iPicoOpt &= ~4;\r
-       if(chkbox_ym2612 ->State() == CEikButtonBase::ESet) config.iPicoOpt |= 1;   else config.iPicoOpt &= ~1;\r
-       if(chkbox_sn76496->State() == CEikButtonBase::ESet) config.iPicoOpt |= 2;   else config.iPicoOpt &= ~2;\r
-       if(chkbox_altrend->State() == CEikButtonBase::ESet) config.iPicoOpt |= 0x10;else config.iPicoOpt &= ~0x10;\r
-       if(chkbox_6bpad  ->State() == CEikButtonBase::ESet) config.iPicoOpt |= 0x20;else config.iPicoOpt &= ~0x20;\r
-       if(chkbox_acctmng->State() == CEikButtonBase::ESet) config.iPicoOpt |= 0x40;else config.iPicoOpt &= ~0x40;\r
-       if(chkbox_accsprt->State() == CEikButtonBase::ESet) config.iPicoOpt |= 0x80;else config.iPicoOpt &= ~0x80;\r
+       CEikCheckBox            *chkbox_cdda   = (CEikCheckBox*)            Control( ECtlOptCDcdda );\r
+       CEikCheckBox            *chkbox_pcm    = (CEikCheckBox*)            Control( ECtlOptCDpcm );\r
+       CEikCheckBox            *chkbox_ramcart= (CEikCheckBox*)            Control( ECtlOptCDramcart );\r
+       CEikCheckBox            *chkbox_sclrot = (CEikCheckBox*)            Control( ECtlOptCDscalerot );\r
+       CEikCheckBox            *chkbox_bsync  = (CEikCheckBox*)            Control( ECtlOptCDbettersync );\r
+\r
+       config.rotation = (TPicoConfig::TPicoScreenRotation) (buttons_rot->LabeledButtonId() - ECtlOptRotation0);\r
+       config.scaling  = (TPicoConfig::TPicoScreenMode) (buttons_disp->LabeledButtonId() - ECtlOptScreenModeCenter);\r
+\r
+       if(chkbox_sram   ->State() == CEikButtonBase::ESet) config.EmuOpt |= 1;     else config.EmuOpt   &= ~1;\r
+       if(chkbox_fps    ->State() == CEikButtonBase::ESet) config.EmuOpt |= 2;     else config.EmuOpt   &= ~2;\r
+       if(chkbox_sound  ->State() == CEikButtonBase::ESet) config.EmuOpt |= 4;     else config.EmuOpt   &= ~4;\r
+       if(chkbox_gzipst ->State() == CEikButtonBase::ESet) config.EmuOpt |= 8;     else config.EmuOpt   &= ~8;\r
+       if(chkbox_z80    ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 4;   else config.s_PicoOpt&= ~4;\r
+       if(chkbox_ym2612 ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 1;   else config.s_PicoOpt&= ~1;\r
+       if(chkbox_sn76496->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 2;   else config.s_PicoOpt&= ~2;\r
+       if(chkbox_altrend->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x10;else config.s_PicoOpt&= ~0x10;\r
+       if(chkbox_6bpad  ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x20;else config.s_PicoOpt&= ~0x20;\r
+//     if(chkbox_acctmng->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x40;else config.s_PicoOpt&= ~0x40;\r
+//     if(chkbox_accsprt->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x80;else config.s_PicoOpt&= ~0x80;\r
+       if(chkbox_cdda   ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0800; else config.s_PicoOpt&= ~0x0800;\r
+       if(chkbox_pcm    ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0400; else config.s_PicoOpt&= ~0x0400;\r
+       if(chkbox_ramcart->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x8000; else config.s_PicoOpt&= ~0x8000;\r
+       if(chkbox_sclrot ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x1000; else config.s_PicoOpt&= ~0x1000;\r
+       if(chkbox_bsync  ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x2000; else config.s_PicoOpt&= ~0x2000;\r
 \r
        TInt sel = combo_sndq->CurrentItem();\r
-       if(sel >= 5) { config.iPicoOpt |= 8; sel-=5; } else config.iPicoOpt &= ~8;\r
-       config.iFlags &= ~0x38;\r
-       config.iFlags |= (sel<<3)&0x38;\r
-\r
-       switch(combo_region->CurrentItem()) {\r
-               case 4: config.PicoRegion = 1; break;\r
-               case 3: config.PicoRegion = 2; break;\r
-               case 2: config.PicoRegion = 4; break;\r
-               case 1: config.PicoRegion = 8; break;\r
-               default:config.PicoRegion = 0; // auto\r
+       if(sel >= 5) { config.s_PicoOpt |= 8; sel-=5; } else config.s_PicoOpt &= ~8;\r
+       switch (sel) {\r
+               default:config.s_PsndRate =  8000; break;\r
+               case 1: config.s_PsndRate = 11025; break;\r
+               case 2: config.s_PsndRate = 16000; break;\r
+               case 3: config.s_PsndRate = 22050; break;\r
+               case 4: config.s_PsndRate = 44100; break;\r
+       }\r
+\r
+       switch (combo_region->CurrentItem()) {\r
+               case 4: config.s_PicoRegion = 1; break;\r
+               case 3: config.s_PicoRegion = 2; break;\r
+               case 2: config.s_PicoRegion = 4; break;\r
+               case 1: config.s_PicoRegion = 8; break;\r
+               default:config.s_PicoRegion = 0; // auto\r
        }\r
 \r
        return ETrue;\r
@@ -152,7 +186,8 @@ TBool CPicoConfigDialog::OkToExitL(TInt aButtonId)
 // simple GUI stuff needs lots of code\r
 void CPicoConfigDialog::HandleControlStateChangeL(TInt aControlId)\r
 {\r
-       if(aControlId == ECtlOptEnableSound) {\r
+       if (aControlId == ECtlOptEnableSound)\r
+       {\r
                CEikCheckBox *chkbox_sound  = (CEikCheckBox*) Control( ECtlOptEnableSound );\r
                CEikCheckBox *chkbox_z80    = (CEikCheckBox*) Control( ECtlOptEmulateZ80 );\r
                CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 );\r
@@ -179,9 +214,11 @@ void CPicoConfigDialog::HandleControlStateChangeL(TInt aControlId)
                                chkbox_sn76496->DrawDeferred();\r
                        }\r
                }\r
-       } else if(aControlId == ECtlOptUseAltRend || aControlId == ECtlOptRotation) {\r
+       }\r
+       else if(aControlId == ECtlOptUseAltRend || aControlId == ECtlOptRotation)\r
+       {\r
                CEikCheckBox            *chkbox_altrend= (CEikCheckBox*)            Control( ECtlOptUseAltRend );\r
-               CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
+//             CEikCheckBox            *chkbox_accsprt= (CEikCheckBox*)            Control( ECtlOptUseAccSprites );\r
                CEikHorOptionButtonList *buttons_rot   = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r
                CEikHorOptionButtonList *buttons_disp  = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r
                CEikOptionButton        *opt_fit       = (CEikOptionButton*)        buttons_disp->ComponentControl( TPicoConfig::PMFit );\r
@@ -189,14 +226,14 @@ void CPicoConfigDialog::HandleControlStateChangeL(TInt aControlId)
 \r
                TBool dimmed = chkbox_altrend->State() == CEikButtonBase::ESet;\r
                // show/hide more stuff for alternative renderer\r
-               chkbox_accsprt->SetDimmed(dimmed);\r
+//             chkbox_accsprt->SetDimmed(dimmed);\r
                if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) {\r
                        opt_fit->SetDimmed(dimmed);\r
                        if(dimmed && buttons_disp->LabeledButtonId() == ECtlOptScreenModeFit)\r
                                buttons_disp->SetButtonById(ECtlOptScreenModeFit2);\r
                }\r
                else opt_fit->SetDimmed(EFalse);\r
-               chkbox_accsprt->DrawDeferred();\r
+//             chkbox_accsprt->DrawDeferred();\r
                buttons_disp->DrawDeferred();\r
 \r
                if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) {\r