diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/memorycardui/src/aknMemoryCardDialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/memorycardui/src/aknMemoryCardDialog.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,233 @@ +/* +* Copyright (c) 2002-2007 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: The dialog used to unlock memory card +* +*/ + + + +#include +#include +#include +#include +#include + +#include "aknmemorycarddialog.h" + +_LIT(KResFileName, "z:\\resource\\avkon.rsc"); + +// ======== LOCAL FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// NotifierArray +// --------------------------------------------------------------------------- +// +EXPORT_C CArrayPtr* NotifierArray() + { + return 0; + } + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::NewLC +// --------------------------------------------------------------------------- +// +EXPORT_C CAknMemoryCardDialog* CAknMemoryCardDialog::NewLC( + MAknMemoryCardDialogObserver* aObserver) + { + CAknMemoryCardDialog* self = + new (ELeave) CAknMemoryCardDialog( aObserver ); + CleanupStack::PushL(self); + + // Locked (i.e. password protected) memory card support disabled / enabled. + // Variation made with __MMC_LOCK feature flag. + TInt lockedMMCsupported = EFalse; +#ifdef __MMC_LOCK + lockedMMCsupported = ETrue; +#endif + self->ConstructL( lockedMMCsupported ); + return self; + } + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::UnlockCardLD +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknMemoryCardDialog::UnlockCardLD(TBool aStore) + { +#ifdef _DEBUG + RDebug::Print(_L("CAknMemoryCardDialog::UnlockCardLD")); +#endif + + CleanupStack::Pop(); //this + iStore = aStore; + + TPath mmcRootPath = PathInfo::MemoryCardRootPath(); + TDriveUnit unit( mmcRootPath ); + TDriveNumber defaultMMCDrive = TDriveNumber( TInt( unit ) ); + StartL( defaultMMCDrive ); + } + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::SetSelfPointer +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknMemoryCardDialog::SetSelfPointer( + CAknMemoryCardDialog** aSelf) + { + iSelf = aSelf; + } + + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +// +CAknMemoryCardDialog::CAknMemoryCardDialog( + MAknMemoryCardDialogObserver* aObserver) + : CActive(CActive::EPriorityLow), + iObserver(aObserver) + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// Symbian C++ constructor +// --------------------------------------------------------------------------- +// +void CAknMemoryCardDialog::ConstructL( TBool aUnlock ) + { + iStubInUse = !aUnlock; + } + +// --------------------------------------------------------------------------- +// C++ destructor +// --------------------------------------------------------------------------- +// +CAknMemoryCardDialog::~CAknMemoryCardDialog() + { + iBoolDeletingAlready = ETrue; + + Cancel(); + + if ( iSelf ) + { + ( *iSelf ) = 0; + } + + iAknCapServerClient.Close(); + if ( !iObserverNotified && iObserver ) + { + iObserver->UnlockComplete( KErrCancel ); + } + } + +// --------------------------------------------------------------------------- +// From CActive +// --------------------------------------------------------------------------- +// +void CAknMemoryCardDialog::DoCancel() + { + iAknCapServerClient.CancelUnlockMedia(); + if ( !iBoolDeletingAlready ) + { + delete this; + } + } + +// --------------------------------------------------------------------------- +// From CActive +// --------------------------------------------------------------------------- +// +void CAknMemoryCardDialog::RunL() + { + NotifyObserverAndExit( iStatus.Int() ); + } + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::StartL +// --------------------------------------------------------------------------- +// +void CAknMemoryCardDialog::StartL( TDriveNumber& aDrive ) + { + if ( IsActive() ) + return; + + if ( !iStubInUse ) + { + iAknCapServerClient.UnlockMedia( aDrive, iStore, iStatus ); + SetActive(); + } + else + { + CAknGlobalNote*note = CAknGlobalNote::NewLC(); + // load Note text + TFileName resourceFile = KResFileName(); + CStringResourceReader* reader = + CStringResourceReader::NewLC(resourceFile); + HBufC* noteText = + reader->ReadResourceString(R_AKN_LOCKED_MEMORY_CARD_NOT_SUPPORTED) + .AllocLC(); + + // ignore return value + note->ShowNoteL( EAknGlobalInformationNote, *noteText ); + + CleanupStack::PopAndDestroy(3); // note, reader and text + + SetActive(); + TRequestStatus* ptr = &iStatus; + User::RequestComplete( ptr, KErrCancel ); + } + } + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::NotifyObserverAndExit +// --------------------------------------------------------------------------- +// +void CAknMemoryCardDialog::NotifyObserverAndExit( TInt aResult ) const + { + // ugly const cast.. + ((CAknMemoryCardDialog*)this)->iObserverNotified = ETrue; + + if ( iObserver ) + { +#ifdef _DEBUG + RDebug::Print(_L("CAknMemoryCardDialog::UnlockComplete: %D"), aResult); +#endif + iObserver->UnlockComplete(aResult); + } + + if ( !iBoolDeletingAlready ) + { + delete this; + } + } + +// --------------------------------------------------------------------------- +// CAknMemoryCardDialog::UnlockCardLD +// --------------------------------------------------------------------------- +// +EXPORT_C void CAknMemoryCardDialog::UnlockCardLD( + TDriveNumber& aDrive, TBool aStore) + { +#ifdef _DEBUG + RDebug::Print(_L("CAknMemoryCardDialog::UnlockCardLD")); +#endif + + CleanupStack::Pop(); //this + iStore = aStore; + + StartL( aDrive ); + }