uigraphics/AknIcon/srvinc/AknIconSrvCache.h
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/srvinc/AknIconSrvCache.h	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,103 @@
+/*
+* 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:   
+*
+*/
+
+
+
+#ifndef AKN_ICON_SRV_CACHE_H
+#define AKN_ICON_SRV_CACHE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <AknsSrvClient.h>
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CAknIconServer;
+class CAknIconSrvIconItem;
+class CAknIconSrvPrecacheItem;
+class TResourceReader;
+class CAknsBitmapItemDef;
+
+// FUNCTION PROTOTYPES
+GLREF_C TInt PrecacheThreadFunction( TAny* aParameters );
+
+// CLASS DECLARATION
+
+/**
+* Icon cache configuration (static and dynamic).
+*/
+NONSHARABLE_CLASS(CAknIconSrvCache) : public CBase
+    { 
+    public:  // Constructors and destructor
+
+        static CAknIconSrvCache* NewL( CAknIconServer& aServer );
+        virtual ~CAknIconSrvCache();
+
+    public:  // New methods
+
+
+        // Dynamic bitmap caching
+        TBool CacheUnusedIcon( CAknIconSrvIconItem& aItem );
+        void RemoveIfCached( CAknIconSrvIconItem& aItem );
+        void DynamicToPrecache( CAknIconSrvIconItem& aItem );
+        // Other utility methods
+        inline RThread PrecacheThread();
+        inline RPointerArray<CAknIconSrvPrecacheItem>& PrecacheItems();
+
+
+        void EnableCache( TBool aEnable );
+
+        // For debug only
+        void ResetDynamicCache();
+
+    private: // New methods
+
+        static TInt IconDataSize( CAknIconSrvIconItem& aItem );
+
+        CAknIconSrvCache( CAknIconServer& aServer );
+        void ConstructL();
+        void UpdateDynamicCacheSize();        
+
+    private:     // data
+
+
+        TInt iConfiguredMaxDynamicCacheSize;
+        TInt iMaxDynamicCacheSize;
+
+        // Dynamic cache info
+        TInt iDynamicCacheSize;
+        RPointerArray<CAknIconSrvIconItem> iDynamicallyCached;
+
+        // Precache info
+        // size of all items in precache
+        TInt iPrecacheSize;
+        // items marked to be precached
+        RPointerArray<CAknIconSrvIconItem> iPrecache;
+        
+        CAknIconServer& iServer;
+#ifdef PRECACHE2
+        RThread iPrecacheThread2;
+#endif
+
+        
+    };
+
+
+#endif // AKN_ICON_SRV_CACHE_H
+
+// Enf of File