uifw/AvKon/memorycardui/src/aknMemoryCardDialog.cpp
changeset 0 2f259fa3e83a
--- /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 <stringresourcereader.h>
+#include <AknGlobalNote.h>
+#include <avkon.rsg>
+#include <pathinfo.h>
+#include <f32file.h>
+
+#include "aknmemorycarddialog.h"
+
+_LIT(KResFileName,         "z:\\resource\\avkon.rsc");
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// NotifierArray
+// ---------------------------------------------------------------------------
+//
+EXPORT_C   CArrayPtr<MEikSrvNotifierBase2>* 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 );
+    }