bluetoothengine/btui/inc/btuiutil.h
author hgs
Mon, 17 May 2010 11:06:23 +0300
changeset 31 a0ea99b6fa53
child 40 997690c3397a
permissions -rw-r--r--
201019_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     1
/*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     2
* ============================================================================
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     3
*  Name        : btuiutil.h
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     4
*  Part of     : BluetoothUI / bluetoothuimodel       *** Info from the SWAD
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     5
*  Description : utilities in the model for some often used functions, 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     6
*                e.g. conversions between Qt and Symbian types.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     7
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     8
*  Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies).
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
     9
*  All rights reserved.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    10
*  This component and the accompanying materials are made available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    11
*  under the terms of "Eclipse Public License v1.0"
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    12
*  which accompanies this distribution, and is available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    13
*  at the URL "http://www.eclipse.org/legal/epl-v10.html".
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    14
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    15
*  Initial Contributors:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    16
*  Nokia Corporation - initial contribution.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    17
*
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    18
*  Contributors:
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    19
*  Nokia Corporation
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    20
* ============================================================================
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    21
* Template version: 4.2
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    22
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    23
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    24
#ifndef BTUIUTIL_H
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    25
#define BTUIUTIL_H
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    26
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    27
#include <qglobal.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    28
#include <bt_sock.h>
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    29
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    30
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    31
  Converts a QString which contains a BT device address in readable format to
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    32
  Symbian native TBTDevAddr type.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    33
 */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    34
inline void addrReadbleStringToSymbian( const QString &readable, TBTDevAddr &addr)
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    35
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    36
    TBuf<KBTDevAddrSize * 2> buffer(readable.utf16());
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    37
    addr.SetReadable( buffer );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    38
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    39
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    40
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    41
  Converts a Symbian native TBTDevAddr to 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    42
  QString which contains the BT device address in readable format.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    43
 */
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    44
inline void addrSymbianToReadbleString( QString &readable, const TBTDevAddr &addr)
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    45
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    46
    TBuf<KBTDevAddrSize * 2> buffer;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    47
    addr.GetReadable( buffer );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    48
    readable = QString::fromUtf16( buffer.Ptr(), buffer.Length() );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    49
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    50
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    51
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    52
  Decide the device name to display from the device information, and 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    53
  converts the name if necessary. If the device doesn't have a valid name,
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    54
  the given default name will be used.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    55
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    56
inline void getDeviceDisplayName( QString& dispName, const CBTDevice& device ,
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    57
    const TDesC& defaultName )
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    58
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    59
    // friendly name is preferred if available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    60
    if( device.IsValidFriendlyName() && device.FriendlyName().Length()){
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    61
        dispName = QString::fromUtf16( 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    62
                device.FriendlyName().Ptr(), device.FriendlyName().Length() );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    63
    }
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    64
    // next preferred is actual device name
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    65
    else if( device.IsValidDeviceName() && device.DeviceName().Length() ) {
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    66
        dispName = QString::fromUtf8( 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    67
                (char*) device.DeviceName().Ptr(), device.DeviceName().Length() );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    68
    }
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    69
    else {
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    70
        // finally, use default name if nothing else is available
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    71
        dispName = QString::fromUtf16( 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    72
                defaultName.Ptr(), defaultName.Length() );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    73
    }
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    74
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    75
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    76
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    77
  Guess if the given Class of Device indicates an Audio/Video device (headset and carkit)
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    78
  or not.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    79
  Computer device supporting audio is not considered as AV device.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    80
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    81
inline bool isAVDevice( const TBTDeviceClass &cod )
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    82
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    83
    int majorDevCls = cod.MajorDeviceClass();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    84
    int minorDevCls = cod.MinorDeviceClass();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    85
    return ( ( majorDevCls == EMajorDeviceAV ) 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    86
        || ( cod.MajorServiceClass() == EMajorServiceRendering 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    87
        && majorDevCls != EMajorDeviceImaging ) );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    88
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    89
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    90
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    91
  Guess if the given Class of Device indicates an input device (keyboard and mouse)
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    92
  or not.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    93
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    94
inline bool isHIDDevice( const TBTDeviceClass &cod )
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    95
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    96
    int majorDevCls = cod.MajorDeviceClass();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    97
    int minorDevCls = cod.MinorDeviceClass();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    98
    return ( ( majorDevCls == EMajorDevicePeripheral ) &&
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
    99
        ( minorDevCls == EMinorDevicePeripheralKeyboard || 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   100
        minorDevCls == EMinorDevicePeripheralPointer ) );
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   101
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   102
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   103
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   104
  Tells if the given device is bonded.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   105
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   106
inline bool isBonded( const CBTDevice &dev )
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   107
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   108
    // todo: this has not addresses Just Works pairing mode yet.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   109
    return dev.IsValidPaired() && dev.IsPaired() &&
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   110
        dev.LinkKeyType() != ELinkKeyUnauthenticatedUpgradable;
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   111
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   112
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   113
/*!
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   114
  Tells if the given device supports file transfer.
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   115
*/
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   116
inline bool supportsFileTransfer( const TBTDeviceClass &cod )
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   117
{
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   118
    int majorDevCls = cod.MajorDeviceClass();
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   119
    return ( majorDevCls == EMajorDevicePhone 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   120
            || majorDevCls == EMajorDeviceComputer ); 
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   121
}
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   122
a0ea99b6fa53 201019_1
hgs
parents:
diff changeset
   123
#endif // BTUIMODELUTIL_H