commonuis/CommonDialogs/src/CAknMemorySelectionModel.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:28:30 +0300
branchRCL_3
changeset 55 aecbbf00d063
parent 0 2f259fa3e83a
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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:  Model used in listbox of memory selection dialog.
*
*/



#ifndef C_AKNMEMORYSELECTIONMODEL_H
#define C_AKNMEMORYSELECTIONMODEL_H


#include <e32base.h>
#include <f32file.h>

#include "maknmemoryselectionmodel.h"

class CCoeEnv;
class TCFDDriveInfo;


/**
 *  A model class for memory selection. Model is derived from MDesCArray which
 *  provides an interface for list boxes to get items. Model has the
 *  responsibility to maintain a list of items for the listbox.
 *
 *  @lib CommonDialogs.lib
 *  @since S60 1.2
*/
NONSHARABLE_CLASS(CAknMemorySelectionModel)
    : public CBase,
      public MAknMemorySelectionModel
	{
public:		
    
// Constructors and destructor

	/**
	* Static constructor.
	* @return Returns a pointer to an instance of itself.
	*/
	static CAknMemorySelectionModel* NewL(
		CCoeEnv* aCoeEnv,
		MDesCArray* aDriveArray,
		TBool aShowUnavailable,
		TListBoxLayout aLayout );

	~CAknMemorySelectionModel();

// New functions

	/**
	* Gets listbox text of a memory at desired lbx index.
	* @param aIndex Index of the memory.
	* @param aItem A reference to a descriptor where the item is stored.
	*/
	void GetItem( TInt aIndex, TDes& aItem );

// Functions from base class MAknMemorySelectionModel

	/**
	* Updates items in listbox.
	*/
	void UpdateItemsL();

    /**
    * Get path of a drive referenced by given listbox item index.
    * @param aLbxItemIndex Index of the listbox item.
    * @param aDrivePath A reference to a descriptor where the drive path is
    *        stored.
    */
    void GetDrive( TInt aLbxItemIndex, TDes& aDrivePath );
    
// Functions from base class MDesCArray

	/**
	** From MDesCArray.
	*/
	TInt MdcaCount() const;

	/**
	** From MDesCArray.
	*/
	TPtrC MdcaPoint( TInt aIndex ) const;

private:	
    
// Enumerations    

    /**
    * Indexes to the memory icons owned by the listbox.
    */
    enum TMemIcons
        {
        EIconPhoneMemory = 0,
		EIconMMC,
		EIconMMCLocked,
		EIconMMCUnavailable,
		EIconRemoteDrive,
		EIconRemoteDriveActive // Icon used in D-column if drive active
        };

    /**
    * Indexes to the localized memory texts (iLocStringArray).
    */
    enum TMemLocTexts
        {
        ETextPhoneMemory = 0,
		ETextMMC,
		ETextMMCLocked,
		ETextMMCUnavailable,
		ETextRemoteDrive,
		ETextCount // Count of the localized texts - must remain last!
        };

// New functions

	/**
	* Reads localised texts from resource.
	*/
	void ReadResourcesL();

    /**
    * Creates formatted listbox item string from given drive information 
    * and appends it to iListBoxArray.
    *
    * @param aDriveInfo Drive information from which the lxx item string is
    *                   created.
    */
    void AddItemToLbxL( const TCFDDriveInfo &aDriveInfo );

    /**
    * Creates formatted listbox item and appends it to iListBoxArray.
    *
    * @param aDriveInfo Drive information from which the lxx item string is
    *                   created.
    */
    void AddPhoneItemToLbxL( const TCFDDriveInfo& aDriveInfo );
    
    /**
    * Creates formatted listbox item and appends it to iListBoxArray.
    *
    * @param aDriveInfo Drive information from which the lxx item string is
    *                   created.
    */
    void AddMMCItemToLbxL( const TCFDDriveInfo& aDriveInfo );

    /**
    * Creates formatted listbox item and appends it to iListBoxArray.
    *
    * @param aDriveInfo Drive information from which the lxx item string is
    *                   created.
    */
    void AddRemoteItemToLbxL( const TCFDDriveInfo& aDriveInfo );

    /**
    * Creates formatted listbox item and appends it to iListBoxArray.
    *
    * @param aDriveInfo Drive information from which the lxx item string is
    *                   created.
    */
    void AddDefaultItemToLbxL( const TCFDDriveInfo& aDriveInfo );
                
    /**
    * Gets resource ID for resource item.
    * @param aLocStrIndex Index of the localized item.
    * @return ID of the resource item.
    */
    TInt ResourceIDForLayoutPopupMenuItem( TInt aLocStrIndex );

    /**
    * Gets resource ID for resource item.
    * @param aLocStrIndex Index of the localized item.
    * @return ID of the resource item.
    */
    TInt ResourceIDForLayoutSettingPageItem( TInt aLocStrIndex );

    /**
    * Gets resource ID for resource item.
    * @param aLocStrIndex Index of the localized item.
    * @return ID of the resource item.
    */
    TInt ResourceIDForLayoutDoublePopupItem( TInt aLocStrIndex );

// Constructors and destructor

	/**
	* Second phase construct. Reads localised texts from resource.
	*/
	void ConstructL();

	CAknMemorySelectionModel(
		CCoeEnv* aCoeEnv,
		MDesCArray* aDriveArray,
		TBool aShowUnavailable,
		TListBoxLayout aLayout );

private: // Data

	// Own: Array of items in listbox, decorated
	RPointerArray<HBufC> iListBoxArray;

	// Own: Array for localised texts, read from resource
	RPointerArray<HBufC> iLocStringArray;

	// Ref: Pointer to control environment
	CCoeEnv* iCoeEnv;

	// Ref: Array of drives to choose from
	MDesCArray* iDriveArray;

	// Own: Defines if unavailable drives are shown in list
	TBool iShowUnavailable;

	// Own: Defines layout of the items
	TListBoxLayout iLayout;

};

#endif // C_AKNMEMORYSELECTIONMODEL_H