--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/mce/inc/MceBitmapResolver.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,262 @@
+/*
+* Copyright (c) 2002 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:
+* Handles different mce bitmaps.
+* First collects all the bitmaps from different mtm's and also local
+* folder's bitmaps to icon array.
+*
+*/
+
+
+
+#ifndef MCEBITMAPRESOLVER_H
+#define MCEBITMAPRESOLVER_H
+
+// INCLUDES
+
+#include "mcetemplate.h"
+#include <AknsUtils.h>
+
+// CONSTANTS
+const TInt KMceMmsPriority = 1; // For loading the MMS priority icons
+
+// DATA TYPES
+// these should correspond to the icon array created in CMceBitmapResolver::ConstructL
+enum TMceBitmapArrayIndexes
+ {
+ EMceBitmapIndexMessageSelected = 0,
+ EMceBitmapIndexWrite,
+ EMceBitmapIndexRemote,
+ EMceBitmapIndexRemoteNew,
+ EMceBitmapIndexDr,
+ EMceBitmapIndexInbox,
+ EMceBitmapIndexInboxNew,
+ EMceBitmapIndexDocuments,
+ EMceBitmapIndexDocumentsNew,
+ EMceBitmapIndexDrafts,
+ EMceBitmapIndexSent,
+ EMceBitmapIndexOutbox,
+ EMceBitmapIndexUnknown,
+ EMceBitmapIndexFolderTemp,
+ EMceBitmapIndexFolderSmall,
+ EMceBitmapIndexFolderSmallNew,
+ EMceBitmapIndexAttachment,
+ EMceBitmapIndexMailboxConnectionOn,
+ EMceBitmapIndexAlwaysAdd,
+ EMceBitmapIndexInactiveAdd,
+ EMceBitmapIndexAlwaysRoaming,
+ EMceBitmapIndexPriorityHigh,
+ EMceBitmapIndexPriorityLow,
+ EMceBitmapIndexReplaceMtmIcon // this MUST be last
+ };
+
+// FORWARD DECLARATIONS
+class CMsvSession;
+class MMtmUiDataRegistryObserver;
+
+// CLASS DECLARATION
+
+/**
+* Helper class for bitmap resolver.
+*/
+class TMceBitmapListItem
+ {
+ public: // Data
+ TBool iExtraItem;
+ TUid iType; // if extra item, includes application uid to load correct application icon...
+ TUid iMtm;
+ TInt iIndex; // probably not neccessary
+ TMsvId iId; // needed with inbox, outbox, etc.
+ };
+
+/**
+* Handles different mce bitmaps.
+* First collects all the bitmaps from different mtm's and also local
+* folder's bitmaps to icon array.
+*/
+class CMceBitmapResolver : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMceBitmapResolver* NewL(
+ CMsvSessionPtr aSession,
+ MMtmUiDataRegistryObserver& aRegObserver,
+ TBool aLargeIcons );
+
+ /**
+ * Destructor.
+ */
+ ~CMceBitmapResolver();
+
+ /**
+ * Returns pointer to icon array.
+ * @return Pointer to icon array.
+ */
+ CArrayPtrFlat<CGulIcon>* IconArray();
+
+ /**
+ * Can be used to get index of the bitmap of the message.
+ * @param aItem: Fill TMceBitmapListItem fields before calling this.
+ * @return Index of the bitmap requested.
+ */
+ TInt BitmapIndex( const TMceBitmapListItem& aItem ) const;
+
+ /**
+ * Can be used to get index of the bitmap of the message.
+ * Loads bitmap from the mtm ui data and changes it to be last icon in icon array
+ * @param aEntry: Fill TMsvEntry fields before calling this.
+ * @return Index of the bitmap requested.
+ */
+ TInt BitmapIndex( const TMsvEntry& aEntry );
+
+#ifdef RD_MSG_NAVIPANE_IMPROVEMENT
+ /**
+ * Can be used to get index of the bitmap of the message.
+ * Loads bitmap from the mtm ui data and changes it to be last icon in icon array
+ * Since 5.0
+ * @param aEntry: Fill TMsvEntry fields before calling this.
+ * @param aMessageCount: number of messages under the entry (0 if entry is not folder)
+ * @return Index of the bitmap requested.
+ */
+ TInt BitmapIndex( const TMsvEntry& aEntry, TInt& aMessageCount );
+
+ /**
+ * Checks if entry aId has unread children.
+ * Since 5.0
+ * @param aId: folder or service to be checked.
+ * @param aMessages:number of messages under the folder or service.
+ * @param aUnreadMessages: number of unread messages under the folder or service.
+ * @return ETrue if unread children found.
+ */
+ TBool HasUnreadMessagesL( const TMsvId aId, TInt& aMessages, TInt& aUnreadMessages );
+#else
+
+ /**
+ * Checks if entry aId has unread children.
+ * @param aId: folder or service to be checked.
+ * @return ETrue if unread children found.
+ */
+ TBool HasUnreadMessagesL( const TMsvId aId );
+#endif // RD_MSG_NAVIPANE_IMPROVEMENT
+
+ /**
+ * Changes the bitmaps in icon array, if skin is changed
+ */
+ void ChangeBitmapInIconArrayL( );
+
+ /**
+ * Loads correct bitmap of the message from the mtm ui data and changes
+ * it to the last of the iIcons array. In ConstructL dummy icon is added to the
+ * last so that it can be changed.
+ * @param aEntry: entry to be loaded.
+ * aPriority ETrue if the method is called to retrieve the icon of
+ * high or low priority of a MMS
+ * @param aHasUnreadMessages ETrue if current service/folder has unread messages, othervise EFalse.
+ * this is needed because BitmapIndex is already doing this calculation so prevent duplicate calculation.
+ * @return Index of the bitmap requested.
+ */
+#ifndef RD_MSG_NAVIPANE_IMPROVEMENT
+ TInt LoadBitmapL( const TMsvEntry& aEntry, TBool aPriority = EFalse );
+#else
+ TInt LoadBitmapL( const TMsvEntry& aEntry, TBool aHasUnreadMessages );
+#endif
+ /**
+ * Loads and adds local bitmap to icon array.
+ * @param aId
+ * @param aFileName
+ * @param aBitmapIndex
+ * @param aListItem
+ */
+ void CreateAndAppendIconL(
+ TAknsItemID aId,
+ const TDesC& aFileName,
+ TInt aBitmapIndex,
+ const TMceBitmapListItem* aListItem = NULL,
+ TBool aColorSkinnedIcon = EFalse );
+
+
+ /**
+ * Returns bitmap index which is used as placeholder for
+ * mtm icons
+ * @since 3.0
+ * @return index in the icon array
+ */
+ TInt MtmIconIndex();
+
+ /**
+ * description length defined in muiu cenrep file.
+ * KCRUidMuiuSettings / KMuiuDescriptionLength
+ */
+ TInt DescriptionLength();
+
+
+ private:
+
+ /**
+ * Constructor.
+ */
+ CMceBitmapResolver(
+ CMsvSessionPtr aSession,
+ MMtmUiDataRegistryObserver& aRegObserver,
+ TBool aLargeIcons );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Loads and adds local bitmap to icon array. Uses \system\data\muiu.mbm
+ * @param aId
+ * @param aBitmapIndex
+ * @param aListItem
+ */
+ void CreateAndAppendIconL(
+ TAknsItemID aId,
+ TInt aBitmapIndex,
+ const TMceBitmapListItem* aListItem = NULL );
+
+ /**
+ * Returns bitmap index of the entry
+ * @param aEntryId: id of the entry to be returned
+ * @return index of the bitmap
+ */
+ TInt LocalEntryBitmapIndex( TMsvId aEntryId ) const;
+
+ private: // Data
+ MMtmUiDataRegistryObserver& iRegObserver;
+ CMsvSessionPtr iSession;
+ TBool iLargeIcons; // ETrue if large icons == main view
+
+ CArrayPtrFlat<CGulIcon>* iIcons;
+ CArrayFixFlat<TMceBitmapListItem>* iIconIndexes;
+
+ // security data caging
+ TFileName iFilenameMuiu;
+ TFileName iFilenameAvkon;
+ TInt iBitmapsLoaded;
+
+ TInt iDescriptionLength;
+
+
+ };
+
+
+#endif
+
+
+// End of file