diff -r 19bd632b5100 -r b72428996822 bluetoothengine/btui/devmodel/inc/btdevmodel.h --- a/bluetoothengine/btui/devmodel/inc/btdevmodel.h Fri May 28 17:03:06 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,304 +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: Maintain a Bluetooth devices data model for UI components. -* -*/ - -#ifndef BTDEVMODEL_H -#define BTDEVMODEL_H - -#include -#include -#include -#include - -// used to support different device list of UI -enum TBTDeviceGroup - { - EGroupPaired, // for paired device list - EGroupBlocked // for blocked device list - }; - -// for showing left side icon of a device in device list. Based on CoD major device -enum TBTDeviceType - { - EDeviceComputer = 0,// computer - EDevicePhone, // mobile phone - EDeviceAudio, // headset or loudspeakers - EDeviceCarkit, // audio-caraudio - EDevicePrinter, // imaging-printer - EDeviceKeyboard, // peripheral-keyboard - EDeviceMice, // peripheral-pointer - EDeviceGPS, // major service positioning - EDeviceDefault, // device of other type than define above. - }; - -// for showing right side icon of a device on a device list -enum TBTDeviceStatus - { - EStatusTrusted = 0x0001, // show authorised icon on both paired and blocked lists - EStatusBtuiConnected = 0x0002, // show connected icon on paired list - EStatusBlocked = 0x0004, // show device on blocked list - EStatusPaired = 0x0008, // show the device in paired devices list - EStatusConnectable = 0x0010, // The device can be connected to. - // NOTE: connected devices are also connectable, - // despite they cannot be connected before disconnect. - EStatusPhysicallyConnected = 0x0020 // Physical bluetooth connection. - }; - -enum TBTDeviceOp - { - EOpPair, - EOpUnpair, - EOpBlock, - EOpUnblock, - EOpConnect, - EOpDisconnect, - EOpTrust, - EOpUntrust, - EOpChangeName, - EOpNone, - EOPInternalUntust // used by CBTDevModel internally - }; - -/* TBTDevAddr that is not address of any device -*/ -#define KNullAddress TBTDevAddr(TInt64(0)) - -// contain all device info needed for shown on a device list -NONSHARABLE_CLASS( TBTDevice ) - { -public: - /** Constructor, that initialized this as empty*/ - IMPORT_C TBTDevice(); - /** Copy constructor */ - IMPORT_C TBTDevice(const TBTDevice& aDevice); - /** Copy */ - IMPORT_C TBTDevice& operator=(const TBTDevice& aDevice); - - TBTDeviceType iType; // left side icon - TBTDeviceClass iDeviceClass; // this is needed by connect - TBTDeviceName iName; // a formated friendly/device name in corresponding CBTDevice - TBTDeviceName iFriendlyName; // still need to remember if friendly name has been set - TUint iStatus; // mask of TDeviceStatus - TBTDeviceOp iOperation; // last operation on the device - TBTDevAddr iAddr; // bt device address - TInt iIndex; // new position of the device in the device list. - // Default value means iAddr should be used instead. - TBTLinkKeyType iLinkKeyType; - TNameEntry iNameEntry; // the device's EIR data - }; -/** Static methods for TBTDeviceComparison. These are meant to be given to TBTDeviceSortOrder and -* to be used for defining sort orders. -*/ -class TBTDeviceComparison - { -public: - /** - * Compare function for alphabetic sorting order. - * @param aFirstDevice to be compared - * @param aSecondDevice sencond device to be compared - * @return 1 if aFirstDevice is before aSecondDevice -1 otherwise. May not return 0, - * on devices that are not the same. - */ - - IMPORT_C static TInt CompareAphabetically( - const TBTDevice& aFirstDevice, const TBTDevice& aSecondDevice) ; - - /** - * Compare function for reverse alphabetic sorting order. - * @param aFirstDevice to be compared - * @param aSecondDevice sencond device to be compared - * @return 1 if aFirstDevice is before aSecondDevice -1 otherwise. May not return 0, - * on devices that are not the same. - */ - IMPORT_C static TInt ReverseCompareAphabetically( - const TBTDevice& aFirstDevice, const TBTDevice& aSecondDevice) ; - }; - -typedef RPointerArray RDeviceArray; -typedef RPointerArray RBTDevNameArray; -typedef TLinearOrder TBTDeviceSortOrder ; - -class CBTDevModelBase; - -/** -* Callback interface for informing about the changes in the devices shown by the listening view. -* Also a callback interface that informs the listener when the issued commands have been completed. -*/ -class MBTDeviceObserver - { -public: - /** - * Informs the observer that ChangeDevice command has been completed. - * - * The listener must not change the displaid devices, since RefreshDeviceList is used for that purpose. - * Also this will not be called, if changes happen from outside such as pairing initiated by 3rd party - * of blocking from notifier. - * - * @param aErr Symbian error code, KErrNone if no error. - * @param aDevice the device which is changed. This has allways given to the listener by RefreshDeviceList - * prior this call, if that device is visible at the listening view. This not passed by refrence, - * since this device could change, if registry is changed - * @param aDevNameArray hold conflicting devices' short names if "AlreadyExist" error happened during "connect" - * @return None. - */ - virtual void NotifyChangeDeviceComplete(const TInt aErr, const TBTDevice& aDevice, - const RBTDevNameArray* aDevNameArray = NULL) = 0; - - /** - * This is used to notify the listening graphic component that the deviceList is changed. - * After receiving this call the graphic component has to redraw its screen to match this list. - * @param aDevices The devices to be displaid. - * @param aSelectedItemIndex The index of the item to be selected in the given devices. - */ - virtual void RefreshDeviceList(const RDeviceArray* aDevices,TInt aSelectedItemIndex) =0; - - /** - * This is used before calling RefreshDeviceList to save the currently selected index, - * so that the same device could be selected after the refresh, if that device still exists. - * @param None. - * @return the selected device. KErrNotFound if the view has no devices. - */ - virtual TInt CurrentItemIndex() =0; - }; - -/** -* This is a abstract class providing basic common fucntions for derived classes. -* It act as a facade between UI applications and Bluetooth Engine Device Management API. -*/ -NONSHARABLE_CLASS( CBTDevModel ) : public CBase - { -public: // Constructors and destructor - /** - * Constructs devmodel. - * @param aGroup. do you wish to list other or blocked devices. - * @param MBTDeviceObserver The object that will receive the notifications for command completes, - * @param the order the devices are sorted in the list. If you do not give this the devices - * will be sorted in ascending alphabetic order. Devices with same name are sorted according to - * bluetooth addreses. DevModel will take the ownership of this object. - */ - IMPORT_C static CBTDevModel* NewL(const TBTDeviceGroup aGroup, - MBTDeviceObserver* aObserver=NULL, - TBTDeviceSortOrder* aOrder=NULL); - /** Destructor */ - virtual ~CBTDevModel(); - -public: // New functions - - /** - * Get device based on addr or index. - * @param aDevice the TBTDevice holder. The device address is passed in - * @return KErrNone if ok. - * KErrArgument, if neither index not address is filled. - * KErrOverFlow if index is out of range. - * KErrNotFound if the given address does not exists, in the internal array. - */ - IMPORT_C TInt GetDevice(TBTDevice& aDevice); - - /** - * Checks if any of the devices shown in view have active bluetooth connection. - * @return ETrue, if one or more devices are connected. EFalse if no devices are connected. - * This also return EFalse, in case of blocked devices. - */ - IMPORT_C TBool IsAnyDeviceConnected(); - - /** - * Creates and allocates TBTDevice representation of this device. - * The caller is responsibe for the garbage connection of the created device. - * @param aRegDevice the device to be converted - * @return the TBTDevice representation of the same device - */ - IMPORT_C TBTDevice* CreateDeviceL(const CBTDevice* aRegDevice, - TNameEntry* aNameEntry); - - /** - * Change status of all devices on the list, e.g. used by unpair all and unblock all commands. - * @param aOperation unpair/unblock - * @return None. - */ - IMPORT_C void ChangeAllDevices(const TBTDeviceOp aOperation); - - /** - * Change device status, add device, e.g. pair/block, or delete device,e.g. unpair/unblcok - * You must not pair device without properly filling deviceName. - * @param aDevice the TBTDevice holder. The device address is passed in - * @return None - */ - IMPORT_C void ChangeDevice(const TBTDevice& aDevice); - - /** - * Change device status, add device, e.g. pair/block, or delete device,e.g. unpair/unblcok - * @param aDevice the CBTDevice holder. - * @return None. - */ - IMPORT_C void ChangeDevice(const CBTDevice* aDevice, - TNameEntry* aNameEntry, - TBTDeviceOp aOp) ; - - /** - * Cancel ongoing operation, such as connecting or pairing. - * At the moment btui does not support other Other operations than pairing and connecting cannot be canceled. - * - * @param aDevice the device, whose command is to be canceled. - * @return None. - */ - IMPORT_C void CancelChange(const TBTDevice& aDevice); - - /** - *Checks if there are ChangeDeviceCommands that are not finnished. - */ - IMPORT_C TBool DeviceChangeInProgress(); - - -private: - /** constructor */ - CBTDevModel(); - - /** Symbian 2nd phase constuctor that may leave. - * @param aGroup EGroupPaired and EGroupBlocked are supported. - * @param aObserver the observer of the device list. This is not mandatory - * @param aOrder The order the devices are sorted - */ - void ConstructL(const TBTDeviceGroup aGroup, - MBTDeviceObserver* aObserver, - TBTDeviceSortOrder* aOrder ); -private: - - CBTDevModelBase* iDevModel; // CBTDevModelPaired or CBTDevModel Blocked - TBTDeviceGroup iGroup; - }; - - -/** Adds flags to iStatus of TBTDevice. - *@param aStatus the status of the device - *@param aFlags the flags to be set - */ -inline TUint SetStatusFlags(TUint& aStatus,TBTDeviceStatus aFlags) - { - aStatus |=aFlags; - return aStatus; - } -/** Clear status flags to iStatus of TBTDevice. - *@param aStatus the status of the device - *@param aFlags the flags to be set - */ -inline TUint UnsetStatusFlags(TUint& aStatus,TBTDeviceStatus aFlags) - { - aStatus &= ~aFlags; - return aStatus; - } - -#endif -