localconnectivityservice/obexreceiveservices/mtmuibluetooth/inc/btmtmui.h
branchRCL_3
changeset 40 52a167391590
parent 0 c3e98f10fcf4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/obexreceiveservices/mtmuibluetooth/inc/btmtmui.h	Wed Sep 01 12:20:40 2010 +0100
@@ -0,0 +1,448 @@
+/*
+* Copyright (c) 2002 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: 
+*     Contains Bluetooth MTM Ui part.
+*     
+*
+*/
+
+
+#ifndef CBTMTMUI_H
+#define CBTMTMUI_H
+
+//  INCLUDES
+#include <btdevice.h>
+#include <mtmuibas.h>
+#include <btengdiscovery.h>
+
+#include <obexutilsuilayer.h>
+
+const TUint KBTSdpObjectPush            = 0x1105;
+
+// FORWARD DECLARATIONS
+class CClientMtmRegistry;
+
+/**
+*  CBtMtmUi
+*  Bluetooth messaging UI Module.
+*/
+class CBtMtmUi : public CBaseMtmUi, public MBTEngSdpResultReceiver
+	{
+    public: // Constructors and destructor
+       /**
+       * Two-phased constructor.
+       */
+	   static CBtMtmUi* NewL( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll );
+
+        /**
+        * Destructor.
+        */
+	    virtual ~CBtMtmUi();
+
+
+    public: // Functions from base classes
+
+        /**
+        * From CBaseMtmUi Entry Creation.
+        * @param aEntry reference to entry
+        * @param aParent parent entry
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* CreateL(
+            const TMsvEntry& aEntry, 
+            CMsvEntry& aParent, 
+            TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Open entry.
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* OpenL( TRequestStatus& aStatus ); 
+
+        /**
+        * From CBaseMtmUi Close entry.
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* CloseL( TRequestStatus& aStatus ); 
+
+        /**
+        * From CBaseMtmUi Launches editor/settings dialog as appropriate. 
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* EditL( TRequestStatus& aStatus ); 
+	
+        /**
+        * From CBaseMtmUi Launches viewer/settings dialog as appropriate
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* ViewL( TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Deletes selection from current context
+	    * Deletes entries from the current context, 
+        * which must be a folder or service of the relevant MTM  
+        * @param aSelection reference to entry.
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* DeleteFromL(
+            const CMsvEntrySelection& aSelection, 
+            TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Deletes service, which need not 
+        * be the current context.
+        * @param aService reference to entry.
+        * @param aStatus Status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+	    virtual CMsvOperation* DeleteServiceL(
+            const TMsvEntry& aService, 
+            TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Remove remaining message of deleted service. 
+        * @param aChildren reference to entry selection.
+        * @return None.
+        */
+	    void DeleteRecursivelyL( CMsvEntrySelection& aChildren );
+	
+        //
+	    // --- Message responding ---
+	    // --- Default implementation calls CBaseMtm::ReplyL() or ForwardL(), 
+        //     followed by EditL() ---
+        // --- Takes ownership of the passed entry 
+        //     (which the context is switched to) ---
+
+        /**
+        * From CBaseMtmUi Reply entry
+        * @param aDestination id for msv.
+        * @param aPartlist partlist id.
+        * @param aCompletionStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* ReplyL(
+            TMsvId aDestination, 
+            TMsvPartList aPartlist, 
+            TRequestStatus& aCompletionStatus );
+	
+
+        /**
+        * From CBaseMtmUi forward entry
+        * @param aDestination id for msv.
+        * @param aPartlist partlist id.
+        * @param aCompletionStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* ForwardL(
+            TMsvId aDestination, 
+            TMsvPartList aPartList, 
+            TRequestStatus& aCompletionStatus );
+
+	    //
+	    // Actions upon message selections ---
+	    // Selections must be in same folder and all of the correct MTM type
+	    // Context may change after calling these functions
+
+        /**
+        * From CBaseMtmUi Open entry
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* OpenL(
+            TRequestStatus& aStatus, 
+            const CMsvEntrySelection& aSelection ); 
+
+        /**
+        * From CBaseMtmUi Close entry
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* CloseL(
+            TRequestStatus& aStatus, 
+            const CMsvEntrySelection& aSelection ); 
+
+        /**
+        * From CBaseMtmUi Handles sending.
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* EditL(
+            TRequestStatus& aStatus, 
+            const CMsvEntrySelection& aSelection );
+
+        /**
+        * From CBaseMtmUi Launches viewer/settings dialog as appropriate
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* ViewL(
+            TRequestStatus& aStatus, 
+            const CMsvEntrySelection& aSelection );
+
+        //
+        // Copy and move functions:
+        // Context should be set to folder or entry of this MTM 
+        // Default implementations imply call the relevant CMsvEntry functions
+	
+        /**
+        * From CBaseMtmUi Context should be MTM folder/service to copy to
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* CopyToL(
+            const CMsvEntrySelection& aSelection, 
+            TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Context should be MTM folder/service to Move to
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* MoveToL(
+            const CMsvEntrySelection& aSelection, 
+            TRequestStatus& aStatus );
+
+        /**
+        * From CBaseMtmUi Context should be MTM folder/service to copy from
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* CopyFromL(
+            const CMsvEntrySelection& aSelection, 
+            TMsvId aTargetId, 
+            TRequestStatus& aStatus ); 
+
+        /**
+        * From CBaseMtmUi Context should be MTM folder/service to move from
+        * @param aStatus status for operation.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* MoveFromL(
+            const CMsvEntrySelection& aSelection, 
+            TMsvId aTargetId, 
+            TRequestStatus& aStatus );
+	
+	    // Interpret transfer progress 
+
+        /**
+        * From CBaseMtmUi Display progress summary.
+        * @param aProgress reference to summary text.
+        * @return TInt error code.
+        */
+        TInt DisplayProgressSummary( const TDesC8& aProgress ) const;
+
+        /**
+        * From CBaseMtmUi return progress status.
+        * @param aProgress reference to progress packet.
+        * @param aReturnString returned progress text.
+        * @param aTotalEntryCount entry count.
+        * @param aEntriesDone completed entries.
+        * @param aCurrentEntrySize size of the entry.
+        * @param aCurrentBytesTrans transferred bytes.
+        * @return TInt error code.
+        */
+        virtual TInt GetProgress(
+            const TDesC8& aProgress, 
+            TBuf<EProgressStringMaxLen>& aReturnString, 
+            TInt& aTotalEntryCount, 
+            TInt& aEntriesDone,
+		    TInt& aCurrentEntrySize, 
+            TInt& aCurrentBytesTrans ) const;
+	
+        //	
+        // --- RTTI functions ---
+
+        /**
+        * From CBaseMtmUi Return capability.
+        * @param aCapability UID for capability.
+        * @return TInt error code.
+        */
+        virtual TInt QueryCapability( TUid aCapability, TInt& aResponse );
+
+        /**
+        * From CBaseMtmUi Synchronous MTM function operation.
+        * @param aFunctionId Function ID.
+        * @param CMsvEntrySelection entry reference.
+        * @param aParam parameter for function.
+        * @return None.
+        */
+        virtual void InvokeSyncFunctionL(
+            TInt aFunctionId, 
+            const CMsvEntrySelection& aSelection, 
+            TDes8& aParameter );
+
+        /**
+        * From CBaseMtmUi Cancel sending.
+        * @param aStatus Async status for operation.
+        * @param CMsvEntrySelection entry reference.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        virtual CMsvOperation* CancelL(
+            TRequestStatus& aStatus, 
+            const CMsvEntrySelection& aSelection );
+            
+            
+         /**
+        * Provides notification of the result of a service search that matches 
+        * the requested UUID (through CBTEngDiscovery::RemoteSdpQuery).
+        * This method indicates that the search has completed, and returns 
+        * all the results to the caller at once.
+        *
+        * @since S60 v3.2
+        * @param aResult Array of record handles that match the requested UUID.
+        *                Note: the array will not be available anymore after 
+        *                this method returns.
+        * @param aTotalRecordsCount The total number of records returned.
+        * @param aErr Error code of the service search operation; KErrNone if 
+        *             sucessful, KErrEof if no record matched the requested UUID, 
+        *             KErrCouldNotConnect and KErrCouldDisconnected in case of 
+        *             Bluetooth connection errors; otherwise one of the 
+        *             system-wide error codes.
+        */
+        void ServiceSearchComplete( const RSdpRecHandleArray& aResult, 
+                                    TUint aTotalRecordsCount, TInt aErr );
+
+        /**
+        * Provides notification of the result of an attribute search that matches 
+        * the requested attribute (through CBTEngDiscovery::RemoteSdpQuery).
+        * This method indicates that the search has completed, and returns 
+        * all the results to the caller at once.
+        *
+        * @since S60 v3.2
+        * @param aHandle Record handle of the service record containing the result.
+        * @param aAttr Array containing the attribute that matches the 
+        *              requested attribute.
+        *              Note: the array will not be available anymore after 
+        *              this method returns.
+        * @param aErr Error code of the service search operation; KErrNone if 
+        *             sucessful, KErrEof if the requested attribute was not 
+        *             contained in the specified service record, 
+        *             KErrCouldNotConnect and KErrCouldDisconnected in case of 
+        *             Bluetooth connection errors; otherwise one of the 
+        *             system-wide error codes.
+        */
+        void AttributeSearchComplete( TSdpServRecordHandle aHandle, 
+                                           const RSdpResultArray& aAttr, 
+                                           TInt aErr );
+
+        /**
+        * Provides notification of the result of an combination of a service 
+        * and attribute search (through CBTEngDiscovery::RemoteSdpQuery).
+        * This method is called for each service and attribute combination for 
+        * which a match was found. The last result (which could be empty if no 
+        * match was found) contain error code KErrEof to indicate that the 
+        * search has completed.
+        *
+        * @since S60 v3.2
+        * @param aHandle Record handle of the service record containing the result.
+        * @param aAttr Array containing the attribute that matches the 
+        *              requested attribute.
+        *              Note: the array will not be available anymore after 
+        *              this method returns.
+        * @param aErr Error code of the service search operation; KErrNone if 
+        *             sucessful and more results follow, KErrEof indicates that 
+        *             this is the last result (which could be empty if no match 
+        *             was found), KErrCouldNotConnect and KErrCouldDisconnected 
+        *             in case of Bluetooth connection errors; otherwise one of 
+        *             the system-wide error codes.
+        */
+        void ServiceAttributeSearchComplete( TSdpServRecordHandle aHandle, 
+                                                      const RSdpResultArray& aAttr, 
+                                                      TInt aErr );
+
+        /**
+        * Provides notification of the result of the discovery of nearby 
+        * Bluetooth devices.
+        *
+        * @since S60 v3.2
+        * @param aDevice The data structure encapsulates all information 
+        *                about the selected device. Ownership of the data 
+        *                structure has not been transfered and is still with
+        *                the API client.
+        * @param aErr Error code of the device search operation; KErrNone if 
+        *             sucessful, KErrCancel if the user cancelled the 
+        *             dialog, KErrAbort if CBTEngDiscovery::CancelSearchRemoteDevice
+        *             was called; otherwise one of the system-wide error codes.
+        */
+        void DeviceSearchComplete( CBTDevice* aDevice, TInt aErr );    
+
+    protected:
+
+        /**
+        * C++ default constructor.
+        */ 
+        CBtMtmUi( CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll );
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL();
+
+    protected: // Functions from base classes
+
+        /**
+        * From CBaseMtmUi return resource filename.
+        * @param aProgress reference to summary text.
+        * @return TInt error code.
+        */
+        void GetResourceFileName( TFileName& aFileName ) const;
+
+        /**
+        * From CBaseMtmUi Launch viewer for received message.
+        * @param aStatus Async status for operation.
+        * @param aSession session reference.
+        * @return CMsvOperation pointer to Msg operation.
+        */
+        CMsvOperation*	LaunchEditorApplicationL(
+            TRequestStatus& aStatus, 
+            CMsvSession& aSession );
+
+    protected:  // New functions
+
+        /**
+        * Register MTM.
+        * @param aMtmType MTM UID.
+        * @return CBaseMtm pointer.
+        */
+        CBaseMtm* GetClientMtmLC( TUid aMtmType );
+
+        /**
+        * Display progress summary.
+        * @param aProgress reference to summary text.
+        * @return TInt error code.
+        */
+        TInt DisplayProgressSummaryL( const TDesC8& aProgress ) const;
+ 
+    protected: // data
+
+        CClientMtmRegistry*		iClientRegistry;    // pointer to registration.
+
+    private:
+        TBTDeviceName        iBTDeviceName;                        // Bluetooth device name.
+        CBTDevice*           iDevice;
+        CBTEngDiscovery*     iDiscovery;
+        CActiveSchedulerWait iWaiter;
+        TInt                 iClientChannel;
+        TInt                 iState;  
+        
+	};
+
+#endif      // CBTMTMUI_H  
+            
+// End of File