diff -r 000000000000 -r 6a9f87576119 filemanager/View/src/CFileManagerGlobalDlgFull.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filemanager/View/src/CFileManagerGlobalDlgFull.cpp Mon Jan 18 20:09:41 2010 +0200 @@ -0,0 +1,391 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Global dialog handling +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include "CFileManagerGlobalDlg.h" +#include "CFileManagerGlobalQueryDlg.h" + + +// CONSTANTS +const TUint KCountdownTimeout = 1000000; // 1s +const TInt KCountdownSteps = 30; +const TInt KCountdownShowSKStep = 3; + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::CFileManagerGlobalDlg +// --------------------------------------------------------------------------- +// +CFileManagerGlobalDlg::CFileManagerGlobalDlg() : + CActive( EPriorityUserInput ) + { + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::NewL +// --------------------------------------------------------------------------- +// +EXPORT_C CFileManagerGlobalDlg* CFileManagerGlobalDlg::NewL() + { + CFileManagerGlobalDlg* self = + new( ELeave ) CFileManagerGlobalDlg(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::ConstructL +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::ConstructL() + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::~CFileManagerGlobalDlg +// --------------------------------------------------------------------------- +// +EXPORT_C CFileManagerGlobalDlg::~CFileManagerGlobalDlg() + { + Cancel(); + delete iQueryDialog; + delete iProgressDialog; + delete iCountdown; + delete iCountdownText; + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::CancelDialog +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::CancelDialog() + { + delete iCountdown; + iCountdown = NULL; + + if ( iQueryDialog ) + { + iQueryDialog->CancelDialog(); + delete iQueryDialog; + iQueryDialog = NULL; + } + + if ( iProgressDialog ) + { + iProgressDialog->CancelProgressDialog(); + delete iProgressDialog; + iProgressDialog = NULL; + } + + Cancel(); + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::ShowDialogL +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::ShowDialogL( + const CFileManagerGlobalDlg::TType aType, + const TDesC& aText, + const TInt aSkId ) + { + CancelDialog(); + + iType = aType; + + switch ( aType ) + { + case ECountdownQuery: + { + iCountdownText = aText.AllocL(); + iQueryDialog = CFileManagerGlobalQueryDlg::NewL(); + iQueryDialog->ShowDialogL( + *iCountdownText, + R_AVKON_SOFTKEYS_EMPTY ); + iCountdownSteps = 0; + StartCountdownL( KCountdownTimeout ); + break; + } + case EQuery: + { + iQueryDialog = CFileManagerGlobalQueryDlg::NewL(); + iQueryDialog->SetObserver( this ); + iQueryDialog->ShowDialogL( + aText, + aSkId ); + break; + } + case EQueryWithWarningIcon: + { + iQueryDialog = CFileManagerGlobalQueryDlg::NewL(); + iQueryDialog->SetObserver( this ); + iQueryDialog->ShowDialogL( + aText, + aSkId, + KAvkonBitmapFile, + EMbmAvkonQgn_note_warning, + EMbmAvkonQgn_note_warning_mask ); + break; + } + case EQueryWithInfoIcon: + { + iQueryDialog = CFileManagerGlobalQueryDlg::NewL(); + iQueryDialog->SetObserver( this ); + iQueryDialog->ShowDialogL( + aText, + aSkId, + KAvkonBitmapFile, + EMbmAvkonQgn_note_info, + EMbmAvkonQgn_note_info_mask ); + break; + } + case EProgressDialog: + { + iProgressDialog = CAknGlobalProgressDialog::NewL(); + if ( aSkId ) + { + iProgressDialog->ShowProgressDialogL( + iStatus, aText, aSkId ); + } + else + { + iProgressDialog->ShowProgressDialogL( + iStatus, aText ); + } + SetActive(); + iFinalValue = 0; + break; + } + case EErrorNote: + { + CAknGlobalNote* note = CAknGlobalNote::NewLC(); + note->SetTone( EAvkonSIDNoSound ); // no tone + note->ShowNoteL( EAknGlobalErrorNote, aText ); + CleanupStack::PopAndDestroy( note ); + break; + } + case EInfoNote: + { + CAknGlobalNote* note = CAknGlobalNote::NewLC(); + note->SetTone( EAvkonSIDNoSound ); // no tone + note->ShowNoteL( EAknGlobalInformationNote, aText ); + CleanupStack::PopAndDestroy( note ); + break; + } + default: + { + break; + } + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::ShowDialogL +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::ShowDialogL( + const CFileManagerGlobalDlg::TType aType, + const TInt aTextId, + const TInt aSkId ) + { + HBufC* text = StringLoader::LoadLC( aTextId ); + ShowDialogL( aType, *text, aSkId ); + CleanupStack::PopAndDestroy( text ); + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::DoCancel +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::DoCancel() + { + if ( iQueryDialog ) + { + iQueryDialog->CancelDialog(); + } + if ( iProgressDialog ) + { + iProgressDialog->CancelProgressDialog(); + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::RunL +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::RunL() + { + CancelDialog(); + NotifyObserver( iStatus.Int() ); + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::SetObserver +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::SetObserver( + MFileManagerGlobalDlgObserver* aObserver ) + { + // This instance is not allowed to set by client + if ( aObserver != this ) + { + iObserver = aObserver; + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::StartCountdownL +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::StartCountdownL( const TUint aTimeout ) + { + delete iCountdown; + iCountdown = NULL; + iCountdown = CPeriodic::NewL( CActive::EPriorityStandard ); + iCountdown->Start( aTimeout, aTimeout, TCallBack( CountdownCB, this ) ); + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::CountdownCB +// --------------------------------------------------------------------------- +// +TInt CFileManagerGlobalDlg::CountdownCB( TAny* aPtr ) + { + CFileManagerGlobalDlg* self = + static_cast< CFileManagerGlobalDlg* >( aPtr ); + + TRAP_IGNORE( self->CountdownL() ); + + return KErrNone; + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::CountdownL +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::CountdownL() + { + if( iCountdownSteps < KCountdownSteps ) + { + // Countdown in progress + ++iCountdownSteps; + if ( iCountdownSteps == KCountdownShowSKStep ) + { + iProgressDialog = CAknGlobalProgressDialog::NewL(); + iProgressDialog->SetImageL( + KAvkonBitmapFile, + EMbmAvkonQgn_note_query, + EMbmAvkonQgn_note_query_mask ); + iProgressDialog->ShowProgressDialogL( + iStatus, + *iCountdownText, + R_AVKON_SOFTKEYS_YES_NO ); + SetActive(); + + if ( iQueryDialog ) + { + iQueryDialog->CancelDialog(); + delete iQueryDialog; + iQueryDialog = NULL; + } + } + + if ( iProgressDialog && + iCountdownSteps >= KCountdownShowSKStep ) + { + iProgressDialog->UpdateProgressDialog( + iCountdownSteps, KCountdownSteps ); + } + } + else + { + // Countdown expired + CancelDialog(); + NotifyObserver( EAknSoftkeyYes ); + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::UpdateProgressDialog +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::UpdateProgressDialog( + const TInt aValue, + const TInt aFinalValue ) + { + if ( iProgressDialog ) + { + if ( aFinalValue >= 0 ) + { + iFinalValue = aFinalValue; + } + iProgressDialog->UpdateProgressDialog( aValue, iFinalValue ); + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::ProcessFinished +// --------------------------------------------------------------------------- +// +EXPORT_C void CFileManagerGlobalDlg::ProcessFinished() + { + if ( iProgressDialog ) + { + iProgressDialog->ProcessFinished(); + delete iProgressDialog; + iProgressDialog = NULL; + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::NotifyObserver +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::NotifyObserver( const TInt aValue ) + { + if ( iObserver ) + { + iObserver->HandleGlobalDlgResult( iType, aValue ); + } + } + +// --------------------------------------------------------------------------- +// CFileManagerGlobalDlg::HandleGlobalDlgResult +// --------------------------------------------------------------------------- +// +void CFileManagerGlobalDlg::HandleGlobalDlgResult( + TInt /*aDlgType*/, + TInt aDlgResult ) + { + NotifyObserver( aDlgResult ); + } + +// End of File