deviceupdatesui/deviceupdates/inc/nsmldmsyncutil.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:24:32 +0300
changeset 21 c707676bf59f
parent 18 7d11f9a6646f
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* Copyright (c) 2005 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:  Utility classes.
*
*/


#ifndef NSMLDMSYNCUTIL_H
#define NSMLDMSYNCUTIL_H

// INCLUDES
#include <e32base.h>

// CLASS DECLARATION

/**
* TUtil
* 
* This class contains general utility functions. 
*/
NONSHARABLE_CLASS (TUtil)
	{
    public:
    
        /**
        * Panic
        * @param aReason.
        * @return None
        */
        static void Panic( TInt aReason );
        
        /**
        * String copy tool
        * @param aTarget.
        * @param aSource.
        * @return None
        */        
		static void StrCopy( TDes& aTarget, const TDesC& aSource );
        /**
        * String copy tool
        * @param aTarget.
        * @param aSource.
        * @return None
        */      		
		static void StrCopy( TDes& aTarget, const TDesC8& aSource );
        
        /**
        * String copy tool
        * @param aTarget.
        * @param aSource.
        * @return None
        */      		
		static void StrCopy( TDes8& aTarget, const TDesC& aSource );
        
        /**
        * String append tool
        * @param aTarget.
        * @param aSource.
        * @return None
        */      		
		static void StrAppend( TDes& aTarget, const TDesC& aSource );
        
        /**
        * String insert tool
        * @param aTarget.
        * @param aSource.
        * @return None
        */      		
		static void StrInsert( TDes& aTarget, const TDesC& aSource );
        
        /**
        * Convert string to int
        * @param aText.
        * @param aNum.
        * @return None
        */		
		static TInt StrToInt( const TDesC& aText, TInt& aNum );
        
        /**
        * Check whether textline is empty
        * @param aText.
        * @return ETrue if empty
        */				
		static TBool IsEmpty( const TDesC& aText );
        
        /**
        * URI Parser
        * @param aURI
        * @param aAddress
        * @param aPort
        * @param aDocName
        * @return None
        */						
        static void ParseURIL( const TDesC& aURI, 
                               TDes& aAddress, 
                               TDes& aPort, 
                               TDes& aDocName );
      
        /**
        * Returns formatted sync time
        * @param aLastSync
        * @return Sync time
        */
        static HBufC* SyncTimeLC( TTime aLastSync );
        
        /**
        * Get data as text
        * @param 
        * @return 
        */        
        static void GetDateTextL( TDes& aText, TTime aDateTime );
        
        /**
        * Get time as text 
        * @param 
        * @return 
        */        
		static void GetTimeTextL( TDes& aText, TTime aDateTime );
        
        /**
        * Get data and time as text
        * @param 
        * @return 
        */        
		static void GetDateTimeTextL( TDes& aText, TTime aDateTime );
        
        /**
        * Check if SettingEnforcement is set
        * @param 
        * @return Boolean
        */        
		static TBool SettingEnforcementStateL();

        /**
        * Check if SettingEnforcement is set (non-leaving)
        * @param 
        * @return Boolean
        */        
		static TBool SettingEnforcementState();

    private:
    
        /**
        * Check if sync has happened today
        * @param atime
        * @return Boolean
        */    
        static TBool IsToday( TTime aTime );
        
        /**
        * Convert time to hometime
        * @param aUniversalTime
        * @return TTIme
        */            
        static TTime ConvertUniversalToHomeTime( const TTime& aUniversalTime );

	};

/**
*  TStr contains descriptor operations with range checking.
*/
NONSHARABLE_CLASS (TStr)
    {
    public:
        /**
        * C++ default constructor.
        */
        TStr(const TDesC& aStr);
       
    public:
        /**
        * String manipulating tools
        * @param aPos
        * @param aLen
        * @return TPtrC
        */        
        TPtrC Mid( TInt aPos, TInt aLen );
        
        /**
        * String manipulating tools
        * @param aPos
        * @return TPtrC
        */                
        TPtrC Mid( TInt aPos );

        /**
        * String manipulating tools
        * @param aPos
        * @return TPtrC
        */                
        TPtrC Left( TInt aPos );
        
        /**
        * String manipulating tools
        * @param aPos
        * @return TPtrC
        */               
        TPtrC Right( TInt aPos );
        
        /**
        * String manipulating tools
        * @param aStartPos
        * @param aEndPos
        * @return TPtrC
        */               
        TPtrC SubStr( TInt aStartPos, TInt aEndPos );

        /**
        * String manipulating tools
        * @param aStartPos
        * @param aEndPos
        * @return TPtrC
        */           
        TPtrC SubStrEx( TInt aStartPos, TInt aEndPos );

        /**
        * String manipulating tools
        * @return TInt
        */           
        TInt LastPos();

        /**
        * String manipulating tools
        * @return TInt
        */           
        TInt Len();

        /**
        * String manipulating tools
        * @param aPos
        * @param aChar
        * @return TBool
        */           
        TBool Compare( TInt aPos, TChar aChar );

        /**
        * String manipulating tools
        * @param aStartPos
        * @param aChar
        * @return TInt
        */
        TInt Find( TInt aPos, TChar aChar );
        
    private:
        // reference to descriptor
		const TDesC& iStr;
    };

/**
*  TURIParser is used for parsing URI.
*/
NONSHARABLE_CLASS (TURIParser)
    {
    public:
        /**
        * C++ default constructor.
        */
        TURIParser( const TDesC& aStr );
       
    public:
        /**
        * URI manipulating tools
        * @param aText
        * @return None
        */    
        void GetUriWithoutPort( TDes& aText );

        /**
        * URI manipulating tools
        * @param aText
        * @param aPort
        * @return None
        */            
        void GetUri( TDes& aText, const TInt aPort );

        /**
        * URI manipulating tools
        * @return TInt
        */            
        TInt Port();

        /**
        * URI manipulating tools
        * @return TInt
        */            
        TInt DefaultPort();

    private:
        /**
        * URI manipulating tools
        * @return TPtrC
        */          
        TPtrC ParseHttp();

        /**
        * URI manipulating tools
        * @return TPtrC
        */              
        TPtrC ParseAddress();

        /**
        * URI manipulating tools
        * @return TPtrC
        */              
        TPtrC ParseDocument();

        /**
        * URI manipulating tools
        * @param aPortNumber
        * @return TInt
        */              
        TInt ParsePort(TInt& aPortNumber);

        /**
        * URI manipulating tools
        * @return TPtrC
        */              
        TPtrC ParsePort();
        
     private:

        /**
        * URI manipulating tools
        * @param aStartPos
        * @param aEndPos
        * @return None
        */          
        void GetHttpPos(TInt& aStartPos, TInt& aEndPos);

        /**
        * URI manipulating tools
        * @return NOne
        */             
        void SkipHttp();
  
    private:
        // reference to original URI text
		const TDesC& iOriginalStr;
		
		// pointer to original URI text
		TPtrC iPtr;
		
		//reference to Boolean variable which tells about Slash in URI
		TBool iSlash;
    };

/**
* MNSmlDMActiveCallerObserver
*
* MNSmlDMActiveCallerObserver is for observing CNSmlDMActiveCaller.
*/
class MNSmlDMActiveCallerObserver
    {
    public:
	    virtual void HandleActiveCallL() = 0;
    };

/**
* CNSmlDMActiveCaller
*
* CNSmlDMActiveCaller is used for generating a call from active scheduler.
*/
NONSHARABLE_CLASS (CNSmlDMActiveCaller) : public CActive
    {
    public:
        /**
        * Two-phased constructor.
        */
        static CNSmlDMActiveCaller* NewL(MNSmlDMActiveCallerObserver* aObserver);

	    /**
        * Destructor.
        */
        virtual ~CNSmlDMActiveCaller();

    private:
        /**
        * C++ default constructor.
        */
	    CNSmlDMActiveCaller(MNSmlDMActiveCallerObserver* aObserver);

        /**
        * By default Symbian 2nd phase constructor is private.
        */
	    void ConstructL();

	public:
        /**
        * Calls observer using active object framework.
        * @param aCallId.
		* @param aMilliseconds Delay before observer is called.
        * @return None
        */
		void Start( TInt aCallId, TInt aMilliseconds = 0 );

    private:
        /**
        * From CActive. Called when asynchronous request completes.
        * @param None
        * @return None
        */
	    void RunL();
       
        /**
        * From CActive. Called when RunL Leaves.
        * @param None
        * @return error
        */
        TInt RunError( TInt aError );

        /**
        * From CActive. Cancels asynchronous request.
        * @param None
        * @return None
        */
	    void DoCancel();
        
        /**
        * Make active scheduler call RunL.
        * @param None
        * @return None
        */
		void CompleteSelf();

    private:
		// call that is passed to observer
		TInt iCallId;

		// timer
		RTimer iTimer;

		// observer that gets called
		MNSmlDMActiveCallerObserver* iObserver;
    };

#endif  // NSMLDMSYNCUTIL_H

// End of File