diff -r 8e5f6eea9c9f -r 5b3385a43d68 photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp Wed Sep 01 12:33:26 2010 +0100 @@ -0,0 +1,285 @@ +/* +* Copyright (c) 2008-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: glximgvwrmetadatadialog.cpp +* +*/ + + +#include "glximgvwrmetadatadialog.h" + +//system includes +#include //for AknUtils +#include +#include // KDC_APP_RESOURCE_DIR +#include +#include + +//User includes +#include +#include +#include +#include +#include +#include +#include "glxmetadatacommandhandler.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxImgVwrMetadataDialog* CGlxImgVwrMetadataDialog::NewL( const TDesC& aUri ) + { + TRACER("CGlxImgVwrMetadataDialog::NewL"); + + CGlxImgVwrMetadataDialog* self = new(ELeave) CGlxImgVwrMetadataDialog(aUri ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog +// ----------------------------------------------------------------------------- +// +CGlxImgVwrMetadataDialog::CGlxImgVwrMetadataDialog(const TDesC& aUri):iUri(aUri) + { + } + +// ----------------------------------------------------------------------------- +// ConstructL +// ----------------------------------------------------------------------------- +// +void CGlxImgVwrMetadataDialog::ConstructL() + { + TRACER("CGlxImgVwrMetadataDialog::ConstructL"); + + // Load dialog's resource file + InitResourceL(); + + // make the toolbar disabled + SetDetailsDlgToolbarVisibility(EFalse); + + iStatusPaneAvailable = EFalse; + // set the title to the dialog, Note that avkon dialogs do not support + // setting the title in the status pane so we need to do it the hard way + // get status pane + CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane(); + + if(statusPane && statusPane->IsVisible()) + { + iStatusPaneAvailable = ETrue; + } + + // do we have status pane + if( statusPane ) + { + GLX_LOG_INFO1("GLX_UMP::CGlxImgVwrMetadataDialog::ConstructL::STATUS PANE = %d", + statusPane->IsVisible()); + // load the title text + HBufC* text = StringLoader::LoadL(R_GLX_METADATA_VIEW_TITLE_DETAILS, iEikonEnv ); + SetTitleL( *text ); + if( text) + { + delete text; + } + iAvkonAppUi->StatusPane()->MakeVisible(ETrue); + } + } + +// ----------------------------------------------------------------------------- +// ~CGlxImgVwrMetadataDialog +// ----------------------------------------------------------------------------- +// +CGlxImgVwrMetadataDialog::~CGlxImgVwrMetadataDialog() + { + TRACER("CGlxImgVwrMetadataDialog::~CGlxImgVwrMetadataDialog"); + + //To Disable the status pane if the dialog is launched from fullscreenview + if (!iStatusPaneAvailable && iAvkonAppUi) + { + iAvkonAppUi->StatusPane()->MakeVisible(EFalse); + } + + TRAP_IGNORE(SetPreviousTitleL()); + delete iPreviousTitle; + + // Restore the Toolbar as it was in the Calling application + SetDetailsDlgToolbarVisibility(ETrue); + + // If details launched from FullScreen View, while moving back, + // all the UI components should be hidden. Hence processing this command here. + if (iAvkonAppUi) + { + TRAP_IGNORE(iAvkonAppUi->ProcessCommandL(EGlxCmdResetView)); + } + + if (iResourceOffset) + { + CCoeEnv::Static()->DeleteResourceFile(iResourceOffset); + } + } + +// --------------------------------------------------------------------------- +// SetDetailsDlgToolbarVisibility() +// --------------------------------------------------------------------------- +void CGlxImgVwrMetadataDialog::SetDetailsDlgToolbarVisibility(TBool aVisible) + { + TRACER("CGlxImgVwrMetadataDialog::SetDetailsDlgToolbarVisibility"); + + HandleToolbarResetting(aVisible); + CAknToolbar* currentPopupToolbar = iAvkonAppUi->CurrentPopupToolbar(); + if(currentPopupToolbar) + { + currentPopupToolbar->SetToolbarVisibility(aVisible); + currentPopupToolbar->MakeVisible( aVisible ); + } + } + +// ----------------------------------------------------------------------------- +// ExecuteLD +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGlxImgVwrMetadataDialog::ExecuteLD() + { + TRACER("CGlxImgVwrMetadataDialog::ExecuteLD"); + return CAknDialog::ExecuteLD( R_IMG_VIEWER_METADATA_DIALOG ); + } + +// ----------------------------------------------------------------------------- +// ProcessCommandL +// ----------------------------------------------------------------------------- +// +void CGlxImgVwrMetadataDialog::ProcessCommandL(TInt /*aCommandId*/) + { + TRACER("CGlxImgVwrMetadataDialog::ProcessCommandL"); + // hide menu bar + iMenuBar->StopDisplayingMenuBar(); + } + +//----------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog::CreateCustomControlL +//----------------------------------------------------------------------------- +SEikControlInfo CGlxImgVwrMetadataDialog::CreateCustomControlL(TInt + aControlType) + { + GLX_LOG_INFO("CGlxImgVwrMetadataDialog::CreateCustomControlL"); + + // create control info, no flags or trailer text set + SEikControlInfo controlInfo; + controlInfo.iControl = NULL; + controlInfo.iTrailerTextId = 0; + controlInfo.iFlags = 0; + if (aControlType == EMetaDataDialogListBox) + { + iContainer = CGlxImgVwrMetadataContainer::NewL( + iAvkonAppUi->ClientRect(), iUri); + controlInfo.iControl = iContainer; // giving ownership + } + return controlInfo; // returns ownership of ItemList + } + +// ----------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog::InitResourceL +// ----------------------------------------------------------------------------- +// +void CGlxImgVwrMetadataDialog::InitResourceL() + { + TRACER("CGlxImgVwrMetadataDialog::InitResourceL"); + + _LIT(KGlxMetadataDialogResource,"glxmetadatadialog.rsc"); + //add resource file + TParse parse; + parse.Set(KGlxMetadataDialogResource, &KDC_APP_RESOURCE_DIR, NULL); + TFileName resourceFile; + resourceFile.Append(parse.FullName()); + CGlxResourceUtilities::GetResourceFilenameL(resourceFile); + iResourceOffset = CCoeEnv::Static()->AddResourceFileL(resourceFile); + } + +// --------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog::SetTitleL() +// --------------------------------------------------------------------------- +void CGlxImgVwrMetadataDialog::SetTitleL(const TDesC& aTitleText) + { + TRACER("CGlxImgVwrMetadataDialog::SetTitleL"); + CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane(); + CleanupStack::PushL(statusPane); + // get pointer to the default title pane control + CAknTitlePane* titlePane = ( CAknTitlePane* )statusPane->ControlL( + TUid::Uid( EEikStatusPaneUidTitle )); + CleanupStack::PushL(titlePane); + // set the title if we got the title pane control + if( titlePane ) + { + GLX_LOG_INFO("GLX_UMP::CGlxImgVwrMetadataDialog::ConstructL::INSIDE titlePane"); + iPreviousTitle = titlePane->Text()->AllocL(); + // Set the required Title + titlePane->SetTextL( aTitleText ); + } + CleanupStack::Pop(titlePane); + CleanupStack::Pop(statusPane); + } + +// --------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog::SetPreviousTitleL +// --------------------------------------------------------------------------- +void CGlxImgVwrMetadataDialog::SetPreviousTitleL() + { + TRACER("CGlxImgVwrMetadataDialog::SetPreviousTitleL"); + CEikStatusPane* prevStatusPane = iEikonEnv->AppUiFactory()->StatusPane(); + CleanupStack::PushL(prevStatusPane); + CAknTitlePane* prevTitlePane = ( CAknTitlePane* )prevStatusPane->ControlL( + TUid::Uid( EEikStatusPaneUidTitle )); + CleanupStack::PushL(prevTitlePane); + if( prevTitlePane ) + { + // Restore the Title back of the Calling Application + prevTitlePane->SetTextL( *iPreviousTitle ); + } + CleanupStack::Pop(prevTitlePane); + CleanupStack::Pop(prevStatusPane); + } + +// ----------------------------------------------------------------------------- +// CGlxImgVwrMetadataDialog::HandleToolbarResetting +// ----------------------------------------------------------------------------- +// +void CGlxImgVwrMetadataDialog::HandleToolbarResetting(TBool aVisible) + { + TRACER("CGlxImgVwrMetadataDialog::HandleToolbarResetting"); + + CAknToolbar* popupToolbar = iAvkonAppUi->PopupToolbar(); + if(popupToolbar) + { + popupToolbar->SetToolbarVisibility( !aVisible ); + popupToolbar->MakeVisible( !aVisible ); + if(!aVisible) + { + popupToolbar->DrawNow(); + } + } + CAknToolbar* toolbar = iAvkonAppUi->CurrentFixedToolbar(); + if(toolbar) + { + toolbar->HideItemsAndDrawOnlyBackground(!aVisible); + toolbar->SetToolbarVisibility(aVisible); + toolbar->MakeVisible( aVisible ); + } + } + +// End of File +