uifw/AvKon/src/AknProgressDialog.cpp
branchRCL_3
changeset 55 aecbbf00d063
parent 51 fcdfafb36fe7
child 56 d48ab3b357f1
equal deleted inserted replaced
51:fcdfafb36fe7 55:aecbbf00d063
    28 #include <eikcba.h>
    28 #include <eikcba.h>
    29 #include <avkon.hrh>
    29 #include <avkon.hrh>
    30 #include "aknnoteattributes.h"
    30 #include "aknnoteattributes.h"
    31 #include <akninputblock.h>
    31 #include <akninputblock.h>
    32 
    32 
    33 #include "akntrace.h"
       
    34 
       
    35 
    33 
    36 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
    34 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
    37 #include <gfxtranseffect/gfxtranseffect.h>
    35 #include <gfxtranseffect/gfxtranseffect.h>
    38 #include <akntransitionutils.h>
    36 #include <akntransitionutils.h>
    39 #endif
    37 #endif
    75 	TKeyEvent key;
    73 	TKeyEvent key;
    76 	key.iRepeats=0;
    74 	key.iRepeats=0;
    77 	key.iCode=EKeyEscape;
    75 	key.iCode=EKeyEscape;
    78 	key.iModifiers=0;
    76 	key.iModifiers=0;
    79 	key.iScanCode = EStdKeyNull;
    77 	key.iScanCode = EStdKeyNull;
    80 	TRAP_IGNORE(iAknProgressDialog->OfferKeyEventL(key, EEventKey));
    78 	iAknProgressDialog->OfferKeyEventL(key, EEventKey);
    81 	}
    79 	}
    82 	
    80 	
    83 CAknProgressDialog::CCancelWhileHidden::CCancelWhileHidden(CAknProgressDialog* aAknProgressDialog)
    81 CAknProgressDialog::CCancelWhileHidden::CCancelWhileHidden(CAknProgressDialog* aAknProgressDialog)
    84 : iAknProgressDialog(aAknProgressDialog)
    82 : iAknProgressDialog(aAknProgressDialog)
    85 	{
    83 	{
   101 
    99 
   102 EXPORT_C CAknProgressDialog::CAknProgressDialog(TInt aFinalValue,TInt anIncrement,
   100 EXPORT_C CAknProgressDialog::CAknProgressDialog(TInt aFinalValue,TInt anIncrement,
   103          TInt anInterval,CEikDialog** aSelfPtr) :
   101          TInt anInterval,CEikDialog** aSelfPtr) :
   104          CAknNoteDialog(aSelfPtr),iInternalTimerControl(ETrue)
   102          CAknNoteDialog(aSelfPtr),iInternalTimerControl(ETrue)
   105 	{
   103 	{
   106 	_AKNTRACE_FUNC_ENTER;
       
   107 	_AKNTRACE("aFinalValue = %d anIncrement = %d anInterval = %d", aFinalValue, anIncrement, anInterval); 
       
   108 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   104 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   109 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   105 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   110 #endif
   106 #endif
   111 	iModel.iFinalValue = aFinalValue;
   107 	iModel.iFinalValue = aFinalValue;
   112 	iModel.iHundreths = anInterval;
   108 	iModel.iHundreths = anInterval;
   113 	iModel.iIncrement = anIncrement;
   109 	iModel.iIncrement = anIncrement;
   114 	iModel.iRunning = EFalse;
   110 	iModel.iRunning = EFalse;
   115 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   111 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   116 	_AKNTRACE_FUNC_EXIT;
       
   117 	}
   112 	}
   118 
   113 
   119 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr) :
   114 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr) :
   120 	CAknNoteDialog(aSelfPtr),iInternalTimerControl(EFalse)
   115 	CAknNoteDialog(aSelfPtr),iInternalTimerControl(EFalse)
   121 	{
   116 	{
   122 	_AKNTRACE_FUNC_ENTER;
       
   123 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   117 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   124 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   118 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   125 #endif
   119 #endif
   126 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   120 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   127 	_AKNTRACE_FUNC_EXIT;
       
   128 	}
   121 	}
   129 
   122 
   130 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr,
   123 EXPORT_C CAknProgressDialog::CAknProgressDialog(CEikDialog** aSelfPtr,
   131                                                 TBool aVisibilityDelayOff)
   124                                                 TBool aVisibilityDelayOff)
   132 :	CAknNoteDialog(aSelfPtr),
   125 :	CAknNoteDialog(aSelfPtr),
   133 	iVisibilityDelayOff( aVisibilityDelayOff ),
   126 	iVisibilityDelayOff( aVisibilityDelayOff ),
   134 	iInternalTimerControl(EFalse)
   127 	iInternalTimerControl(EFalse)
   135 	{
   128 	{
   136 	_AKNTRACE_FUNC_ENTER;
       
   137 	_AKNTRACE("iVisibilityDelayOff = %d ", aVisibilityDelayOff); 
       
   138 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   129 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS
   139 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   130 	GfxTransEffect::Register( this, KGfxWaitNoteControlUid );
   140 #endif
   131 #endif
   141 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   132 	AKNTASHOOK_ADD( this, "CAknProgressDialog" );
   142 	_AKNTRACE_FUNC_EXIT;
       
   143 	}
   133 	}
   144 
   134 
   145 EXPORT_C CAknProgressDialog::~CAknProgressDialog()
   135 EXPORT_C CAknProgressDialog::~CAknProgressDialog()
   146 	{
   136 	{
   147 	_AKNTRACE_FUNC_ENTER;
       
   148 	AKNTASHOOK_REMOVE();
   137 	AKNTASHOOK_REMOVE();
   149     if ( iInternalTimerControl )
   138     if ( iInternalTimerControl )
   150         {
   139         {
   151         PlayTone();
   140         PlayTone();
   152         }
   141         }
   153     iEikonEnv->RemoveFromStack(this);
   142     iEikonEnv->RemoveFromStack(this);
   154     delete iCancelWhileHidden;
   143     delete iCancelWhileHidden;
   155     delete iProgressTimer;
   144     delete iProgressTimer;
   156 	delete iProgressDialogTimer;
   145 	delete iProgressDialogTimer;
   157 	_AKNTRACE_FUNC_EXIT;
       
   158 	}
   146 	}
   159 
   147 
   160 EXPORT_C void CAknProgressDialog::PreLayoutDynInitL()
   148 EXPORT_C void CAknProgressDialog::PreLayoutDynInitL()
   161 	{
   149 	{
   162 	//If the progress bar is to be controlled externally, it won't be updated
   150 	//If the progress bar is to be controlled externally, it won't be updated
   185 	return STATIC_CAST(CAknProgressDialog*, aPtr)->DialogTimerEvent();
   173 	return STATIC_CAST(CAknProgressDialog*, aPtr)->DialogTimerEvent();
   186 	}
   174 	}
   187 
   175 
   188 TInt CAknProgressDialog::DialogTimerEvent()
   176 TInt CAknProgressDialog::DialogTimerEvent()
   189     {
   177     {
   190     _AKNTRACE_FUNC_ENTER;
       
   191     _AKNTRACE("CAknProgressDialog::DialogTimerEvent iState = %d", iState);
       
   192     switch ( iState )
   178     switch ( iState )
   193         {
   179         {
   194         case EProcessOnDisplayOff:
   180         case EProcessOnDisplayOff:
   195 			{
   181 			{
   196 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS			
   182 #ifdef RD_UI_TRANSITION_EFFECTS_POPUPS			
   224             CEikDialog::SlideDialog(); // this does nothing is sliding is disabled
   210             CEikDialog::SlideDialog(); // this does nothing is sliding is disabled
   225 			DrawableWindow()->SetOrdinalPosition(0);
   211 			DrawableWindow()->SetOrdinalPosition(0);
   226             MakeVisible(ETrue);
   212             MakeVisible(ETrue);
   227    			CCoeControl* cba = ButtonGroupContainer().ButtonGroup()->AsControl();
   213    			CCoeControl* cba = ButtonGroupContainer().ButtonGroup()->AsControl();
   228 			iEikonEnv->RemoveFromStack(cba);
   214 			iEikonEnv->RemoveFromStack(cba);
   229 			TRAP_IGNORE(iEikonEnv->EikAppUi()->AddToStackL(cba, ECoeStackPriorityCba, ECoeStackFlagRefusesFocus));	// Won't fail since we just removed it (and array will not reallocate)
   215 			__ASSERT_DEBUG_NO_LEAVE(iEikonEnv->EikAppUi()->AddToStackL(cba, ECoeStackPriorityCba, ECoeStackFlagRefusesFocus));	// Won't fail since we just removed it (and array will not reallocate)
   230 			cba->DrawableWindow()->SetOrdinalPosition(0);
   216 			cba->DrawableWindow()->SetOrdinalPosition(0);
   231             cba->MakeVisible(ETrue);
   217             cba->MakeVisible(ETrue);
   232             ReportUserActivity();
   218             ReportUserActivity();
   233 			PlayTone();
   219 			PlayTone();
   234 			delete iCancelWhileHidden;
   220 			delete iCancelWhileHidden;
   271             break;
   257             break;
   272         default:
   258         default:
   273             delete iProgressDialogTimer;
   259             delete iProgressDialogTimer;
   274             iProgressDialogTimer = NULL;
   260             iProgressDialogTimer = NULL;
   275         }
   261         }
   276     _AKNTRACE_FUNC_EXIT;
       
   277     return KErrNone;
   262     return KErrNone;
   278     }
   263     }
   279 
   264 
   280 EXPORT_C void CAknProgressDialog::ProcessFinishedL()
   265 EXPORT_C void CAknProgressDialog::ProcessFinishedL()
   281     {
   266     {        
   282     _AKNTRACE_FUNC_ENTER;
       
   283     _AKNTRACE("CAknProgressDialog::ProcessFinishedL iState = %d", iState);
       
   284         switch ( iState )
   267         switch ( iState )
   285         {
   268         {
   286         case EProcessOnDisplayOff:
   269         case EProcessOnDisplayOff:
   287         case EProcessOnDisplayOnCanBeDismissed:
   270         case EProcessOnDisplayOnCanBeDismissed:
   288             iState = EProcessOffDisplayOff;
   271             iState = EProcessOffDisplayOff;
   296             iState = EProcessOffDisplayOn;
   279             iState = EProcessOffDisplayOn;
   297             break;
   280             break;
   298 		default:
   281 		default:
   299 			break;
   282 			break;
   300         }
   283         }
   301 	_AKNTRACE_FUNC_EXIT;   
       
   302     }
   284     }
   303 
   285 
   304 EXPORT_C TInt CAknProgressDialog::RunLD()
   286 EXPORT_C TInt CAknProgressDialog::RunLD()
   305 	{
   287 	{
   306 	_AKNTRACE_FUNC_ENTER;
       
   307 	_AKNTRACE("RunLD iInternalTimerControl = %d iVisibilityDelayOff = %d", iInternalTimerControl, iVisibilityDelayOff);
       
   308     CAknNoteControl* note = NoteControl();
   288     CAknNoteControl* note = NoteControl();
   309 	note->CreateProgressBarL();
   289 	note->CreateProgressBarL();
   310 
   290 
   311 	if (iInternalTimerControl)
   291 	if (iInternalTimerControl)
   312         {
   292         {
   356                                     TTimeIntervalMicroSeconds32(KMinTimeDialogOnScreen), 
   336                                     TTimeIntervalMicroSeconds32(KMinTimeDialogOnScreen), 
   357                                     TCallBack(DialogTimerCallback, this) );
   337                                     TCallBack(DialogTimerCallback, this) );
   358         
   338         
   359         iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog,ECoeStackFlagRefusesAllKeys);
   339         iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog,ECoeStackFlagRefusesAllKeys);
   360         }
   340         }
   361     _AKNTRACE_FUNC_EXIT;
   341 
   362     return CAknNoteDialog::RunLD();
   342     return CAknNoteDialog::RunLD();
   363     }
   343     }
   364 
   344 
   365 EXPORT_C CEikProgressInfo* CAknProgressDialog::GetProgressInfoL()
   345 EXPORT_C CEikProgressInfo* CAknProgressDialog::GetProgressInfoL()
   366 	{
   346 	{
   406         }
   386         }
   407 	}
   387 	}
   408 
   388 
   409 EXPORT_C TBool CAknProgressDialog::OkToExitL(TInt aButtonId)
   389 EXPORT_C TBool CAknProgressDialog::OkToExitL(TInt aButtonId)
   410     {
   390     {
   411     _AKNTRACE_FUNC_ENTER;    
       
   412     // if dialog is invisible and app isn't exiting, eg during view switch,
   391     // if dialog is invisible and app isn't exiting, eg during view switch,
   413     // don't stop the progress dialog - it's most likely part of some
   392     // don't stop the progress dialog - it's most likely part of some
   414     // asynchronous operation.
   393     // asynchronous operation.
   415     if ((iState == EProcessOnDisplayOff && !CAknEnv::AppWithShutterRunning()) || 
   394     if ((iState == EProcessOnDisplayOff && !CAknEnv::AppWithShutterRunning()) || 
   416     	aButtonId == EAknSoftkeyEmpty )
   395     	aButtonId == EAknSoftkeyEmpty )
   417         {
   396         {
   418         _AKNTRACE("CAknProgressDialog::OkToExitL return for EProcessOnDisplayOff");
       
   419 		delete iCancelWhileHidden;
   397 		delete iCancelWhileHidden;
   420 		iCancelWhileHidden = NULL;
   398 		iCancelWhileHidden = NULL;
   421         return EFalse;
   399         return EFalse;
   422         }
   400         }
   423     if ( iCallback )
   401     if ( iCallback )
   424         {
   402         {
   425         _AKNTRACE("CAknProgressDialog::OkToExitL succeed to execut DialogDismissedL");   
       
   426         iCallback->DialogDismissedL(aButtonId);
   403         iCallback->DialogDismissedL(aButtonId);
   427         }
   404         }
   428     _AKNTRACE_FUNC_EXIT;
       
   429     return ETrue;
   405     return ETrue;
   430     }
   406     }
   431         
   407         
   432 //-------------------------------------------------------------------------------------
   408 //-------------------------------------------------------------------------------------
   433 // CAknProgressDialog::HandlePointerEventL()
   409 // CAknProgressDialog::HandlePointerEventL()