phoneengine/loghandling/inc/cpeloghandling.h
changeset 0 5f000ab63145
child 3 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneengine/loghandling/inc/cpeloghandling.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,339 @@
+/*
+* Copyright (c) 2003-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:  This file contains the header file of the CPELogHandling class.
+*
+*/
+
+
+#ifndef    CPELOGHANDLING_H
+#define    CPELOGHANDLING_H
+
+//INCLUDES
+#include <e32base.h>
+#include <mccecall.h>
+#include <f32file.h>
+#include <logwrap.h>
+#include "mpeloghandling.h"
+
+// CONSTANTS
+// Maximum number of log events that may be needed at any given moment.
+// Due to log system limitations there is a chance more log event are needed
+// and this will be handled as it happens
+const TInt KPEMaximumNumberOfLogEvents = KPEMaximumNumberOfCalls + 2;
+
+// MACROS
+// None.
+
+// DATA TYPES
+typedef TBuf8<KCntMaxTextFieldLength> TPELogsDataFieldType;
+
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+class CPELogHandlingCommand;
+class CPELogExternalData;
+class CPELogEvent;
+class CLogClient;
+class MPEPhoneModelInternal;
+class MPEDataStore;
+class CPELogInfo;
+class CTelLoggingExtension;
+class CSPSettings;
+class CPELogExtensionWrapper;
+
+// CLASS DECLARATION
+
+class CPELogHandling : public CBase,
+                       public MPELogHandling
+    {
+    public:
+
+        /**
+        * Two-phased constructor
+        */
+        static MPELogHandling* NewL( MPEPhoneModelInternal& aModel, RFs& aFsSession );
+             
+        /**
+         * Destructor.
+         */
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        virtual IMPORT_C ~CPELogHandling();
+        
+    protected:
+
+        /**
+        * C++ default constructor.
+        */
+        CPELogHandling( MPEPhoneModelInternal& aModel, RFs& aFsSession );
+
+        /**
+        * Constructor, second phase. 
+        */
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        void ConstructL();
+
+    public: // From MPELogHandling
+        /**
+        * Save call entry
+        * @since N/A
+        * @param: TInt, call id
+        * @return: possible error code.
+        */
+        IMPORT_C TInt SaveCallEntry( const TInt aCallId );
+        
+    public:      
+        /**
+        * Reroutes messages to the Phone Model.
+        * @since Series60_2.7
+        * @param aMessage Message id.
+        * @param aErrorCode Error code.
+        * @return None.
+        */
+        void SendMessage( MEngineMonitor::TPEMessagesFromPhoneEngine aMessage, TInt aErrorCode );
+
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for incoming call.
+        */  
+        TLogString& LogStringIn( );
+
+
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for outgoing call.
+        */  
+        TLogString& LogStringOut( );
+
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for missed call.
+        */  
+        TLogString& LogStringMissed( );
+
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for delivery.
+        */  
+        TLogString& LogStringDelivery( );
+
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for incoming auxiliary call.
+        */  
+        TLogString& LogStringInAlt( );
+        
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for outgoing auxiliary call.
+        */  
+        TLogString& LogStringOutAlt( );
+        
+        /* Get log string
+        * @param: None
+        * @return TLogString, string for unknown call.
+        */  
+        TLogString& LogStringUnknown( );
+        
+        /**
+        * Reset missed call status.
+        */
+        void ResetMissedCalls( const TInt aCallId );
+        
+    private:
+
+        /**
+         * Set remote contact information to log info.
+         * @since   S60 v9.1
+         * @param   aCallId     Call identifier.
+         * @param   aLogInfo    Log info.
+         */
+        void SetRemoteContact( TInt aCallId, CPELogInfo& aLogInfo );
+        
+        /**
+        * Update call info to log database.
+        * @since N/A
+        * @param  CPELogInfo aCallInfo, call information.
+        * @return None.
+        */
+        void SaveCallInfoL( const CPELogInfo& aLogInfo );
+
+        /**
+        * Save log event
+        * @since N/A
+        * @param: const CPELogInfo&, log information
+        * @return: none.
+        */
+        void SaveEventL( const CPELogInfo& aLogInfo );        
+    
+        /**
+        * Find Log database entry index by given call id.
+        * @since Series60_2.7
+        * @param: TInt aCallId , call identification number.
+        * @return: Error code.
+        */
+        TInt FindEventIndexById( const TInt aCallId );
+        
+        /**
+        * Delete event in Id array
+        * @since Series60_2.7
+        * @param: CPELogsEntry* aLogEntry pointer
+        * @return: None.
+        */
+        void DeleteArrayEntry( CPELogEvent* aLogEvent );                
+
+        /**
+        * Log Handling cleanup if log handling of an event leaves.
+        * @since Series60_2.7
+        */
+        void DoCleanup();
+        
+        /**
+         * Updates log info with a data queried from logging extension plugin.
+         * Log info is not changed if error happens while using extension.
+         * @since   S60 v9.1
+         * @param   aCallId     Call identifier.
+         * @param   aLogInfo    Log info to be updated.
+         */
+        void UpdateLogInfoWithExtensionDataL( TInt aCallId, 
+            CPELogInfo& aLogInfo );
+
+        /**
+         * Returns logging extension plugin for the given service. A new 
+         * plugin is created if extension is not yet created for the service.
+         * @since   S60 v5.1
+         * @param   aServiceId  Service identifier.
+         */
+        CTelLoggingExtension& LoggingExtensionL( TUint aServiceId );
+        
+        /**
+         * Returns logging extension plugin identifier from service
+         * provider settings.
+         * @since   S60 v9.1
+         * @param   aServiceId  Service identifier.
+         */
+        TUid LoggingPluginIdentifierL( TUint aServiceId ) const;
+        
+        /**
+         * Sets extension data to log info.
+         * @since   S60 v9.1
+         * @param   aLogInfo        Log info to be updated.
+         * @param   aPhoneNumber    Phone number of remote party.
+         * @param   aVoipAddress    Voip address of remote party.
+         * @param   aMyAddress      Local user's registered address.
+         * @param   aRemotePartyName Name of the remote party.
+         */
+        void SetExtensionData( CPELogInfo& aLogInfo, 
+            const TDesC& aPhoneNumber, const TDesC& aVoipAddress, 
+            const TDesC& aMyAddress, const TDesC& aRemotePartyName );
+        
+        /**
+         * Creates an logging extension wrapper instance.
+         * @since   S60 v5.1
+         * @param   aPluginUid      An ECom plugin implementation identifier.
+         * @return  Extension wrapper instance.
+         */
+        CPELogExtensionWrapper* CreateExtensionWrapperLC( 
+            const TUid& aPluginUid ) const;
+        
+    private: // data 
+        // Reference to MPEPhoneModelInternal, also object owner
+        MPEPhoneModelInternal&  iModel;
+        // Reference to data store
+        MPEDataStore& iDataStore;
+        // Log database connection.
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        CLogClient* iLogClient;           
+        // Array of active log events
+        RPointerArray< class CPELogEvent > iActiveLogEventArray;
+        // Array of queued log events
+        RPointerArray< class CPELogEvent > iQueuedLogEventArray;
+        // Array of free log event objects
+        RPointerArray< class CPELogEvent > iFreeLogEventArray;
+        // Logs handling command pointer   
+        CPELogHandlingCommand* iLogHandlingCommand;  
+        // Log external data pointer
+        CPELogExternalData* iLogExternalData;
+        // File session connection
+        RFs& iFsSession;
+        // Identifiers of active calls.
+        RArray<TInt> iActiveCallIds;
+        // pointer to the log event under processing
+        CPELogEvent* iLogEventUnderProcessing;
+        
+        // Enumeration for incoming call, get from database  
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringIn;          
+        // Enumeration for outgoing call, get from database
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringOut;       
+        // Enumeration for missed call, get from database
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringMissed;  
+        // Enumeration for delivery, ger from database.
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringDelivery;  
+       // Enumeration for incoming auxiliary line call, get from database.
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringInAlt;
+        // Enumeration for outgoing auxiliary line call, get from database.
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringOutAlt;
+        // Enumeration for Unknown name, get from database.
+        /*****************************************************
+        *    Series 60 Customer / LOGENG
+        *    Series 60  LOGENG API
+        *****************************************************/                
+        TLogString iLogStringUnknown;        
+        
+        /**
+         * Logging extension plugins.
+         * Own.
+         */
+        RPointerArray<CPELogExtensionWrapper> iPlugins;
+
+    };
+
+#endif // CPELOGSHANDLER_H
+
+// End of File
+