164 |
164 |
165 /** |
165 /** |
166 * CONSTRUCTION PHASE 1 . Java side. |
166 * CONSTRUCTION PHASE 1 . Java side. |
167 */ |
167 */ |
168 CMIDToolkit::CMIDToolkit() |
168 CMIDToolkit::CMIDToolkit() |
169 : iPhase(EPhase1) |
169 : iPhase(EPhase1) |
170 , iOldFullScreenDisplayable(NULL), iObjects(EGranularity), iSentToBgTime(0), mFirst(ETrue) |
170 , iOldFullScreenDisplayable(NULL), iObjects(EGranularity), iSentToBgTime(0), mFirst(ETrue) |
171 { |
171 { |
172 LCDUI_DEBUG_INT("CMIDToolkit::CMIDToolkit(%d) CONSTRUCTION PHASE 1", (TInt)this); |
172 LCDUI_DEBUG_INT("CMIDToolkit::CMIDToolkit(%d) CONSTRUCTION PHASE 1", (TInt)this); |
173 iFinalizeMutex.CreateLocal(); |
173 iFinalizeMutex.CreateLocal(); |
174 } |
174 } |
175 |
175 |
246 |
246 |
247 void CMIDToolkit::HandleSwitchOnEventL() |
247 void CMIDToolkit::HandleSwitchOnEventL() |
248 { |
248 { |
249 iEnv->HandleSwitchOnL(ETrue); |
249 iEnv->HandleSwitchOnL(ETrue); |
250 } |
250 } |
|
251 |
|
252 #ifdef RD_JAVA_NGA_ENABLED |
|
253 void CMIDToolkit::HandleFullOrPartialForegroundL(TBool aFullOrPartialFg) |
|
254 { |
|
255 iEnv->HandleFullOrPartialForegroundL(aFullOrPartialFg); |
|
256 } |
|
257 |
|
258 void CMIDToolkit::HandleFreeGraphicsMemory() |
|
259 { |
|
260 iEnv->HandleFreeGraphicsMemory(); |
|
261 } |
|
262 #endif |
251 |
263 |
252 /** |
264 /** |
253 * CONSTRUCTION PHASE 2. |
265 * CONSTRUCTION PHASE 2. |
254 * Java Side. |
266 * Java Side. |
255 */ |
267 */ |
274 iHandleItemEvent = aJni.GetMethodID(clz, "handleItemEvent", "(Ljavax/microedition/lcdui/Item;IIII)V"); |
286 iHandleItemEvent = aJni.GetMethodID(clz, "handleItemEvent", "(Ljavax/microedition/lcdui/Item;IIII)V"); |
275 iHandleDisplayableEvent = aJni.GetMethodID(clz, "handleDisplayableEvent", "(Ljavax/microedition/lcdui/Displayable;IIII)V"); |
287 iHandleDisplayableEvent = aJni.GetMethodID(clz, "handleDisplayableEvent", "(Ljavax/microedition/lcdui/Displayable;IIII)V"); |
276 iHandleDisplayEvent = aJni.GetMethodID(clz, "handleDisplayEvent", "(Ljavax/microedition/lcdui/Toolkit;IIII)V"); |
288 iHandleDisplayEvent = aJni.GetMethodID(clz, "handleDisplayEvent", "(Ljavax/microedition/lcdui/Toolkit;IIII)V"); |
277 iHandleNotifyMethod = aJni.GetMethodID(clz, "handleAsyncEvent", "(Ljava/lang/Object;I)V"); |
289 iHandleNotifyMethod = aJni.GetMethodID(clz, "handleAsyncEvent", "(Ljava/lang/Object;I)V"); |
278 iHandleCanavsGraphicsItemPainterEvent = aJni.GetMethodID( |
290 iHandleCanavsGraphicsItemPainterEvent = aJni.GetMethodID( |
279 clz, |
291 clz, |
280 "handleCanvasGraphicsItemPainterEvent", |
292 "handleCanvasGraphicsItemPainterEvent", |
281 "(Ljavax/microedition/lcdui/CanvasGraphicsItemPainter;IIII)V"); |
293 "(Ljavax/microedition/lcdui/CanvasGraphicsItemPainter;IIII)V"); |
282 |
294 |
283 aJni.DeleteLocalRef(clz); |
295 aJni.DeleteLocalRef(clz); |
284 |
296 |
285 if (0 == iHandleNotifyMethod || |
297 if (0 == iHandleNotifyMethod || |
286 0 == iHandleDisplayEvent || |
298 0 == iHandleDisplayEvent || |
388 |
400 |
389 iUtils = iUiFactory->CreateUtilsL(); |
401 iUtils = iUiFactory->CreateUtilsL(); |
390 iEnv->SetUtils(iUtils); |
402 iEnv->SetUtils(iUtils); |
391 } |
403 } |
392 |
404 |
|
405 MMIDCanvas* CMIDToolkit::GetCurrentCanvas() const |
|
406 { |
|
407 MMIDCanvas* ret = NULL; |
|
408 MMIDComponent* content = iCurrentDisplayable ? iCurrentDisplayable->Component() : NULL; |
|
409 if (content && content->Type() == MMIDComponent::ECanvas) |
|
410 { |
|
411 ret = static_cast<MMIDCanvas*>(content); |
|
412 } |
|
413 return ret; |
|
414 } |
|
415 |
393 // |
416 // |
394 // Enables events |
417 // Enables events |
395 // |
418 // |
396 void CMIDToolkit::ActivateL() |
419 void CMIDToolkit::ActivateL() |
397 { |
420 { |
398 iOpen=ETrue; |
421 iOpen=ETrue; |
399 SetTaskListEntry(ETrue); |
422 SetTaskListEntry(ETrue); |
400 RLcdui::Get()->Plugin()->SetObserver(this); |
423 RLcdui::Get()->Plugin()->SetObserverL(this); |
401 iCoeEnv->RootWin().EnableReceiptOfFocus(ETrue); |
424 iCoeEnv->RootWin().EnableReceiptOfFocus(ETrue); |
402 } |
425 } |
403 |
426 |
404 void CMIDToolkit::SetTaskListEntry(TBool aVisible) |
427 void CMIDToolkit::SetTaskListEntry(TBool aVisible) |
405 { |
428 { |
576 { |
599 { |
577 MMIDComponent* content = iCurrentDisplayable ? iCurrentDisplayable->Component() : NULL; |
600 MMIDComponent* content = iCurrentDisplayable ? iCurrentDisplayable->Component() : NULL; |
578 |
601 |
579 TBool isCanvas = EFalse; |
602 TBool isCanvas = EFalse; |
580 TBool isCanvasReadyToBlit = EFalse; |
603 TBool isCanvasReadyToBlit = EFalse; |
|
604 TBool isFullscreenUI = ETrue; |
581 if (content) |
605 if (content) |
582 { |
606 { |
583 if (content->Type() == MMIDComponent::ECanvas) |
607 MMIDComponent::TType contentType = content->Type(); |
|
608 |
|
609 if (contentType == MMIDComponent::ECanvas) |
584 { |
610 { |
585 isCanvas = ETrue; |
611 isCanvas = ETrue; |
586 MMIDCanvas* canvas = static_cast<MMIDCanvas*>(content); |
612 MMIDCanvas* canvas = static_cast<MMIDCanvas*>(content); |
587 isCanvasReadyToBlit = canvas->ReadyToBlit(); |
613 isCanvasReadyToBlit = canvas->ReadyToBlit(); |
588 } |
614 } |
|
615 else |
|
616 { |
|
617 if (contentType == MMIDComponent::EAlert || |
|
618 (contentType == MMIDComponent::ETextBox && |
|
619 iCurrentDisplayable->IsPopupTextBox())) |
|
620 { |
|
621 isFullscreenUI = EFalse; |
|
622 } |
|
623 } |
589 } |
624 } |
590 |
625 |
591 if (!content || !isCanvas || isCanvasReadyToBlit) |
626 if (!content || !isCanvas || isCanvasReadyToBlit) |
592 { |
627 { |
593 if (iCurrentDisplayable) |
628 if (iCurrentDisplayable) |
594 { |
629 { |
595 iCurrentDisplayable->DrawNow(); |
630 iCurrentDisplayable->DrawNow(); |
596 } |
631 } |
597 appUi->stopStartScreen(); |
632 |
|
633 appUi->stopStartScreen(isFullscreenUI); |
598 } |
634 } |
599 } |
635 } |
600 } |
636 } |
601 |
637 |
602 void CMIDToolkit::SendToBackground() |
638 void CMIDToolkit::SendToBackground() |
732 case EPhase3: |
775 case EPhase3: |
733 iPhase = EPhase2; |
776 iPhase = EPhase2; |
734 break; |
777 break; |
735 } |
778 } |
736 |
779 |
|
780 #ifdef RD_JAVA_NGA_ENABLED |
|
781 // Notify canvas about exit, so that canvas MIDlets |
|
782 // get system effect in exit |
|
783 MMIDCanvas* canvas = GetCurrentCanvas(); |
|
784 if (canvas) |
|
785 { |
|
786 canvas->MidletExiting(); |
|
787 } |
|
788 #endif // RD_JAVA_NGA_ENABLED |
|
789 |
|
790 |
737 // Always use exit effect when exiting midlet |
791 // Always use exit effect when exiting midlet |
738 GfxTransEffect::BeginFullScreen(AknTransEffect::EApplicationExit, TRect(), |
792 GfxTransEffect::BeginFullScreen(AknTransEffect::EApplicationExit, TRect(), |
739 AknTransEffect::EParameterType, AknTransEffect::GfxTransParam(iAppUid)); |
793 AknTransEffect::EParameterType, AknTransEffect::GfxTransParam(iAppUid)); |
740 |
794 |
741 |
795 |