diff -r 6385c4c93049 -r 8e6fa1719340 browserui/browser/BrowserAppSrc/BrowserDialogsProviderBlocker.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserui/browser/BrowserAppSrc/BrowserDialogsProviderBlocker.cpp Wed Sep 01 12:31:04 2010 +0100 @@ -0,0 +1,109 @@ +/* +* 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 the License "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: Blocks dialog requests to the BrowserDialogsProvider if a +* window is in the background. When the window comes to the +* foreground, it will be displayed. +* +* +*/ + +#include "BrowserDialogsProviderBlocker.h" +#include "BrowserWindowFocusNotifier.h" + +// ---------------------------------------------------------------------------- +// static CBrowserDialogsProviderBlocker* +// CBrowserDialogsProviderBlocker::NewLC +// ---------------------------------------------------------------------------- +// +CBrowserDialogsProviderBlocker* CBrowserDialogsProviderBlocker::NewLC( + CBrowserWindowFocusNotifier& aWinFocusNotifier ) + { + CBrowserDialogsProviderBlocker* self = new (ELeave) + CBrowserDialogsProviderBlocker( aWinFocusNotifier ); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ---------------------------------------------------------------------------- +// CBrowserDialogsProviderBlocker::CBrowserDialogsProviderBlocker() +// ---------------------------------------------------------------------------- +// +CBrowserDialogsProviderBlocker::CBrowserDialogsProviderBlocker( + CBrowserWindowFocusNotifier& aWinFocusNotifier ) + + : CActive( CActive::EPriorityStandard ), + iWinFocusNotifier( aWinFocusNotifier ) + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------------------------- +// CBrowserDialogsProviderBlocker::~CBrowserDialogsProviderBlocker() +// Destroy the object and release all memory objects +// --------------------------------------------------------------------------- +// +CBrowserDialogsProviderBlocker::~CBrowserDialogsProviderBlocker() + { + Cancel(); + } + +// --------------------------------------------------------------------------- +// void CBrowserDialogsProviderBlocker::ConstructL() +// Two-pase constructor +// --------------------------------------------------------------------------- +// +void CBrowserDialogsProviderBlocker::ConstructL() + { + } + +// --------------------------------------------------------------------------- +// void CBrowserDialogsProviderBlocker::Start() +// Complete an asynchronous request. +// --------------------------------------------------------------------------- +// +void CBrowserDialogsProviderBlocker::Start() + { + // Register the AO status + iStatus = KRequestPending; + iWinFocusNotifier.Add( &iStatus ); + SetActive(); + + // Asynch wait start + iWait.Start(); + } + +// --------------------------------------------------------------------------- +// void CBrowserDialogsProviderBlocker::DoCancel() +// Cancel any outstanding requests. +// --------------------------------------------------------------------------- +// +void CBrowserDialogsProviderBlocker::DoCancel() + { + // The AO can continue + iWait.AsyncStop(); + } + +// --------------------------------------------------------------------------- +// void CBrowserDialogsProviderBlocker::RunL() +// Handles object`s request completion event. +// --------------------------------------------------------------------------- +// +void CBrowserDialogsProviderBlocker::RunL() + { + // The AO can continue + iWait.AsyncStop(); + } + +// End of file