diff -r 25fce757be94 -r e02eb84a14d2 usbuis/usbui/USBClassChangeUIPlugin/inc/USBClassChangeUIPluginModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbuis/usbui/USBClassChangeUIPlugin/inc/USBClassChangeUIPluginModel.h Wed Sep 01 12:20:49 2010 +0100 @@ -0,0 +1,269 @@ +/* +* Copyright (c) 2005-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: Declares model class for application. +* +*/ + + +#ifndef USBCLASSCHANGEUIPLUGINMODEL_H +#define USBCLASSCHANGEUIPLUGINMODEL_H + + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include "USBClassChangeUIPlugin.hrh" +#include "USBClassChangeUIPluginCRWatcher.h" +#include "USBDeviceStateWatcher.h" +#include "usbotghoststatewatcher.h" + +// CONSTANTS +/** granularity for supported modes array */ +const TInt KUSBClassChangeUISupportedModesGranularity = 3; + +// FORWARD DECLARATIONS +class CUSBDeviceStateWatcher; + +// CLASS DECLARATION + +/** + * A callback interface for informing change of settings and device state. + */ +class MUSBUIObserver : public MUSBDeviceStateObserver, + public MUSBOtgHostStateObserver + { + public: // New functions + + /** + * Informs the observer that a setting has been changed. + * The list should be refreshed. + */ + virtual void SettingChanged() = 0; + }; + +/** +* This class has access to all data needed by this application. +* All manipulation of data is done through this class. +*/ +class CUSBClassChangeUIPluginModel : public CActive, + public MUSBUICRSettingObserver, MUSBDeviceStateObserver, MUSBOtgHostStateObserver + { + public: // Constructors and destructor + + /** + * Destructor. + */ + virtual ~CUSBClassChangeUIPluginModel(); + + public: // New functions + + + /** + * Factory method NewL + * @return a pointer to itself + */ + static CUSBClassChangeUIPluginModel* NewL(); + + + /** + * Sets the USB mode. + * @param aMode the id of the selected personality + */ + void SetUSBModeL( TInt aMode ); + + /** + * Gets the USB mode. + * @return the id of the personality + */ + TInt USBMode(); + + /** + * Gets the number of usb personalities. + * @return the number of existing personalities + */ + TInt PersonalityCount() ; + /** + * Gets the current device state. + * @param aState receives the current state of the USB device + * @return KErrNone if successful, otherwise the error that occurred + */ + TInt GetDeviceState(TUsbDeviceState& aState); + + /** + * Gets description for the specified USB mode (personality ID) + * @param aMode a personality id + * @param aDescription a localized text string + * @return KErrNone if successful, otherwise the error that occurred. + */ + TInt GetDescription(TInt aMode, HBufC*& aDescription); + + /** + * Updates temporary member variable data. + * @param aObserver Reference to MUSBUIObserver instance. + */ + void SetSettingsObserver(MUSBUIObserver* aObserver); + + /* + * Reads the supported USB modes from the resource file and CenRep. + * Adds modes to the CDesCArrayFlat lists to be used either + * for list box or for setting page + * @param aListBox The list where the USB modes are appended for list box + * @param aListBoxDefault The list where the USB modes are appended with their secondary line "default" + * @param aListBoxActive The list where the USB modes are appended with their secondary line "active" + * @param aPopUpItems The list where the descriptive strings will be stored + * @param aIconArray The list where icons for USB modes are stored + */ + void SupportedUSBModeArraysL( CDesCArrayFlat& aListBox, CDesCArrayFlat& aListBoxDefault, + CDesCArrayFlat& aListBoxActive, CDesCArrayFlat& aPopUpItems, CArrayPtrFlat& aIconArray ); + + /** + * From MUSBUICRSettingObserver. + * Changes the USB mode in the USB application. + * Called by CUSBClassChangeUICenRepWatcher, when the key + * KUsbWatcherPersonality is changed by the USBWatcher. + * @param aKey identifies the setting that has changed + */ + void SettingChangedL( TUint32 aKey ); + + /** + * From MUSBOtgHostStateObserver + * @see MUSBOtgHostStateObserver::OtgHostIdPinStateChanged + */ + void OtgHostIdPinStateChanged(TBool aIsIdPinOn); + + /** + * From MUSBOtgHostStateObserver + * @see MUSBOtgHostStateObserver::OtgHostIdPinStateChanged + */ + void HostEventNotify(TDeviceEventInformation aEventInfo); + + /** + * From MUSBDeviceStateObserver. + * Informs the observer that USB device state has changed. + * @param aPreviousState previous device state. + * @param aCurrentState current device state. + */ + void DeviceStateChanged(TUsbDeviceState aPreviousState, + TUsbDeviceState aCurrentState); + + + /** + * Gets the IDs of supported USB personalities. + * @return RArray of personality IDs + */ + RArray& GetUsbIds(); + + /** + * Returns if it acts as a host and the driver to the attached pheripheral + * is loaded successfully(or partially). + * NOTE: Only single perihperal supported now. + * @param aHasPeripheralEnabled Is A-device is ready to be used or not + * @return KErrNone if successful, otherwise the error that occurred + */ + TInt HasPeripheralEnabled(TBool& aHasPeripheralEnabled); + + + protected: + /** + * Default ConstructL can leave. + */ + void ConstructL(); + + /** + * C++ default constructor. + */ + CUSBClassChangeUIPluginModel(); + + /** + * Derived from CActive + */ + void RunL(); + + /** + * Derived from CActive + */ + void DoCancel(); + + private: + /** + * selects the icon related to each mode to be added into the iconlist + * @param aMode the mode id + * @param aIconArray The list where icons for USB modes are stored + */ + void AddIconL (TInt aMode, CArrayPtrFlat& aIconArray); + + /** + * creats and append the icons to the list + * @param aID Item ID of the masked bitmap to be created. + * @param aFilename Filename to be used to construct the item. + * @param aBitmapId The ID if bitmap + * @param aMaskId The ID of bitmap's mask + * @param aIconArray The list where icons for USB modes are stored + */ + void CreateAndAppendIconL( const TAknsItemID& aID, + const TDesC& aFileName, + const TInt aBitmapId, + const TInt aMaskId, + CArrayPtrFlat& aIconArray); + + private: // Data + // Reference to settings observer + MUSBUIObserver* iObserver; + + // References to central repository watcher + // owned by this class + CUSBClassChangeUIPluginCRWatcher* iCRPersonalityWatcher; + + // Reference to device state watcher + // owned by this class + CUSBDeviceStateWatcher* iDeviceStateWatcher; + + // Contains USB mode indexes + RArray iUsbModeIndexes; + + // Central repository handle + // owned by this class + CRepository* iRepository; + + /** Handle to usbman for retrieving the personalities */ + RUsb iUsbman; + + /** Handle to USBWatcher for setting the personality */ + RUsbWatcher iUsbWatcher; + + /** Is connected to USB Watcher */ + TBool iUsbWatcherConnected; + + /** UsbOtg status watcher */ + CUSBOtgHostStateWatcher* iOtgHostStateWatcher; + + /** + * Ids of the devices for which host drivers have been loaded. + * When we start to support hubs, there may be more than one element + * in this array. + */ + RArray iDeviceIDs; + + //Number of personalities + TInt iPersonalityCount; + + }; + +#endif // USBCLASSCHANGEUIPLUGINMODEL_H + +// End of File