diff -r 63be7eb3fc78 -r f28ada11abbf wlanutilities/wlanplugin/src/wlanplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlanplugin/src/wlanplugin.cpp Wed Sep 01 12:20:32 2010 +0100 @@ -0,0 +1,493 @@ +/* +* Copyright (c) 2007 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: WlanPlugin class. +* +*/ + + +// INCLUDE FILES + +// User includes +#include "wlanplugin.h" +#include "wlanpluginwlanstate.h" +#include "wlanpluginlogger.h" + +// System includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +// Resource file location +_LIT( KWlanPluginResourceFileName, "z:wlanpluginrsc.rsc" ); + +// ROM folder +_LIT( KDriveZ, "z:" ); + +// Name of the MBM file containing icons +_LIT( KFileIcons, "wlanplugin.mif"); + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CWlanPlugin::NewL +// First phase constructor +// --------------------------------------------------------- +CWlanPlugin* CWlanPlugin::NewL( TAny* /*aInitParams*/ ) + { + CWlanPlugin* self = new ( ELeave ) CWlanPlugin(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// Destructor +// --------------------------------------------------------- +CWlanPlugin::~CWlanPlugin() + { + CLOG_ENTERFN( "CWlanPlugin::~CWlanPlugin()" ); + + iResources.Close(); + + if( iNullService ) + { + delete iNullService; + } + if ( iWlanState ) + { + delete iWlanState; + } + + CLOG_ENTERFN( "CWlanPlugin::~CWlanPlugin()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::ConstructL +// --------------------------------------------------------- +TAny CWlanPlugin::ConstructL() + { + CLOG_CREATE; + + CLOG_ENTERFN( "CWlanPlugin::ConstructL()" ); + + BaseConstructL(); + + OpenLocalizedResourceFileL(); + + // Check Wlan support in construction phase to + // avoid creating of plugin when it is not necessary. + if( GetWlanSupported() ) + { + // This is the parent plugin + CGSParentPlugin* parent = static_cast( + AppUi()->View( KGSConPluginUid ) ); + + iWlanState = CWlanPluginWlanState::NewL( parent ); + } + else + { + User::Leave( KErrNotSupported ); + } + + CLOG_LEAVEFN( "CWlanPlugin::ConstructL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::Id +// --------------------------------------------------------- +TUid CWlanPlugin::Id() const + { + CLOG_ENTERFN( "CWlanPlugin::Id()" ); + + CLOG_LEAVEFN( "CWlanPlugin::Id()" ); + + return KWlanPluginUid; + + } + +// --------------------------------------------------------- +// CWlanPlugin::DoActivateL +// --------------------------------------------------------- +void CWlanPlugin::DoActivateL( const TVwsViewId& /*aPrevViewId*/, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + CLOG_ENTERFN( "CWlanPlugin::DoActivateL()" ); + //no implementation required + CLOG_LEAVEFN( "CWlanPlugin::DoActivateL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::DoDeactivate +// --------------------------------------------------------- +void CWlanPlugin::DoDeactivate() + { + CLOG_ENTERFN( "CWlanPlugin::DoDeactivate()" ); + //no implementation required + CLOG_LEAVEFN( "CWlanPlugin::DoDeactivate()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::GetCaptionL +// --------------------------------------------------------- +void CWlanPlugin::GetCaptionL( TDes& aCaption ) const + { + CLOG_ENTERFN( "CWlanPlugin::GetCaptionL()" ); + + StringLoader::Load( aCaption, R_QTN_SET_FOLDER_CONN_WLAN ); + + CLOG_LEAVEFN( "CWlanPlugin::GetCaptionL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::HasBitmap +// --------------------------------------------------------- +TBool CWlanPlugin::HasBitmap() const + { + CLOG_ENTERFN( "CWlanPlugin::HasBitmap()" ); + + CLOG_LEAVEFN( "CWlanPlugin::HasBitmap()" ); + + return EFalse; + } + +// --------------------------------------------------------- +// CWlanPlugin::GetBitmapL +// --------------------------------------------------------- +void CWlanPlugin::GetBitmapL( CFbsBitmap* /*aBitmap*/, + CFbsBitmap* /*aMask*/ ) const + { + + CLOG_ENTERFN( "CWlanPlugin::GetBitmapL()" ); + CLOG_LEAVEFN( "CWlanPlugin::GetBitmapL()" ); + //no bitmap + User::Leave( KErrNotFound ); + } + +// --------------------------------------------------------- +// CWlanPlugin::PluginProviderCategory +// --------------------------------------------------------- +TInt CWlanPlugin::PluginProviderCategory() const + { + + CLOG_ENTERFN( "CWlanPlugin::PluginProviderCategory()" ); + CLOG_LEAVEFN( "CWlanPlugin::PluginProviderCategory()" ); + + return EGSPluginProviderOEM; + } + +// --------------------------------------------------------- +// CWlanPlugin::HandleSelection +// --------------------------------------------------------- +void CWlanPlugin::HandleSelection( + const TGSSelectionTypes /*aSelectionType*/ ) + { + CLOG_ENTERFN( "CWlanPlugin::HandleSelection()" ); + + TRAPD( error, LaunchSnifferAppL() ); + if( error != KErrNone && + error != KErrNotFound && + error != KErrServerTerminated ) + { + ShowErrorNote( error ); + } + + CLOG_LEAVEFN( "CWlanPlugin::HandleSelection()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::ItemType +// --------------------------------------------------------- +TGSListboxItemTypes CWlanPlugin::ItemType() + { + + CLOG_ENTERFN( "CWlanPlugin::ItemType()" ); + CLOG_LEAVEFN( "CWlanPlugin::ItemType()" ); + + return EGSItemTypeSettingDialog; + } + +// --------------------------------------------------------- +// CWlanPlugin::CreateIconL +// --------------------------------------------------------- +CGulIcon* CWlanPlugin::CreateIconL( const TUid aIconType ) + { + + CLOG_ENTERFN( "CWlanPlugin::CreateIconL()" ); + + TFileName iconsFileName; + + iconsFileName.Append( KDriveZ ); + iconsFileName.Append( KDC_APP_BITMAP_DIR ); + iconsFileName.Append( KFileIcons ); + + CGulIcon* icon; + + TInt pic, picmask; + TAknsItemID itemid; + //if the main icon is asked + if ( aIconType == KGSIconTypeLbxItem ) + { + if ( iWlanState->GetMainIconL( pic, picmask, itemid ) ) + { + icon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(), + itemid, + iconsFileName, + pic, + picmask ); + } + else + { + icon = CGSPluginInterface::CreateIconL( aIconType ); + } + } + //if the secondary icon is asked + else if ( aIconType == KGSIconTypeDColumn ) + { + //if there should be icon + if ( iWlanState->GetStrengthIconL( pic, picmask, itemid ) ) + { + icon = CGulIcon::NewLC(); + CFbsBitmap* bitmap; + CFbsBitmap* mask; + + // Creates bitmap an icon. + AknsUtils::CreateColorIconL( AknsUtils::SkinInstance(), + itemid, + KAknsIIDQsnIconColors, + EAknsCIQsnIconColorsCG13, + bitmap, + mask, + iconsFileName, + pic, + picmask, + KRgbBlack ); + + icon->SetBitmap( bitmap ); + icon->SetMask( mask ); + CleanupStack::Pop( icon ); + } + //if there should be no icons + else + { + icon = CGSPluginInterface::CreateIconL( aIconType ); + } + } + //in other case of icons + else + { + icon = CGSPluginInterface::CreateIconL( aIconType ); + } + + CLOG_LEAVEFN( "CWlanPlugin::CreateIconL()" ); + + return icon; + } + +// --------------------------------------------------------- +// CVWlanPlugin::Visible +// --------------------------------------------------------- +TBool CWlanPlugin::Visible() const + { + + CLOG_ENTERFN( "CWlanPlugin::Visible()" ); + CLOG_LEAVEFN( "CWlanPlugin::Visible()" ); + + return GetWlanSupported(); + } + +// --------------------------------------------------------- +// CWlanPlugin::CWlanPlugin +// --------------------------------------------------------- +CWlanPlugin::CWlanPlugin(): + iResources( *CCoeEnv::Static() ), + iNullService( NULL ) + { + // no implementation required + } + +// --------------------------------------------------------- +// CWlanPlugin::GetValue +// --------------------------------------------------------- +void CWlanPlugin::GetValue( const TGSPluginValueKeys aKey, + TDes& aValue ) + { + CLOG_ENTERFN( "CWlanPlugin::GetValue()" ); + + //if the second line of the listbox is asked + if( aKey == EGSPluginKeySettingsItemValueString ) + { + TRAP_IGNORE( iWlanState->GetStateStringL( aValue ) ); + } + + CLOG_LEAVEFN( "CWlanPlugin::GetValue()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::OpenLocalizedResourceFileL +// --------------------------------------------------------- +void CWlanPlugin::OpenLocalizedResourceFileL() + { + CLOG_ENTERFN( "CWlanPlugin::OpenLocalizedResourceFileL()" ); + + + RFs fsSession; + User::LeaveIfError( fsSession.Connect() ); + + // Find the resource file: + TParse parse; + parse.Set( KWlanPluginResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL ); + TFileName fileName( parse.FullName() ); + + // Get language of resource file: + BaflUtils::NearestLanguageFile( fsSession, fileName ); + + // Open resource file: + iResources.OpenL( fileName ); + + // If leave occurs before this, close is called automatically when the + // thread exits. + fsSession.Close(); + + CLOG_LEAVEFN( "CWlanPlugin::OpenLocalizedResourceFileL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::LaunchSnifferAppL +// --------------------------------------------------------- +void CWlanPlugin::LaunchSnifferAppL() + { + CLOG_ENTERFN( "CWlanPlugin::LaunchSnifferAppL()" ); + + // Launch app + if ( iNullService ) + { + delete iNullService; + iNullService = NULL; + } + iNullService = CAknNullService::NewL( KSnifferAppUid, this ); + + CLOG_LEAVEFN( "CWlanPlugin::LaunchSnifferAppL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::GetWlanSupported +// --------------------------------------------------------- +TBool CWlanPlugin::GetWlanSupported() const + { + CLOG_ENTERFN( "CWlanPlugin::GetWlanSupported()" ); + + TBool isWlanSupported = EFalse; + + TRAPD( error, FeatureManager::InitializeLibL() ); + + if( !error ) + { + isWlanSupported = + FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ); + + FeatureManager::UnInitializeLib(); + } + + CLOG_LEAVEFN( "CWlanPlugin::GetWlanSupported()" ); + + return isWlanSupported; + } + +// --------------------------------------------------------- +// CWlanPlugin::ShowErrorNote +// --------------------------------------------------------- +// +void CWlanPlugin::ShowErrorNote(TInt aErrorCode) + { + CLOG_ENTERFN( "CWlanPlugin::ShowErrorNote()" ); + + + TBool errorNoteShowed = EFalse; + + TRAPD(error, errorNoteShowed = ShowErrorNoteL(aErrorCode)); + + if(error || !errorNoteShowed) + { + TRAP_IGNORE( ShowGeneralErrorNoteL() ); + } + + CLOG_LEAVEFN( "CWlanPlugin::ShowErrorNote()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::ShowErrorNoteL +// --------------------------------------------------------- +// +TBool CWlanPlugin::ShowErrorNoteL(TInt aErrorCode) + { + CLOG_ENTERFN( "CWlanPlugin::ShowErrorNoteL()" ); + + CErrorUI* errorUi = CErrorUI::NewLC(); + + TBool errorNoteShowed = errorUi->ShowGlobalErrorNoteL( aErrorCode ); + + CleanupStack::PopAndDestroy( errorUi ); + + CLOG_LEAVEFN( "CWlanPlugin::ShowErrorNoteL()" ); + + return errorNoteShowed; + } + +// --------------------------------------------------------- +// CWlanPlugin::ShowGeneralErrorNoteL +// --------------------------------------------------------- +// +void CWlanPlugin::ShowGeneralErrorNoteL() + { + CLOG_ENTERFN( "CWlanPlugin::ShowGeneralErrorNoteL()" ); + + HBufC *msg = StringLoader::LoadLC( R_QTN_ERR_OS_GENERAL ); + + CAknGlobalNote *note = CAknGlobalNote::NewLC(); + + note->ShowNoteL( EAknGlobalErrorNote, *msg ); + + CleanupStack::PopAndDestroy( note ); + CleanupStack::PopAndDestroy( msg ); + + CLOG_LEAVEFN( "CWlanPlugin::ShowGeneralErrorNoteL()" ); + } + +// --------------------------------------------------------- +// CWlanPlugin::HandleServerAppExit +// --------------------------------------------------------- +// +void CWlanPlugin::HandleServerAppExit(TInt aReason) + { + CLOG_ENTERFN( "CWlanPlugin::HandleServerAppExit()" ); + //MAknServerAppExitObserver::HandleServerAppExit( aReason ); + if( aReason == EAknCmdExit ) + { + iAvkonViewAppUi->Exit(); + } + + CLOG_LEAVEFN( "CWlanPlugin::HandleServerAppExit()" ); + } + + +//End of file