diff -r d39add9822e2 -r 5bfc169077b2 webengine/wrtharvester/src/wrtusbhandler.cpp --- a/webengine/wrtharvester/src/wrtusbhandler.cpp Tue Feb 02 00:56:45 2010 +0200 +++ b/webengine/wrtharvester/src/wrtusbhandler.cpp Fri Mar 19 09:52:28 2010 +0200 @@ -1,22 +1,26 @@ -/* -* Copyright (c) 2006 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: Handle notifications of MMC events. -* -* -* -*/ +// +// ============================================================================ +// Name : WidgetMMCHandler.cpp +// Part of : SW Installer UIs / WidgetInstallerUI +// +// Description: Handle notifications of MMC events. +// +// +// Version : 3.1 +// +// Copyright © 2006 Nokia Corporation. +// This material, including documentation and any related +// computer programs, is protected by copyright controlled by +// Nokia Corporation. All rights are reserved. Copying, +// including reproducing, storing, adapting or translating, any +// or all of this material requires the prior written consent of +// Nokia Corporation. This material also contains confidential +// information which may not be disclosed to others without the +// prior written consent of Nokia Corporation. +// ============================================================================== +/// +// INCLUDE FILES #include "wrtusbhandler.h" #include "wrtharvester.h" #include "wrtusbhandler.h" @@ -25,6 +29,16 @@ // CONSTANTS +static TInt TimerCallBack( TAny* ptr ) +{ + CWrtUsbHandler* temp = static_cast(ptr); + if(temp) + { + temp->DeleteTimer(); + temp->DoScanAndUpdate(); + } + return 0; +} // ============================================================================ // CWrtUsbHandler::NewL() // two-phase constructor @@ -110,15 +124,12 @@ // ============================================================================ void CWrtUsbHandler::RunL() { - TInt status = iStatus.Int(); - - // Restart NotifyChange - Start(); - - if ( status == KErrNone ) - { - DoScanAndUpdate(); - } + if ( iStatus == KErrNone ) + { + //Call back Timer + iCallBackTimer = CPeriodic::NewL(CActive::EPriorityLow); + iCallBackTimer->Start(10000000,0,TCallBack(&TimerCallBack,this)); + } } void CWrtUsbHandler::DoScanAndUpdate() @@ -133,11 +144,21 @@ } if ( deltaDriveFlags ) - { + { + //Unpluging USB from Mass storage . . . + if(iHarvester->IsInMSMode() == 1) + { + iHarvester->SetMSMode(0); + iHarvester->ClearAllOperations(); + TRAP(err, iHarvester->UpdateL() ); + iFs.NotifyChange( ENotifyDisk, iStatus ); + SetActive(); + return; + } + TVolumeInfo volInfo; TInt temp = deltaDriveFlags; TBool massMemAltered = EFalse; - TBool massMemAvailable = EFalse; for(TInt DriveNo = EDriveA+1 ; DriveNo<=EDriveY; DriveNo++ ) { temp = temp >> 1; @@ -148,31 +169,19 @@ if(!err && (status & DriveInfo::EDriveExternallyMountable) && (status & DriveInfo::EDriveInternal )) { //Internal Memory - massMemAltered = ETrue; - // Check is the internal memory available or not - if(iDriveFlags & (1<SetMSMode(1); - } - else - { - // Mass storage was unplugged - if(iHarvester->IsInMSMode() == 1) - { - iHarvester->SetMSMode(0); - iHarvester->ClearAllOperations(); - } - } - } + if( massMemAltered ) + { + iHarvester->SetMSMode(1); + } + + TRAP( err, iHarvester->UpdateL() ); } + iFs.NotifyChange( ENotifyDisk, iStatus ); + SetActive(); } @@ -245,4 +254,9 @@ return error; } - +void CWrtUsbHandler::DeleteTimer() + { + iCallBackTimer->Cancel(); + delete iCallBackTimer; + iCallBackTimer = NULL; + }