diff -r 47c263f7e521 -r 4712310216c0 usbuis/usbuiqt/inc/usbuisettingmodel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbuis/usbuiqt/inc/usbuisettingmodel.h Fri Apr 23 23:17:21 2010 +0300 @@ -0,0 +1,168 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef USBUISETTINGMODEL_H +#define USBUISETTINGMODEL_H + + +#include +#include +#include +#include +#include + +const int KDefaultColumn = 0; +typedef QList< QMap< int, QVariant > > UsbUiModelDataSource; + +class RUsb; +class UsbUiModelActive; + +class UsbUiSettingModel : public QAbstractItemModel +{ + Q_OBJECT + friend class TestUsbUiModelActive; + +public: +enum usbSettingsIndex { + DefaultMode, + Description, + UsbModeList, + EndOfSettings + }; +enum SettingsRoleValues { + SettingType = Qt::UserRole, + SettingsModeNameList, + }; +public: + UsbUiSettingModel( QObject *parent = 0 ); + virtual ~UsbUiSettingModel(); + + /* + * Returns the index of the item in the model specified by the given row, column and parent index. + * @param row is the row number of the specified item + * @param column is the column number of the specified item + * @param parent QModelIndex parent + */ + virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const; + /* + * Returns QModelIndex() because this model item has no parent + * @param child is the index of item model, the parent of which is going to be returned + * @param child is not used in here + */ + virtual QModelIndex parent( const QModelIndex &child ) const; + /* + * Returns the number of rows under the given parent + * @param parent QModelIndex parent + */ + virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const; + /* + * Returns the number of columns for the children of the given parent. + * @param parent QModelIndex parent + */ + virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const; + /* + *Returns the data stored under the given role for the item referred to by the index. + */ + virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; + /* + * Sets the role data for the item at index to value. Returns true if successful; otherwise returns false. + */ + virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ); + + const QModelIndex* sourceData() const; + +public slots: + /* + * Provides notification of changes in selected usb mode + * @param key is not used + * @param value is the value read from cenrep key + */ + void usbModeChanged( const XQSettingsKey &key, const QVariant &value ); + /* + * it checks the response from usbwatcher to see if the new mode change has been successful + * it will go back to the previous personality if it has not been successfull + * @param status is the error code returned from usbwatcher + */ + void setPersonalityCompleted (int status ); + +private: + /* + * creats the logical name of the modename string for the list + * @param modeId is the usb personality id + */ + QString modeListName( int modeId ); + /* + * Get the current USB personality ID + * Returns 0, if the key is missing or the value cannot be converted + * to integer. + * @return The current personality id + */ + int currentMode(); + /* + * sets the value to different roles of the model's first row + */ + void setDefaultModeSetting(); + /* + * sets the value to different roles of the model's description row + */ + void setDescriptionSetting(); + /** + * Set the USB mode list and the current selection in the list. + * The personality IDs are stored to mPersonalityIds and the personality names + * to mSettingsList. + * @param modeId The current mode ID + */ + bool setUsbModelistSetting( int modeId ); + /** + * calls the model's set functions + * @param modeId The current mode ID + */ + void setUsbSettings( int modeId ); + /** + * updates the model rows and emits signal datachanged + * @param newPersonality is the new personality id + */ + void setNewUsbMode(int newPersonality); + + /** + * Check from the USB Manager if the USB personality is hidden. + * @param usbman Already opened USB Manager session + * @param personalityId The ID of the personality to be checked. + * @return For hidden personality, true is returned. + */ + bool isPersonalityHidden(RUsb &usbman, TInt personalityId); + + /** + * Check if the USB personality is hidden. + * The personality is hidden, if it does not exist in mPersonalityIds. + * @param personalityId The ID of the personality to be checked. + * @return For hidden personality, true is returned. + */ + bool isPersonalityHidden(TInt personalityId); + private: + + UsbUiModelDataSource mSettingsList; + int mCurrentMode; + // stored, so that we can show the correct personality when it fails to set the new one + int mPreviousMode; + + XQSettingsManager mSettingsManager; + QList mPersonalityIds; + UsbUiModelActive *mModelActive; +}; + +#endif // USBUISETTINGMODEL_H