diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSApplication/Src/GSMainView.cpp --- a/gssettingsuis/Gs/GSApplication/Src/GSMainView.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,449 +0,0 @@ -/* -* Copyright (c) 2005 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: Main View. -* -*/ - - -// INCLUDE FILES -#include -#include "GSMainContainer.h" -#include "GsLogger.h" -#include "gsplugininterface.h" -#include "GSDocument.h" -#include "GSUi.h" -#include -#include - -#include -#include -#include -#include -#include // Localization -#include -#include -#include -#include - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CGSMainView::CGSMainView -// C++ constructor. -// -// --------------------------------------------------------------------------- -// -CGSMainView::CGSMainView() - : iResourceLoader( *iCoeEnv ) - { - } - - -// --------------------------------------------------------------------------- -// CGSMainView::NewL() -// Symbian OS two-phased constructor. -// -// --------------------------------------------------------------------------- -// -CGSMainView* CGSMainView::NewL() - { - CGSMainView* self = NewLC(); - CleanupStack::Pop( self ); - return self; - } - - -// --------------------------------------------------------------------------- -// CGSMainView::NewLC() -// Symbian OS two-phased constructor. -// -// --------------------------------------------------------------------------- -// -CGSMainView* CGSMainView::NewLC() - { - CGSMainView* self = new( ELeave ) CGSMainView(); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// --------------------------------------------------------------------------- -// CGSMainView::ConstructL(const TRect& aRect) -// Symbian OS default constuctor. -// -// --------------------------------------------------------------------------- -// -void CGSMainView::ConstructL() - { - __GSLOGSTRING( "[CGSMainView] ConstructL()" ); - iAppUi = AppUi(); - - OpenLocalizedResourceFileL( KGSMainViewResourceFileName ); - BaseConstructL( R_GS_MAIN_VIEW ); - - iPluginArray = new CArrayPtrFlat( 10 ); - - iPluginLoader = CGSPluginLoader::NewL( iAppUi ); - iPluginLoader->SetObserver( this ); - iPluginLoader->LoadAsyncL( KGSPluginInterfaceUid, KGSMainViewUid, - iPluginArray ); - iPosition.Reset(); - } - - -// --------------------------------------------------------------------------- -// CGSMainView::~CGSMainView() -// Destructor -// -// --------------------------------------------------------------------------- -// -CGSMainView::~CGSMainView() - { - __GSLOGSTRING( "[CGSMainView] ~CGSMainView" ); - if ( iPluginLoader ) - { - delete iPluginLoader; - } - - if ( iPluginArray ) - { - // Since the plugins are actually avkon views, avkon is responsible - // for owning the plugins. This means we do not reset and destroy - // the contents of the array in which the plugins reside. We have to - // leave it up to avkon to tidy up. - delete iPluginArray; - } - - iResourceLoader.Close(); - - if( iContainer && iAppUi ) - { - iAppUi->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - } - } - - -// --------------------------------------------------------------------------- -// TUid CGSMainView::OpenLocalizedResourceFileL() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::OpenLocalizedResourceFileL( const TDesC& aResourceFileName ) - { - RFs &fsSession = CCoeEnv::Static()->FsSession(); - - // Find the resource file - TParse parse; - parse.Set( aResourceFileName, &KDC_APP_RESOURCE_DIR, NULL ); - TFileName fileName( parse.FullName() ); - - // Get language of resource file - BaflUtils::NearestLanguageFile( fsSession, fileName ); - - // Open resource file - iResourceLoader.OpenL( fileName ); - } - - -// --------------------------------------------------------------------------- -// TUid CGSMainView::Id() -// -// -// --------------------------------------------------------------------------- -// -TUid CGSMainView::Id() const - { - return KGSMainViewUid; - } - - -// --------------------------------------------------------------------------- -// CGSMainView::DoActivateL() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - __GSLOGSTRING( "[CGSMainView] DoActivateL()" ); - - iPluginLoader->RequestPriority( CActive::EPriorityHigh ); - - if( iContainer ) - { - iAppUi->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - iContainer = NULL; - } - NewContainerL(); - - // Set the empty text of list box - _LIT( KEmptyText, "" ); - TBuf<1> empty( KEmptyText ); - iContainer->SetListBoxEmptyTextL( empty ); - - // Do this to update listbox from already existing iPluginArray. - iContainer->UpdateListBoxL(); - if ( iPosition.iCurrentItemIndex != -1 ) - { - if ( iIsLandscapeOrientation == Layout_Meta_Data::IsLandscapeOrientation() ) - { - iContainer->RestoreListBoxPositionL( iPosition, EFalse ); - } - else - { - iContainer->RestoreListBoxPositionL( iPosition, ETrue ); - } - } - iAppUi->AddToViewStackL( *this, iContainer ); - // Navigating to main view will reset all child plugin selected indexes: - for( TInt i = 0; i < iPluginArray->Count(); i++ ) - { - CGSPluginInterface* plugin = iPluginArray->operator[]( i ); - plugin->ResetSelectedItemIndex(); - } - GfxTransEffect::EndFullScreen(); - } - - -// --------------------------------------------------------------------------- -// CGSMainView::DoDeactivate() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::DoDeactivate() - { - __GSLOGSTRING( "[CGSMainView] DoDeactivate()" ); - - iPluginLoader->RequestPriority( CActive::EPriorityLow ); - - if ( iContainer ) - { - - iPosition.Reset(); - TRAPD( err, iContainer->StoreListBoxPositionL( iPosition ) ); - iIsLandscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); - iAppUi->RemoveFromViewStack(*this, iContainer); - delete iContainer; - iContainer = NULL; - } - } - - -// --------------------------------------------------------------------------- -// CGSMainView::NewContainerL() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::NewContainerL() - { - iContainer = new( ELeave ) CGSMainContainer; - iContainer->SetMopParent( this ); - - TRAPD( - error, - iContainer->ConstructL( ClientRect() , AppUi(), iPluginArray ) ); - - if ( error ) - { - delete iContainer; - iContainer = NULL; - User::Leave( error ); - } - } - - -// --------------------------------------------------------------------------- -// TUid CGSMainView::HandleCommandL() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::HandleCommandL( TInt aCommand ) - { - __GSLOGSTRING1( "[CGSMainView] HandleCommandL(%d)", aCommand ); - - switch ( aCommand ) - { - case EGSCmdAppOpen: - case EAknSoftkeyOpen: - if( iContainer ) - { - CGSPluginInterface* plugin = iContainer->SelectedPlugin(); - if ( plugin ) - { - switch (plugin->ItemType()) - { - // In these cases the plugin is a view: - case EGSItemTypeSingleLarge: - case EGSItemTypeSetting: - case EGSItemTypeSettingIcon: - iAppUi->ActivateLocalViewL(plugin->Id()); - break; - // In these cases the plugin is a dialog: - case EGSItemTypeSettingDialog: - case EGSItemTypeSingleLargeDialog: - plugin->HandleSelection(EGSSelectionByMenu); - break; - } - } - } - break; - case EAknCmdHelp: - { - if( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) - { - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), iAppUi->AppHelpContextL() ); - } - break; - } - default: - iAppUi->HandleCommandL( aCommand ); - break; - } - } - - -// --------------------------------------------------------------------------- -// TUid CGSMainView::HandlePluginLoaded() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::HandlePluginLoaded( KGSPluginLoaderStatus aStatus ) - { - __GSLOGSTRING1( "[CGSMainView::HandlePluginLoaded] aStatus:%d", aStatus ); - - switch( aStatus ) - { - case MGSPluginLoadObserver::EGSSuccess: - // Should not update each time when plugin is loaded, only when - // finished loading spesific view plugins? - break; - case MGSPluginLoadObserver::EGSFinished: - if( iContainer ) - { - TRAPD( err, - iContainer->UpdateListBoxL(); ) - if( err != KErrNone ) - { - __GSLOGSTRING1( - "[CGSMainView] Error updating listbox: %d", - err ); - } - } - break; - default: - break; - } - - } - - -// --------------------------------------------------------------------------- -// CGSMainView::TransferDynamicPluginL() -// -// -// --------------------------------------------------------------------------- -// -void CGSMainView::TransferDynamicPluginL( CGSPluginInterface* aPlugin ) - { - __GSLOGSTRING1( "[CGSMainView] CGSMainView::TransferDynamicPluginL() - plugin id: 0x%x added to appUi.", aPlugin->Id() ); - - CleanupStack::PushL( aPlugin ); - iAppUi->AddViewL( aPlugin ); - CleanupStack::Pop( aPlugin ); - - // Add to the overall plugin array for this parent plugin - iPluginArray->AppendL( aPlugin ); - - // Resort the plugins so that they are in order - iPluginLoader->SortPluginsL( iPluginArray ); - - // Update the listbox with the new information - HandlePluginLoaded( MGSPluginLoadObserver::EGSSuccess ); - } - - -// ------------------------------------------------- -------------------------- -// TUid CGSMainView::TabbedViews() -// -// -// --------------------------------------------------------------------------- -// -CArrayPtrFlat* CGSMainView::TabbedViews() - { - return iPluginArray; - } - - -// ----------------------------------------------------------------------------- -// CGSMainView::TabChangedL() -// -// -// ----------------------------------------------------------------------------- -// -void CGSMainView::TabChangedL( TUid selectedTabUid ) - { - // Update selected item because changing tab in main view's children - // affects also main view's selected item: - iSelectedPluginUid = selectedTabUid; - } - - -// ----------------------------------------------------------------------------- -// CGSMainView::UpdateView() -// -// -// ----------------------------------------------------------------------------- -// -void CGSMainView::UpdateView() - { - TRAP_IGNORE( iContainer->UpdateListBoxL() ); - } - - -// ----------------------------------------------------------------------------- -// CGSMainView::DynInitMenuPaneL() -// -// dynamically handle help item if not supported -// ----------------------------------------------------------------------------- -// -void CGSMainView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - if( aResourceId == R_GS_MENU_ITEM_HELP ) - { - User::LeaveIfNull( aMenuPane ); - - if ( FeatureManager::FeatureSupported( KFeatureIdHelp )) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse ); - } - else - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - } - } - -//End of File