--- /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 <wlanpluginrsc.rsg>
+#include <gsparentplugin.h>
+#include <gsfwviewuids.h>
+#include <AknNullService.h>
+#include <bautils.h>
+#include <StringLoader.h>
+#include <featmgr.h>
+#include <AknGlobalNote.h>
+#include <ErrorUI.h>
+
+
+// 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<CGSParentPlugin*>(
+ 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