bluetoothengine/btui/btuimodel/btdevicedata.cpp
changeset 40 997690c3397a
parent 33 837dcc42fd6a
--- a/bluetoothengine/btui/btuimodel/btdevicedata.cpp	Fri Jun 11 13:48:51 2010 +0300
+++ b/bluetoothengine/btui/btuimodel/btdevicedata.cpp	Wed Jun 23 18:23:52 2010 +0300
@@ -19,46 +19,9 @@
 #include <QDateTime>
 #include <btservices/advancedevdiscoverer.h>
 #include "btuiutil.h"
+#include "btuidevtypemap.h"
 #include "btqtconstants.h"
 
-class DevTypeIconMapping {
-public:    
-    int majorDevClass; // major device class value from CoD
-    int minorDevClass; // minor device class value from CoD
-    int majorProperty;   // one of major properties defined in BtDeviceModel
-    int minorProperty;   // one of minor properties defined in BtDeviceModel
-    char* connectedIcon; // the icon name for connected device
-    char* unconnectedIcon; // the icon name for not connected device.
-};
-
-// mapping table from major and minor Device Classes to device types and icons
-// which are specifically defined in btapplication namespace.
-// (Note audio device mapping is not in this table due to its complex logic)
-static const DevTypeIconMapping DeviceTypeIconMappingTable[] =
-{
-{EMajorDeviceComputer, 0, BtDeviceModel::Computer, 0, 
-        ":/icons/qgn_prop_bt_computer_connect.svg", ":/icons/qgn_prop_bt_computer.svg" },
-{EMajorDevicePhone,    0, BtDeviceModel::Phone,    0, 
-        ":/icons/qgn_prop_bt_phone_connect.svg", ":/icons/qgn_prop_bt_phone.svg"},
-{EMajorDeviceLanAccessPoint, 0, BtDeviceModel::LANAccessDev, 0, 
-        ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg" },
-{EMajorDevicePeripheral, EMinorDevicePeripheralKeyboard, 
-        BtDeviceModel::Peripheral, BtDeviceModel::Keyboard,
-        ":/icons/qgn_prop_bt_keyboard_connect.svg", ":/icons/qgn_prop_bt_keyboard.svg"},
-{EMajorDevicePeripheral, EMinorDevicePeripheralPointer, 
-        BtDeviceModel::Peripheral, BtDeviceModel::Mouse,
-        ":/icons/qgn_prop_bt_mouse_connect.svg", ":/icons/qgn_prop_bt_mouse.svg"},
-{EMajorDeviceImaging, 0, BtDeviceModel::ImagingDev, 0, 
-        ":/icons/qgn_prop_bt_printer_connect.svg", ":/icons/qgn_prop_bt_printer.svg"},
-{EMajorDeviceWearable, 0, BtDeviceModel::WearableDev, 0, 
-        ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg"},
-{EMajorDeviceToy, 0, BtDeviceModel::Toy, 0,
-        ":/icons/qgn_prop_bt_misc.svg", ":/icons/qgn_prop_bt_misc.svg"},
-};
-
-static const int DeviceTypeIconMappingTableSize = 
-        sizeof( DeviceTypeIconMappingTable ) / sizeof( DevTypeIconMapping );
-
 /*!
     Constructor.
  */
@@ -124,7 +87,7 @@
     \param val contains the value at return.
     \param row the row number which the value is from
     \param col the column number which the value is from
-    \param role the role idenfier of the value.
+    \param role the role identifier of the value.
  */
 void BtDeviceData::data(QVariant& val, int row,  int col, int role ) const
 {
@@ -195,7 +158,7 @@
             if(isDeviceInRegistry(qtdev)) {
                 // we cannot remove this device as it is in registry.
                 // remove it in-range property.
-                setMajorProperty(mData[i], BtDeviceModel::InRange, false);
+                setMajorProperty(mData[i], BtuiDevProperty::InRange, false);
                 updateRssi(mData[i], RssiInvalid);
                 mModel.emitDataChanged( i, 0, this );
             }
@@ -232,7 +195,7 @@
             // remore it from model now.
             // clear-registry related properties, so that
             // we get a chance to clean it after device searching later.
-            setMajorProperty(mData[i], BtDeviceModel::RegistryProperties, false);
+            setMajorProperty(mData[i], BtuiDevProperty::RegistryProperties, false);
             mModel.emitDataChanged( i, 0, this );
         }
         else {
@@ -268,7 +231,7 @@
             updateRssi(devData, RssiInvalid);
         }
         // add device-in-registry property:
-        setMajorProperty(devData, BtDeviceModel::InRegistry, true);
+        setMajorProperty(devData, BtuiDevProperty::InRegistry, true);
         updateDeviceProperty(devData, dev, 0 );
         mModel.beginInsertRows( QModelIndex(), mData.count(), mData.count() );
         mData.append( devData );
@@ -276,7 +239,7 @@
     }
     else {
         updateDeviceProperty(mData[i], dev, similarity );
-        setMajorProperty(mData[i], BtDeviceModel::InRegistry, true);
+        setMajorProperty(mData[i], BtuiDevProperty::InRegistry, true);
         mModel.emitDataChanged( i, 0, this );
     }
 }
@@ -290,13 +253,13 @@
 {
     int i = indexOf( dev.Addr() );
     if ( i > -1 ) {
-        int preconn =  BtDeviceModel::Connected 
+        int preconn =  BtuiDevProperty::Connected 
                 & mData[i][BtDeviceModel::MajorPropertyRole].toInt();
         // we only update and signal if connection status is really
         // changed:
         if ( ( preconn != 0 && !connected )
             || ( preconn == 0 && connected ) ) {
-            setMajorProperty(mData[i], BtDeviceModel::Connected, connected );
+            setMajorProperty(mData[i], BtuiDevProperty::Connected, connected );
             mModel.emitDataChanged( i, 0, this );
         }
     }
@@ -323,7 +286,7 @@
     
     if ( pos == -1 ) {
         BtuiModelDataItem devData;
-        setMajorProperty(devData, BtDeviceModel::InRange, true);
+        setMajorProperty(devData, BtuiDevProperty::InRange, true);
         updateRssi(devData, rssi);
         CBtDevExtension* devExt(NULL);
         TRAP_IGNORE( {
@@ -336,7 +299,7 @@
         mModel.endInsertRows();
     }
     else {
-        setMajorProperty(mData[pos], BtDeviceModel::InRange, true);
+        setMajorProperty(mData[pos], BtuiDevProperty::InRange, true);
         updateRssi(mData[pos], rssi);
         mModel.emitDataChanged( pos, 0, this );
     }
@@ -360,7 +323,7 @@
     // If the device store is not empty, we clear
     // registry property from these devices first.
     for (int i = 0; i < mData.count(); ++i) {
-        setMajorProperty(mData[i], BtDeviceModel::RegistryProperties, false);
+        setMajorProperty(mData[i], BtuiDevProperty::RegistryProperties, false);
     }
     if ( mData.count() ) {
         // need to update view because we have changed device properties.
@@ -374,14 +337,14 @@
         int pos = indexOf( devs[i]->Addr() );
         if ( pos > -1 ) {
             // add device-in-registry property:
-            setMajorProperty(mData[pos], BtDeviceModel::InRegistry, true);            
+            setMajorProperty(mData[pos], BtuiDevProperty::InRegistry, true);            
             updateDeviceProperty(mData[pos], *(devs[i]), 0);
             mModel.emitDataChanged( pos, 0, this );
         }
         else {
             BtuiModelDataItem devData;
             // add device-in-registry property:
-            setMajorProperty(devData, BtDeviceModel::InRegistry, true);
+            setMajorProperty(devData, BtuiDevProperty::InRegistry, true);
             updateDeviceProperty(devData, *( devs[i] ), 0 );
             mModel.beginInsertRows(QModelIndex(), mData.count(), mData.count() );
             mData.append( devData );
@@ -416,65 +379,28 @@
     qtdev[BtDeviceModel::LastUsedTimeRole] = QVariant(qdt);
  
     // set paired status:
-    setMajorProperty(qtdev, BtDeviceModel::Bonded, isBonded( dev.Device() ));
+    setMajorProperty(qtdev, BtuiDevProperty::Bonded, isBonded( dev.Device() ));
     
     // set blocked status:
-    setMajorProperty(qtdev, BtDeviceModel::Blocked, 
+    setMajorProperty(qtdev, BtuiDevProperty::Blocked, 
             dev.Device().GlobalSecurity().Banned() );
     // set trusted status:
-    setMajorProperty(qtdev, BtDeviceModel::Trusted, 
+    setMajorProperty(qtdev, BtuiDevProperty::Trusted, 
             dev.Device().GlobalSecurity().NoAuthorise() );
 
     //CoDRole
     //MinorPropertyRole
     int cod = static_cast<int>( dev.Device().DeviceClass().DeviceClass() );
     qtdev[BtDeviceModel::CoDRole] = QVariant(cod);
-    
-    // Initially, clear CoD related properties:
-    int majorProperty = qtdev[BtDeviceModel::MajorPropertyRole].toInt() & 
-        ~BtDeviceModel::CodProperties;
-    
-    int minorProperty = BtDeviceModel::NullProperty;
-    
-    // device type must be mapped according to CoD:
-    int majorDevCls = dev.Device().DeviceClass().MajorDeviceClass();
-    int minorDevCls = dev.Device().DeviceClass().MinorDeviceClass();
 
-    int i;
-    for (i = 0; i < DeviceTypeIconMappingTableSize; ++i ) {
-        if ( DeviceTypeIconMappingTable[i].majorDevClass == majorDevCls &&
-             ( DeviceTypeIconMappingTable[i].minorDevClass == 0 || 
-               DeviceTypeIconMappingTable[i].minorDevClass == minorDevCls ) ) {
-             // device classes match a item in table, get the mapping:
-            majorProperty |= DeviceTypeIconMappingTable[i].majorProperty;
-            minorProperty |= DeviceTypeIconMappingTable[i].minorProperty;
-            break;
-         }
-    }
-    
-    // AV device mapping are not defined in the table, do mapping here if no device
-    // type mapped so far:
-    if ( i == DeviceTypeIconMappingTableSize) {
-        // audio device, carkit, headset or speaker:
-        if( ( majorDevCls == EMajorDeviceAV) 
-            || (dev.Device().DeviceClass().MajorServiceClass() == EMajorServiceRendering 
-            && majorDevCls != EMajorDeviceImaging) ) {
-            
-            majorProperty |= BtDeviceModel::AVDev;
-            
-            if( minorDevCls == EMinorDeviceAVCarAudio ) {
-                // carkit:
-                minorProperty |= BtDeviceModel::Carkit; 
-            }
-            else {
-                // headset:
-                minorProperty |= BtDeviceModel::Headset;
-            }
-        }
-    }
-    
-    qtdev[BtDeviceModel::MajorPropertyRole] = QVariant( majorProperty );
-    qtdev[BtDeviceModel::MinorPropertyRole] = QVariant( minorProperty );
+    int majorDeviceType;
+    int minorDeviceType;
+    // device type is mapped according to CoD:
+    BtuiDevProperty::mapDeiveType(majorDeviceType, minorDeviceType, cod);
+
+    qtdev[BtDeviceModel::MajorPropertyRole] = 
+            QVariant( qtdev[BtDeviceModel::MajorPropertyRole].toInt() | majorDeviceType );
+    qtdev[BtDeviceModel::MinorPropertyRole] = QVariant( minorDeviceType );
 }
 
 int BtDeviceData::indexOf( const TBTDevAddr& addr ) const
@@ -514,10 +440,10 @@
 
 bool BtDeviceData::isDeviceInRange( const BtuiModelDataItem& qtdev )
 {   
-    return BtDeviceModel::InRange & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
+    return BtuiDevProperty::InRange & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
 }
 
 bool BtDeviceData::isDeviceInRegistry( const BtuiModelDataItem& qtdev )
 {
-    return BtDeviceModel::InRegistry & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
+    return BtuiDevProperty::InRegistry & qtdev[BtDeviceModel::MajorPropertyRole].toInt();
 }