diff -r 4096754ee773 -r 52a167391590 localconnectivityservice/lcstylustap/src/lcstylustap.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/lcstylustap/src/lcstylustap.cpp Wed Sep 01 12:20:40 2010 +0100 @@ -0,0 +1,221 @@ +/* +* Copyright (c) 2007-2008 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: ECOM implementation for touch indicator +* +*/ + + +#include +#include +#include +#include +#include +#include // KExecutableImageUid +#include +#include "lcstylustap.h" +#include "debug.h" +#include "lcstylustapdismount.h" + +const TInt KUsbUIUID = 0x102068E2; +const TInt KBtUIUID = 0x10005951; + + +// Constants +_LIT(KFileDrive, "z:"); +_LIT( KLCStylustapPluginResourceFile, "lcstylustaprsc.rsc" ); +_LIT(KBTUIExe, "BTUI.exe"); // Hard coded name can be used, since it will not be changed +_LIT(KUSBExe, "USBClassChangeUI.exe"); + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// C++ default constructor +// --------------------------------------------------------------------------- +// +CLcStylusTap::CLcStylusTap() + { + + } + + +// --------------------------------------------------------------------------- +// Symbian 2nd-phase constructor +// --------------------------------------------------------------------------- +// +void CLcStylusTap::ConstructL() + { + + } + + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CLcStylusTap* CLcStylusTap::NewL( ) + { + TRACE_FUNC_ENTRY + CLcStylusTap* self = new( ELeave ) CLcStylusTap( ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + TRACE_FUNC_EXIT + return self; + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CLcStylusTap::~CLcStylusTap() + { + TRACE_FUNC_ENTRY + delete iDismountManager; + TRACE_FUNC_EXIT + } + +// --------------------------------------------------------------------------- +// TextL. +// Return the text that should be displayed in the link. +// --------------------------------------------------------------------------- +// + +HBufC* CLcStylusTap::TextL( const TInt aUid, TInt& aTextType ) + { + TRACE_INFO((_L("CLcStylusTap::TextL aUid = %d"), aUid)) + + CEikonEnv* eikEnv = CEikonEnv::Static(); + RConeResourceLoader rLoader(*eikEnv); + + TFileName filename; + filename += KFileDrive; + filename += KDC_RESOURCE_FILES_DIR; + filename += KLCStylustapPluginResourceFile; + + + CleanupClosePushL(rLoader); + rLoader.OpenL(filename); + + HBufC* dynStringBuf = NULL; + + switch(aUid) + { + case EAknIndicatorBluetooth: + case EAknIndicatorBluetoothVisible: + case EAknIndicatorBluetoothModuleOn: + case EAknIndicatorBluetoothModuleOnVisible: + { + dynStringBuf = eikEnv->AllocReadResourceL(R_LCSTYLUSTAP_BT_NAME ); + aTextType = EAknIndicatorPluginLinkText; + break; + } + case EAknIndicatorUSBConnection: + { + aTextType = EAknIndicatorPluginLinkText; + dynStringBuf = eikEnv->AllocReadResourceL(R_LCSTYLUSTAP_USB_NAME ); + break; + } + case EAknIndicatorUSBMemConnected: + case EAknIndicatorUSBMemActive: + { + aTextType = EAknIndicatorPluginLinkText; + dynStringBuf = eikEnv->AllocReadResourceL(R_LCSTYLUSTAP_USB_MEM_EJECT ); + break; + } + default: + break; + } + + CleanupStack::PopAndDestroy(); // rLoader + TRACE_INFO((_L("CLcStylusTap::TextL = %S"), dynStringBuf)) + + return dynStringBuf; + } + +// --------------------------------------------------------------------------- +// HandleIndicatorTapL. +// Filter the aUid and find the app plug in for the view. +// --------------------------------------------------------------------------- +// +void CLcStylusTap::HandleIndicatorTapL( const TInt aUid ) + { + + TRACE_INFO((_L("CLcStylusTap::HandleIndicatorTapL aUid = %d"), aUid)) + + switch(aUid) + { + case EAknIndicatorBluetooth: + case EAknIndicatorBluetoothVisible: + case EAknIndicatorBluetoothModuleOn: + case EAknIndicatorBluetoothModuleOnVisible: + { + TUidType uidtype(KExecutableImageUid, KUidApp,TUid::Uid(KBtUIUID)); + CreateDesiredViewL(KBTUIExe(),uidtype); + break; + } + case EAknIndicatorUSBConnection: + { + TUidType uidtype(KExecutableImageUid, TUid::Uid(0x00),TUid::Uid(KUsbUIUID)); + CreateDesiredViewL(KUSBExe(),uidtype); + break; + } + case EAknIndicatorUSBMemConnected: + case EAknIndicatorUSBMemActive: + { + EjectUSBMemL(); + break; + } + case EAknIndicatorIrActive: // IR not required + default: + TRACE_INFO((_L(" CLcStylusTap::HandleIndicatorTapL default"))) + break; + } + TRACE_FUNC_EXIT + } + + +// --------------------------------------------------------------------------- +// CreateDesiredViewL. +// Create the desired view via control panel. +// --------------------------------------------------------------------------- +// +void CLcStylusTap::CreateDesiredViewL(const TDesC & aProcessName,const TUidType & aUidType) const + { + TRACE_FUNC_ENTRY + RProcess NewProcess; + User::LeaveIfError(NewProcess.Create(aProcessName, KNullDesC, aUidType)); + NewProcess.Resume(); + NewProcess.Close(); + TRACE_FUNC_EXIT + } + +// --------------------------------------------------------------------------- +// CreateDesiredViewL. +// Create the desired view via control panel. +// --------------------------------------------------------------------------- +// +void CLcStylusTap::EjectUSBMemL() + { + TRACE_FUNC_ENTRY + delete iDismountManager; + iDismountManager = NULL; + iDismountManager= CLcStylusTapDismount::NewL(); + iDismountManager->DisMountUsbDrives(); + TRACE_FUNC_EXIT + } + + + +// End of File