usbuis/usbuiqt/inc/usbuisettingmodel.h
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
#ifndef USBUISETTINGMODEL_H
hgs
parents:
diff changeset
    19
#define USBUISETTINGMODEL_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <e32property.h>
hgs
parents:
diff changeset
    24
#include <QStringList>
hgs
parents:
diff changeset
    25
#include <QAbstractItemModel>
hgs
parents:
diff changeset
    26
#include <XQSettingsManager>
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
const int KDefaultColumn = 0;
hgs
parents:
diff changeset
    29
typedef QList< QMap< int, QVariant > > UsbUiModelDataSource;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
class RUsb;
hgs
parents:
diff changeset
    32
class UsbUiModelActive;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
class UsbUiSettingModel : public QAbstractItemModel
hgs
parents:
diff changeset
    35
{
hgs
parents:
diff changeset
    36
    Q_OBJECT
hgs
parents:
diff changeset
    37
    friend class TestUsbUiModelActive;
hgs
parents:
diff changeset
    38
 
hgs
parents:
diff changeset
    39
public:
hgs
parents:
diff changeset
    40
enum usbSettingsIndex {
hgs
parents:
diff changeset
    41
        DefaultMode,
hgs
parents:
diff changeset
    42
        Description,
hgs
parents:
diff changeset
    43
        UsbModeList,
hgs
parents:
diff changeset
    44
        EndOfSettings
hgs
parents:
diff changeset
    45
    };
hgs
parents:
diff changeset
    46
enum SettingsRoleValues {
hgs
parents:
diff changeset
    47
        SettingType = Qt::UserRole,
hgs
parents:
diff changeset
    48
        SettingsModeNameList,
hgs
parents:
diff changeset
    49
    };
hgs
parents:
diff changeset
    50
public:
hgs
parents:
diff changeset
    51
    UsbUiSettingModel( QObject *parent = 0 );
hgs
parents:
diff changeset
    52
    virtual ~UsbUiSettingModel();
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    /*
hgs
parents:
diff changeset
    55
     *  Returns the index of the item in the model specified by the given row, column and parent index.
hgs
parents:
diff changeset
    56
     *  @param row is the row number of the specified item
hgs
parents:
diff changeset
    57
     *  @param column is the column number of the specified item
hgs
parents:
diff changeset
    58
     *  @param parent QModelIndex parent
hgs
parents:
diff changeset
    59
     */   
hgs
parents:
diff changeset
    60
    virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
hgs
parents:
diff changeset
    61
    /*
hgs
parents:
diff changeset
    62
     * Returns QModelIndex() because this model item has no parent
hgs
parents:
diff changeset
    63
     * @param child is the index of item model, the parent of which is going to be returned
hgs
parents:
diff changeset
    64
     * @param child is not used in here
hgs
parents:
diff changeset
    65
     */
hgs
parents:
diff changeset
    66
    virtual QModelIndex parent( const QModelIndex &child ) const;
hgs
parents:
diff changeset
    67
    /*
hgs
parents:
diff changeset
    68
     * Returns the number of rows under the given parent
hgs
parents:
diff changeset
    69
     * @param parent QModelIndex parent
hgs
parents:
diff changeset
    70
     */
hgs
parents:
diff changeset
    71
    virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;
hgs
parents:
diff changeset
    72
    /*
hgs
parents:
diff changeset
    73
     * Returns the number of columns for the children of the given parent.
hgs
parents:
diff changeset
    74
     * @param parent QModelIndex parent
hgs
parents:
diff changeset
    75
     */
hgs
parents:
diff changeset
    76
    virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const;
hgs
parents:
diff changeset
    77
    /*
hgs
parents:
diff changeset
    78
     *Returns the data stored under the given role for the item referred to by the index. 
hgs
parents:
diff changeset
    79
     */
hgs
parents:
diff changeset
    80
    virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
hgs
parents:
diff changeset
    81
    /*
hgs
parents:
diff changeset
    82
     * Sets the role data for the item at index to value. Returns true if successful; otherwise returns false.
hgs
parents:
diff changeset
    83
     */
hgs
parents:
diff changeset
    84
    virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole );
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    const QModelIndex* sourceData() const;
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
public slots:
hgs
parents:
diff changeset
    89
    /*
hgs
parents:
diff changeset
    90
     * Provides notification of changes in selected usb mode
hgs
parents:
diff changeset
    91
     * @param key is not used 
hgs
parents:
diff changeset
    92
     * @param value is the value read from cenrep key 
hgs
parents:
diff changeset
    93
     */
hgs
parents:
diff changeset
    94
    void usbModeChanged( const XQSettingsKey &key, const QVariant &value );
hgs
parents:
diff changeset
    95
    /*
hgs
parents:
diff changeset
    96
     * it checks the response from usbwatcher to see if the new mode change has been successful
hgs
parents:
diff changeset
    97
     * it will go back to the previous personality if it has not been successfull
hgs
parents:
diff changeset
    98
     * @param status is the error code returned from usbwatcher
hgs
parents:
diff changeset
    99
     */
hgs
parents:
diff changeset
   100
    void setPersonalityCompleted (int status );
hgs
parents:
diff changeset
   101
    
hgs
parents:
diff changeset
   102
private:
hgs
parents:
diff changeset
   103
	/*
hgs
parents:
diff changeset
   104
	 * creats the logical name of the modename string for the list
hgs
parents:
diff changeset
   105
	 * @param modeId is the usb personality id
hgs
parents:
diff changeset
   106
	 */   
hgs
parents:
diff changeset
   107
    QString modeListName( int modeId );
hgs
parents:
diff changeset
   108
    /*
hgs
parents:
diff changeset
   109
     * Get the current USB personality ID
hgs
parents:
diff changeset
   110
     * Returns 0, if the key is missing or the value cannot be converted 
hgs
parents:
diff changeset
   111
     * to integer.
hgs
parents:
diff changeset
   112
     * @return The current personality id
hgs
parents:
diff changeset
   113
     */
hgs
parents:
diff changeset
   114
    int currentMode(); 
hgs
parents:
diff changeset
   115
    /*
hgs
parents:
diff changeset
   116
     * sets the value to different roles of the model's first row
hgs
parents:
diff changeset
   117
     */
hgs
parents:
diff changeset
   118
    void setDefaultModeSetting();
hgs
parents:
diff changeset
   119
    /*
hgs
parents:
diff changeset
   120
     * sets the value to different roles of the model's description row
hgs
parents:
diff changeset
   121
     */
hgs
parents:
diff changeset
   122
    void setDescriptionSetting();
hgs
parents:
diff changeset
   123
    /**
hgs
parents:
diff changeset
   124
     * Set the USB mode list and the current selection in the list.
hgs
parents:
diff changeset
   125
     * The personality IDs are stored to mPersonalityIds and the personality names
hgs
parents:
diff changeset
   126
     * to mSettingsList.
hgs
parents:
diff changeset
   127
     * @param modeId The current mode ID
hgs
parents:
diff changeset
   128
     */
hgs
parents:
diff changeset
   129
    bool setUsbModelistSetting( int modeId );
hgs
parents:
diff changeset
   130
    /**
hgs
parents:
diff changeset
   131
     * calls the model's set functions
hgs
parents:
diff changeset
   132
     * @param modeId The current mode ID
hgs
parents:
diff changeset
   133
     */
hgs
parents:
diff changeset
   134
    void setUsbSettings( int modeId );
hgs
parents:
diff changeset
   135
    /**
hgs
parents:
diff changeset
   136
     * updates the model rows and emits signal datachanged
hgs
parents:
diff changeset
   137
     * @param newPersonality is the new personality id
hgs
parents:
diff changeset
   138
     */
hgs
parents:
diff changeset
   139
    void setNewUsbMode(int newPersonality);
hgs
parents:
diff changeset
   140
	
hgs
parents:
diff changeset
   141
    /**
hgs
parents:
diff changeset
   142
     * Check from the USB Manager if the USB personality is hidden.
hgs
parents:
diff changeset
   143
     * @param usbman Already opened USB Manager session
hgs
parents:
diff changeset
   144
     * @param personalityId The ID of the personality to be checked.
hgs
parents:
diff changeset
   145
     * @return For hidden personality, true is returned.
hgs
parents:
diff changeset
   146
     */
hgs
parents:
diff changeset
   147
    bool isPersonalityHidden(RUsb &usbman, TInt personalityId);
hgs
parents:
diff changeset
   148
    
hgs
parents:
diff changeset
   149
    /**
hgs
parents:
diff changeset
   150
     * Check if the USB personality is hidden.
hgs
parents:
diff changeset
   151
     * The personality is hidden, if it does not exist in mPersonalityIds.
hgs
parents:
diff changeset
   152
     * @param personalityId The ID of the personality to be checked.
hgs
parents:
diff changeset
   153
     * @return For hidden personality, true is returned.
hgs
parents:
diff changeset
   154
     */
hgs
parents:
diff changeset
   155
    bool isPersonalityHidden(TInt personalityId);
hgs
parents:
diff changeset
   156
 private:
hgs
parents:
diff changeset
   157
    
hgs
parents:
diff changeset
   158
    UsbUiModelDataSource mSettingsList;
hgs
parents:
diff changeset
   159
    int mCurrentMode;
hgs
parents:
diff changeset
   160
    // stored, so that we can show the correct personality when it fails to set the new one
hgs
parents:
diff changeset
   161
    int mPreviousMode; 
hgs
parents:
diff changeset
   162
    
hgs
parents:
diff changeset
   163
    XQSettingsManager mSettingsManager;
hgs
parents:
diff changeset
   164
    QList<int> mPersonalityIds;
hgs
parents:
diff changeset
   165
    UsbUiModelActive *mModelActive;
hgs
parents:
diff changeset
   166
};
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
#endif // USBUISETTINGMODEL_H