bluetoothengine/btui/btuimodel/btlocalsetting.cpp
author hgs
Mon, 03 May 2010 14:36:07 +0300
changeset 29 48ae3789ce00
child 31 a0ea99b6fa53
permissions -rw-r--r--
201017_2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     1
/*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     3
* All rights reserved.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     8
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
     9
* Initial Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    11
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    12
* Contributors:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    13
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    14
* Description: 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    15
*
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    16
*/
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    17
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    18
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    19
#include "btlocalsetting.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    20
#include <btdevice.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    21
//#include <QStringList>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    22
#include <btmanclient.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    23
#include <bt_subscribe.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    24
//#include <centralrepository.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    25
//#include <coreapplicationuissdkcrkeys.h>
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    26
#include "btqtconstants.h"
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    27
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    28
const int KLocalDeviceNameWatcher = 10;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    29
const int KBtLinkCountWatcher = 11;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    30
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    31
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    32
    Constructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    33
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    34
BtLocalSetting::BtLocalSetting( BtuiModel& model, QObject *parent )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    35
    : QObject( parent ), mModel(model), mLocalDeviceWatcher(0)
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    36
    {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    37
    int err( 0 );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    38
    if (!err ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    39
        err = mLocalDeviceKey.Attach( KPropertyUidBluetoothCategory, 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    40
                    KPropertyKeyBluetoothGetRegistryTableChange );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    41
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    42
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    43
    Q_CHECK_PTR( !err ); // other proper alternative?
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    44
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    45
    TRAP_IGNORE({
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    46
        mBtengSetting = CBTEngSettings::NewL( this );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    47
        mLocalDeviceWatcher = CBtSimpleActive::NewL(*this, KLocalDeviceNameWatcher );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    48
    });
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    49
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    50
    Q_CHECK_PTR( mBtengSetting );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    51
    Q_CHECK_PTR( mLocalDeviceWatcher );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    52
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    53
    for ( int i = 0; i < BtuiModel::LocalSettingColCount; ++i ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    54
        // Initialize the list with empty values.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    55
        mData.append( BtuiModelDataItem() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    56
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    57
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    58
    // subscribe to local device table change:
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    59
    mLocalDeviceKey.Subscribe( mLocalDeviceWatcher->RequestStatus() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    60
    mLocalDeviceWatcher->GoActive();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    61
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    62
    // Get the device name
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    63
    TBTDeviceName  deviceName;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    64
    (void) mBtengSetting->GetLocalName( deviceName );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    65
    updateDeviceName( QString::fromUtf16( deviceName.Ptr(), deviceName.Length() ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    66
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    67
    // Get the power setting.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    68
    TBTPowerStateValue power( EBTPowerOff );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    69
    (void) mBtengSetting->GetPowerState( power );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    70
    setPowerSetting( power );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    71
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    72
    // Get the visibility mode
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    73
    TBTVisibilityMode visibilityMode( EBTVisibilityModeNoScans );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    74
    (void) mBtengSetting->GetVisibilityMode( visibilityMode );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    75
    setVisibilityMode( visibilityMode );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    76
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    77
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    78
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    79
    Destructor.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    80
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    81
BtLocalSetting::~BtLocalSetting()
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    82
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    83
    // delete main data structure
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    84
    delete mBtengSetting;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    85
    delete mLocalDeviceWatcher;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    86
    mLocalDeviceKey.Close();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    87
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    88
    // delete mBtLinkCountWatcher;
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    89
    //mBtLinkCountKey.Close();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    90
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    91
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    92
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    93
bool BtLocalSetting::isValid( int column) const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    94
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    95
    return column < mData.count();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    96
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    97
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    98
int BtLocalSetting::itemCount() const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
    99
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   100
    return mData.count();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   101
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   102
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   103
void BtLocalSetting::data(QVariant& val, int col, int role ) const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   104
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   105
    if ( isValid( col ) ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   106
        val = mData.at( col ).value( role );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   107
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   108
    else {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   109
        val = QVariant( QVariant::Invalid );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   110
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   111
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   112
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   113
BtuiModelDataItem BtLocalSetting::itemData( int col ) const
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   114
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   115
    if ( isValid( col ) ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   116
        return mData.at( col );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   117
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   118
    return BtuiModelDataItem();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   119
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   120
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   121
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   122
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   123
    Provides notification of changes in the power state
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   124
    of the Bluetooth hardware.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   125
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   126
    @param state EBTPowerOff if the BT hardware has been turned off,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   127
                 EBTPowerOn if it has been turned on.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   128
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   129
void BtLocalSetting::PowerStateChanged( TBTPowerStateValue state ) 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   130
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   131
    setPowerSetting( state );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   132
    emit settingDataChanged( BtuiModel::LocalSettingRow, BtuiModel::PowerStateCol, this );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   133
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   134
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   135
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   136
    Provides notification of changes in the discoverability
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   137
    mode of the Bluetooth hardware.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   138
    @param state EBTDiscModeHidden if the BT hardware is in hidden mode,
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   139
                  EBTDiscModeGeneral if it is in visible mode.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   140
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   141
void BtLocalSetting::VisibilityModeChanged( TBTVisibilityMode state )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   142
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   143
    setVisibilityMode( state );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   144
    emit settingDataChanged( BtuiModel::LocalSettingRow, BtuiModel::VisibilityCol, this );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   145
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   146
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   147
void BtLocalSetting::RequestCompletedL( CBtSimpleActive* active, TInt status ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   148
    Q_UNUSED( active );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   149
    Q_UNUSED( status );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   150
    if ( active->RequestId() == KLocalDeviceNameWatcher ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   151
        mLocalDeviceKey.Subscribe( mLocalDeviceWatcher->RequestStatus() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   152
        mLocalDeviceWatcher->GoActive();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   153
        updateDeviceName( QString() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   154
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   155
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   156
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   157
void BtLocalSetting::CancelRequest( TInt requestId ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   158
    if ( requestId == KLocalDeviceNameWatcher ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   159
        mLocalDeviceKey.Cancel();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   160
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   161
    else if ( requestId == KBtLinkCountWatcher ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   162
        //mBtLinkCountKey.Cancel();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   163
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   164
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   165
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   166
void BtLocalSetting::HandleError( CBtSimpleActive* active, TInt error ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   167
    Q_UNUSED( active );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   168
    Q_UNUSED( error );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   169
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   170
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   171
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   172
    Update local Bluetooth device name in the data store.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   173
    @param name the latest Bluetooth name.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   174
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   175
void BtLocalSetting::updateDeviceName( const QString &name ) 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   176
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   177
    // To-do: the data structure initialization is not impled yet in the model
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   178
    BtuiModelDataItem& item = 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   179
            mData[ BtuiModel::BluetoothNameCol ];
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   180
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   181
    if ( item.isEmpty() ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   182
        // Initialize with additional information on the setting
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   183
        item[ BtuiModel::SettingIdentity ] = QVariant( tr( "Local Bluetooth name" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   184
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   185
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   186
    bool setByUser = !name.isEmpty();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   187
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   188
    // The additional parameter is the flag indicating whether the 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   189
    // Bluetooth name has been set by the user.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   190
    // The flag is set to true if the name has been set.    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   191
    // requirement does not 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   192
    //nitem[ BtuiModel::SettingValueParam ] = QVariant( setByUser );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   193
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   194
    QString resolvedName( name );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   195
    if ( resolvedName.isEmpty() ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   196
        // We get the default name as suggestion for the user to set.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   197
        getNameFromRegistry( resolvedName );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   198
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   199
    item[ BtuiModel::settingDisplay ] = QVariant( resolvedName );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   200
    item[ BtuiModel::SettingValue ] = QVariant( resolvedName );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   201
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   202
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   203
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   204
    Updates all values related to the power setting.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   205
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   206
void BtLocalSetting::setPowerSetting( TBTPowerStateValue state )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   207
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   208
    BtuiModelDataItem& item = 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   209
            mData[ BtuiModel::PowerStateCol ];
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   210
    if ( item.isEmpty() ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   211
        // Initialize with additional information on the setting
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   212
        item[ BtuiModel::SettingIdentity ] = QVariant( tr( "Bluetooth power" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   213
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   214
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   215
    bool powerOn = ( state == EBTPowerOn );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   216
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   217
    item[ BtuiModel::settingDisplay ] = 
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   218
            powerOn ? QVariant( tr( "On" ) ) : QVariant( tr( "Off" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   219
    item[ BtuiModel::SettingValue ] = QVariant( powerOn );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   220
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   221
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   222
void BtLocalSetting::setVisibilityMode( TBTVisibilityMode state )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   223
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   224
    BtuiModelDataItem& item = mData[ BtuiModel::VisibilityCol ];
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   225
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   226
    if ( item.isEmpty() ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   227
        item[ BtuiModel::SettingIdentity ] = QVariant( tr( "Phone visibility" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   228
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   229
    
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   230
    if ( state == EBTVisibilityModeHidden )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   231
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   232
        item [ BtuiModel::settingDisplay ] = QVariant( tr( "Hidden" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   233
        }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   234
    else if ( state == EBTVisibilityModeGeneral )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   235
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   236
        item [ BtuiModel::settingDisplay ] = QVariant( tr( "Visible" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   237
        }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   238
    else
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   239
        {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   240
        item [ BtuiModel::settingDisplay ] = QVariant( tr( "Temporarily visible" ) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   241
        }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   242
    item [ BtuiModel::SettingValue ] = QVariant( QtVisibilityMode(state) );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   243
}
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   244
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   245
/*!
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   246
    Get local Bluetooth device name from BTRegistry.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   247
 */
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   248
void BtLocalSetting::getNameFromRegistry( QString &name )
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   249
{
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   250
    RBTRegServ btRegServ;   // Session with BTMan
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   251
    RBTLocalDevice btReg;   // Subsession with local device table
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   252
    TBTLocalDevice localDev;// Data structure holding local device information
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   253
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   254
    TInt err = btRegServ.Connect();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   255
    if ( !err ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   256
        err = btReg.Open( btRegServ );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   257
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   258
    if ( !err ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   259
        // Read the BT local name from BT Registry.
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   260
        err = btReg.Get( localDev );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   261
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   262
    if ( !err ) {
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   263
        name = QString::fromUtf8( (const char*) localDev.DeviceName().Ptr(), (int) localDev.DeviceName().Length() );
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   264
    }
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   265
    btReg.Close();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   266
    btRegServ.Close();
48ae3789ce00 201017_2
hgs
parents:
diff changeset
   267
}