/*
* 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: Base classes for Usb notifier wrapper
*
*/
#include "cusbnotifmanager.h"
#include "cusbnotenotifier.h"
#include "debug.h"
#include "panic.h"
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
// C++ constructor
// ---------------------------------------------------------------------------
//
CUsbNoteNotifier::CUsbNoteNotifier(RNotifier& aNotifier,
CUsbNotifManager& aNotifManager, TUid aCat, TUint aNotifId) :
CUsbNotifier(aNotifManager, aCat, aNotifId), iNotifier(aNotifier)
{
}
// ---------------------------------------------------------------------------
// Second-phase constructor
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::ConstructL()
{
LOG_FUNC
iNotifierActive = new (ELeave) CUsbNoteNotifier::CNotifierActive(
iNotifier, *this);
}
// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CUsbNoteNotifier::~CUsbNoteNotifier()
{
LOG_FUNC
delete iNotifierActive;
}
// ---------------------------------------------------------------------------
// From base class CUsbNotifier
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::ShowL()
{
LOG_FUNC
LOG2( "aCat = 0x%X aNotifId = 0x%X" , iCat, iNotifId);
iNotifierActive->StartL();
}
// ---------------------------------------------------------------------------
// From base class CUsbNotifier
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::Close()
{
}
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
// C++ default constructor
// ---------------------------------------------------------------------------
//
CUsbNoteNotifier::CNotifierActive::CNotifierActive(RNotifier& aNotifier,
CUsbNoteNotifier& aUsbNoteNotifier) :
CUsbNoteNotifier::CNotifierActive::CActive(EPriorityStandard),
iUsbNoteNotifier(aUsbNoteNotifier), iNotifier(aNotifier), iRes(0)
{
CActiveScheduler::Add(this);
}
// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
CUsbNoteNotifier::CNotifierActive::~CNotifierActive()
{
Cancel();
}
// ---------------------------------------------------------------------------
// Start to show the notifier
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::CNotifierActive::StartL()
{
LOG_FUNC
if (IsActive())
{
PANIC( ENotifierIsActiveAlready);
return;
}
iNotifIdPckg() = iUsbNoteNotifier.iNotifId;
iNotifier.StartNotifierAndGetResponse(iStatus, iUsbNoteNotifier.iCat,
iNotifIdPckg, iRes);
SetActive();
}
// ---------------------------------------------------------------------------
// From base class CActive
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::CNotifierActive::RunL()
{
LOG_FUNC
LOG1( "iStatus = %d" , iStatus.Int());
// if iStatus contains some other than KErrNone code
// do not perform any special actions,
// just forward the error code to caller
iNotifier.CancelNotifier(iUsbNoteNotifier.iCat);
// report to owner that show is over
iUsbNoteNotifier.iNotifManager.NotifierShowCompletedL(iUsbNoteNotifier,
iStatus.Int(), iRes());
}
// ---------------------------------------------------------------------------
// From base class CActive
// ---------------------------------------------------------------------------
//
void CUsbNoteNotifier::CNotifierActive::DoCancel()
{
iNotifier.CancelNotifier(iUsbNoteNotifier.iCat);
}
// ---------------------------------------------------------------------------
// From base class CActive
// ---------------------------------------------------------------------------
//
TInt CUsbNoteNotifier::CNotifierActive::RunError(TInt aError)
{
LOG_FUNC
LOG1("aError = %d" , aError);
// try to continue
return KErrNone;
}
// End of file