photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatadialog.cpp
branchRCL_3
changeset 60 5b3385a43d68
child 75 01504893d9cb
--- /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
+