/*
* Copyright (c) 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: FreestyleEmailUi generic texturemanager definition
*
*/
#ifndef __FREESTYLEEMAILUI_TEXTUREMANAGER_H__
#define __FREESTYLEEMAILUI_TEXTUREMANAGER_H__
// SYSTEM INCLUDES
#include"FSDelayedLoader.h"
//<cmail> SF
#include <alf/alfimagebrush.h>
#include <alf/alfcontrol.h>
#include <alf/alftexture.h>
#include <alf/alfbitmapprovider.h>
//</cmail>
#include <AknsBasicBackgroundControlContext.h>
// FORWARD DECLARATIONS
class CAlfEnv;
class CFreestyleEmailUiAppUi;
class CAlfFrameBrush;
enum TFSEmailUiTextures
{
// FIRST TEXTURE ID
ETextureFirst = 6000, // non-texture
// OTHER
ETextureOtherFirst = 6001, // non-texture
EListTextureSelector = ETextureOtherFirst,
EListTextureNodeExpanded,
EListTextureNodeCollapsed,
EListTextureControlButton,
EListTextureMailboxDefaultIcon,
EListTextureNewEmailDefaultIcon,
EListTextureCreateNewMessageIcon,
EListControlBarMailboxDefaultIcon,
EBackgroundTextureViewerHeading,
EBackgroundTextureBar,
EBackgroundTextureThumb,
EBackgroundTextureMailList,
EListControlMarkIcon,
EListControlMenuIcon,
EMailListBarBgIcon,
ESearchLookingGlassIcon,
EControlBarListBackgroundTexture,
EControlBarButtonBackgroundTexture,
EControlBarAscendingArrowTexture,
EControlBarDescendingArrowTexture,
// MESSAGE TEXTURES
ETextureMessageFirst, // non-texture
EMessageReadIcon = ETextureMessageFirst,
EMessageLowPrioReadIcon,
EMessageLowPrioReadIconAttachment,
EMessageReadIconAttachment,
EMessageReadRepliedIcon,
EMessageReadRepliedIconAttachment,
EMessageReadRepliedHighPrioIcon,
EMessageReadRepliedHighPrioIconAttachment,
EMessageReadRepliedLowPrioIcon,
EMessageReadRepliedLowPrioIconAttachment,
EMessageReadForwardedIcon,
EMessageReadForwardedIconAttachment,
EMessageReadForwardedHighPrioIcon,
EMessageReadForwardedHighPrioIconAttachment,
EMessageReadForwardedLowPrioIcon,
EMessageReadForwardedLowPrioIconAttachment,
EMessageUnreadIcon,
EMessageUnreadIconAttachment,
EMessageLowPrioUnreadIcon,
EMessageLowPrioUnreadIconAttachment,
EMessageHighPrioReadIcon,
EMessageHighPrioReadIconAttachment,
EMessageHighPrioUnreadIcon,
EMessageHighPrioUnreadIconAttachment,
EAttachmentIcon,
EMessageUnreadForwardedIcon,
EMessageUnreadForwardedIconAttachment,
EMessageUnreadForwardedHighPrioIcon,
EMessageUnreadForwardedHighPrioIconAttachment,
EMessageUnreadForwardedLowPrioIcon,
EMessageUnreadForwardedLowPrioIconAttachment,
EMessageUnreadRepliedIcon,
EMessageUnreadRepliedIconAttachment,
EMessageUnreadRepliedHighPrioIcon,
EMessageUnreadRepliedHighPrioIconAttachment,
EMessageUnreadRepliedLowPrioIcon,
EMessageUnreadRepliedLowPrioIconAttachment,
// CALENDAR EVENT TEXTURES
ETextureCalendarFirst, // non-texture
EMessageCalInvitation = ETextureCalendarFirst,
EMessageCalInvitationRead,
EMessageCalInvitationAttachments,
EMessageCalInvitationReadAttachments,
EMessageCalInvitationHighPrio,
EMessageCalInvitationReadHighPrio,
EMessageCalInvitationAttachmentsHighPrio,
EMessageCalInvitationReadAttachmentsHighPrio,
EMessageCalInvitationLowPrio,
EMessageCalInvitationReadLowPrio,
EMessageCalInvitationAttachmentsLowPrio,
EMessageCalInvitationReadAttachmentsLowPrio,
EMessageCalInvitationCancelled,
// GRID TEXTURES
ETextureGridFirst, // non-texture
EGridInboxTexture = ETextureGridFirst,
EGridDirectoryTexture,
EGridSettingsTexture,
EGridAddNewBoxTexture,
EGridHelpTexture,
EGridAboutTexture,
EGridBackground,
// FLAG ICONS
ETextureFlagFirst, // non-texture
EFollowUpFlag = ETextureFlagFirst,
EFollowUpFlagComplete,
EFollowUpFlagList,
EFollowUpFlagCompleteList,
// FOLDER LIST ICONS
ETextureFolderFirst, // non-texture
EFolderListMoreFoldersTexture = ETextureFolderFirst,
EFolderListInboxTexture,
EFolderListInboxSubfoldersTexture,
EFolderListOutboxTexture,
EFolderListDraftsTexture,
EFolderListSentTexture,
EFolderListDeletedItemsTexture,
EFolderListServerFoldersTexture,
EFolderListEmailAccountTexture,
EFolderListMoreFoldersTexturePopup,
EFolderListInboxTexturePopup,
EFolderListInboxSubfoldersTexturePopup,
EFolderListOutboxTexturePopup,
EFolderListDraftsTexturePopup,
EFolderListSentTexturePopup,
EFolderListDeletedItemsTexturePopup,
EFolderListServerFoldersTexturePopup,
EFolderListEmailAccountTexturePopup,
// SORT LIST ICONS
ESortListAttachmentAscTexturePopup,
ESortListAttachmentDescTexturePopup,
ESortListDateAscTexturePopup,
ESortListDateDescTexturePopup,
ESortListFollowAscTexturePopup,
ESortListFollowDescTexturePopup,
ESortListPriorityAscTexturePopup,
ESortListPriorityDescTexturePopup,
ESortListSenderAscTexturePopup,
ESortListSenderDescTexturePopup,
ESortListSubjectAscTexturePopup,
ESortListSubjectDescTexturePopup,
ESortListUnreadAscTexturePopup,
ESortListUnreadDescTexturePopup,
ESortListAttachmentAscTexture,
ESortListAttachmentDescTexture,
ESortListDateAscTexture,
ESortListDateDescTexture,
ESortListFollowAscTexture,
ESortListFollowDescTexture,
ESortListPriorityAscTexture,
ESortListPriorityDescTexture,
ESortListSenderAscTexture,
ESortListSenderDescTexture,
ESortListSubjectAscTexture,
ESortListSubjectDescTexture,
ESortListUnreadAscTexture,
ESortListUnreadDescTexture,
// STATUS INDICATOR ICONS
ETextureStatusFirst, // non-texture
EStatusTextureSynchronising = ETextureStatusFirst,
EStatusTextureConnected,
EStatusTextureConnecting,
EStatusTextureDisconnectedGeneral,
EStatusTextureDisconnectedError,
EStatusTextureDisconnectedLowBattery,
EStatusTextureMailSent,
// VIEWER TEXTURES
ETextureViewerFirst, // non-texture
EViewerTextureHeaderBackGround = ETextureViewerFirst,
EViewerHighlightTexture,
// COMPOSER TEXTURES
ETextureComposerFirst, // no-texture
EComposerTexturePriorityLow = ETextureComposerFirst,
EComposerTexturePriorityHigh,
// ATTACHMENT ICONS
ETextureAttachmentsFirst, // non-texture
EAttachmentsDocFile = ETextureAttachmentsFirst,
EAttachmentsHtmlFile,
EAttachmentsImageFile,
EAttachmentsPdfFile,
EAttachmentsPptFile,
EAttachmentsRtfFile,
EAttachmentsUnknownFile,
EAttachmentsXls,
EAttachmentsNotDownloaded,
EAttachmentsCancelDownload,
EAttachmentsDownload,
EAttachmentsSaveAll,
EAttachmentsCancelAll,
EAttachmentsViewAll,
EMarkingModeBackgroundIcon,
// TEXTURE COUNT
ETextureCount,
// Branded mailbox icons. Max 101 icons 3 sizes of each
// (Launcher grid, Inbox view and Folders dropdown view)
EBrandedIconStart = 8000,
EBrandedIconEnd = 8303,
// GRID ECOM PLUGIN ICONS, Dynamically updated,
// do not add icons after this
EGridPluginIconFirst
};
class CFreestyleEmailUiTextureManager:
public CAlfControl,
public MAlfBitmapProvider,
public MFsDelayedLoadingInterface
{
// to prevent creating multiple instances NewL has been hidden
// and AppUi has been declared as friend class
friend class CFreestyleEmailUiAppUi;
public:
// Get correct backgroung image for current resolution
CAlfTexture& BackgroundForThisResolutionL();
// Get flush background image for the current resolution
CAlfTexture& WatermarkBackgroundForThisResolutionL();
// Get any texture by ID
CAlfTexture& TextureByIndex( TFSEmailUiTextures aIndex );
// Clear any texture by ID
void ClearTextureByIndex( TFSEmailUiTextures aIndex );
// Get new skinned selector brush object for gen ui list.
// Ownership is NOT transferred to caller.
CAlfFrameBrush* ListSelectorBrushL();
// Get new skinned grid selector brush object
// Ownership is NOT transferred to caller.
CAlfFrameBrush* GridSelectorBrushL();
// Get new skinned selector brush object for gen ui control bar.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewCtrlBarSelectorBrushLC();
// <cmail>
// Get new skinned selector brush object for gen ui popup list.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewListSelectorBrushL();
// </cmail>
// Get new scrollbar top background object.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewScrollBarTopBgBrushLC();
// Get new scrollbar bottom background object.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewScrollBarBottomBgBrushLC();
// Get new scrollbar center background object.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewScrollBarCenterBgBrushLC();
// Get new scrollbar thumb object.
// Ownership IS transferred to caller.
CAlfFrameBrush* NewScrollBarThumbBrushLC();
// Get new mail list separator brush
// Ownership IS transferred to caller.
CAlfFrameBrush* NewMailListSeparatorBgBrushLC();
// Get marking mode background brush
// Ownership IS transferred to caller.
CAlfImageBrush* NewMailListMarkingModeBgBrushLC();
// Get new mail list separator brush
// Ownership IS transferred to caller.
CAlfImageBrush* NewControlBarListBgBrushLC();
// Get new controlbar button bg brush
// Ownership IS transferred to caller.
CAlfImageBrush* NewControlBarButtonBgBrushLC();
// <cmail>
// Ownerhip not transfered.
CAlfFrameBrush* TitleDividerBgBrushL();
// </cmail>
// Create branded mailbox icon into TextureManager
void CreateBrandedMailboxTexture( CGulIcon* aIcon, const TUid aPluginId, const TUint aMailboxId, const TSize& aSize );
// Get branded mailbox icon
CAlfTexture& TextureByMailboxIdL( const TUid aPluginId, const TUint aMailboxId, const TSize& aSize );
public: // from MAlfBitmapProvider
void ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMaskBitmap);
public: // from MFsDelayedLoadingInterface
/**
* DelayLoadCallback
* Delayed loading callback
* @return ETrue to keep calling, EFalse to stop callbacks
*/
TInt DelayLoadCallback();
private:
// This class should not be used directly, use iAppUi->TextureManger() instance
static CFreestyleEmailUiTextureManager* NewL( CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi );
virtual ~CFreestyleEmailUiTextureManager();
CFreestyleEmailUiTextureManager( CAlfEnv& aEnv, CFreestyleEmailUiAppUi* aAppUi );
void ConstructL(CAlfEnv& aEnv);
void CreateTexturesL();
void InitTextureArray();
void LoadTextureL( TFSEmailUiTextures aTextureId ); // CHECKLATER - is this ok? see migration 3.12.1
// <cmail> S60 Skin support
void GetBackgroundBitmapL (CFbsBitmap*& bitmap) const;
void DrawContextL (CFbsBitmap*& bitmap, TAknsItemID id, TSize rsize) const;
// </cmail>
private:
// ALF environment - CHECKLATER - added this myself, but should be alright
CAlfEnv* iEnv;
CFreestyleEmailUiAppUi* iAppUi;
CAlfFrameBrush* iFrameBrush;
//<cmail>
CAlfFrameBrush* iNewFrameBrush;
CAlfFrameBrush* iTitleDividerBgBrush;
//</cmail>
/**
* array for holding texture objects
*/
RPointerArray<CAlfTexture> iTextures;
/**
* array for holding branded mailbox icons
*/
RPointerArray<CAlfTexture> iBrandedMailboxIcons;
RArray<TUid> iPluginId;
RArray<TUint> iMailboxId;
RArray<TSize> iSize;
/*
* Temporary variables for holding the mailbox icon and id
* before create.
*/
CFbsBitmap* iTmpBitmap;
CFbsBitmap* iTmpMaskBitmap;
TUid iTmpPluginId;
TUint iTmpMailboxId;
TSize iTmpSize;
/**
* index indicating delay loading progress within
* textures array
*/
TInt iDelayLoadIndex;
};
#endif // __FREESTYLEEMAILUI_LISTCONTROL_H__