diff -r 000000000000 -r e686773b3f54 contacts_plat/phonebook_thumbnails_api/inc/CPbkThumbnailManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contacts_plat/phonebook_thumbnails_api/inc/CPbkThumbnailManager.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,200 @@ +/* +* 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: +* Class which loads a thumbnail from a contact field. +* +*/ + + +#ifndef __CPbkThumbnailManager_H__ +#define __CPbkThumbnailManager_H__ + +// INCLUDES +#include + +// CONSTANTS +/// Size of thumbnail images stored to Phonebook contacts +#define KPbkPersonalImageSize TSize(80,96) + +// FORWARD DECLARATIONS +class CPbkContactEngine; +class MPbkThumbnailOperation; +class MPbkThumbnailGetObserver; +class CPbkContactItem; +class MPbkThumbnailGetImageObserver; +class MPbkThumbnailSetObserver; +class CFbsBitmap; +class CPAlbImageData; +class TPbkImageLoadParameters; + +// CLASS DECLARATION + +/** + * Phonebook thumbnail manager. Contains operations for attaching, removing and + * querying thumbnail images connected to Phonebook contacts. + * + * All the Set* operations convert the image to full color (24 bits/pixel) + * JPEG format and scale it to KPbkPersonalImageSize before connecting the + * image to a contact. Scaling does not change image's aspect ratio. + * If the original image is in JPEG format and its size is <=KPbkPersonalImageSize + * a copy of the original image is stored directly. + * + * @see MPbkThumbnailOperation + * @see MPbkThumbnailGetObserver + * @see MPbkThumbnailSetObserver + */ +class CPbkThumbnailManager : public CBase + { + public: // Interface + /** + * Creates and returns a new thumbnail manager. + * @param aEngine Phonebook contact engine + */ + IMPORT_C static CPbkThumbnailManager* NewL(CPbkContactEngine& aEngine); + + /** + * Destructor. + */ + ~CPbkThumbnailManager(); + + /** + * Gets a thumbnail bitmap from a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to retrieve the thumbnail from. + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + */ + IMPORT_C MPbkThumbnailOperation* GetThumbnailAsyncL( + MPbkThumbnailGetObserver& aObserver, + const CPbkContactItem& aContactItem); + + /** + * Gets a parameterized thumbnail bitmap + * from a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to retrieve the thumbnail from. + * @param aParams Parameters for bitmap, see TPbkImageLoadParameters. + * NOTE: iFrameNumber parameter has no meaning. + * + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + * @see TPbkImageLoadParameters + */ + IMPORT_C MPbkThumbnailOperation* GetThumbnailAsyncL( + MPbkThumbnailGetObserver& aObserver, + const CPbkContactItem& aContactItem, + TPbkImageLoadParameters& aParams); + + /** + * Gets a thumbnail image from a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to retrieve the thumbnail from. + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + */ + IMPORT_C MPbkThumbnailOperation* GetThumbnailImageAsyncL( + MPbkThumbnailGetImageObserver& aObserver, + const CPbkContactItem& aContactItem); + + /** + * Sets a thumbnail image for a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to set the thumbnail to. + * @param aBitmap Bitmap to set as the thumbnail for aContact. + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + */ + IMPORT_C MPbkThumbnailOperation* SetThumbnailAsyncL( + MPbkThumbnailSetObserver& aObserver, + CPbkContactItem& aContactItem, + const CFbsBitmap& aBitmap); + + /** + * Sets a thumbnail image for a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to set the thumbnail to. + * @param aImageBuffer Image buffer to set as the thumbnail for aContact. + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + */ + IMPORT_C MPbkThumbnailOperation* SetThumbnailAsyncL( + MPbkThumbnailSetObserver& aObserver, + CPbkContactItem& aContactItem, + const TDesC8& aImageBuffer); + + /** + * Sets a thumbnail image for a contact asynchronously. + * + * @param aObserver Observer for this operation. + * @param aContactItem Contact to set the thumbnail to. + * @param aFileName File name for a image to set as the thumbnail for aContact. + * @return a thumbnail operation object. Caller deletes the object + * when the operation is done or needs to be canceled. + */ + IMPORT_C MPbkThumbnailOperation* SetThumbnailAsyncL( + MPbkThumbnailSetObserver& aObserver, + CPbkContactItem& aContactItem, + const TDesC& aFileName); + + /** + * Returns true if aContactItem has a thumbnail image attached to it. + * @param aContactItem Contact that is queried for thumbnail. + * @return ETrue if given contact has a thumbnail, EFalse otherwise. + */ + IMPORT_C TBool HasThumbnail(const CPbkContactItem& aContactItem) const; + + /** + * Removes any thumbnail image from aContactItem. + * @param aContactItem Contact whose thumbnail is removed. + */ + IMPORT_C void RemoveThumbnail(CPbkContactItem& aContactItem); + + private: // Implementation + CPbkThumbnailManager(CPbkContactEngine& aEngine); + void ConstructL(); + + private: // Data members + /// Ref: contact engine + CPbkContactEngine& iEngine; + }; + + +/** + * Abstract asynchronous thumbnail operation. The operation can be cancelled by + * deleting it. + * + * @see CPbkThumbnailManager + */ +class MPbkThumbnailOperation + { + public: // Interface + /** + * Destructor. Cancels this thumbnail operation and releases any + * resources held by it. + */ + virtual ~MPbkThumbnailOperation() =0; + }; + +inline MPbkThumbnailOperation::~MPbkThumbnailOperation() + { + } + +#endif // __CPbkThumbnailManager_H__ + +// End of File