diff -r 0ba996a9b75d -r 613943a21004 bluetoothengine/btui/Ecom/inc/BTUIPairedDevicesView.h --- a/bluetoothengine/btui/Ecom/inc/BTUIPairedDevicesView.h Thu Aug 19 10:05:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,498 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: The view that handles paired devices. -* -*/ - -#ifndef BTUIPAIREDDEVICESVIEW_H -#define BTUIPAIREDDEVICESVIEW_H - -#include -#include // Menu pane definitions -#include -#include -#include -#include -#include "BtuiPluginInterface.h" -#include "btdevmodel.h" -#include "BTUIListedDevicesView.h" -#include "btuipluginman.h" -#include "BTUIActive.h" -#include -#include - -class CAknNavigationControlContainer; -class CBTUiDeviceContainer; -class CGSTabHelper; -class CBTEngSettings; -class CBTUIMainView; - -// if there are more connection that this, it is disallowed to -// connect to any device -const TInt KBtUiMaxConnections = 6; - -/** -* Paired devicew view of the pluetooth application. -* -* This view handles lists of paired device and pairing new devices, unpairing devices -* and setting previously paired devices as blocked. Also connecting and disconnecting -* are done by using this view. -* -*@lib BTUIPlugin.dll -*@since S60 v3.0 -*/ -class CBTUIPairedDevicesView : public CBTUIListedDevicesView, - public MBTEngSettingsObserver, - public MProgressDialogCallback, - public MBTEngSdpResultReceiver, // for bt discovery. SDP is not used - public MGSTabbedView, - public MBTUIActiveObserver -{ - public: - - /** - * ECOM implementation instantiation function of - * interface "CBtuiPluginInterface", to be used by BTUI Application. - */ - static CBTUIPairedDevicesView* NewL(MBtuiPluginViewActivationObserver* aObserver = NULL); - - static CBTUIPairedDevicesView* NewLC(CBTUIMainView* aBaseView, CArrayPtrFlat* aTabViewArray); - - /** - * Symbian 2nd phase constructor. - */ - void ConstructL(); - - void ConstructL( CBTUIMainView* aBaseView, CArrayPtrFlat* aTabViewArray ); - - /** - * Destructor. - */ - virtual ~CBTUIPairedDevicesView(); - - /** - * From MGSTabbedView: - * Creates new icon for tab. Ownership is transferred to client. - * @since 3.1 - */ - CGulIcon* CreateTabIconL(); - - public: // Functions from base classes - - /** - * From CAknView Returns view id. - * @param None. - * @return View id. - */ - TUid Id() const; - - /** - * From CAknView Handles user commands. - * @param aCommand A command id. - * @return None. - */ - void HandleCommandL(TInt aCommand); - - protected: - /** - * C++ default constructor. - */ - CBTUIPairedDevicesView (MBtuiPluginViewActivationObserver* aObserver= NULL); - - private: // Functions from base classes - - /** - * From CAknView Activates view. - * @param aPrevViewId Id of previous view. - * @param aCustomMessageId Custom message id. - * @param aCustomMessage Custom message. - * @return None. - */ - void DoActivateL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * From CAknView Deactivates view. - * @param None. - * @return None. - */ - void DoDeactivate(); - - /** - * From CAknView Dynamically initialises options menu. - * @param aResourceId Id identifying the menu pane to initialise. - * @param aMenuPane The in-memory representation of the menu pane. - * @return None. - */ - void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); - - // implemented from MProgressDialogCallback - /** This is used to cancel connecting and pairing, if user presses the Cancel-button. - * From MProgressDialogCallback Get's called when a dialog is dismissed. - * @param aButtonId Id of the pressed button. - * @return None. - */ - void DialogDismissedL( TInt aButtonId ); - - public: // from MBTDeviceObserver - /** - * Informs the observer that an error happened in changing device status or a new device added. - * @param aErr Symbian error code - * @param aDevice the device which is changed. - * @param aDevNameArray hold conflicting devices' short names if "AlreadyExist" error happened during "connect" - * @return None. - */ - void NotifyChangeDeviceComplete(const TInt aErr, const TBTDevice& aDevice, - const RBTDevNameArray* /*aDevNameArray*/ ) ; - /** - * Leaving version of NotifyChangeDeviceComplete - * @param aErr Symbian error code - * @param aDevice the device which is changed. - * @param aDevNameArray hold conflicting devices' short names if "AlreadyExist" error happened during "connect" - * @return None. - */ - void NotifyChangeDeviceCompleteL(const TInt aErr, const TBTDevice& aDevice, - const RBTDevNameArray* /*aDevNameArray*/ ) ; - - /** Updates the shown device list. This module will send this list forward - * to container that takes care of the actual display of those devices - * - *@param aDevices all the devices to be shown - *@param aSelectedItemIndex currently selected item after refresh. - */ - void RefreshDeviceList(const RDeviceArray* aDevices,TInt aSelectedItemIndex); - - private: // From MBTUIActiveObserver - - /** - * Callback to notify that an outstanding request has completed. - * @param aActive Pointer to the active object that completed. - * @param aId The ID that identifies the outstanding request. - * @param aStatus The status of the completed request. - */ - void RequestCompletedL( CBTUIActive* aActive, TInt aId, - TInt aStatus ); - - /** - * Callback to notify that an error has occurred in RunL. - * - * @param aActive Pointer to the active object that completed. - * @param aId The ID that identifies the outstanding request. - * @param aStatus The status of the completed request. - */ - void HandleError( CBTUIActive* aActive, TInt aId, - TInt aError ); - - public: // Operations to devices not containing confirmation queries - /** - * Sets the current security setting of the device. - * Does not ask user about it. - * - * @param aTrusted ETrue when trusted, EFalse if untrusted. - * @return None. - */ - void ChangeDeviceSecurityL( TBool aTrusted ); - - /** - * Issues prompts to connects to specified accessory. - * Connects to it if user andswers yes. - * - * @param TBTDevice connect to this device - * @return None. - */ - void ConnectL( const TBTDevice& aDevice, TBool aNewWaitNote ); - - /** - * Disconnects from the selected BT Accessory. - * - * @param None. - * @return None. - */ - void DisconnectL(); - - /** - * Removes iDisconnectQueryDlg created in DisconnectL - * - * @param None. - * @return None. - */ - void CancelDisconnectQueryDlg(); - - /** - * Disconnects from the selected BT Accessory without query. - * - * @param None. - * @return None. - */ - void DisconnectWithoutQuery(); - - /** Checks if there is an active phonecall. - *@return ETrue if there is, EFalse otherwise - */ - TBool CallOnGoing(); - - - /** This is used to create TCallBack to help. This is static, since TCallBack does not - * allow instance methods. This is used by BlockDeviceDlgL to add help callback to the query. - * - * @param aTCoeHelpContext. Must be instance TCoeHelpContext, or NULL. - * If this is not specified this will open help about blocked devices. - * This is not an instance of TCoeHelpContext, since TCallback does not allow - * parameters of other type that TAny*. - * @return allways KErrNone. TCallBack does not allow void functions - */ - static TInt LaunchHelp(TAny *aTCoeHelpContext=NULL); - - private: //These handle command given by user - /** - * Asks new nick name for the BT Device from user and - * attempt to rename the device. Failures are handled by NotifyChangeDeviceComplete. - * - * @param None. - * @return None. - */ - void RenameDeviceDlgL(); - - /** - * Asks confirmation for deleting a BT Device from user. - * Delete the current device if yes replied yes. - * - * @param None. - * @return None. - */ - void DeleteDeviceDlgL(); - - /** - * Asks confirmation for deleting all BT devices from user. - * Delete the devices if yes replied yes. - * - * @param None. - * @return None. - */ - void DeleteAllDevicesDlgL(); - - /** - * Initiates the pairing procedure to get a new paired device. - * DeviceSearchComplete is called after the dialog is done. - * - * @param None. - * @return None. - */ - void NewPairedDeviceDlgL(); - - /** - * Asks confirmation for Blocking the selected BT Device. - * Blocks the current device if yes replied yes. - * - * @param None. - * @return None. - */ - void BlockDeviceDlgL(); - - /**Opens a wait note. - * - *@param dialog. The dialog object to be used for displaying this note. - *@param aNoteResource The resource of the note, not including the text. - *@param aNoteTextResource The text resource. The %U if this note is filled up with aDevName. - *@param aSec SecondaryDisplaycommand - *@param aDevName The dev name filled in aNoteTextResource - */ - void OpenWaitNoteL(CAknWaitDialog *&dialog,TUint aNoteResource,TUint aNoteTextResource, - TSecondaryDisplayBtuiDialogs aSec,const TDesC& aDevName); - - /** Open Setting view for peripheral devices - * - * @param None. - * @return None. - */ - void LaunchSettingViewL(); - - /** Setup device specific menu options - * - * @param None. - * @return None. - */ - void SetupMenuCmd(TInt aIndex, CEikMenuPane* aMenu); - - - public: // Inherited from MBTEngSdpResultReceiver - - - /** Inherited from MBTEngSdpResultReceiver and implemented as empty, - * since this class will not do service searches, only device searches. - */ - void ServiceSearchComplete( const RSdpRecHandleArray& aResult, - TUint aTotalRecordsCount, TInt aErr ) ; - /** Inherited from MBTEngSdpResultReceiver and implemented as empty, - * since this class will not do attributes seaches, only device searches. - */ - void AttributeSearchComplete( TSdpServRecordHandle aHandle, - const RSdpResultArray& aAttr,TInt aErr ) ; - /** Inherited from MBTEngSdpResultReceiver and implemented as empty, - * since this class will not do service attribute seaches, only device searches. - */ - void ServiceAttributeSearchComplete( TSdpServRecordHandle aHandle, - const RSdpResultArray& aAttr,TInt aErr ); - - /** - * Provides notification of the result of the discovery of nearby - * Bluetooth devices. If a device is selected this class will try to pair it. - * - * @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. - * This is not TBTDevice that is normally used inside the UI. - * @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 ); - - /** - * Provides notification of the result of the discovery of nearby - * Bluetooth devices and EIR data. If a device is selected this class will try to pair it. - * - * @since S60 v5.1 - * @param aDevice The data structure encapsulates information - * about the selected device. - * Ownership of the data structure has not been transfered and - * is still with the API client. - * @param aEirWrapper Contains the EIR data of the remote 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, - TNameEntry* aNameEntry, - TInt aErr ); - -private: - /** Leaving version of DeviceSearchComplete. - * - * @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. - * This is not TBTDevice that is normally used inside the UI. - * @param aEirWrapper Contains the EIR data of the remote 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 DeviceSearchCompleteL( CBTDevice* aDevice, - TNameEntry* aNameEntry, TInt aErr ); - - /** Shows 'Disonnect first' note - * - * @param aDevice - */ - void ShowDisconnecNoteL(TBTDevice *aDevice); - - /** - * Auto connect to headset after pairing succeeded. - * @param aCount the counter of connecting request issuing staring from 0. - */ - void ConnectIfNeededAfterPairL( TInt aCount ); - - public: // internal methods for informing operation completes - /** - * Informs that pairing attempt of a device has been completed. - * Dismisses wait note and displays questions about authorizing and - * connecting, if the device is connectable. - * - * This method is called by ModifyDeviceChangeL. This method will not inform - * iContainer about the pairing since that is done by ModifyDeviceChangeL. - * - * @param aError Status code of the operation. - * @param aDeviceIndex the new place of the device in UI - * @return None. - */ - void BondingCompleteL( TInt aError,const TBTDevice& aDevice); - - /** Informs that attempt to connect to a device is completed. Closes wait - * note and if there was an error shows the error notice. - * - * This method is called by ModifyDeviceChangeL. This method will not inform - * iContainer about the pairing since that is done by ModifyDeviceChangeL. - * - * @param aError KErrNone or system wide error code - * @param aDeviceIndex The index of the new device - * @param aConflictingDeviceName this is filled only when - */ - void ConnectCompleteL(TInt aError,const TBTDevice& aDevice, - const RBTDevNameArray* aConflictingDeviceNames=NULL); - - - /** - * From MBTEngSettingsObserver - Called when powerstate is changed - * @param TBTPowerStateValue power state - * @return None - */ - void PowerStateChanged( TBTPowerStateValue aState ); - - /** - * From MBTEngSettingsObserver - Called when visibility is changed - * @param TBTPowerStateValue state of visibility mode - * @return None - */ - void VisibilityModeChanged( TBTVisibilityMode aState ); - - - private: // Data - - CAknWaitDialog* iWaitForPairingDlg; // Wait note for pairing - CAknWaitDialog* iWaitForConnectDlg; // Wait note for connecting to BT Accessory - CAknQueryDialog* iDisconnectQueryDlg; // Question dialog for disconnecting BT Accessory - TBool iHelpEnabled; // Flag for the Help feature - - // these are needed so these are owened by someone - // and can be cleaned up, in case the operations are interrupted by the user. - CBTDevice* iPairingDevice; - TNameEntry iPairingDevNameEntry; - TBTDevice* iConnectDevice; //device we are trying to connect to - TBTDevice iDisconnectQueryDevice; //device we are trying to disconnect - - CBTEngDiscovery* iDeviceSearcher; // used only for searching devices, not for device discovery - CBTEngSettings* iBtEngSettings; // used only for turning on bluetooth, - CBTUIPluginMan* iBTPluginMan; - CGSTabHelper* iTabHelper; - CBTUIMainView* iBaseView; - TBool iConstructAsGsPlugin; // Flag that indicate this obj is served as GS plugin not BTUI app's plugin. - TInt iExpectedCallBack; // In case of DeleteAll, counter for expected callback NotifyChangeDeviceCompleteL() - TBool iSearchOngoing; - TBool iIsConnectDevice; - MBtuiPluginViewActivationObserver* iActivationObserver; // view activation observer - TBool iIsAlreadyConnected; // used only for showing "Connected to" note once for Stereo device - TBTDevice iMenuDevice; - CEikMenuPane* iActiveMenuPane; - CBTUIActive* iActive; // used for subscribing notifier lock status - TBTDevAddr iPairConnectAddr; // the address of the just paired device - // with which a connection establishment is pending - TBool iIsPairConnect; // if we are doing auto-connecting after pairing or not - -}; - -#endif - -