taskswitcher/contextengine/hgfswserver/engine/inc/hgfswiconcache.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:10:36 +0200
changeset 2 08c6ee43b396
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* ============================================================================
*  Name        : hgfswiconcache.h
*  Part of     : Hg Teleport / Fast Swap module
*  Description : Icon cache
*  Version     : %version: 2 %
*
*  Copyright 2008 Nokia.  All rights reserved.
*  This material, including documentation and any related computer
*  programs, is protected by copyright controlled by Nokia.  All
*  rights are reserved.  Copying, including reproducing, storing,
*  adapting or translating, any or all of this material requires the
*  prior written consent of Nokia.  This material also contains
*  confidential information which may not be disclosed to others
*  without the prior written consent of Nokia.
* ============================================================================
*/

#ifndef HGFSWICONCACHE_H_
#define HGFSWICONCACHE_H_

#include <e32base.h>
#include <e32hashtab.h>

class CFbsBitmap;
class CGulIcon;

/**
 * App icon cache.
 */
NONSHARABLE_CLASS( CHgFswIconCache ) : public CBase
    {
public:

    /**
     * Two phased constructor.
     */
    static CHgFswIconCache* NewL();

    /**
     * Two phased constructor.
     */
    static CHgFswIconCache* NewLC();

    /**
     * Destructor
     */
    ~CHgFswIconCache();

    /**
     * Gets the bitmaps associated with the given app from the cache.
     * If not found then creates the app icon, stores it to the cache,
     * and returns that.
     * @param   aAppUid application uid
     * @param   aBitmap bitmap ptr, ownership NOT transferred to caller, or NULL
     * @param   aMask   mask ptr, ownership NOT transferred to caller, or NULL
     */
    void GetIconL( const TUid& aAppUid,
        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );

    /**
     * Sets the ptrs to the default icon.
     * Ownership not transferred to caller.
     */
    void DefaultIcon( CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );

private:
    /**
     * Default constructor.
     */
    CHgFswIconCache();

    /**
     * Second phase construction
     */
    void ConstructL();

    /**
     * Retrieves the bitmap/mask for the icon of the given app.
     * @param   aAppUid application uid
     * @param   aBitmap bitmap ptr, ownership transferred to caller, or NULL
     * @param   aMask   mask ptr, ownership transferred to caller, or NULL
     */
    void GetAppIconL( const TUid& aAppUid,
        CFbsBitmap*& aBitmap, CFbsBitmap*& aMask );

private:
    struct SHgBitmapPair
        {
        SHgBitmapPair( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
            : iBitmap( aBitmap ), iMask( aMask ) { }
        CFbsBitmap* iBitmap;
        CFbsBitmap* iMask;
        };
    RHashMap<TInt, SHgBitmapPair> iAppIcons;
    
    CGulIcon* iDefaultIcon;
    };

#endif