diff -r 8ee96d21d9bf -r 7e0eff37aedb gssettingsuis/Gs/GSFramework/inc/GSShimmedView.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gssettingsuis/Gs/GSFramework/inc/GSShimmedView.h Wed Sep 01 12:20:44 2010 +0100 @@ -0,0 +1,126 @@ +/* +* Copyright (c) 2002-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: Shim view +* +*/ + + +#ifndef GSSHIMMEDVIEW_H +#define GSSHIMMEDVIEW_H + +// INCLUDES +#include +#include +#include + +// CONSTANTS + +// FORWARD DECLARATIONS +class CGSPluginAndViewIdCache; + +// CLASS DECLARATION + +/** +* CGSShimmedView is used by CGSPluginAndViewIdCache to provide view-framework +* with all existing plugin views immediately in GS start-up. Shimmed views +* are used to cache actual views: in case GS view is opened outside GS +* application while GS is not running in the background, view-framework needs +* the requested view to exist immediately after GS start-up. This is a problem +* as GS loads plugins asynchronously after GS start-up. Therefore we provide +* view-framework with shimmed views in the GS start-up instead of the actual +* views. Afterwards, when each plugin is loaded, we replace the shimmed view +* representing the plugin with a real view provided by the loaded plugin. +* (Each plugin is normally also a view). +* +* Shimmed views are only used and needed for enabling external GS plugin +* view launch. +* +* See CGSPluginAndViewIdCache for details. +* +* @since Series60_3.1 +* +*/ +class CGSShimmedView : public CActive, public MCoeView + { + public: // Constructor and destructor + + /** + * + */ + static CGSShimmedView* NewLC( TUid aViewId, CGSPluginAndViewIdCache& aCache, CCoeAppUi& aAppUi ); + + /** + * Destructor. + */ + ~CGSShimmedView(); + + private: + + /** + * C++ constructor + */ + CGSShimmedView( TUid aViewId, CGSPluginAndViewIdCache& aCache, CCoeAppUi& aAppUi ); + + /** + * Second phase constructor + */ + void ConstructL(); + + public: // API + + /** + * + */ + void RegisterViewL(); + + /** + * + */ + void DeregisterView(); + + public: // From MCoeView + TVwsViewId ViewId() const; + void ViewActivatedL( const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage ); + void ViewDeactivated(); + + private: // State + enum TState + { + EStateInactive = 0, + EStateActivatingPlaceholderView, + EStateLoadingPlugin, + EStateDeletingSelf + }; + + void SetState( TState aState, TBool aCompleteRequest = ETrue ); + void StateActivatePlaceholderViewL(); + void StateLoadPluginL(); + + private: // From CActive + void RunL(); + void DoCancel(); + + private: // Data + TUid iViewId; + CGSPluginAndViewIdCache& iCache; + CCoeAppUi& iAppUi; + TState iState; + TBool iIsRegistered; + HBufC8* iCustomMessage; + TUid iCustomMessageId; + }; + + +#endif // GSSHIMMEDVIEW_H +// End of File