/** Copyright (c) 2006 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: General utitity services for IM UI**/#ifndef IMUTILS_H#define IMUTILS_H// INCLUDES#include <badesca.h>#include "impsbuilddefinitions.h"// FORWARD DECLARATIONSclass CEikMenuPane;class CGulIcon;// The settings can be in Cenrep/Resource file, we need// to have an instance of CRepository Classclass CRepository;// CLASS DECLARATION// 401-1815 Ease of Instant Messaging branding// Code added for the above requirment/*** IM Utils internal implementation.* This object is stored in TLS.** @lib imutilsng.lib* @since -*/class CIMUtilsTlsData : public CBase { private: /** * 401-1815 Ease of Instant Messaging branding * Code added for the above requirment *Default Constructor */ CIMUtilsTlsData(); /** * Symbian 2nd phase constructor can leave. */ void ConstructL(); public: // Constructors and destructor /** * Code added for the above requirment * Two-phased constructor. * NewL */ static CIMUtilsTlsData* NewL(); /** * Code added for the above requirment * Destructor. */ virtual ~CIMUtilsTlsData(); /** * Returns the CRepository instance * @retrun CRepository - Returns reference of CRep */ CRepository& RepositoryInstance() ; private: //Instance that holds the iRepository CRepository *iRepository; };// End of code 401-1815 Ease of Instant Messaging branding/** * General utitity services for IM UI * * @lib imutilsng.lib * @since */class IMUtils { public: enum TIgnoreOfflineStatus { EVariationDoesNotAllow = -3, // -2 equals to EAknSoftkeyOk constant, // that's why -3 is used here EUserCanceled = -1, EIgnoredByUser = 1, EContactOnline = 2 }; public: /** * Formats then given raw online-list to be compatible with list query * dialogs * @param aRawOnlineList Raw data (source) * @param aFormattedOnlineList Formatted data (target) */ IMPORT_C static void PopulateFormattedOnlineListL( const MDesCArray& aRawOnlineList, CDesCArray& aFormattedOnlineList ); /** * Globally used help launcher method. * @param aContext The help context */ IMPORT_C static void LaunchHelpL( const TDesC& aContext ); /** * Gets Chat login value from shared data * @return chat login type value in wvsettings shared data */ IMPORT_C static TInt WVSettingsChatLoginValue(); /** * Find if user is on userlist using NeutralCompare * @param aUserList list of wvid's * @param aUserId user id to find * @return position of founding, KErrNotFound if not found */ IMPORT_C static TInt NeutralFind( const MDesCArray& aUserList, const TDesC& aUserId ); /** * 401-1815 Ease of Instant Messaging branding * Code added for the above requirment * Reads integer resource value from resources from Cenrep / Resource file * This function should be used if the caller is not sure if the setting * requested for is in cenrep/resource file. * @param aResourceId resource id which is read * @return value of wanted integer resource flag */ IMPORT_C static TInt IntResourceValueL( TInt aResourceId ); /** * 401-1815 Ease of Instant Messaging branding * Code added for the above requirment * Reads integer resource value only from resource file. * This function should be used only if the caller is sure that * the resource is present only in Resource file and not in Cenrep. * @param aResourceId resource id which is read * @return value of wanted integer resource flag */ IMPORT_C static TInt IntResourceValueFromRssL( TInt aResourceId ); /** * @return The maximum length for one message in characters */ IMPORT_C static TInt MaxMsgLength(); /** * @param aUid Uid for cenrep * @param aKey Central repository key * @return Value for key */ IMPORT_C static TUint32 CRKeyL( TUid aUid, TUint32 aKey ); /** * Adds menu item dynamically to menupane * @param aAdd If EFalse, this method doesn't add anything * @param aMenuPane Menu pane * @param aTextResourceId Resource id for menu item text * @param aCommandId Command id for menu item * @param aCascadeId Cascade menu resource id */ IMPORT_C static void AddMenuItemL( TBool aAdd, CEikMenuPane& aMenuPane, TInt aTextResourceId, TInt aCommandId, TInt aCascadeId = 0 ); /** * Sets bitmap/mask from source to target and set externality too * @param aTarget target for icon * @param aSource source for icon */ IMPORT_C static void SetIcon( CGulIcon& aTarget, CGulIcon& aSource ); /** * It assigns source as a target if target is NULL or * set target like source and delete source * WARNING source is expected on the top of the CleanupStack * source is removed from the Cleanupstack * * @param aTarget target for icon * @param aSource source for icon */ IMPORT_C static void UpdateIcon( CGulIcon*& aTarget, CGulIcon* aSource ); /** * Shows needed notes about offline status accordign to variation. * @precond aContactIdentification is identification of an offline contact. * @param aContactIdentification Contact identification. * @return Integer value, negative if offline status is not ignored or * allowed by variation, positive if contact is online * or user decides to ignore offline status. See possible * return values from IMUtils::TIgnoreOfflineStatus enum. */ IMPORT_C static TInt IgnoreOfflineStatusL( const TDesC& aContactIdentification ); /** * Checks flash memory level. Leaves with KErrDiskFull if * memory level below critical level. * @since * @param aRequestedSpace Needed memory estimate. Default 0 checks * if memory level is already below critical level. * @param aEmulateMemOut Can be used in DEBUG BUILDS to emulate memory * out situation, ETrue causes the method to leave * with KErrDiskfull. */ IMPORT_C static void FFSSpaceBelowCriticalLevelL( TInt aRequestedSpace = 0 , TBool#ifdef _DEBUG aEmulateMemOut#endif // _DEBUG = EFalse ); /** * Checks if the file is DRM protected or not * @since * @param aFileName Name of the file to be checked */ IMPORT_C static TBool FileProtectedL( const TFileName& aFileName ); /** * Checks if the content is DRM protected or not * * Note that this method might be quite slow and should * not be used often! * * @since * @param aContent Content to be checked */ IMPORT_C static TBool ContentProtectedL( const TDesC8& aContent ); /** * Combines two strings given resource ids. * * * The caller is responsible to delete the string * * @since 3.2 * @param TInt aResourceId1 * @param TInt aResourceId2 * @return HBufC* */ IMPORT_C static HBufC* CombineStringFromResourceLC( TInt aResourceId1, TInt aResourceId2 ); /** * 401-1815 Ease of Instant Messaging branding * Code added for the above requirment * This function is used to initialize the Central repository instance * it can be called during the init of the application. As the settings * are now moved to cenrep, the function IntResourceValueL will be using * the Cenrep instance to get the values. */ IMPORT_C static void InitializeLibL(); /** * 401-1815 Ease of Instant Messaging branding * Code added for the above requirment * This function is used to delete the CRepository instance, instantiated by * the InitializeLibL. */ IMPORT_C static void UnInitializeLib(); private: /* 401-1815 Ease of Instant Messaging branding * Code added for the above requirment */ static CIMUtilsTlsData* TlsData(); };#endif // IMUTILS_H// End of File