filesystemuis/memstatepopup/src/cmemstatepopupimpl.cpp
branchRCL_3
changeset 20 491b3ed49290
parent 19 95243422089a
child 21 65326cf895ed
--- a/filesystemuis/memstatepopup/src/cmemstatepopupimpl.cpp	Thu Aug 19 09:42:45 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-/*
-* 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:  Memory state popup implementation
-*
-*/
-
-
-// SYSTEM INCLUDES
-#include <e32std.h>
-#include <AknProgressDialog.h>
-#include <aknlists.h>
-#include <ConeResLoader.h>
-#include <bautils.h>
-#include <StringLoader.h>
-#include <aknPopup.h>
-#include <memstatepopup.rsg>
-#include <f32file.h>
-#include <data_caging_path_literals.hrh> 
-
-// USER INCLUDES
-#include "msputil.h"
-#include "cmemstatepopup.h"
-#include "cmemstatepopupimpl.h"
-#include "cmemscaneventreceiver.h"
-
-//  CONSTANTS
-_LIT( KDirAndFile,"Z:MemStatePopup.RSC" );
-_LIT( KMemListSeparator, "\t" );
-
-// Max length of a list row
-// Has to be big enough to hold "%N %U"
-const TInt KListItemMaxLength = 32;
-
-// ---------------------------------------------------------------------------
-
-CMemStatePopupImpl::~CMemStatePopupImpl( )
-    {
-    Cancel();
-    // Close the resource
-    iResLoader.Close( );
-
-    if( iWaitDialog )
-        {
-        iWaitDialog->SetObserver( NULL );
-        delete iWaitDialog;
-        }
-
-    delete iEventReceiver; // deletes also scan engine and server 
-     
-    delete iGroupNames;
-    delete iListModel;
-    delete iListBox;
-    delete iScanResults;
-
-
-    if( iOwnsUtil )
-        {
-        // Delete only if the actual dialog was launched
-        delete iUtil;
-        }
-
-    // Try to delete also iPopup in case of leave
-    // Must call CBase's destructor
-    // because CAknPopupList destructor is protected
-    delete ( CBase* ) iPopup;
-    }
-
-// ---------------------------------------------------------------------------
-
-CMemStatePopupImpl::CMemStatePopupImpl( TDriveNumber aDrive, const TDesC& aTitle ) :
-            CActive(EPriorityStandard),
-            iFinished( EFalse ),
-            iDrive( aDrive ),
-            iTitle( const_cast<TDesC*> (&aTitle) ),
-            iCoeEnv( *CCoeEnv::Static( ) ),
-            iResLoader( iCoeEnv ),
-            iOwnsUtil( ETrue )
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-
-// Used by GetUtilL
-CMemStatePopupImpl::CMemStatePopupImpl( ) :
-            CActive(EPriorityStandard),
-            iFinished( EFalse ),
-            iDrive( EDriveC ),
-            iCoeEnv( *CCoeEnv::Static( ) ),
-            iResLoader( iCoeEnv ),
-            iOwnsUtil( EFalse )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::ConstructL( )
-    {
-    OpenResourceAndReadArrayL( );
-
-    // Instantiate event receiver, memory scan engine and server
-    iEventReceiver = CMemScanEventReceiver::NewL( *this );
-
-    // Get data group names from engine
-    iGroupNames = iEventReceiver->DataGroupsL( );
-
-    // Create popup
-    ConstructPopupL( );
-
-    // Create wait dialog
-    iWaitDialog = new( ELeave ) CAknWaitDialog(
-                    reinterpret_cast< CEikDialog** >( &iWaitDialog ) );
-    iWaitDialog->SetCallback( this );
-    iWaitDialog->PrepareLC( R_MEMSTATE_WAIT_NOTE );
-    
-    StartObserver();
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::RunLD( TDriveNumber aDrive, const TDesC& aTitle )
-    {
-    CMemStatePopupImpl* self = new( ELeave ) CMemStatePopupImpl( aDrive, aTitle );
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-
-    // Run the actual process
-    self->ExecuteL( );
-
-    CleanupStack::PopAndDestroy( self );
-    }
-
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::GetUtilL( CMSPUtil*& aUtil )
-    {
-    CMemStatePopupImpl* self = new( ELeave ) CMemStatePopupImpl;
-    CleanupStack::PushL( self );
-
-    // Read the unit array from resource
-    self->OpenResourceAndReadArrayL( );
-    aUtil = self->iUtil; // iUtil is not deleted
-
-    CleanupStack::PopAndDestroy( self );
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::StartL( )
-    {
-#ifdef _DEBUG
-    RDebug::Print( _L( "Scanning started!" ) );
-#endif
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::QuitL( TInt /*aReason*/ )
-    {
-#ifdef _DEBUG
-    RDebug::Print( _L( "Scanning ended!" ) );
-#endif
-    if( !iFinished )
-        {
-        // Tell waitdialog that it can quit now
-        iWaitDialog->ProcessFinishedL( );
-        iFinished = ETrue;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::ErrorL( TInt aError )
-    {
-#ifdef _DEBUG
-    RDebug::Print( _L( "Error scanning memory: %d" ), aError );
-#endif
-
-    // getting rid of UREL compiler warning
-    if( !aError ) 
-        {
-        aError = KErrNone;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::DialogDismissedL( TInt aButtonId )
-    {
-
-    // Cancel is pressed while scanning is in progress
-    if( iEventReceiver->ScanInProgress( ) )
-        {
-        iFinished = ETrue;
-        iEventReceiver->Cancel( ); // Stop scanning
-        }
-
-    // Cancel is pressed while wait note is on screen (scanning may be completed)
-    if( aButtonId == EAknSoftkeyCancel ) // instead of EAknSoftkeyDone
-        {
-        iPopup->CancelPopup( ); // Remove memory state popup from screen
-        return;
-        }
-
-    // Get the new result array
-    delete iScanResults;
-    iScanResults = NULL;
-    TRAPD( err, iScanResults = iEventReceiver->ScanResultL( ) );
-    if( err != KErrNone )
-        {
-        iPopup->CancelPopup( ); // Remove memory state popup from screen
-        return;
-        }
-    RefreshL( );
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::ConstructPopupL( )
-    {
-    iListBox = new( ELeave ) CMemStateListBox( );
-
-    iPopup = CAknPopupList::NewL( iListBox, R_AVKON_SOFTKEYS_OK_EMPTY,
-                            AknPopupLayouts::EMenuGraphicHeadingWindow );
-    iPopup->SetTitleL( *iTitle );
-
-    // Set up listbox
-    iListBox->ConstructL( iPopup, EAknListBoxViewerFlags );
-
-    // Create listbox model and give the model to the listbox
-    iListModel = new( ELeave ) CDesCArraySeg( iGroupNames->Count( ) );
-
-    // Create scroll indicator
-    iListBox->CreateScrollBarFrameL( ETrue );
-    iListBox->ScrollBarFrame( )->SetScrollBarVisibilityL(
-                    CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-    iListBox->Model( )->SetItemTextArray( iListModel );
-    iListBox->Model( )->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::ExecuteL( )
-    {
-    // Show wait dialog
-    iWaitDialog->RunLD( );
-
-    // Start the scanning
-    User::LeaveIfError(iEventReceiver->ScanL( iDrive ));
-    
-    // Get the result array
-    iScanResults = iEventReceiver->ScanResultL( );
-   
-    // Set all results zero, so that no actual results are shown
-    // before the scan is done.
-    NullifyResults( );
-
-    // Update the list with initial values (0's)
-    RefreshL( );
-
-    // Show popup
-    iPopup->ExecuteLD( );
-    iPopup = NULL; // Has to be set NULL because deleted in destructor
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::RefreshL( )
-    {
-    //TBuf< KListItemMaxLength > result;
-    TBuf< KListItemMaxLength > unitText;
-    TBuf< KListItemMaxLength > tempText;
-    TPtrC unit;
-    TInt64 res64( 0 );
-    TInt count( iScanResults ? iScanResults->Count( ) : 0 );
-    TInt maxGroupName(0);
-    
-    for( TInt i = 0; i < iGroupNames->Count(); i++ )
-        {
-        if( maxGroupName < ( *iGroupNames )[ i ].Length() )
-            {
-            maxGroupName = ( *iGroupNames )[ i ].Length();
-            }
-        }
-        
-    // Allocate memory for size, unit text and actual group name
-    HBufC* result = HBufC::NewLC( maxGroupName + 2*KListItemMaxLength );
-    TPtr resultPtr( result->Des() );
-    HBufC* unitFormatter = StringLoader::LoadLC( R_UNIT_FORMATTER, &iCoeEnv );
-
-    iListModel->Reset( );
-
-    // Go through the result array and append to the model as text
-    for( TInt i = 0; i < count; i++ )
-        {
-        res64 = ( *iScanResults )[ i ];
-
-        unit.Set( iUtil->SolveUnitAndSize( res64 ) );
-        StringLoader::Format( tempText, *unitFormatter, 0, I64INT( res64 ) );
-        StringLoader::Format( unitText, tempText, 1, unit );
-        resultPtr.Zero( );
-
-        // The actual listbox row is constructed here
-        // iListModel is just an array of descriptors
-        if ( User::Language() == ELangArabic )
-            {
-            resultPtr.Append( KRightToLeftMark );
-            }
-        resultPtr.Append( unitText );
-        resultPtr.Append( KMemListSeparator );
-        if( i < iGroupNames->Count() )
-            {
-            resultPtr.Append( ( *iGroupNames )[ i ] );
-            }
-        else
-            {
-            resultPtr.Append( ( *iGroupNames )[ 0 ] );
-            }
-        iListModel->AppendL( resultPtr );
-        }
-
-    CleanupStack::PopAndDestroy( unitFormatter );
-    CleanupStack::PopAndDestroy( result );
-
-    // Update the listbox
-    iListBox->HandleItemAdditionL( );
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::NullifyResults( )
-    {
-    // Set all results to zero
-    if( iScanResults )
-        {
-        TInt count( iScanResults->Count( ) );
-        for( TInt t = 0; t < count; t++ )
-            {
-            ( *iScanResults )[ t ] = 0;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-
-void CMemStatePopupImpl::OpenResourceAndReadArrayL( )
-    {
-    // Open dll resource
-    
-    TParse* fp = new(ELeave) TParse(); 
-    fp->Set(KDirAndFile, &KDC_RESOURCE_FILES_DIR, NULL); 
-    TFileName fileName( fp->FullName() );
-    delete fp;
-
-    BaflUtils::NearestLanguageFile( iCoeEnv.FsSession( ),
-                                    fileName );
-    iResLoader.OpenL( fileName );
-
-    // Read localised unit texts from resource
-    TResourceReader reader;
-    iCoeEnv.CreateResourceReaderLC( reader, R_ARRAY_UNITS );
-    CDesCArrayFlat* units = reader.ReadDesCArrayL( );
-    CleanupStack::PushL( units );
-    iUtil = CMSPUtil::NewL( units ); // Give the array to the util class
-    CleanupStack::Pop( units );
-    CleanupStack::PopAndDestroy(); // Private HBufC8* variable
-                                   // of CreateResourceReaderLC()
-    }
-
-// --------------------------------------------------------------------------- 
-void CMemStatePopupImpl::RunL()
-    {
-    TVolumeInfo volInfo;
-    TInt err = iCoeEnv.FsSession().Volume( volInfo, iDrive );
-    if(err != KErrNone)
-        {
-        iPopup->CancelPopup( );
-        }
-    else
-        {
-        StartObserver();
-        }
-    }
-
-// --------------------------------------------------------------------------- 
-void CMemStatePopupImpl::DoCancel()
-    {
-    iCoeEnv.FsSession().NotifyChangeCancel();
-    }
-
-// --------------------------------------------------------------------------- 
-void CMemStatePopupImpl::StartObserver()
-    {
-    if ( IsActive() ) 
-        {
-        Cancel();
-        }
-    iCoeEnv.FsSession().NotifyChange( ENotifyDisk, iStatus );
-    SetActive();
-    }
-
-// End of File