--- /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 <AknUtils.h> //for AknUtils
+#include <akntitle.h>
+#include <data_caging_path_literals.hrh>// KDC_APP_RESOURCE_DIR
+#include <StringLoader.h>
+#include <akntoolbar.h>
+
+//User includes
+#include <glxmetadatadialog.rsg>
+#include <glxresourceutilities.h>
+#include <glxlog.h>
+#include <glxtracer.h>
+#include <glxcommandhandlers.hrh>
+#include <glxdetailsboundcommand.hrh>
+#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
+