--- a/usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginView.cpp Fri May 28 16:51:12 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,566 +0,0 @@
-/*
-* 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: This the implementation of the view class
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <aknradiobuttonsettingpage.h>
-#include <akntitle.h>
-#include <bautils.h> // BAFL utils (for language file)
-#include <StringLoader.h>
-#include <usbui.mbg>
-#include <featmgr.h>
-#include <hlplch.h> // Help launcher
-#include <usbpersonalityids.h>
-#include <gsparentplugin.h>
-#include <gsfwviewuids.h>
-#include <USBClassChangeUIPlugin.rsg> // Resources
-
-#include "USBClassChangeUIPluginView.h"
-#include "USBClassChangeUIPluginDebug.h"
-#include "USBClassChangeUIPlugin.h"
-#include "USBClassChangeUIPluginContainer.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::NewPluginL
-// Entry point for CGSPluginInterface.
-// Used by General Settings Application
-// ---------------------------------------------------------
-//
-CUSBClassChangeUIPluginView* CUSBClassChangeUIPluginView::NewPluginL()
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::NewPluginL()"));
-
- CUSBClassChangeUIPluginView* self = new ( ELeave ) CUSBClassChangeUIPluginView();
-
- self->iLoadAsGSPlugin = ETrue;
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::NewPluginL() completed"));
-
- return self;
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::NewL
-// Entry point for CGSPluginInterface.
-// Used by USBClassChangeUIPluginAppUI.
-// ---------------------------------------------------------
-//
-CUSBClassChangeUIPluginView* CUSBClassChangeUIPluginView::NewL()
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::NewL()"));
-
- CUSBClassChangeUIPluginView* self = new ( ELeave ) CUSBClassChangeUIPluginView();
-
- self->iLoadAsGSPlugin = EFalse;
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::NewL() completed"));
-
- return self;
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::ConstructL()
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::ConstructL()"));
-
- iEikEnv = CEikonEnv::Static();
-
- TFileName filename;
- filename += KFileDrive;
- filename += KDC_RESOURCE_FILES_DIR;
- filename += KResourceFileName;
- BaflUtils::NearestLanguageFile(iEikEnv->FsSession(),filename);
- iResourceFileFlag = iEikEnv->AddResourceFileL(filename);
-
- //"Back" or "Exit" right-softkey resource
- BaseConstructL( iLoadAsGSPlugin ?
- R_USBUI_MAIN_VIEW_GS_PLUGIN : R_USBUI_MAIN_VIEW );
-
- iAppUIRef = AppUi();
-
- iModelRef = CUSBClassChangeUIPluginModel::NewL();
- iModelRef->SetSettingsObserver(this);
-
- FeatureManager::InitializeLibL();
- iHelpSupported = FeatureManager::FeatureSupported( KFeatureIdHelp );
- FeatureManager::UnInitializeLib();
-
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::ConstructL() completed"));
- }
-
-// ---------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------
-//
-CUSBClassChangeUIPluginView::~CUSBClassChangeUIPluginView()
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::~CUSBClassChangeUIPluginView()"));
-
- if ( iContainer )
- {
- if ( iAppUIRef )
- {
- iAppUIRef->RemoveFromViewStack( *this, iContainer );
- }
- delete iContainer;
- }
-
- if ( iEikEnv )
- {
- iEikEnv->DeleteResourceFile ( iResourceFileFlag );
- }
-
- if ( iModelRef )
- {
- delete iModelRef;
- }
-
- if ( !iLoadAsGSPlugin )
- {
- SignalDestruction();
- }
-
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::~CUSBClassChangeUIPluginView() completed"));
- }
-
-// ---------------------------------------------------------
-// TUid CUSBClassChangeUIPluginView::Id
-// ---------------------------------------------------------
-//
-TUid CUSBClassChangeUIPluginView::Id() const
- {
- if ( iLoadAsGSPlugin )
- {
- return KGsUSBUIPluginUid; //same as ecom impl UID, required by GS interface.
- }
- else
- {
- return KUSBUIMainViewId; //view id
- }
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::HandleCommandL
-// Redirects commands to the appui class.
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::HandleCommandL(TInt aCommand)
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::HandleCommandL()"));
-
- switch ( aCommand )
- {
- case EAknSoftkeyExit:
- case EEikCmdExit:
- {
- iAppUIRef->Exit();
- break;
- }
-
- case EAknSoftkeyBack:
- /**
- * UPDATE THIS if this view has a sub-view.
- * In this case constant UID must be used instead of the
- * previous view - otherwise the "back" might return to the
- * sub-view. See GSFWViewUIDs.h for constant UIDs.
- */
- iAppUIRef->ActivateLocalViewL( iPrevViewId.iViewUid );
- break;
-
- case EUSBUICmdHelp:
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL(
- iEikonEnv->WsSession(), iAppUIRef->AppHelpContextL() );
- break;
- }
-
- case EUSBUICmdSelect:
- case EUSBUICmdMskSelect:
- {
- TInt CurrentIndex = iContainer->CurrentItemIndex() ;
- HandleCmdChangeUSBModeL(CurrentIndex);
- break;
- }
-
- default:
- {
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginAppUi::HandleCommandL default switch"));
- break;
- }
- }
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::DoActivateL
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid /*aCustomMessageId*/,
- const TDesC8& /*aCustomMessage*/)
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DoActivateL()"));
-
- iPrevViewId = aPrevViewId;
- if( !iContainer )
- {
- iContainer = CUSBClassChangeUIPluginContainer::NewL(this, iModelRef);
- iContainer->SetMopParent( this ); // MObjectProvider
-
- // Setup the title
- //
- HBufC* usbTitleMain = iCoeEnv->AllocReadResourceLC( R_USB_TITLE );
- CEikStatusPane* statusPane = StatusPane();
- CAknTitlePane* titlePane;
- titlePane = ( CAknTitlePane* ) statusPane->ControlL(TUid::Uid( EEikStatusPaneUidTitle ));
- titlePane->SetTextL( *usbTitleMain );
- CleanupStack::PopAndDestroy(usbTitleMain);
- iAppUIRef->AddToStackL( *this, iContainer );
- }
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DoActivateL() completed"));
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::DoDeactivate
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::DoDeactivate()
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DoDeactivate()"));
-
- if ( iContainer )
- {
- iAppUIRef->RemoveFromStack( iContainer );
- delete iContainer;
- iContainer = NULL;
- }
-
-
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DoDeactivate() completed"));
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::GetCaptionL
-// Method for getting caption of this plugin.
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::GetCaptionL (TDes& aCaption) const
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::GetCaptionL()"));
- // The resource file is already opened, see ConstructL()
- //
- HBufC* result = StringLoader::LoadL( R_GS_USBUI_VIEW_CAPTION );
- aCaption.Copy( *result );
- delete result;
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::GetCaptionL() completed"));
- }
-
-// ---------------------------------------------------------
-// CUSBClassChangeUIPluginView::GetValue
-// Function for getting plugin's value for a certain key.
-// ---------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::GetValue(const TGSPluginValueKeys aKey,
- TDes& aValue)
- {
- switch( aKey )
- {
- case EGSPluginKeySettingsItemValueString:
- {
- // Get Id pin state of UsbOtg-capable device
- TBool hasPeripheralEnabled = EFalse;
- // Ignore error code
- TInt ret = iModelRef->HasPeripheralEnabled(hasPeripheralEnabled);
- FTRACE(FPrint(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::GetValue - HasPeripheralEnabled=%d"), ret));
-
- TInt resId = 0;
- if (hasPeripheralEnabled)
- {
- resId = R_CP_DETAIL_USB_OTG_CONN;
- }
- else if (IsUSBDeviceConnected())
- {
- TInt mode = USBMode();
- switch (mode)
- {
- case KUsbPersonalityIdPCSuite:
- case KUsbPersonalityIdPCSuiteMTP:
- resId = R_CP_DETAIL_USB_CONN_PC_SUITE;
- break;
- case KUsbPersonalityIdMS:
- resId = R_CP_DETAIL_USB_CONN_MASS_STORAGE;
- break;
- case KUsbPersonalityIdPTP:
- resId = R_CP_DETAIL_USB_CONN_PICTURE_TRANSFER;
- break;
- case KUsbPersonalityIdMTP:
- resId = R_CP_DETAIL_USB_CONN_MEDIA_TRANSFER;
- break;
- case KUsbPersonalityIdModemInst:
- resId = R_CP_DETAIL_USB_CONN_MODEM_INST;
- break;
-
- case KUsbPersonalityIdRNDIS:
- resId = R_CP_DETAIL_USB_CONN_RNDIS;
- break;
- default:
- // Leave value empty
- break;
- }
- }
- else
- {
- resId = R_CP_DETAIL_USB_NOT_CONNECTED;
- }
-
- if (resId)
- {
- TRAP_IGNORE(
- HBufC* text = StringLoader::LoadL(resId);
- aValue.Append(*text);
- delete text;
- );
- }
- }
- break;
-
- default:
- CGSPluginInterface::GetValue(aKey, aValue);
- break;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::SettingChanged()
-// A setting has been changed.
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::SettingChanged()
- {
- if (iContainer)
- {
- iContainer->SettingChanged();
- }
-
- // Personality changes only affect USB UI when USB device is connected
- if (IsUSBDeviceConnected())
- {
- UpdateParentView();
- }
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::DeviceStateChanged()
-// USB device state has changed.
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::DeviceStateChanged(TUsbDeviceState /*aPrevState*/,
- TUsbDeviceState aState)
- {
- //Transitions to EUsbDeviceStateUndefined, EUsbDeviceStateConfigured
- //and EUsbDeviceStateAttached states update UI view.
- if (aState == EUsbDeviceStateConfigured ||
- aState == EUsbDeviceStateUndefined ||
- aState == EUsbDeviceStateAttached)
- {
- UpdateParentView();
- if (iContainer)
- {
- iContainer->SettingChanged();
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::OtgHostIdPinStateChanged
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::OtgHostIdPinStateChanged(TBool aIsIdPinOn)
- {
- if (!aIsIdPinOn)
- {
- UpdateParentView();
- }
- // else, Ignore Id pin on event, host event to be checked further
- }
-
-// ----------------------------------------------------------------------------
-// From MUSBOtgHostStateObserver
-// Handle host event notification
-// ----------------------------------------------------------------------------
-void CUSBClassChangeUIPluginView::HostEventNotify(TDeviceEventInformation /*aEventInfo*/)
- {
- UpdateParentView();
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::USBMode()
-// Gets the current USB mode from model
-// ----------------------------------------------------------------------------
-//
-TInt CUSBClassChangeUIPluginView::USBMode() const
- {
- return iModelRef->USBMode();
- }
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::SetUSBModeL(TInt)
-// Sets the current USB mode through model
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::SetUSBModeL( TInt aMode )
- {
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::SetUSBModeL()"));
-
- iModelRef->SetUSBModeL( aMode );
-
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::SetUSBModeL complete"));
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::CreateIconL()
-// Creates icon for General Settings application
-// ----------------------------------------------------------------------------
-//
-CGulIcon* CUSBClassChangeUIPluginView::CreateIconL( const TUid aIconType )
-{
- FTRACE(FPrint(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::CreateIconL() - aIconType=0x%x"), aIconType.iUid));
-
- CGulIcon* icon = NULL;
-
- if( aIconType == KGSIconTypeLbxItem )
- {
- TFileName usbUiIconFilename( KFileDrive );
- usbUiIconFilename += KDC_APP_BITMAP_DIR;
- usbUiIconFilename += KUSBUIconFileName;
-
-
- // Get peripheral connected state of UsbOtg-capable device
- TBool hasPeripheralEnabled = EFalse;
- TInt ret = iModelRef->HasPeripheralEnabled(hasPeripheralEnabled);
- // In case of failure of getting the status, hasPeripheralEnabled is EFalse.
- // So ignore the error code here.
- FTRACE(FPrint(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::CreateIconL - HasPeripheralEnabled=%d"), ret));
-
- if (hasPeripheralEnabled || IsUSBDeviceConnected())
- {
- icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
- KAknsIIDQgnPropSetAppsUsb, usbUiIconFilename,
- EMbmUsbuiQgn_prop_set_apps_usb,
- EMbmUsbuiQgn_prop_set_apps_usb_mask );
- }
- else
- {
- icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(),
- KAknsIIDQgnPropSetAppsUsbOff, usbUiIconFilename,
- EMbmUsbuiQgn_prop_set_apps_usb_off,
- EMbmUsbuiQgn_prop_set_apps_usb_off_mask );
- }
- }
- else
- {
- icon = CGSPluginInterface::CreateIconL( aIconType );
- }
-
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::CreateIconL() completed"));
- return icon;
-}
-
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::HandleCmdChangeUSBModeL()
-// sets the selected usb mode
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::HandleCmdChangeUSBModeL(TInt aMode)
- {
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::HandleCmdChangeUSBModeL()"));
- const RArray<TInt> usbIndexes = iModelRef->GetUsbIds();
- SetUSBModeL( usbIndexes[aMode] );
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::HandleCmdChangeUSBModeL() completed"));
- }
-
-
-// ----------------------------------------------------------------------------
-// Remove Help from options menu, if the feature is not supported.
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::DynInitMenuPaneL( TInt /*aResId*/, CEikMenuPane* aMenu )
- {
- FLOG(_L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DynInitMenuPaneL()"));
- //dim help if it is not supported and it exists
- if (!iHelpSupported)
- {
- TInt tmp;
- if ( aMenu->MenuItemExists(EUSBUICmdHelp, tmp) )
- {
- aMenu->SetItemDimmed(EUSBUICmdHelp, ETrue);
- }
- }
- FLOG( _L("[CUSBClassChangeUIPlugin]\t CUSBClassChangeUIPluginView::DynInitMenuPaneL() completed"));
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::IsUSBDeviceConnected()
-// Checks whether USB device is connected.
-// ----------------------------------------------------------------------------
-//
-TBool CUSBClassChangeUIPluginView::IsUSBDeviceConnected()
- {
- TUsbDeviceState state = EUsbDeviceStateUndefined;
- return (iModelRef->GetDeviceState(state) == KErrNone &&
- state != EUsbDeviceStateUndefined);
- }
-
-// ----------------------------------------------------------------------------
-// CUSBClassChangeUIPluginView::UpdateParentView()
-// Updates parent view if we are loaded by GS plugin.
-// Copied from irappgspluginview.cpp
-// ----------------------------------------------------------------------------
-//
-void CUSBClassChangeUIPluginView::UpdateParentView()
- {
- if (iLoadAsGSPlugin)
- {
- // Note: GetActiveViewId returns KErrNotFound if GS application
- // is running in the background.
- TVwsViewId vid;
- AppUi()->GetTopViewId(vid);
- if (vid.iViewUid == KGSConPluginUid)
- {
- CGSParentPlugin* parent;
- parent = (CGSParentPlugin*)AppUi()->View(vid.iViewUid);
- parent->UpdateView();
- }
- }
- }
-
-// End of File