diff -r b183ec05bd8c -r 19bba8228ff0 syncmlfw/syncmlnotifier/src/syncmlmmcwatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/syncmlnotifier/src/syncmlmmcwatcher.cpp Wed Sep 01 12:27:42 2010 +0100 @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2009 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: Methods for the SyncML Appserver starter notifier + * + */ + +#include "syncmlmmcwatcher.h" + +// ----------------------------------------------------------------------------- +// CSyncmlmmcwatcher::NewL() +// ----------------------------------------------------------------------------- +CSyncmlmmcwatcher* CSyncmlmmcwatcher::NewL( MSyncMLQueryMmcObserver* aObserver ) + { + CSyncmlmmcwatcher* self = new( ELeave ) CSyncmlmmcwatcher( aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CSyncmlmmcwatcher::CSyncmlmmcwatcher() +// ----------------------------------------------------------------------------- +inline CSyncmlmmcwatcher::CSyncmlmmcwatcher(MSyncMLQueryMmcObserver* aObserver) + { + immcobserver = aObserver; + } + +// ----------------------------------------------------------------------------- +// CSyncmlmmcwatcher::ConstructL() +// ----------------------------------------------------------------------------- +void CSyncmlmmcwatcher::ConstructL() + { + TInt err = iMemoryCard.Connect(); + if ( err == KErrNone ) + { + } + + else + User::LeaveIfError(err); + iDiskNotifyHandler = CDiskNotifyHandler::NewL( *this, iMemoryCard ); + } + +// ----------------------------------------------------------------------------- +// CSyncmlmmcwatcher::StartL() +// Logs a request to notify the disk events +// ----------------------------------------------------------------------------- +void CSyncmlmmcwatcher::StartL() + { + FLOG(_L("CSyncmlmmcwatcher::Start- begin")); + + if(iDiskNotifyHandler) + { + iDiskNotifyHandler->NotifyDisk(); + } + } + +// ---------------------------------------------------------------------------------------- +// CSyncmlmmcwatcher::~CSyncmlmmcwatcher() +// Destructor +// ---------------------------------------------------------------------------------------- +CSyncmlmmcwatcher::~CSyncmlmmcwatcher() + { + FLOG(_L("CSyncmlmmcwatcher::~CSyncmlmmcwatcher()")); + if(iDiskNotifyHandler) + { + iDiskNotifyHandler->CancelNotifyDisk(); + delete iDiskNotifyHandler; + iDiskNotifyHandler = NULL; + } + + if(iMemoryCard.Handle()) + { + iMemoryCard.Close(); + } + } + +// --------------------------------------------------------------------------- +// CSyncmlmmcwatcher::HandleNotifyDisk +// Callback method to notify disk events +// --------------------------------------------------------------------------- +// +void CSyncmlmmcwatcher::HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ) + { + FTRACE( FPrint( + _L( "CSysApMMCObserver::HandleNotifyDisk: error: %d, type: %d, drive: %d," ), + aError, aEvent.iType, aEvent.iDrive ) ); + + if ( aError != KErrNone ) + { + return; + } + else + { + if(immcobserver) + { + FLOG(_L("mmc removal check")); + TInt diskinserted = EFalse; + RProperty::Get(KPSUidUikon, KUikMMCInserted,diskinserted); + if(diskinserted)//EDiskStatusChanged called for insert & hard removal + { + FLOG(_L("disk inserted")); + } + else + { + FLOG(_L("disk removed")); + immcobserver->MmcRemoved(); + } + FLOG(_L("mmcremoved call completed")); + } + } + + } + +// --------------------------------------------------------------------------- +// CSyncmlmmcwatcher::CancelMmcwatch +// Cancels the notification +// --------------------------------------------------------------------------- +// +void CSyncmlmmcwatcher::CancelMmcwatch() + { + if(iDiskNotifyHandler) + { + iDiskNotifyHandler->CancelNotifyDisk(); + } + }