usbuis/usbuiqt/src/usbuisettingmodel.cpp
author hgs
Fri, 23 Apr 2010 23:17:21 +0300
changeset 43 4712310216c0
permissions -rw-r--r--
201003
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "usbuisettingmodel.h"
hgs
parents:
diff changeset
    19
#include "usbuimodelactive.h"
hgs
parents:
diff changeset
    20
#include "mydebug.h"
hgs
parents:
diff changeset
    21
#include <QStringList>
hgs
parents:
diff changeset
    22
#include <UsbWatcherInternalCRKeys.h>
hgs
parents:
diff changeset
    23
#include <XQSettingsKey>
hgs
parents:
diff changeset
    24
#include <usbman.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
const QString TextIdPrefix = ("txt_usb_");
hgs
parents:
diff changeset
    27
const QString ModeIconNamePrefix = (":/icons/usb_icon_mode_");
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
/*!
hgs
parents:
diff changeset
    30
    Constructor.
hgs
parents:
diff changeset
    31
 */
hgs
parents:
diff changeset
    32
UsbUiSettingModel::UsbUiSettingModel( QObject *parent )
hgs
parents:
diff changeset
    33
    : QAbstractItemModel( parent )
hgs
parents:
diff changeset
    34
{
hgs
parents:
diff changeset
    35
    mModelActive = new UsbUiModelActive();
hgs
parents:
diff changeset
    36
    
hgs
parents:
diff changeset
    37
    for ( int i = 0; i < UsbUiSettingModel::EndOfSettings; i++ ) {
hgs
parents:
diff changeset
    38
        // Initialize the list with empty values.
hgs
parents:
diff changeset
    39
        mSettingsList.append( QMap< int, QVariant >() );
hgs
parents:
diff changeset
    40
    }
hgs
parents:
diff changeset
    41
    
hgs
parents:
diff changeset
    42
    mCurrentMode = currentMode();
hgs
parents:
diff changeset
    43
    mPreviousMode = mCurrentMode;
hgs
parents:
diff changeset
    44
    setUsbSettings(mCurrentMode);
hgs
parents:
diff changeset
    45
  	bool ret = mSettingsManager.startMonitoring( 
hgs
parents:
diff changeset
    46
   	        XQSettingsKey( XQSettingsKey::TargetCentralRepository, 
hgs
parents:
diff changeset
    47
   	                KCRUidUsbWatcher.iUid, KUsbWatcherPersonality ) );
hgs
parents:
diff changeset
    48
    myDebug() << ">>> UsbUiSettingModel::startMonitoring value=" 
hgs
parents:
diff changeset
    49
              << ret; 
hgs
parents:
diff changeset
    50
                              
hgs
parents:
diff changeset
    51
   	// signal: personality changed in the central repository                
hgs
parents:
diff changeset
    52
   	connect( &mSettingsManager, 
hgs
parents:
diff changeset
    53
   	        SIGNAL( valueChanged( const XQSettingsKey&, const QVariant& ) ), 
hgs
parents:
diff changeset
    54
   	        this, 
hgs
parents:
diff changeset
    55
   	        SLOT( usbModeChanged( const XQSettingsKey&, const QVariant& ) ) );
hgs
parents:
diff changeset
    56
   	        
hgs
parents:
diff changeset
    57
   // signal: response from usbwatcher to our attempt to set the personality 	        
hgs
parents:
diff changeset
    58
   	connect( mModelActive, 
hgs
parents:
diff changeset
    59
   	        SIGNAL( requestCompleted( int status ) ), 
hgs
parents:
diff changeset
    60
   	        this, 
hgs
parents:
diff changeset
    61
   	        SLOT( setPersonalityCompleted (int status )));
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
}
hgs
parents:
diff changeset
    64
/*!
hgs
parents:
diff changeset
    65
 * calls the model's set functions to initialize the model's data
hgs
parents:
diff changeset
    66
 */
hgs
parents:
diff changeset
    67
void UsbUiSettingModel::setUsbSettings( int aModeId )
hgs
parents:
diff changeset
    68
    {
hgs
parents:
diff changeset
    69
    setUsbModelistSetting( aModeId ); 
hgs
parents:
diff changeset
    70
    setDefaultModeSetting();
hgs
parents:
diff changeset
    71
    setDescriptionSetting();
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
/*!
hgs
parents:
diff changeset
    75
    Destructor.
hgs
parents:
diff changeset
    76
 */
hgs
parents:
diff changeset
    77
UsbUiSettingModel::~UsbUiSettingModel()
hgs
parents:
diff changeset
    78
{
hgs
parents:
diff changeset
    79
    myDebug() << ">>> UsbUiSettingModel::~UsbUiSettingModel";
hgs
parents:
diff changeset
    80
    mSettingsManager.stopMonitoring( 
hgs
parents:
diff changeset
    81
            XQSettingsKey( XQSettingsKey::TargetCentralRepository, 
hgs
parents:
diff changeset
    82
                    KCRUidUsbWatcher.iUid, KUsbWatcherPersonality ) );
hgs
parents:
diff changeset
    83
    delete mModelActive;
hgs
parents:
diff changeset
    84
    myDebug() << "<<< UsbUiSettingModel::~UsbUiSettingModel";
hgs
parents:
diff changeset
    85
}
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
/*!
hgs
parents:
diff changeset
    88
    Provides notification of changes in selected usb mode
hgs
parents:
diff changeset
    89
 */
hgs
parents:
diff changeset
    90
void UsbUiSettingModel::usbModeChanged( const XQSettingsKey &key,  
hgs
parents:
diff changeset
    91
        const QVariant &value )  
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
Q_UNUSED(key);
hgs
parents:
diff changeset
    94
    myDebug() << ">>> UsbUiSettingModel::usbModeChanged";
hgs
parents:
diff changeset
    95
    // key is not checked, as we monitor only one key
hgs
parents:
diff changeset
    96
 
hgs
parents:
diff changeset
    97
    setNewUsbMode(value.toInt());
hgs
parents:
diff changeset
    98
                                  
hgs
parents:
diff changeset
    99
    myDebug() << "<<< UsbUiSettingModel::usbModeChanged"; 
hgs
parents:
diff changeset
   100
}
hgs
parents:
diff changeset
   101
/*!
hgs
parents:
diff changeset
   102
 * updates the model rows and emits signal datachanged
hgs
parents:
diff changeset
   103
 */
hgs
parents:
diff changeset
   104
void UsbUiSettingModel::setNewUsbMode(int newPersonality)
hgs
parents:
diff changeset
   105
    
hgs
parents:
diff changeset
   106
    {
hgs
parents:
diff changeset
   107
    myDebug() << ">>> UsbUiSettingModel::setNewUsbMode value=" 
hgs
parents:
diff changeset
   108
            << newPersonality; 
hgs
parents:
diff changeset
   109
            
hgs
parents:
diff changeset
   110
    mCurrentMode = newPersonality;
hgs
parents:
diff changeset
   111
    setUsbSettings(mCurrentMode);
hgs
parents:
diff changeset
   112
   	
hgs
parents:
diff changeset
   113
    emit dataChanged( createIndex( DefaultMode, KDefaultColumn ), 
hgs
parents:
diff changeset
   114
            createIndex( UsbModeList, KDefaultColumn ) );   
hgs
parents:
diff changeset
   115
         
hgs
parents:
diff changeset
   116
    myDebug() << "<<< UsbUiSettingModel::setNewUsbMode"; 
hgs
parents:
diff changeset
   117
    }
hgs
parents:
diff changeset
   118
/*!
hgs
parents:
diff changeset
   119
 * Returns the index of the item in the model specified by the given row, column and parent index.
hgs
parents:
diff changeset
   120
 */
hgs
parents:
diff changeset
   121
QModelIndex UsbUiSettingModel::index( int row, int column, const QModelIndex &parent ) const
hgs
parents:
diff changeset
   122
{
hgs
parents:
diff changeset
   123
    return hasIndex( row, column, parent ) ? createIndex( row, column ) : QModelIndex();
hgs
parents:
diff changeset
   124
}
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
/*
hgs
parents:
diff changeset
   128
    This model does not support hierarchy, so this returns an empty model index. 
hgs
parents:
diff changeset
   129
 */
hgs
parents:
diff changeset
   130
QModelIndex UsbUiSettingModel::parent( const QModelIndex &child ) const
hgs
parents:
diff changeset
   131
{
hgs
parents:
diff changeset
   132
    Q_UNUSED( child );
hgs
parents:
diff changeset
   133
    return QModelIndex();
hgs
parents:
diff changeset
   134
}
hgs
parents:
diff changeset
   135
/*!
hgs
parents:
diff changeset
   136
 * Returns the number of rows under the given parent
hgs
parents:
diff changeset
   137
 */
hgs
parents:
diff changeset
   138
int UsbUiSettingModel::rowCount( const QModelIndex &parent ) const
hgs
parents:
diff changeset
   139
{
hgs
parents:
diff changeset
   140
    Q_UNUSED( parent );
hgs
parents:
diff changeset
   141
    return mSettingsList.count();
hgs
parents:
diff changeset
   142
}
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
/*!
hgs
parents:
diff changeset
   146
 * Returns the number of columns for the children of the given parent.
hgs
parents:
diff changeset
   147
 * This model is one-dimensional, so this returns 1.
hgs
parents:
diff changeset
   148
 */
hgs
parents:
diff changeset
   149
int UsbUiSettingModel::columnCount( const QModelIndex &parent ) const
hgs
parents:
diff changeset
   150
{
hgs
parents:
diff changeset
   151
    Q_UNUSED( parent );
hgs
parents:
diff changeset
   152
    return 1;
hgs
parents:
diff changeset
   153
}
hgs
parents:
diff changeset
   154
/*!
hgs
parents:
diff changeset
   155
 * Returns the data stored under the given role for the item referred to by the index.
hgs
parents:
diff changeset
   156
 */
hgs
parents:
diff changeset
   157
QVariant UsbUiSettingModel::data( const QModelIndex &index, int role ) const
hgs
parents:
diff changeset
   158
{
hgs
parents:
diff changeset
   159
    return mSettingsList.value( index.row() ).value( role );
hgs
parents:
diff changeset
   160
}
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
/*!
hgs
parents:
diff changeset
   164
 * This is called when usb mode is changed, it only sets the personality when the given role is EditRole 
hgs
parents:
diff changeset
   165
 */
hgs
parents:
diff changeset
   166
bool UsbUiSettingModel::setData(const QModelIndex &index, const QVariant &value, int role)
hgs
parents:
diff changeset
   167
{
hgs
parents:
diff changeset
   168
    myDebug() << ">>>  UsbUiSettingModel::setData";
hgs
parents:
diff changeset
   169
    bool success = false;
hgs
parents:
diff changeset
   170
    if ( role == Qt::EditRole ) {
hgs
parents:
diff changeset
   171
        // Only allow changes on the value with role EditRole. Others are managed here.
hgs
parents:
diff changeset
   172
        switch ( index.row() ) {
hgs
parents:
diff changeset
   173
        case UsbModeList: {            
hgs
parents:
diff changeset
   174
            mModelActive->SetUsbPersonality( mPersonalityIds.at( value.toInt() ) );
hgs
parents:
diff changeset
   175
            success = true;
hgs
parents:
diff changeset
   176
            // also update the rest of the model with the about to be selected mode right away
hgs
parents:
diff changeset
   177
            setNewUsbMode(mPersonalityIds.at( value.toInt() ));
hgs
parents:
diff changeset
   178
            break;
hgs
parents:
diff changeset
   179
            }
hgs
parents:
diff changeset
   180
        case DefaultMode:
hgs
parents:
diff changeset
   181
            //no break
hgs
parents:
diff changeset
   182
        case Description:
hgs
parents:
diff changeset
   183
            //no break
hgs
parents:
diff changeset
   184
        default:
hgs
parents:
diff changeset
   185
            myDebug() << "    UsbUiSettingModel::setData not supported row " << index.row();
hgs
parents:
diff changeset
   186
            break;
hgs
parents:
diff changeset
   187
        } 
hgs
parents:
diff changeset
   188
    }   
hgs
parents:
diff changeset
   189
    myDebug() << "<<<  UsbUiSettingModel::setData return " << success;
hgs
parents:
diff changeset
   190
    return success;
hgs
parents:
diff changeset
   191
}
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
/*!
hgs
parents:
diff changeset
   194
 * Getter for the source data.
hgs
parents:
diff changeset
   195
 */
hgs
parents:
diff changeset
   196
const QModelIndex* UsbUiSettingModel::sourceData() const
hgs
parents:
diff changeset
   197
{
hgs
parents:
diff changeset
   198
    return new QModelIndex( createIndex( 0, 0 ) );
hgs
parents:
diff changeset
   199
}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
/*!
hgs
parents:
diff changeset
   202
 * creats the logical name of the modename string for the list
hgs
parents:
diff changeset
   203
 */
hgs
parents:
diff changeset
   204
QString UsbUiSettingModel::modeListName( int modeId )
hgs
parents:
diff changeset
   205
{
hgs
parents:
diff changeset
   206
    QString textId = TextIdPrefix + "modelistname_" + QString::number( modeId );
hgs
parents:
diff changeset
   207
    QString modeName = qtTrId( textId.toAscii() );
hgs
parents:
diff changeset
   208
    return modeName;
hgs
parents:
diff changeset
   209
}
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
/*!
hgs
parents:
diff changeset
   212
 * Get the current USB mode (personality) ID
hgs
parents:
diff changeset
   213
 */
hgs
parents:
diff changeset
   214
int UsbUiSettingModel::currentMode()
hgs
parents:
diff changeset
   215
{
hgs
parents:
diff changeset
   216
    myDebug() << ">>>  UsbUiSettingModel::CurrentMode";
hgs
parents:
diff changeset
   217
    int currentMode = mSettingsManager.readItemValue(
hgs
parents:
diff changeset
   218
                XQSettingsKey( XQSettingsKey::TargetCentralRepository, 
hgs
parents:
diff changeset
   219
                KCRUidUsbWatcher.iUid, KUsbWatcherPersonality ) ).toInt();
hgs
parents:
diff changeset
   220
    myDebug() << "<<< UsbUiSettingModel::CurrentMode " << currentMode;
hgs
parents:
diff changeset
   221
    return currentMode;
hgs
parents:
diff changeset
   222
}
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
/*!
hgs
parents:
diff changeset
   225
 * sets the value to different roles of the model's first row
hgs
parents:
diff changeset
   226
 */
hgs
parents:
diff changeset
   227
void UsbUiSettingModel::setDefaultModeSetting()
hgs
parents:
diff changeset
   228
{    
hgs
parents:
diff changeset
   229
    QString iconName;
hgs
parents:
diff changeset
   230
    QString modeName;
hgs
parents:
diff changeset
   231
    //empty iconName and modeName are used for a hidden personality
hgs
parents:
diff changeset
   232
    if ( !isPersonalityHidden(mCurrentMode) ) {
hgs
parents:
diff changeset
   233
        iconName = ModeIconNamePrefix + QString::number( mCurrentMode ) + ".svg";
hgs
parents:
diff changeset
   234
        QString textId = TextIdPrefix + "modename_" + QString::number( mCurrentMode );
hgs
parents:
diff changeset
   235
        modeName = qtTrId( textId.toAscii() );
hgs
parents:
diff changeset
   236
    }
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
    myDebug() << ">>> UsbUiSettingModel::setDefaultModeSetting iconName=" 
hgs
parents:
diff changeset
   239
            << iconName << " modeName=" << modeName;
hgs
parents:
diff changeset
   240
    QMap< int, QVariant > val = mSettingsList.at( DefaultMode );
hgs
parents:
diff changeset
   241
    if ( val.isEmpty() ) {
hgs
parents:
diff changeset
   242
        val[ SettingType ] = QVariant( DefaultMode );
hgs
parents:
diff changeset
   243
    }    
hgs
parents:
diff changeset
   244
    val[ Qt::DecorationRole ] = QVariant(iconName) ;
hgs
parents:
diff changeset
   245
    val[ Qt::DisplayRole ]= QVariant(modeName) ;
hgs
parents:
diff changeset
   246
    mSettingsList.replace( DefaultMode, val );
hgs
parents:
diff changeset
   247
    myDebug() << "<<< UsbUiSettingModel::setDefaultModeSetting";
hgs
parents:
diff changeset
   248
}
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
/*!
hgs
parents:
diff changeset
   251
    Updates all values related to the mode description.
hgs
parents:
diff changeset
   252
 */
hgs
parents:
diff changeset
   253
void UsbUiSettingModel::setDescriptionSetting()
hgs
parents:
diff changeset
   254
{
hgs
parents:
diff changeset
   255
    QString description;
hgs
parents:
diff changeset
   256
    //the description will be empty for a hidden personality
hgs
parents:
diff changeset
   257
    if ( !isPersonalityHidden(mCurrentMode) ) {
hgs
parents:
diff changeset
   258
        QString textId = TextIdPrefix + "description_" 
hgs
parents:
diff changeset
   259
                + QString::number( mCurrentMode );
hgs
parents:
diff changeset
   260
        description = qtTrId( textId.toAscii() );
hgs
parents:
diff changeset
   261
    }
hgs
parents:
diff changeset
   262
    myDebug() << ">>> UsbUiSettingModel::setDescriptionSetting description=" 
hgs
parents:
diff changeset
   263
            << description;
hgs
parents:
diff changeset
   264
    QMap< int, QVariant > val = mSettingsList.at( Description );
hgs
parents:
diff changeset
   265
    if ( val.isEmpty() ) {
hgs
parents:
diff changeset
   266
       
hgs
parents:
diff changeset
   267
        val[ SettingType ] = QVariant( Description );
hgs
parents:
diff changeset
   268
     
hgs
parents:
diff changeset
   269
    }
hgs
parents:
diff changeset
   270
    // The display role stores the string representation of the actual value.
hgs
parents:
diff changeset
   271
    val[ Qt::DisplayRole ] = QVariant( description );
hgs
parents:
diff changeset
   272
    	 mSettingsList.replace( Description, val );
hgs
parents:
diff changeset
   273
    myDebug() << "<<< UsbUiSettingModel::setDescriptionSetting";     
hgs
parents:
diff changeset
   274
}
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
/*!
hgs
parents:
diff changeset
   277
    Updates all values related to the visibility setting.
hgs
parents:
diff changeset
   278
    Updates the selectable USB modes only in the 1st call.
hgs
parents:
diff changeset
   279
 */
hgs
parents:
diff changeset
   280
bool UsbUiSettingModel::setUsbModelistSetting( int aModeId )
hgs
parents:
diff changeset
   281
{
hgs
parents:
diff changeset
   282
    myDebug() << ">>> UsbUiSettingModel::setUsbModelistSetting aModeIndex="
hgs
parents:
diff changeset
   283
            << aModeId;
hgs
parents:
diff changeset
   284
   bool ret = true;
hgs
parents:
diff changeset
   285
    QMap< int, QVariant > val = mSettingsList.at(UsbModeList);
hgs
parents:
diff changeset
   286
    if ( val.isEmpty() ) {
hgs
parents:
diff changeset
   287
        val[ SettingType ] = QVariant( UsbModeList );
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
        RUsb iUsbman;
hgs
parents:
diff changeset
   290
        if ( iUsbman.Connect() == KErrNone ) {
hgs
parents:
diff changeset
   291
            
hgs
parents:
diff changeset
   292
            RArray<TInt> personalityIds;
hgs
parents:
diff changeset
   293
            mPersonalityIds.clear();
hgs
parents:
diff changeset
   294
            if ( iUsbman.GetPersonalityIds( personalityIds ) == KErrNone ) {
hgs
parents:
diff changeset
   295
                QStringList modeList;
hgs
parents:
diff changeset
   296
                for ( int i = 0; i < personalityIds.Count(); i++ ) {
hgs
parents:
diff changeset
   297
                    if ( !isPersonalityHidden(iUsbman, personalityIds[i]) ) {
hgs
parents:
diff changeset
   298
                        mPersonalityIds.append( personalityIds[i] );
hgs
parents:
diff changeset
   299
                        modeList.append( modeListName( mPersonalityIds[i] ) );                    
hgs
parents:
diff changeset
   300
                    }
hgs
parents:
diff changeset
   301
                }
hgs
parents:
diff changeset
   302
                val[ SettingsModeNameList ] = QVariant( modeList ); 
hgs
parents:
diff changeset
   303
            }
hgs
parents:
diff changeset
   304
        }
hgs
parents:
diff changeset
   305
        else{
hgs
parents:
diff changeset
   306
        ret = false;
hgs
parents:
diff changeset
   307
        }
hgs
parents:
diff changeset
   308
        iUsbman.Close();
hgs
parents:
diff changeset
   309
    }
hgs
parents:
diff changeset
   310
    //index will be -1 for hidden personality
hgs
parents:
diff changeset
   311
    val[ Qt::EditRole ] = QVariant( mPersonalityIds.indexOf(aModeId) );
hgs
parents:
diff changeset
   312
    mSettingsList.replace( UsbModeList, val );
hgs
parents:
diff changeset
   313
    myDebug() << "<<< UsbUiSettingModel::setUsbModelistSetting";
hgs
parents:
diff changeset
   314
    return ret;
hgs
parents:
diff changeset
   315
}
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
/*!
hgs
parents:
diff changeset
   318
 * it checks the response from usbwatcher to see if the new mode change has been successful
hgs
parents:
diff changeset
   319
 * it will go back to the previous personality if it has not been successfull
hgs
parents:
diff changeset
   320
 */
hgs
parents:
diff changeset
   321
void UsbUiSettingModel::setPersonalityCompleted (int status )
hgs
parents:
diff changeset
   322
{
hgs
parents:
diff changeset
   323
  myDebug() << ">>> UsbUiSettingModel::setPersonalityCompleted status= "
hgs
parents:
diff changeset
   324
    << status;    
hgs
parents:
diff changeset
   325
  // status contains Symbian error code from usbwatcher
hgs
parents:
diff changeset
   326
  // if the status is KErrNone, we are ready to process the next request
hgs
parents:
diff changeset
   327
  if (status != KErrNone) 
hgs
parents:
diff changeset
   328
    {
hgs
parents:
diff changeset
   329
    // changing the personality failed, so we need to set back the previous personality
hgs
parents:
diff changeset
   330
    // the value will be read from central repository and also updates mCurrentMode  
hgs
parents:
diff changeset
   331
    mPreviousMode = mSettingsManager.readItemValue(
hgs
parents:
diff changeset
   332
                   XQSettingsKey( XQSettingsKey::TargetCentralRepository, 
hgs
parents:
diff changeset
   333
                   KCRUidUsbWatcher.iUid, KUsbWatcherPersonality ) ).toInt();
hgs
parents:
diff changeset
   334
    setNewUsbMode(mPreviousMode);
hgs
parents:
diff changeset
   335
    }
hgs
parents:
diff changeset
   336
   
hgs
parents:
diff changeset
   337
   // after handling the return code we know the the current personality works
hgs
parents:
diff changeset
   338
   // and we will not go back to the previous one 
hgs
parents:
diff changeset
   339
   mPreviousMode = mCurrentMode; 
hgs
parents:
diff changeset
   340
   myDebug() << "<<< UsbUiSettingModel::setPersonalityCompleted";      
hgs
parents:
diff changeset
   341
}
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
bool UsbUiSettingModel::isPersonalityHidden(RUsb &usbman, TInt personalityId)
hgs
parents:
diff changeset
   344
{
hgs
parents:
diff changeset
   345
    myDebug() << ">>> UsbUiSettingModel::isPersonalityHidden from USB Manager";
hgs
parents:
diff changeset
   346
    bool hidden = false;
hgs
parents:
diff changeset
   347
    TUint32 property = 0;
hgs
parents:
diff changeset
   348
    TInt ret = usbman.GetPersonalityProperty(personalityId, property);
hgs
parents:
diff changeset
   349
    if (ret == KErrNone) {
hgs
parents:
diff changeset
   350
        myDebug() << "property " << property;
hgs
parents:
diff changeset
   351
        if (property & KUsbPersonalityPropertyHidden) {
hgs
parents:
diff changeset
   352
            hidden = true;
hgs
parents:
diff changeset
   353
        }
hgs
parents:
diff changeset
   354
    } 
hgs
parents:
diff changeset
   355
    myDebug() << "<<< UsbUiSettingModel::isPersonalityHidden " << hidden;
hgs
parents:
diff changeset
   356
    return hidden;
hgs
parents:
diff changeset
   357
}
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
bool UsbUiSettingModel::isPersonalityHidden(TInt personalityId)
hgs
parents:
diff changeset
   360
{
hgs
parents:
diff changeset
   361
    return ( mPersonalityIds.indexOf(personalityId) == -1 );
hgs
parents:
diff changeset
   362
}