--- /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