--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/ImUtils/Inc/IMUtils.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,302 @@
+/*
+* 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 DECLARATIONS
+class CEikMenuPane;
+class CGulIcon;
+// The settings can be in Cenrep/Resource file, we need
+// to have an instance of CRepository Class
+class 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