--- a/upnpsettings/upnpgsplugin/src/upnpappsettingitemhomeiap.cpp Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,616 +0,0 @@
-/*
-* Copyright (c) 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: Implements home network IAP setting item class to home
-* network setting item list.
-*
-*/
-
-
-
-
-
-
-
-// INCLUDE FILES
-// System
-#include <StringLoader.h> // stringloader
-#include <aknmessagequerydialog.h> // caknmessagequerydialog
-#include <aknradiobuttonsettingpage.h> // caknradiobuttonsettingpage
-#include <WlanCdbCols.h> // wlan_service
-#include <wlanmgmtcommon.h> // twlanssid
-#include <agentdialog.h> // rgenconagentdialogserver
-#include <aknnotewrappers.h> // cakninformationnote
-#include <cmmanager.h>
-#include <cmconnectionmethoddef.h>
-#include <commdb.h> //CCommsDatabase
-#include "upnpavcontrollerfactory.h"
-#include "upnpsettingsengine.h"
-#include "upnpsettingsengine.hrh"
-
-// internal
-#include "upnpappsettingitemhomeiap.h"
-#include "upnpappsettingslist.h" // ewlanunsecured
-#include "upnpfilesharingengine.h" // cupnpfilesharingengine
-
-#include <upnpgspluginrsc.rsg>
-
-_LIT( KComponentLogfile, "upnpgsplugin.txt");
-#include "upnplog.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::NewL()
-// --------------------------------------------------------------------------
-//
-UPnPAppSettingItemHomeIAP* UPnPAppSettingItemHomeIAP::NewL(
- TInt aIdentifier,
- TInt& aIAPSetting,
- TInt& aIAPId,
- TInt& aWAPId,
- TBool& aSharingState )
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- UPnPAppSettingItemHomeIAP* self = new (ELeave) UPnPAppSettingItemHomeIAP(
- aIdentifier,
- aIAPSetting,
- aIAPId,
- aWAPId,
- aSharingState );
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- return self;
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::UPnPAppSettingItemHomeIAP()
-// --------------------------------------------------------------------------
-//
-UPnPAppSettingItemHomeIAP::UPnPAppSettingItemHomeIAP(
- TInt aIdentifier,
- TInt& aIAPSetting,
- TInt& aIAPId,
- TInt& aWAPId,
- TBool& aSharingState ) :
- CAknEnumeratedTextPopupSettingItem(aIdentifier, aIAPSetting),
- iIAPSetting(aIAPSetting),
- iIAPId(aIAPId),
- iWAPId(aWAPId),
- iSharingState( aSharingState )
- {
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::ConstructL()
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::ConstructL()
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-
- iCoeEnv = CCoeEnv::Static();
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::~UPnPAppSettingItemHomeIAP()
-// --------------------------------------------------------------------------
-//
-UPnPAppSettingItemHomeIAP::~UPnPAppSettingItemHomeIAP()
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- delete iItemText;
- delete iIAPName;
-
- iIAPIdArray.Close();
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingPageHomeIAP::CreateAndExecuteSettingPageL ()
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::CreateAndExecuteSettingPageL()
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- // if sharing is on, only information note is displayed
- UPnPAVControllerFactory::TAVControllerServerStatus status;
- UPnPAVControllerFactory::Status( status );
- if ( iSharingState || status == UPnPAVControllerFactory::EStatusActive )
- {
- CAknInformationNote* note = new (ELeave) CAknInformationNote;
- HBufC* noteText = iCoeEnv->AllocReadResourceLC(
- R_QTN_IUPNP_IAP_TURN_SHARING_OFF);
- note->ExecuteLD(*noteText);
- CleanupStack::PopAndDestroy(noteText);
- return;
- }
-
- // Resets the member array for iap ids.
- // Creates new array for iap names.
- iIAPIdArray.Reset();
- CDesCArray* array = new (ELeave) CDesCArrayFlat(5);
- CleanupStack::PushL(array);
-
- // adds static setting page items from resource
- // and stores the number of static items.
- AddStaticItemsL(array);
- TInt staticItemCount = array->Count();
-
- // adds wlan access points, array GETS the ownership
- CUPnPSettingsEngine::GetWLANAccessPointsL( array, iIAPIdArray );
-
- MAknQueryValue* qValue = QueryValue();
- User::LeaveIfNull(qValue);
- LoadL();
- StoreL();
-
- TInt idx = GetIAPIndex( staticItemCount );
- if ( idx >= array->MdcaCount() )
- {
- idx = array->MdcaCount() - 1;
- }
- // setting page is launched
- CAknSettingPage* dlg = new (ELeave) CAknRadioButtonSettingPage(
- SettingPageResourceId(),
- idx,
- array);
-
- if (dlg->ExecuteLD())
- {
- switch (idx)
- {
- case EUPnPSettingsEngineIAPItemNone:
- {
- DisplayInfoL(R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTAVAIL_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- qValue->SetCurrentValueIndex(EUPnPSettingsEngineIAPItemNone);
- iIAPId = EUPnPSettingsEngineIAPIdNone;
- iIAPSetting = EUPnPSettingsEngineIAPItemNone;
- break;
- }
- case EUPnPSettingsEngineIAPItemAlwaysAsk:
- {
- qValue->SetCurrentValueIndex(EUPnPSettingsEngineIAPItemAlwaysAsk);
- iIAPId = EUPnPSettingsEngineIAPIdAlwaysAsk;
- iIAPSetting = EUPnPSettingsEngineIAPItemAlwaysAsk;
- DisplayInfoL(R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- break;
- }
- case EUPnPSettingsEngineIAPItemUserDefined: // Create new
- {
- // new iap wlan iap creation is started here
-
- TInt old_iap = iIAPId;
-
- CUPnPSettingsEngine::CreateAccessPointL();
-
- //We have to re-get all the wlan iaps again since
- //user may modify the iap list
- RArray<TInt64> newArray;
- CleanupClosePushL( newArray );
-
- //We only are interested in the iap ids
- CUPnPSettingsEngine::GetWLANAccessPointsL(
- NULL,
- newArray );
-
- if( newArray.Count() <= 0 ) //if no iap exisits
- {
- //if previous iap is not "None" or "Always ask"
- if( old_iap > EUPnPSettingsEngineIAPIdAlwaysAsk )
- {
- DisplayInfoL(
- R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTAVAIL_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- iIAPId = EUPnPSettingsEngineIAPIdNone;
-
- qValue->SetCurrentValueIndex(
- EUPnPSettingsEngineIAPItemNone );
- iIAPSetting = EUPnPSettingsEngineIAPItemNone;
- }
- iIAPIdArray.Reset();
- CleanupStack::PopAndDestroy( &newArray );
- }
- else
- {
- TBool newiap = ETrue;
- TInt lastItemIndex = newArray.Count() - 1;
- //if the last item on the new iap list
- //is found in the old iap array
- //then we think no new iap is created
- for( TInt i = 0; i < iIAPIdArray.Count(); i++ )
- {
- if( newArray[lastItemIndex] == iIAPIdArray[i] )
- {
- newiap = EFalse;
- i = iIAPIdArray.Count();
- }
- }
-
- //get the new iap list
- iIAPIdArray.Reset();
- for( TInt i = 0; i < newArray.Count(); i++ )
- {
- iIAPIdArray.AppendL( newArray[i] );
- }
- CleanupStack::PopAndDestroy( &newArray );
-
- if( newiap )
- {
- iIAPId = iIAPIdArray[lastItemIndex];//get new iap
- iIAPSetting =
- EUPnPSettingsEngineIAPItemUserDefined;
- // show confirmation note if connection is
- // unsecured, the database store the value of
- // the securitymode,such as EOpen,EWep,E802_1x,
- // EWpa,if select other securitymode except
- // EOpen, the return value of the
- // CheckAPSecurityL fuction is not EWLanUnsecured
- if ( CheckAPSecurityL(iIAPId) == EWLanUnsecured )
- {
- CAknQueryDialog* dlg =
- CAknQueryDialog::NewL();
- if (!(dlg->ExecuteLD(
- R_UNSECURED_CONNECTIONS_CONFIRMATION_QUERY)))
- {
- //user cancels the dialog
- UsePreviousIapL( old_iap );
- }
- }
- else
- {
- // show 'Sharing Changed' note ( None -> sharing)
- if(old_iap == EUPnPSettingsEngineIAPIdNone &&
- iIAPId != old_iap )
- {
- DisplayInfoL(
- R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- }
- }
- }
- else
- {
- UsePreviousIapL(old_iap);
- } //if( newiap )
- } //if( newArray.Count() <= 0 )
- break;
- }
- default: // Predefined iap is selected
- {
- TInt index;
- TInt old_iap = iIAPId;
- TBool iapchange = EFalse;
- // iap id is set
- if ( idx - staticItemCount >= 0 )
- {
- index = idx - staticItemCount;
- if (CheckAPSecurityL(iIAPIdArray[index]) ==
- EWLanUnsecured)
- {
- // show confirmation note if connection is unsecured
- CAknQueryDialog* dlg = CAknQueryDialog::NewL();
- if (dlg->ExecuteLD(
- R_UNSECURED_CONNECTIONS_CONFIRMATION_QUERY))
- {
- //if "Continue"
- iapchange = ETrue;
- }
- }
- else
- {
- iapchange = ETrue;
- }
-
- if( iapchange )
- {
- iIAPSetting = EUPnPSettingsEngineIAPItemUserDefined;
- iIAPId = iIAPIdArray[index];
- qValue->SetCurrentValueIndex(
- EUPnPSettingsEngineIAPItemUserDefined);
-
- // if previous iap was 'None' and current iap
- // is not 'None'
- if ( old_iap == EUPnPSettingsEngineIAPIdNone &&
- iIAPId != old_iap )
- {
- DisplayInfoL(
- R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- }
- }
- }
- break;
- }
- }
- }
- LoadL();
- StoreL();
-
- CleanupStack::PopAndDestroy(array);
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::ChangeIAPNameL()
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::ChangeIAPNameL()
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- delete iIAPName;
- iIAPName = NULL;
-
- iIAPName = CUPnPSettingsEngine::GetCurrentIapNameL( iIAPId );
-
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::CheckAPSecurity
-// Checks if selected access point is unsecured and shows warning note
-// --------------------------------------------------------------------------
-//
-TInt UPnPAppSettingItemHomeIAP::CheckAPSecurityL(TInt aAccessPoint)
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- TUint32 serviceId = 0;
- TUint32 securityMode = 0;
-
- CCommsDatabase* db = CCommsDatabase::NewL( EDatabaseTypeIAP );
- CleanupStack::PushL( db );
-
- CCommsDbTableView* view = db->OpenViewMatchingUintLC(TPtrC(IAP),
- TPtrC(COMMDB_ID), aAccessPoint);
-
- TInt error = view->GotoFirstRecord();
-
- if( error == KErrNone )
- {
- view->ReadUintL(TPtrC(IAP_SERVICE), serviceId);
- }
-
- CCommsDbTableView* wLanServiceTable = NULL;
-
- TRAPD(err,
- {// this leaves if the table is empty....
- wLanServiceTable = db->OpenViewMatchingUintLC(
- TPtrC( WLAN_SERVICE ),
- TPtrC( WLAN_SERVICE_ID ),
- serviceId );
- CleanupStack::Pop( wLanServiceTable );
- });
-
- if ( err == KErrNone )
- {
- CleanupStack::PushL( wLanServiceTable );
-
- TInt errorCode = wLanServiceTable->GotoFirstRecord();
-
- if ( errorCode == KErrNone )
- {//read securityMode value
- wLanServiceTable->ReadUintL(TPtrC( WLAN_SECURITY_MODE ),
- securityMode );
- }
-
- CleanupStack::PopAndDestroy(wLanServiceTable);
- }
-
- else if (err != KErrNotFound)
- {
- User::LeaveIfError(err);
- }
-
- CleanupStack::PopAndDestroy(2); // view, db
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-
- return securityMode;
- }
-
-// --------------------------------------------------------------------------
-// CUPnPAppSettingsList::DisplayInfoL();
-// Shows message query to user
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::DisplayInfoL(TInt aHeaderResourceId,
- TInt aMessageResourceId,
- TInt aDialogResourceId)
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- HBufC* noteHeader = StringLoader::LoadL(
- aHeaderResourceId);
- CleanupStack::PushL(noteHeader);
- HBufC* noteMsg = StringLoader::LoadL(
- aMessageResourceId);
- CleanupStack::PushL(noteMsg);
-
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL(*noteMsg);
-
- dlg->PrepareLC(aDialogResourceId);
- dlg->QueryHeading()->SetTextL(*noteHeader);
- dlg->RunLD();
-
- CleanupStack::PopAndDestroy(noteMsg);
- CleanupStack::PopAndDestroy(noteHeader);
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::SettingTextL()
-// --------------------------------------------------------------------------
-//
-const TDesC& UPnPAppSettingItemHomeIAP::SettingTextL()
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- delete iItemText;
- iItemText = NULL;
- LoadL();
- StoreL();
-
- switch ( iIAPSetting )
- {
- case EUPnPSettingsEngineIAPItemAlwaysAsk:
- {
- iItemText = iCoeEnv->AllocReadResourceL(
- R_QTN_IUPNP_ITEM_HOME_IAP_ALWAYS_ASK );
- break;
- }
- case EUPnPSettingsEngineIAPItemUserDefined:
- {
- // changes iap name according to iap id
- ChangeIAPNameL();
-
- if ( !iIAPName )
- {
- iItemText = iCoeEnv->AllocReadResourceL(
- R_QTN_IUPNP_ITEM_HOME_IAP_USER_DEFINED );
- }
- else
- {
- iItemText = iIAPName->AllocL();
- }
-
- break;
- }
- case EUPnPSettingsEngineIAPItemNone:
- {
- iItemText = iCoeEnv->AllocReadResourceL(
- R_QTN_IUPNP_ITEM_HOME_IAP_NONE );
- break;
- }
- default:
- {
- break;
- }
- }
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- return *iItemText;
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::AddStaticItemsL()
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::AddStaticItemsL(CDesCArray* aArray)
- {
- __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
- // None
- HBufC* buf = iCoeEnv->AllocReadResourceLC(
- R_QTN_IUPNP_HOME_IAP_NONE);
- aArray->AppendL(*buf);
- CleanupStack::PopAndDestroy(buf); // buf
- buf = NULL;
-
- // Always ask
- buf = iCoeEnv->AllocReadResourceLC(
- R_QTN_IUPNP_HOME_IAP_ALWAYS_ASK);
- aArray->AppendL(*buf);
- CleanupStack::PopAndDestroy(buf);
- buf = NULL;
-
- // Create new
- buf = iCoeEnv->AllocReadResourceLC(
- R_QTN_IUPNP_HOME_IAP_CREATE_NEW);
- aArray->AppendL(*buf);
- CleanupStack::PopAndDestroy(buf);
- buf = NULL;
- __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::UsePreviousIapL()
-// --------------------------------------------------------------------------
-//
-void UPnPAppSettingItemHomeIAP::UsePreviousIapL( TInt aOldIap )
- {
- // dialog cancelled, using old iap value
- iIAPId = aOldIap;
-
- if( iIAPId == EUPnPSettingsEngineIAPIdNone )
- {
- iIAPSetting = EUPnPSettingsEngineIAPItemNone;
- }
- else if( iIAPId == EUPnPSettingsEngineIAPIdAlwaysAsk )
- {
- iIAPSetting = EUPnPSettingsEngineIAPItemAlwaysAsk;
- }
- else //search for the old iap
- {
- TBool oldiapthere = EFalse;
- for( TInt i = 0; i < iIAPIdArray.Count(); i++ )
- {
- if( iIAPId == iIAPIdArray[i] )
- {
- oldiapthere = ETrue;
- i = iIAPIdArray.Count();
- }
- }
- if( !oldiapthere )
- {
- iIAPId = EUPnPSettingsEngineIAPIdNone;
- iIAPSetting = EUPnPSettingsEngineIAPItemNone;
- DisplayInfoL(R_IBU_GALLERY_UPDATE_NOTE_TITLE_TEXT,
- R_IBU_GALLERY_UPDATE_NOTAVAIL_NOTE_TEXT,
- R_HOMECONNECT_INFO_QUERY);
- }
- else
- {
- iIAPSetting = EUPnPSettingsEngineIAPItemUserDefined;
- }
- }
- }
-
-// --------------------------------------------------------------------------
-// UPnPAppSettingItemHomeIAP::GetIAPIndex()
-// --------------------------------------------------------------------------
-//
-TInt UPnPAppSettingItemHomeIAP::GetIAPIndex( TInt aStaticCount )
- {
- __LOG("GetIAPIndex");
- TInt iapIndex = KErrNotFound;
- if( iIAPId == EUPnPSettingsEngineIAPIdNone ) //NONE
- {
- iapIndex = EUPnPSettingsEngineIAPItemNone;
- }
- else if( iIAPId == EUPnPSettingsEngineIAPIdAlwaysAsk ) //ALWAYS ASK
- {
- iapIndex = EUPnPSettingsEngineIAPItemAlwaysAsk;
- }
- else //pre-defined iap, index should never be Create New
- {
- iapIndex+=aStaticCount;
- for( TInt i = 0; i < iIAPIdArray.Count(); i++ )
- {
- iapIndex++;
- __LOG1("iap %d", iIAPIdArray[i] );
- if( iIAPId == iIAPIdArray[i] )
- {
- i = iIAPIdArray.Count();
- }
- }
- }
-
- return iapIndex;
- }
-// End of File