usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginView.cpp
branchGCC_SURGE
changeset 63 ef2686f7597e
parent 40 e84fb4c9218b
parent 57 62e6d990246c
child 70 8ba4a4a03bae
--- a/usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginView.cpp	Mon Jun 21 22:40:15 2010 +0100
+++ /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