diff -r 0ba996a9b75d -r 613943a21004 bluetoothengine/btnotif/inc/btninqui.h --- a/bluetoothengine/btnotif/inc/btninqui.h Thu Aug 19 10:05:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,383 +0,0 @@ -/* -* 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: Declares Bluetooth device inquiry user interface class. -* -*/ - - -#ifndef BTNINQUI_H -#define BTNINQUI_H - -// INCLUDES - -#include // Bluetooth notifiers API -#include // For array handling -#include -#include "btnotifactive.h" // Active Object Helper class for inquiry -#include -#include -#include "btnotifier.h" - -const TInt KPeriodicTimerInterval4Sec(4000000); - - -// FORWARD DECLARATIONS - -class CAknStaticNoteDialog; -class CAknSingleGraphicPopupMenuStyleListBox; -class CAknPopupList; -class CAknQueryDialog; -class CBTInqNotifier; - -// CONSTANTS -enum TSearchFlowState - { - ESearchCompleted, // search completed for any reason, end of UI flow. - ESearchAgain, // no device found, user wants to search again. - ESearchFirstDeviceFound, // the first device is found, show found device list. - }; - -// CLASS DECLARATION -/** - * Class MBTNDeviceSearchObserver - * - * Callback class to notify device searching completed. - */ -class MBTNDeviceSearchObserver - { -public: - - /** - * Callback to notify that the device search request has completed. - * - * @since S60 5.1 - * @param aErr Error code - * @param aDevice Pckgbuf to retrieve the response from the device selection. - */ - virtual void NotifyDeviceSearchCompleted(TInt aErr, - const TBTDeviceResponseParams& aDevice = TBTDeviceResponseParams()) = 0; - }; - -/** -* A helper class used in Bluetooth device search. -* This class is responsible of the UI activity. -*/ -NONSHARABLE_CLASS(CBTInqUI) : public CBase, public MBTEngDevManObserver, public MBTNotifActiveObserver - { - public: // Constructor and destructor - /** - * C++ default constructor. - */ - CBTInqUI( MBTNDeviceSearchObserver* aObserver, - CBTNotifUIUtil* aUtil, const TBTDeviceClass& aDesiredDevClass); - - /** - * The 2nd phase constructor is required to do Asyncronous operations, - * So the readiness of the CBTInqUI is notified Asynchronously to the caller - */ - void ConstructL(); - - /** - * Destructor. - */ - virtual ~CBTInqUI(); - - public: // New functions - - /** - * Cancels all inquiry activity. - */ - void Cancel(); - - /** - * Issues a device inquiry request. - * @param None. - * @return None. - */ - void IssueRequestL(); - - /** - * Check if Eir device name available. - * @param TNameEntry Decode it to get device name - * @param TBTDeviceName Device name returned - * @param TBool Is the name returned complete - * @return ETrue if Eir data contains name. - */ - static TBool CheckEirDeviceName( TNameEntry& aEntry, TBTDeviceName& aName, TBool& aIsComplete ); - - private: // Functions from base classes - - /** - * From MBTNotifActiveObserver - */ - void RequestCompletedL( CBTNotifActive* aActive, TInt aId, TInt aStatus ); - - /** - * From MBTNotifActiveObserver - */ - void HandleError( CBTNotifActive* aActive, TInt aId, TInt aError ); - - /** - * From MBTNotifActiveObserver - */ - void DoCancelRequest( CBTNotifActive* aActive, TInt aId ); - - /** - * From MBTEngDevManObserver - */ - void HandleGetDevicesComplete(TInt aErr, CBTDeviceArray* aDeviceArray); - - /** - * From MBTEngDevManObserver - */ - void HandleDevManComplete(TInt aErr); - - - private: - - /** - * Create the device search active object and prepare for search. - */ - void CreateScannerL(); - - /** - * Removes the device search active object if it still exists. - * @param None. - * @return None. - */ - void RemoveScanner(); - - /** - * Retrieves paired devices from BT Registry - * Calls HandleGetDevicesComplete, when done - */ - void RetrievePairedDevices(); - - /** - * Retrieves used devices from BT Registry - * Calls HandleGetDevicesComplete, when done - * @return None. - */ - void RetrieveUsedDevices(); - - /** - * Searches given BT Device from device array. - * @param aDeviceArray The device array to search in - * @param aDevice The device to be searched. - * @return Index of the device if found. - */ - TInt LookupFromDevicesArray( const CBTDeviceArray* aDeviceArray, const CBTDevice* aDevice ) const; - - /** - * Constructs a device popup list from resources. - * @param aSoftkeysResourceId Resource id for softkeys of the list. - * @param aTitleResourceId Resource id for the title of the list. - * @return None. - */ - void CreatePopupListL(TInt aSoftkeysResourceId, TInt aTitleResourceId ); - - /** - * Generates a format string and adds it to iDeviceItems array. - * Updates friendly name of given device if one is found from registry. - * @param aDevice The device to be added to list. - * @param aSignalStrength The signal bar for RSSI - * @return None. - */ - void AddToDeviceListBoxL(CBTDevice* aDevice, const TInt aSignalStrength = 0 ); - - /** - * Creates and adds local bitmap to icon array. - * @param aID Item ID of the masked bitmap to be created. - * @param aFilename Filename to be used to construct the item. - * @param aBitmapId The ID if bitmap - * @param aMaskId The ID of bitmap's mask - * @param aIconList The icon list for BT devices listbox. - */ - void CreateAndAppendIconL( const TAknsItemID& aID, - const TDesC& aFileName, - const TInt aBitmapId, - const TInt aMaskId, - CAknIconArray* aIconList); - - /** - * Adjust array, leave 5 lastet used devices in the array and remove the rest, - * and then insert the paired device array to this array by used time order. - * In the adjusted array, the first item will be the most lately used device. - * @param aDevArray The bluetooth device arrary to be adjusted. - * @return None. - */ - void AdjustDeviceArrayL( CBTDeviceArray* aDevArray); - - /** - * Filter for searching device - * @param The desired device class user selects from the filter - * @return User's input select/cancel - */ - void SelectSearchCategoryL(); - - /** - * Add filtering items to search device filter - * @param aResourceId - * @return None - */ - void AddItemToSearchFilterL ( TInt aResourceId ); - - /** - * Show query to ask if unblock device - * @param aDevice Selected device - * @return Keypress value - */ - TInt QueryUnblockDeviceL(CBTDevice* aDevice); - - /** - * The callback function for CPeriodic - * to reset the inactivity time - */ - static TInt PeriodicTimerCallBack(TAny* /*aAny*/); - - void GetColorIconL( TFileName& aFilename, TAknsItemID aItemID, TInt aPic, TInt aPicmask, CAknIconArray* aIconList ); - - /** - * Check if VoIP call is ongoing via WLAN connection. - * @return true if it is; false otherwise. - */ - TBool IsActiveVoIPOverWLAN(); - - void DoDeviceFrontListSelection(); - - /** - * Displays previous inquiry results. - */ - void DisplayDevicesFrontListL(); - - /** - * Unblock device after unblock query. - * @param aIndex Parameter containing information about selected device. - * @return Symbian OS error code. - */ - TInt UnblockDevice(TInt aIndex); - - void DeviceSearchUiL(); - - /** - * the initiator of inquiry until the first device found, or no device found, or - * other reasons causing inquiry stopped. - * @param aReason the reason of the search completion - */ - TSearchFlowState InitInquiryL(TInt& aReason); - - void HandleDeviceSelectionL(CBTDevice* aDev); - - /** - * Adds found Bluetooth device into popup list. - * @param aInquiryResultRecord TNameEntry and flag, which indicates if Eir device. - */ - void DeviceAvailableL( const TNameRecord& aNameRecord, const TDesC& aDevName, TBool aIsNameComplete ); - - /** - * The inquiry has been completed. - * @param aError Status code of the operation. - * @return None. - */ - void InquiryComplete( TInt aError ); - - /** - * Inform the caller of the properties of found BTdevice, - * which passes the search filter. Its name will be retrived later - */ - void HandleInquiryDeviceL(); - - /** - * Name lookup complete for the current device in the unnamed devices queue. - */ - void HandleFoundNameL(); - - /** - * Name lookup complete for device aLastSeenIndex in the last seen array - * (this is done for devices with partial names returned by EIR). - */ - void HandleUpdatedNameL(TInt aLastSeenIndex); - - /** - * Allow/Disallow dialer and app key presses. - * @param aAllow ETrue to allow key press; EFalse to disallow. - */ - void AllowDialerAndAppKeyPress( TBool aAllow ); - - /** - * Update the inquiry list box with a new (complete) device name - * (this is done for devices with partial names returned by EIR). - */ - void DeviceNameUpdatedL(const TNameRecord& aNameRecord, TInt aLastSeenIndex); - void DeviceUpdatedL(TInt aSignalStrength, TInt aLastSeenIndex); - - /** - * React to page timeout on a device that's already in the inquiry list box - * (which can happen for devices with partial names returned by EIR). - */ - void PageTimeoutOnDeviceWithPartialNameL(TInt aLastSeenIndex); - - void FormatListBoxEntryL(CBTDevice& aDevice, const TInt aSignalStrength, TPtr aFormatString); - - TBool HaveDevsWithPartialName(TInt& aFirstFoundIndex); - - private: // Data - CBTNotifUIUtil* iUiUtil; - CBTDeviceArray* iLastSeenDevicesArray; // Last seen devices array from BTInqNotifier - RArray iLastSeenDevicesNameComplete; // Is the name in corresponding cell of iLastSeenDevicesArray complete ? - CBTDeviceArray* iLastUsedDevicesArray; // Used devices from BT registry - CBTDeviceArray* iPairedDevicesArray; // Paired devices from Bluetooth registry - CBTDeviceArray* iAdjustedUsedDeviceArray; // 5 Lately used devices + All the Paired devices - CBTEngDevMan* iDevMan; //Async deviceHandler - - CDesCArray* iDefaultDeviceNamesArray; // Default device names array - CEikonEnv& iEikonEnvRef; // Reference to eikonenv - - CAknPopupList* iDevicePopupList; // Popup list for devices - CDesCArrayFlat* iDeviceListRows; // Array for device list format string rows - CAknSingleGraphicPopupMenuStyleListBox* iDeviceListBox; // ListBox for bluetooth devices - CAknPopupList* iSearchFilterPopupList; - - CBTNotifActive* iScanner; - - TBool iDevicesFound; // Flag if any devices has been found - TBool iInquiryComplete; - TBool iBroughtForwards; // Flag for BringForwards - TInt iInquiryStatus; // Error code from inquiry result - - TBTRegistryQueryState iBTRegistryQueryState; // which registry query (if any) is in progress. - TBTDeviceClass iDesiredDeviceClass; // Device Class user selects from search filter - CPeriodic* iPeriodicTimer; // the timer for reseting the user inactivity time - TBool iSystemCancel; // Used for a trick to avoid final device list is still on show - // while taking out mmc during BT device discovery - TBTDeviceResponseParams iDevParams; - TInt iHighLightedItemIndex; - - RSocketServ iSocketServer; // Socket server object - RHostResolver iHostResolver; // Host resolver object - TInquirySockAddr iInquirySockAddr; // Socket address record - TNameEntry iEntry; // Inquiry results record - TBool iPageForName; // Flag for inquiry name - RArray iDevsWithoutName; // Devices without dev name - TInt iCurrentlyResolvingUnnamedDeviceIndex; // Current btdevice to inquiry its name - MBTNDeviceSearchObserver* iDevSearchObserver; - - TBool iExcludePairedDevices; - - - }; - -#endif - -// End of File