wvuing/ImUtils/Inc/IMUtils.h
changeset 0 094583676ce7
--- /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