--- a/remotestoragefw/gsplugin/src/rsfwgsplugindrivelistcontainer.cpp Mon Jan 18 21:00:57 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,735 +0,0 @@
-/*
-* Copyright (c) 2003 - 2005 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: The control container (view) of the remote drives list view
-*
-*/
-
-
-// INCLUDE FILES
-#include <aknappui.h>
-#include <eikspane.h>
-#include <StringLoader.h>
-#include <aknlists.h>
-#include <AknIconArray.h>
-#include <eikclbd.h>
-#include <rsfwgspluginrsc.rsg>
-#include <avkon.mbg>
-#include <AknQueryDialog.h>
-#include <rsfwgsplugin.mbg>
-#include <aknnotewrappers.h>
-
-#include "rsfwgslocalviewids.h"
-#include "rsfwgsplugindrivelistcontainer.h"
-#include "rsfwgsplugin.h"
-#include "rsfwmountman.h"
-#include "rsfwcontrol.h"
-#include "rsfwmountentry.h"
-
- _LIT(KTabulator, "\t");
- _LIT(KConnectedIcon, "\t0");
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::CRsfwGsPluginDriveListContainer()
-// ---------------------------------------------------------------------------
-//
-CRsfwGsPluginDriveListContainer::CRsfwGsPluginDriveListContainer(CRsfwGsPlugin* aView) : iView(aView)
- {
-
- }
-
-
-// -----------------------------------------------------------------------------
-// GSSettListRemoteDrivesListContainer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::ConstructL(
- const TRect& aRect,
- CRsfwMountMan* aMountMan)
- {
- iMountMan = aMountMan;
-
- CEikStatusPane* sp = static_cast<CAknAppUi*>
- ( iEikonEnv->EikAppUi() )->StatusPane();
- iTitlePane = static_cast<CAknTitlePane*>
- ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
- // Set title
- StringLoader::Load ( iTitle, R_STR_REMOTE_DRIVES_VIEW_TITLE );
- iTitlePane->SetTextL(iTitle);// FromResourceL( rReader );
- CreateWindowL(); // Makes the control a window-owning control
-
- // Main List creation and initialization
- iMainList = new(ELeave) CAknSingleStyleListBox();
- iMainList->SetContainerWindowL(*this);
- iMainList->ConstructL(this, EAknListBoxLoopScrolling);
-
- // Main list scroll bar issues
- iMainList->CreateScrollBarFrameL(EFalse);
- iMainList->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-
- // Empty text processing
- _LIT (KStringHeader, "%S\n%S");
- HBufC* emptyText = iEikonEnv->AllocReadResourceLC(R_GS_RSFW_NO_REMOTE_DRIVES);
- HBufC* emptyText2 = iEikonEnv->AllocReadResourceLC(R_GS_RSFW_NO_REMOTE_DRIVES_EXPLANATORY);
- HBufC* myString = HBufC::NewLC(emptyText->Length() + emptyText2->Length() + 5);
- TPtr emptyStringPtr = myString->Des();
- emptyStringPtr.Format(KStringHeader, emptyText, emptyText2);
-
- iMainList->SetListBoxObserver(this);
- iMainList->View()->SetListEmptyTextL(*myString);
- CleanupStack::PopAndDestroy( 3 ); //emptyText, emptyText2, myString
-
- CArrayPtrFlat<CGulIcon>* iconArray = new(ELeave) CAknIconArray(4);
-
- CGulIcon* icon2;
- icon2 = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnIndiConnectionOnAdd,
- KGSPluginBitmapFile,
- EMbmRsfwgspluginQgn_indi_connection_on_add,
- EMbmRsfwgspluginQgn_indi_connection_on_add_mask);
-
- CleanupStack::PushL(icon2);
- iconArray->AppendL(icon2);
- CleanupStack::Pop(icon2);
-
- CGulIcon* icon3;
- icon3 = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnIndiMarkedAdd,
- AknIconUtils::AvkonIconFileName(),
- EMbmAvkonQgn_indi_marked_add,
- EMbmAvkonQgn_indi_marked_add_mask);
-
- CleanupStack::PushL(icon3);
- iconArray->AppendL(icon3);
- CleanupStack::Pop(icon3);
-
- (static_cast<CAknSingleStyleListBox *>(iMainList))->
- ItemDrawer()->ColumnData()->SetIconArray(iconArray);
-
- SetupListL();
-
- // Start receiving P&S notifier about the changes in drive connection states
- // if the key is not found, will leave with an error code
- // just ignore for now...
- TRAP_IGNORE(iDriveConnectObserver = CRsfwGsPropertyWatch::NewL(this));
-
- SetRect( aRect );
- ActivateL();
-
- iCoeEnv->AddForegroundObserverL( *this );
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::~CRsfwGsPluginDriveListContainer()
-// Destructor
-//
-// ---------------------------------------------------------------------------
-//
-CRsfwGsPluginDriveListContainer::~CRsfwGsPluginDriveListContainer()
- {
- if (iMainList)
- {
- delete iMainList;
- }
-
- if (iDriveConnectObserver)
- {
- delete iDriveConnectObserver;
- }
- iCoeEnv->RemoveForegroundObserver( *this );
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::SizeChanged()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::SizeChanged()
- {
- iMainList->SetRect(Rect());
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::CountComponentControls() const
-// ---------------------------------------------------------------------------
-//
-TInt CRsfwGsPluginDriveListContainer::CountComponentControls() const
- {
- return 1;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::ComponentControl() const
-// ---------------------------------------------------------------------------
-//
-CCoeControl* CRsfwGsPluginDriveListContainer::ComponentControl( TInt aIndex ) const
- {
- switch ( aIndex )
- {
- case 0:
- return iMainList;
- default:
- return NULL;
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::EditCurrentItemL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::EditCurrentItemL()
- {
- HBufC* currentDriveName = GetCurrentRemoteDriveNameLC();
- if (!(iView->IsDriveConnectedL()))
- {
- TPtrC drivePtr = currentDriveName->Ptr();
- iCurrentItemIndex=iMainList->CurrentItemIndex();
- TPtrC namePtr = drivePtr.Left(currentDriveName->Length());
- iView->LoadSettingsViewL(EEditExisting, namePtr, ETrue);
-
- }
- else
- {
- HBufC* myDisplayMessage = NULL;
- if ( currentDriveName->Length() )
- {
- myDisplayMessage = StringLoader::LoadLC( R_STR_RSFW_ERROR_EDIT_CONNECTED, *currentDriveName );
- }
- else
- {
- myDisplayMessage = StringLoader::LoadLC( R_STR_RSFW_ERROR_EDIT_CONNECTED );
- }
- CAknErrorNote* errorNote = new CAknErrorNote(EFalse);
- errorNote->ExecuteLD(*myDisplayMessage);
- CleanupStack::PopAndDestroy(myDisplayMessage);
- }
- CleanupStack::PopAndDestroy(currentDriveName);
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetCurrentRemoteDriveNameLC()
-// ---------------------------------------------------------------------------
-//
-HBufC* CRsfwGsPluginDriveListContainer::GetCurrentRemoteDriveNameLC()
- {
- TPtrC16 remoteDriveName, remoteDriveNameClipped, remoteDriveNamePtr;
- TInt currentItemIndex = iMainList->CurrentItemIndex();
- if (currentItemIndex == KErrNotFound)
- {
- User::Leave(KErrNotFound);
- }
- remoteDriveName.Set(iRemoteDriveListArray->MdcaPoint(currentItemIndex));
- // remove '\t' from the beginning
- remoteDriveNameClipped.Set(remoteDriveName.Mid(1));
- // remove the trailing '\tn'if exists
- TInt posit = remoteDriveNameClipped.Find(KTabulator);
- if (posit != KErrNotFound)
- {
- remoteDriveNamePtr.Set(remoteDriveNameClipped.Left(posit));
- }
- else
- {
- remoteDriveNamePtr.Set(remoteDriveNameClipped);
- }
-
- return remoteDriveNamePtr.AllocLC();
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetRemoteDriveNameLC(TInt aIndex)
-// ---------------------------------------------------------------------------
-//
-TPtrC CRsfwGsPluginDriveListContainer::GetRemoteDriveNameL(TInt aIndex)
- {
- TPtrC16 remoteDriveName, remoteDriveNameClipped, remoteDriveNamePtr;
- remoteDriveName.Set(iRemoteDriveListArray->MdcaPoint(aIndex));
- // remove '\t' from the beginning
- remoteDriveNameClipped.Set(remoteDriveName.Mid(1));
- // remove the trailing '\tn'
- TInt posit = remoteDriveNameClipped.Find(KTabulator);
- if (posit != KErrNotFound)
- {
- remoteDriveNamePtr.Set(remoteDriveNameClipped.Left(posit));
- }
- else
- {
- remoteDriveNamePtr.Set(remoteDriveNameClipped);
- }
-
- return remoteDriveNamePtr;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::OfferKeyEventL()
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CRsfwGsPluginDriveListContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- if (iMainList)
- {
- // if cancel key is pressed and list is not empty, invoke deletion
- if ((aKeyEvent.iCode == EKeyBackspace ) && (aType == EEventKey) )
- {
- if(!IsListEmpty())
- {
- CRsfwGsPlugin* iTempView = static_cast<CRsfwGsPlugin*> (iView);
- iTempView->DeleteRemoteDriveL();
- }
- return EKeyWasConsumed;
- }
- else
- {
- TKeyResponse returnValue = iMainList->OfferKeyEventL (aKeyEvent, aType);
- if ((aKeyEvent.iCode == EKeyUpArrow || aKeyEvent.iCode == EKeyDownArrow )
- && (aType == EEventKey))
- {
- // Cba needs to be updated any time the user goes through the drive list
- // as MSK "Edit" is dependent on connection state
- // Note that we had to call iMainList->OfferKeyEventL() first
- // to make sure that the correct drive is highlighted
- iCurrentItemIndex = iMainList->CurrentItemIndex();
- iView->UpdateCbaL();
- }
- return returnValue;
- }
- }
- return EKeyWasNotConsumed;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleListBoxEventL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent)
- {
- // if the Select Key has been pressed
- if ((aListBoxEvent == MEikListBoxObserver::EEventEnterKeyPressed) ||
- (aListBoxEvent == MEikListBoxObserver::EEventItemSingleClicked))
- {
- EditCurrentItemL();
- }
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::SetupListL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::SetupListL()
- {
- CTextListBoxModel* model = iMainList->Model();
- model->SetOwnershipType(ELbmOwnsItemArray);
-
- iRemoteDriveListArray = static_cast<CDesCArray*>(model->ItemTextArray());
- LoadRemoteDriveListArrayL();
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::LoadSettingsListArrayL()
-// ---------------------------------------------------------------------------
-//
-TInt CRsfwGsPluginDriveListContainer::LoadRemoteDriveListArrayL()
- {
- iTitlePane->SetTextL(iTitle);
-
- CDesCArray* remoteDriveList = NULL;
- remoteDriveList = GetRemoteDriveNamesL();
- CleanupStack::PushL(remoteDriveList);
- TInt remoteDriveListCount = remoteDriveList->Count();
- iRemoteDriveListArray->Reset();
- for (TInt i = 0; i< remoteDriveListCount; i++)
- {
- TBuf <KMaxFriendlyNameLength+5> string; // maximum name + \t + \tn
- string.Append(KTabulator);
- string.Append(remoteDriveList->MdcaPoint(i));
- if ( IsDriveConnectedL(remoteDriveList->MdcaPoint(i)))
- {
- string.Append(KConnectedIcon);
- }
- iRemoteDriveListArray->AppendL(string);
-
- }
- CleanupStack::PopAndDestroy(remoteDriveList);
- iMainList->HandleItemRemovalL();
- iMainList->HandleItemAdditionL();
- return remoteDriveListCount;
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::IsListEmpty()
-// ---------------------------------------------------------------------------
-//
-TBool CRsfwGsPluginDriveListContainer::IsListEmpty()
- {
- if (iRemoteDriveListArray->Count())
- return EFalse;
- return ETrue;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::IsLastItem()
-// ---------------------------------------------------------------------------
-//
-TBool CRsfwGsPluginDriveListContainer::IsLastItem()
- {
- if (iRemoteDriveListArray->Count() == 1)
- return ETrue;
- return EFalse;
- }
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::DeleteCurrentRemoteDriveL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::DeleteCurrentRemoteDriveL()
- {
- TBool deletingLast = EFalse;
- if (iMainList->CurrentItemIndex() == iMainList->BottomItemIndex())
- {
- deletingLast = ETrue;
- }
-
- HBufC* currentDriveName = GetCurrentRemoteDriveNameLC();
- TPtrC drivePtr = currentDriveName->Ptr();
- iMountMan->DeleteMountEntryL(drivePtr.Left(currentDriveName->Length()));
- iRemoteDriveListArray->Delete(iMainList->CurrentItemIndex());
- iMainList->HandleItemRemovalL();
- iMainList->DrawDeferred();
- CleanupStack::PopAndDestroy(currentDriveName);
-
- if (deletingLast)
- {
- if (iRemoteDriveListArray->Count() > 0)
- {
- iMainList->SetCurrentItemIndex(iMainList->BottomItemIndex());
- }
-
- }
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::IsDriveConnectedL()
-// ---------------------------------------------------------------------------
-//
-TBool CRsfwGsPluginDriveListContainer::IsDriveConnectedL(const TDesC& aName)
- {
-
- TInt err;
- const CRsfwMountEntry* mountEntry;
- TRsfwMountInfo mountInfo;
- TChar driveL;
- mountEntry = mountEntry = iMountMan->MountEntryL(aName);
- if (!mountEntry)
- {
- User::Leave(KErrNotFound);
- }
- const HBufC* drive = (mountEntry->Item(EMountEntryItemDrive));
- if (drive && drive->Length())
- {
- driveL =(*drive)[0];
- }
- else
- {
- // getting drive letter failed
- return EFalse;
- }
- err = iMountMan->GetMountInfo(driveL, mountInfo);
- if ((err == KErrNone) && (mountInfo.iMountStatus.iConnectionState == KMountStronglyConnected))
- {
- return ETrue;
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::SetDriveConnectedStateL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::SetDriveConnectedStateL(const TDesC& aName, TBool aConnected)
- {
- TInt i;
- for (i=0; i < iRemoteDriveListArray->Count(); i++)
- {
- TPtrC driveString = GetRemoteDriveNameL(i);
- if (driveString.Compare(aName) == 0)
- {
- // newString has space for the friendly name, tabulator and connected icon
- TBuf<KMaxFriendlyNameLength+5> newString;
- newString.Append(KTabulator);
- newString.Append(driveString);
- if (aConnected)
- {
- newString.Append(KConnectedIcon);
- }
- iRemoteDriveListArray->Delete(i);
- iRemoteDriveListArray->InsertL(i, newString);
- iMainList->DrawDeferred();
- // Cba needs to be updated as MSK "Edit" is dependent on connection state
- iView->UpdateCbaL();
- break;
- }
-
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::ConnectCurrentRemoteDriveL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::ConnectCurrentRemoteDriveL()
-{
- User::LeaveIfError(iMountMan->SetMountConnectionStateBlind(GetCurrentRemoteDriveIdL(),
- KMountStronglyConnected));
-}
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::DisconnectCurrentRemoteDriveL()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::DisconnectCurrentRemoteDriveL()
-{
- User::LeaveIfError(iMountMan->SetMountConnectionState(GetCurrentRemoteDriveIdL(),
- KMountNotConnected));
-
-}
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetNextRemoteDriveNameL
-// ---------------------------------------------------------------------------
-//
-TDesC& CRsfwGsPluginDriveListContainer::GetNextRemoteDriveNameL()
- {
- // Always return "New drive" as the default starting name
- // in case there is already a drive with the name "new name"
- // user is not allowed to save the new drive before changing the name.
- StringLoader::Load(iSettingNewName, R_STR_REMOTE_DRIVE_NEW_NAME);
- return iSettingNewName;
- }
-
-
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetCurrentRemoteDriveIdL
-// ---------------------------------------------------------------------------
-//
-TChar CRsfwGsPluginDriveListContainer::GetCurrentRemoteDriveIdL()
- {
- const CRsfwMountEntry* mountEntry;
- HBufC* currentDriveName = GetCurrentRemoteDriveNameLC();
- TPtrC drivePtr = currentDriveName->Ptr();
- mountEntry = iMountMan->MountEntryL(drivePtr.Left(currentDriveName->Length()));
- if (!mountEntry)
- {
- User::Leave(KErrNotFound);
- }
- CleanupStack::PopAndDestroy(currentDriveName);
- const HBufC* drive = (mountEntry->Item(EMountEntryItemDrive));
- if (drive && drive->Length())
- {
- return (*drive)[0];
- }
-
- // should not come here....
- // return the drive letter of the default drive
- RFs fs;
- User::LeaveIfError(fs.Connect());
- TChar defaultd;
- fs.DriveToChar(EDriveC, defaultd);
- fs.Close();
- return defaultd;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetRemoteDriveNamesL
-// ---------------------------------------------------------------------------
-//
-CDesCArray* CRsfwGsPluginDriveListContainer::GetRemoteDriveNamesL()
- {
- CDesCArray* myArray = new (ELeave) CDesC16ArraySeg(4);
- iMountMan->GetMountNamesL(myArray);
- return myArray;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::RemoteDriveCount
-// ---------------------------------------------------------------------------
-//
-TInt CRsfwGsPluginDriveListContainer::RemoteDriveCount()
- {
- return iRemoteDriveListArray->Count();
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleResourceChange()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleResourceChange( TInt aType )
- {
- if ( aType == KAknsMessageSkinChange ||
- aType == KEikDynamicLayoutVariantSwitch )
- {
- if (aType != KAknsMessageSkinChange)
- {
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
- mainPaneRect);
- SetRect( mainPaneRect );
- }
- DrawDeferred();
- CRsfwGsPlugin* iTempView = static_cast<CRsfwGsPlugin*> (iView);
-
- iTempView->HandleResourceChangeManual(aType);
- }
- CCoeControl::HandleResourceChange( aType );
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleResourceChangeManual()
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleResourceChangeManual(TInt aType)
- {
- if (aType != KAknsMessageSkinChange)
- {
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
- mainPaneRect);
- SetRect( mainPaneRect );
- }
- DrawDeferred();
- iMainList->HandleResourceChange(aType);
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::FocusChanged
-// Set focus on the selected listbox. For animated skins feature.
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::FocusChanged(TDrawNow /*aDrawNow*/)
- {
- if(iMainList)
- {
- iMainList->SetFocus( IsFocused() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::GetHelpContext
-// This function is called when Help application is launched.
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KGSRsfwPluginUID;
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleGainingForeground
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleGainingForeground()
- {
- TRAP_IGNORE(HandleGainingForegroundL());
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleGainingForegroundL
-// Called from HandleGainingForeground in order to trap potential leaves.
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleGainingForegroundL()
- {
- if (iView->CurrentContainer() == this)
- {
- // update the drive list
- LoadRemoteDriveListArrayL();
- SetFocus();
- iView->ProcessDeletingDialog();
- iView->UpdateCbaL();
- }
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::HandleLosingForeground
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::HandleLosingForeground()
- {
-
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::SetFocus
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::SetFocus()
- {
- TInt remoteDriveCount = iRemoteDriveListArray->Count();
-
- if (remoteDriveCount > 0)
- {
- if (iCurrentItemIndex >= remoteDriveCount)
- {
- // set to the beginning of the list
- iCurrentItemIndex = 0;
- }
-
- iMainList->SetCurrentItemIndex(iCurrentItemIndex);
- }
- }
-
-// ---------------------------------------------------------------------------
-// CRsfwGsPluginDriveListContainer::SetFocusL
-// finds the given name on the drive list and sets focus accordingly
-// ---------------------------------------------------------------------------
-//
-void CRsfwGsPluginDriveListContainer::SetFocusL(const TDes& aDriveName)
- {
- CDesCArray* remoteDriveList = NULL;
- remoteDriveList = GetRemoteDriveNamesL();
- CleanupStack::PushL(remoteDriveList);
-
- for ( TInt i = 0; i < remoteDriveList->Count(); i++ )
- {
- if (aDriveName.Compare(remoteDriveList->MdcaPoint(i)) == 0)
- {
- iMainList->SetCurrentItemIndex(i);
- CleanupStack::PopAndDestroy(remoteDriveList);
- return;
- }
- }
- CleanupStack::PopAndDestroy(remoteDriveList);
-
- // if drive name not found on the list, use default behaviour
- SetFocus();
- }
-
-
-// End of File