cc68a136 |
1 | /*******************************************************************\r |
2 | *\r |
3 | * File: Dialogs.cpp\r |
4 | *\r |
5 | * Author: Peter van Sebille (peter@yipton.net)\r |
6 | *\r |
7 | * Modified/adapted for picodriveN by notaz, 2006\r |
8 | *\r |
9 | * (c) Copyright 2006, notaz\r |
10 | * (c) Copyright 2002, Peter van Sebille\r |
11 | * All Rights Reserved\r |
12 | *\r |
13 | *******************************************************************/\r |
14 | \r |
15 | #include "Dialogs.h"\r |
16 | #include "Engine.h"\r |
17 | #include "picodrive.hrh"\r |
146cd4bf |
18 | #include "rsc/picodrive.rsg"\r |
cc68a136 |
19 | \r |
20 | #include "version.h"\r |
21 | #include "CSimpleTextParser.h"\r |
22 | #include <txtrich.h> // CRichText\r |
23 | #include <eikrted.h> // CEikRichTextEditor\r |
24 | #include <qikvertoptionbuttonlist.h> // CEikHorOptionButtonList\r |
25 | #include <eikopbut.h> // CEikOptionButton\r |
26 | #include <eikedwin.h> // CEikEdwin\r |
ca482e5d |
27 | #include <quartzkeys.h> // EQuartzKeyTwoWayDown\r |
cc68a136 |
28 | \r |
ca482e5d |
29 | #include <qikcommand.h>\r |
30 | #include "../common/emu.h"\r |
cc68a136 |
31 | \r |
32 | \r |
33 | /************************************************\r |
34 | *\r |
35 | * config Dialog\r |
36 | *\r |
37 | ************************************************/\r |
38 | \r |
ca482e5d |
39 | CPicoConfigDialog::CPicoConfigDialog(_currentConfig_t &cfg) : config(cfg)\r |
cc68a136 |
40 | {\r |
41 | }\r |
42 | \r |
43 | void CPicoConfigDialog::PostLayoutDynInitL()\r |
44 | {\r |
45 | CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r |
46 | CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r |
47 | CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend );\r |
ca482e5d |
48 | // CEikCheckBox *chkbox_acctmng= (CEikCheckBox*) Control( ECtlOptUseAccTiming );\r |
cc68a136 |
49 | CEikCheckBox *chkbox_sram = (CEikCheckBox*) Control( ECtlOptUseSRAM );\r |
50 | CEikCheckBox *chkbox_fps = (CEikCheckBox*) Control( ECtlOptShowFPS );\r |
51 | CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound );\r |
52 | CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 );\r |
53 | CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 );\r |
54 | CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 );\r |
55 | CEikChoiceListBase *combo_sndq = (CEikChoiceListBase*) Control( ECtlOptSndQuality );\r |
56 | CEikCheckBox *chkbox_6bpad = (CEikCheckBox*) Control( ECtlOpt6ButtonPad );\r |
57 | CEikCheckBox *chkbox_gzipst = (CEikCheckBox*) Control( ECtlOptGzipStates );\r |
ca482e5d |
58 | // CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites );\r |
cc68a136 |
59 | CEikChoiceListBase *combo_region = (CEikChoiceListBase*) Control( ECtlOptRegion );\r |
60 | CEikOptionButton *opt_fit2 = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit2 );\r |
ca482e5d |
61 | CEikCheckBox *chkbox_cdda = (CEikCheckBox*) Control( ECtlOptCDcdda );\r |
62 | CEikCheckBox *chkbox_pcm = (CEikCheckBox*) Control( ECtlOptCDpcm );\r |
63 | CEikCheckBox *chkbox_ramcart= (CEikCheckBox*) Control( ECtlOptCDramcart );\r |
64 | CEikCheckBox *chkbox_sclrot = (CEikCheckBox*) Control( ECtlOptCDscalerot );\r |
65 | CEikCheckBox *chkbox_bsync = (CEikCheckBox*) Control( ECtlOptCDbettersync );\r |
cc68a136 |
66 | \r |
ca482e5d |
67 | buttons_rot ->SetButtonById(ECtlOptRotation0 + config.rotation);\r |
68 | buttons_disp->SetButtonById(ECtlOptScreenModeCenter + config.scaling);\r |
69 | chkbox_sram ->SetState(config.EmuOpt & 1 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
70 | chkbox_fps ->SetState(config.EmuOpt & 2 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
71 | chkbox_sound ->SetState(config.EmuOpt & 4 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
72 | chkbox_gzipst ->SetState(config.EmuOpt & 8 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
73 | chkbox_z80 ->SetState(config.s_PicoOpt& 4 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
74 | chkbox_ym2612 ->SetState(config.s_PicoOpt& 1 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
75 | chkbox_sn76496->SetState(config.s_PicoOpt& 2 ? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
76 | chkbox_altrend->SetState(config.s_PicoOpt& 0x10? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
77 | chkbox_6bpad ->SetState(config.s_PicoOpt& 0x20? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
78 | // chkbox_acctmng->SetState(config.s_PicoOpt& 0x40? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
79 | // chkbox_accsprt->SetState(config.s_PicoOpt& 0x80? CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
80 | chkbox_cdda ->SetState(config.s_PicoOpt&0x0800?CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
81 | chkbox_pcm ->SetState(config.s_PicoOpt&0x0400?CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
82 | chkbox_ramcart->SetState(config.s_PicoOpt&0x8000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
83 | chkbox_sclrot ->SetState(config.s_PicoOpt&0x1000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
84 | chkbox_bsync ->SetState(config.s_PicoOpt&0x2000?CEikButtonBase::ESet : CEikButtonBase::EClear);\r |
cc68a136 |
85 | \r |
86 | // dim "fit2" if we are not in 0 or 180 mode\r |
ca482e5d |
87 | if (config.rotation != TPicoConfig::PRot0 && config.rotation != TPicoConfig::PRot180)\r |
88 | opt_fit2->SetDimmed(ETrue);\r |
cc68a136 |
89 | // dim some stuff for alternative renderer\r |
ca482e5d |
90 | if (config.s_PicoOpt & 0x10) {\r |
cc68a136 |
91 | // dim accurate sprites\r |
ca482e5d |
92 | //chkbox_accsprt->SetState(CEikButtonBase::EClear);\r |
93 | //chkbox_accsprt->SetDimmed(ETrue);\r |
cc68a136 |
94 | // dim fit\r |
95 | if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180)\r |
96 | ((CEikOptionButton*)(buttons_disp->ComponentControl(TPicoConfig::PMFit)))->SetDimmed(ETrue);\r |
97 | }\r |
98 | \r |
ca482e5d |
99 | TInt sel = 0;\r |
100 | switch (config.s_PsndRate) {\r |
101 | case 11025: sel = 1; break;\r |
102 | case 16000: sel = 2; break;\r |
103 | case 22050: sel = 3; break;\r |
104 | case 44100: sel = 4; break;\r |
105 | }\r |
106 | sel += (config.s_PicoOpt&8) ? 5 : 0;\r |
cc68a136 |
107 | if (sel >= 10) sel = 0;\r |
108 | combo_sndq->SetCurrentItem(sel);\r |
ca482e5d |
109 | \r |
110 | switch(config.s_PicoRegion) {\r |
cc68a136 |
111 | case 1: sel = 4; break;\r |
112 | case 2: sel = 3; break;\r |
113 | case 4: sel = 2; break;\r |
114 | case 8: sel = 1; break;\r |
115 | default:sel = 0; // auto\r |
116 | }\r |
117 | combo_region->SetCurrentItem(sel);\r |
118 | }\r |
119 | \r |
120 | TBool CPicoConfigDialog::OkToExitL(TInt aButtonId)\r |
121 | {\r |
122 | if(aButtonId != EEikBidOk) return ETrue;\r |
123 | \r |
124 | CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r |
125 | CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r |
126 | CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend );\r |
ca482e5d |
127 | // CEikCheckBox *chkbox_acctmng= (CEikCheckBox*) Control( ECtlOptUseAccTiming );\r |
cc68a136 |
128 | CEikCheckBox *chkbox_sram = (CEikCheckBox*) Control( ECtlOptUseSRAM );\r |
129 | CEikCheckBox *chkbox_fps = (CEikCheckBox*) Control( ECtlOptShowFPS );\r |
130 | CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound );\r |
131 | CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 );\r |
132 | CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 );\r |
133 | CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 );\r |
134 | CEikChoiceListBase *combo_sndq = (CEikChoiceListBase*) Control( ECtlOptSndQuality );\r |
135 | CEikCheckBox *chkbox_6bpad = (CEikCheckBox*) Control( ECtlOpt6ButtonPad );\r |
136 | CEikCheckBox *chkbox_gzipst = (CEikCheckBox*) Control( ECtlOptGzipStates );\r |
ca482e5d |
137 | // CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites );\r |
cc68a136 |
138 | CEikChoiceListBase *combo_region = (CEikChoiceListBase*) Control( ECtlOptRegion );\r |
ca482e5d |
139 | CEikCheckBox *chkbox_cdda = (CEikCheckBox*) Control( ECtlOptCDcdda );\r |
140 | CEikCheckBox *chkbox_pcm = (CEikCheckBox*) Control( ECtlOptCDpcm );\r |
141 | CEikCheckBox *chkbox_ramcart= (CEikCheckBox*) Control( ECtlOptCDramcart );\r |
142 | CEikCheckBox *chkbox_sclrot = (CEikCheckBox*) Control( ECtlOptCDscalerot );\r |
143 | CEikCheckBox *chkbox_bsync = (CEikCheckBox*) Control( ECtlOptCDbettersync );\r |
144 | \r |
145 | config.rotation = (TPicoConfig::TPicoScreenRotation) (buttons_rot->LabeledButtonId() - ECtlOptRotation0);\r |
146 | config.scaling = (TPicoConfig::TPicoScreenMode) (buttons_disp->LabeledButtonId() - ECtlOptScreenModeCenter);\r |
cc68a136 |
147 | \r |
ca482e5d |
148 | if(chkbox_sram ->State() == CEikButtonBase::ESet) config.EmuOpt |= 1; else config.EmuOpt &= ~1;\r |
149 | if(chkbox_fps ->State() == CEikButtonBase::ESet) config.EmuOpt |= 2; else config.EmuOpt &= ~2;\r |
150 | if(chkbox_sound ->State() == CEikButtonBase::ESet) config.EmuOpt |= 4; else config.EmuOpt &= ~4;\r |
151 | if(chkbox_gzipst ->State() == CEikButtonBase::ESet) config.EmuOpt |= 8; else config.EmuOpt &= ~8;\r |
152 | if(chkbox_z80 ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 4; else config.s_PicoOpt&= ~4;\r |
153 | if(chkbox_ym2612 ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 1; else config.s_PicoOpt&= ~1;\r |
154 | if(chkbox_sn76496->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 2; else config.s_PicoOpt&= ~2;\r |
155 | if(chkbox_altrend->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x10;else config.s_PicoOpt&= ~0x10;\r |
156 | if(chkbox_6bpad ->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x20;else config.s_PicoOpt&= ~0x20;\r |
157 | // if(chkbox_acctmng->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x40;else config.s_PicoOpt&= ~0x40;\r |
158 | // if(chkbox_accsprt->State() == CEikButtonBase::ESet) config.s_PicoOpt|= 0x80;else config.s_PicoOpt&= ~0x80;\r |
159 | if(chkbox_cdda ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0800; else config.s_PicoOpt&= ~0x0800;\r |
160 | if(chkbox_pcm ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x0400; else config.s_PicoOpt&= ~0x0400;\r |
161 | if(chkbox_ramcart->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x8000; else config.s_PicoOpt&= ~0x8000;\r |
162 | if(chkbox_sclrot ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x1000; else config.s_PicoOpt&= ~0x1000;\r |
163 | if(chkbox_bsync ->State() == CEikButtonBase::ESet) config.s_PicoOpt |= 0x2000; else config.s_PicoOpt&= ~0x2000;\r |
cc68a136 |
164 | \r |
165 | TInt sel = combo_sndq->CurrentItem();\r |
ca482e5d |
166 | if(sel >= 5) { config.s_PicoOpt |= 8; sel-=5; } else config.s_PicoOpt &= ~8;\r |
167 | switch (sel) {\r |
168 | default:config.s_PsndRate = 8000; break;\r |
169 | case 1: config.s_PsndRate = 11025; break;\r |
170 | case 2: config.s_PsndRate = 16000; break;\r |
171 | case 3: config.s_PsndRate = 22050; break;\r |
172 | case 4: config.s_PsndRate = 44100; break;\r |
173 | }\r |
174 | \r |
175 | switch (combo_region->CurrentItem()) {\r |
176 | case 4: config.s_PicoRegion = 1; break;\r |
177 | case 3: config.s_PicoRegion = 2; break;\r |
178 | case 2: config.s_PicoRegion = 4; break;\r |
179 | case 1: config.s_PicoRegion = 8; break;\r |
180 | default:config.s_PicoRegion = 0; // auto\r |
cc68a136 |
181 | }\r |
182 | \r |
183 | return ETrue;\r |
184 | }\r |
185 | \r |
186 | // simple GUI stuff needs lots of code\r |
187 | void CPicoConfigDialog::HandleControlStateChangeL(TInt aControlId)\r |
188 | {\r |
ca482e5d |
189 | if (aControlId == ECtlOptEnableSound)\r |
190 | {\r |
cc68a136 |
191 | CEikCheckBox *chkbox_sound = (CEikCheckBox*) Control( ECtlOptEnableSound );\r |
192 | CEikCheckBox *chkbox_z80 = (CEikCheckBox*) Control( ECtlOptEmulateZ80 );\r |
193 | CEikCheckBox *chkbox_ym2612 = (CEikCheckBox*) Control( ECtlOptEmulateYM2612 );\r |
194 | CEikCheckBox *chkbox_sn76496= (CEikCheckBox*) Control( ECtlOptEmulateSN76496 );\r |
195 | \r |
196 | if(chkbox_sound->State() == CEikButtonBase::ESet) {\r |
197 | // check all sound chips too, but only if they all are not set\r |
198 | if((chkbox_z80->State() | chkbox_ym2612->State() | chkbox_sn76496->State()) == CEikButtonBase::EClear) { // (==0)\r |
199 | chkbox_z80 ->SetState(CEikButtonBase::ESet);\r |
200 | chkbox_ym2612 ->SetState(CEikButtonBase::ESet);\r |
201 | chkbox_sn76496->SetState(CEikButtonBase::ESet);\r |
202 | chkbox_z80 ->DrawDeferred();\r |
203 | chkbox_ym2612 ->DrawDeferred();\r |
204 | chkbox_sn76496->DrawDeferred();\r |
205 | }\r |
206 | } else {\r |
207 | // clear everything, but only if everything is set\r |
208 | if((chkbox_z80->State() & chkbox_ym2612->State() & chkbox_sn76496->State()) == CEikButtonBase::ESet) { // (==1)\r |
209 | chkbox_z80 ->SetState(CEikButtonBase::EClear);\r |
210 | chkbox_ym2612 ->SetState(CEikButtonBase::EClear);\r |
211 | chkbox_sn76496->SetState(CEikButtonBase::EClear);\r |
212 | chkbox_z80 ->DrawDeferred();\r |
213 | chkbox_ym2612 ->DrawDeferred();\r |
214 | chkbox_sn76496->DrawDeferred();\r |
215 | }\r |
216 | }\r |
ca482e5d |
217 | }\r |
218 | else if(aControlId == ECtlOptUseAltRend || aControlId == ECtlOptRotation)\r |
219 | {\r |
cc68a136 |
220 | CEikCheckBox *chkbox_altrend= (CEikCheckBox*) Control( ECtlOptUseAltRend );\r |
ca482e5d |
221 | // CEikCheckBox *chkbox_accsprt= (CEikCheckBox*) Control( ECtlOptUseAccSprites );\r |
cc68a136 |
222 | CEikHorOptionButtonList *buttons_rot = (CEikHorOptionButtonList*) Control( ECtlOptRotation );\r |
223 | CEikHorOptionButtonList *buttons_disp = (CEikHorOptionButtonList*) Control( ECtlOptScreenMode );\r |
224 | CEikOptionButton *opt_fit = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit );\r |
225 | CEikOptionButton *opt_fit2 = (CEikOptionButton*) buttons_disp->ComponentControl( TPicoConfig::PMFit2 );\r |
226 | \r |
227 | TBool dimmed = chkbox_altrend->State() == CEikButtonBase::ESet;\r |
228 | // show/hide more stuff for alternative renderer\r |
ca482e5d |
229 | // chkbox_accsprt->SetDimmed(dimmed);\r |
cc68a136 |
230 | if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) {\r |
231 | opt_fit->SetDimmed(dimmed);\r |
232 | if(dimmed && buttons_disp->LabeledButtonId() == ECtlOptScreenModeFit)\r |
233 | buttons_disp->SetButtonById(ECtlOptScreenModeFit2);\r |
234 | }\r |
235 | else opt_fit->SetDimmed(EFalse);\r |
ca482e5d |
236 | // chkbox_accsprt->DrawDeferred();\r |
cc68a136 |
237 | buttons_disp->DrawDeferred();\r |
238 | \r |
239 | if(buttons_rot->LabeledButtonId() == ECtlOptRotation0 || buttons_rot->LabeledButtonId() == ECtlOptRotation180) {\r |
240 | opt_fit2->SetDimmed(EFalse);\r |
241 | } else {\r |
242 | if(opt_fit2->State() == CEikButtonBase::ESet) {\r |
243 | buttons_disp->SetButtonById(ECtlOptScreenModeFit);\r |
244 | buttons_disp->DrawDeferred();\r |
245 | }\r |
246 | opt_fit2->SetDimmed(ETrue);\r |
247 | }\r |
248 | opt_fit2->DrawDeferred();\r |
249 | }\r |
250 | }\r |
251 | \r |
252 | \r |
253 | /************************************************\r |
254 | *\r |
255 | * About Dialog\r |
256 | *\r |
257 | ************************************************/\r |
258 | \r |
259 | void CAboutDialog::PostLayoutDynInitL()\r |
260 | {\r |
261 | TBuf<16> versionText;\r |
262 | TBuf<512> text;\r |
263 | \r |
264 | #if (KPicoBuildNumber != 0)\r |
265 | versionText.Format(_L("%d.%d%d"), KPicoMajorVersionNumber, KPicoMinorVersionNumber, KPicoBuildNumber);\r |
266 | #else\r |
267 | versionText.Format(_L("%d.%d"), KPicoMajorVersionNumber, KPicoMinorVersionNumber);\r |
268 | #endif\r |
269 | \r |
270 | CEikRichTextEditor* richTextEd = LocateControlByUniqueHandle<CEikRichTextEditor>(ECtlPicoAboutText);\r |
271 | User::LeaveIfNull(richTextEd);\r |
272 | \r |
273 | HBufC *aboutFormat = CEikonEnv::Static()->AllocReadResourceLC(R_PICO_TEXT_ABOUT);\r |
274 | CSimpleTextFormatParser *parser = CSimpleTextFormatParser::NewLC();\r |
275 | \r |
276 | text.Format(*aboutFormat, &versionText);\r |
277 | parser->ParseL(text, *richTextEd->RichText());\r |
278 | \r |
279 | richTextEd->UpdateAllFieldsL(); // Updates all the fields in the document\r |
280 | \r |
281 | CleanupStack::PopAndDestroy(parser);\r |
282 | CleanupStack::PopAndDestroy(aboutFormat);\r |
283 | }\r |
284 | \r |
285 | /*************************************************************\r |
286 | *\r |
287 | * Credits dialog\r |
288 | *\r |
289 | **************************************************************/\r |
290 | \r |
291 | void CCreditsDialog::PreLayoutDynInitL()\r |
292 | {\r |
293 | CEikEdwin *edwin = LocateControlByUniqueHandle<CEikEdwin>(ECtlPicoCreditsText);\r |
294 | User::LeaveIfNull(edwin);\r |
295 | \r |
296 | CDesCArrayFlat* desArray = CEikonEnv::Static()->ReadDesCArrayResourceL(R_PICO_TBUF_CREDITS);\r |
297 | CleanupStack::PushL(desArray);\r |
298 | \r |
299 | edwin->SetTextLimit(2048); // to prevent stupid "too big" warning\r |
300 | TInt count = desArray->Count();\r |
301 | for (TInt i = 0; i < count; i++)\r |
302 | {\r |
303 | edwin->Text()->InsertL(edwin->TextLength(), desArray->operator[](i));\r |
304 | edwin->Text()->InsertL(edwin->TextLength(), CEditableText::ELineBreak);\r |
305 | }\r |
306 | CleanupStack::PopAndDestroy(desArray);\r |
307 | }\r |
308 | \r |
309 | TKeyResponse CCreditsDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)\r |
310 | {\r |
311 | if (aType == EEventKey)\r |
312 | {\r |
313 | CEikEdwin *edwin = LocateControlByUniqueHandle<CEikEdwin>(ECtlPicoCreditsText);\r |
314 | User::LeaveIfNull(edwin);\r |
315 | \r |
316 | if (aKeyEvent.iCode == EQuartzKeyTwoWayDown)\r |
317 | {\r |
318 | edwin->MoveDisplayL(TCursorPosition::EFLineDown);\r |
319 | edwin->UpdateScrollBarsL();\r |
320 | return EKeyWasConsumed;\r |
321 | }\r |
322 | else if (aKeyEvent.iCode == EQuartzKeyTwoWayUp)\r |
323 | {\r |
324 | edwin->MoveDisplayL(TCursorPosition::EFLineUp);\r |
325 | edwin->UpdateScrollBarsL();\r |
326 | return EKeyWasConsumed;\r |
327 | }\r |
328 | }\r |
329 | return CQikSimpleDialog::OfferKeyEventL(aKeyEvent, aType);\r |
330 | }\r |
331 | \r |
332 | /*************************************************************\r |
333 | *\r |
334 | * Debug dialog\r |
335 | *\r |
336 | **************************************************************/\r |
337 | \r |
338 | CDebugDialog::CDebugDialog(char *t)\r |
339 | {\r |
340 | Mem::Copy(iText, t, 1024);\r |
341 | iText[1023] = 0;\r |
342 | }\r |
343 | \r |
344 | void CDebugDialog::PreLayoutDynInitL()\r |
345 | {\r |
346 | char *p = iText, *line = iText;\r |
347 | TBool end=0;\r |
348 | TBuf<128> tbuf;\r |
349 | CEikEdwin *editor = LocateControlByUniqueHandle<CEikEdwin>(ECtlPicoCreditsText);\r |
350 | \r |
351 | while(!end) {\r |
352 | while(*p && *p != '\r' && *p != '\n') p++;\r |
353 | if(!*p) end=1;\r |
354 | *p = 0;\r |
355 | TPtrC8 ptr((TUint8*) line);\r |
356 | tbuf.Copy(ptr);\r |
357 | editor->Text()->InsertL(editor->TextLength(), tbuf);\r |
358 | editor->Text()->InsertL(editor->TextLength(), CEditableText::ELineBreak);\r |
359 | line = ++p;\r |
360 | }\r |
361 | }\r |