usbuis/usbsettingsapp/inc/usbuisettingmodel.h
branchRCL_3
changeset 79 25fce757be94
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usbuis/usbsettingsapp/inc/usbuisettingmodel.h	Tue Aug 31 16:13:57 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2009-2010 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 <e32base.h>
+#include <e32property.h>
+#include <QStringList>
+#include <QAbstractItemModel>
+#include <XQSettingsManager>
+
+typedef QList< QMap< int, QVariant > > UsbUiModelDataSource;
+
+class RUsb;
+class UsbUiModelActive;
+class QItemSelection;
+class QItemSelectionModel;
+
+class UsbUiSettingModel : public QAbstractItemModel
+{
+    Q_OBJECT
+    friend class TestUsbUiModelActive;
+ 
+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;
+
+    const QModelIndex* sourceData() const;
+   
+    /*
+     * informs the model of the changes in selectionModel and the new mode 
+     * will be Handeled by the Model
+     */
+    void  setSelectionModel(QItemSelectionModel *selectionModel);
+
+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 cenrepChanged( 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 successful
+     * @param status is the error code returned from usbwatcher
+     */
+    void personalitySetCompleted (int status );
+    
+    /**
+     * This slot handles selection change from the selection model.
+     * The personality is set according to the selection.
+     * @param selected Item selection of selected items
+     * @param deselected Item selection of deselected items
+     */
+    void handleSelectionChange(const QItemSelection &selected, 
+            const QItemSelection &deselected );
+    
+private:
+	/*
+	 * Get the translated mode name
+	 * @param friendlyName is the usb personality friendly name
+	 */   
+    QString modeName( QString &friendlyName );
+
+    /*
+     * 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(); 
+
+    /**
+     * Initialize the model data
+     * @param modeId The current mode ID
+     */
+    void initializeModelData( int modeId );
+
+    /**
+     * Update the selection model
+     * @param newPersonality is the new personality id
+     */
+    void updateSelectionModel(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);
+    
+    /**
+     * Get the personality friendly name from USB Manager
+     * The friendly name can be used in text IDs.
+     * @param usbman The open USB Manager session
+     * @param personalityId The ID of the personality
+     * @return Friendly name for personality
+     */
+    QString getFriendlyName(RUsb &usbman, TInt personalityId);
+    
+private:
+       
+    UsbUiModelDataSource mSettingsList;
+ 
+    // current USB personality
+    int mCurrentMode;
+
+    //variable to access central repository
+    XQSettingsManager mSettingsManager;
+    
+    QList<int> mPersonalityIds;
+    //owned by the class
+    // modelactive is used for the interaction with the usbwatcher
+    UsbUiModelActive *mModelActive;
+    
+    QItemSelectionModel *mSelectionModel;
+};
+
+#endif // USBUISETTINGMODEL_H