meetingui/attendeeview/UiSrc/CAttendeeUiUtils.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingui/attendeeview/UiSrc/CAttendeeUiUtils.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,303 @@
+/*
+* Copyright (c) 2004 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:  Provides methods for Utils class.
+                1.Stores and restores the Navi pane.
+*               2.Reads resource files.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CAttendeeUiUtils.h"
+#include "AttendeeViewConsts.h"
+#include <bautils.h>
+#include <stringloader.h>
+#include <AknAppUi.h>
+#include <akntitle.h>
+#include <data_caging_path_literals.hrh>
+
+// ============================ MEMBER FUNCTIONS ===============================
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::NewL
+// ----------------------------------------------------------------------------
+//
+CAttendeeUiUtils* CAttendeeUiUtils::NewL()
+    {
+    CAttendeeUiUtils* self = new(ELeave)CAttendeeUiUtils;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(self); //self
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CAttendeeUiUtils::CAttendeeUiUtils
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CAttendeeUiUtils::CAttendeeUiUtils() : iPbkResourceFile( *CEikonEnv::Static() )
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::ConstructL()
+    {
+    iEnv = CEikonEnv::Static();
+    iNaviPane = static_cast<CAknNavigationControlContainer*>(
+            StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CAttendeeUiUtils::~CAttendeeUiUtils()
+// -----------------------------------------------------------------------------
+//
+CAttendeeUiUtils::~CAttendeeUiUtils()
+    {
+    if ( iNaviPane && iNaviLabel )
+        {
+        iNaviPane->Pop( iNaviLabel );
+        }
+    delete iNaviLabel;
+    delete iStoredTitlePaneText;  
+
+    //If RestoreOldNaviPaneL is not called, it
+    //must do atleast now
+    TRAPD( error, RestoreOldNaviPaneL() );
+    if ( error != KErrNone )
+        {
+        CEikonEnv::Static()->HandleError( error );
+        }
+                   
+    delete iStoredDecorator;    
+    }
+
+// ----------------------------------------------------
+// CAttendeeUiUtils::CreateNaviLabelL
+// ----------------------------------------------------
+//
+void CAttendeeUiUtils::CreateNaviLabelL( const TDesC& aLabel )
+    {
+    if ( iNaviLabel )
+        {
+        iNaviPane->Pop( iNaviLabel );
+        delete iNaviLabel;
+        iNaviLabel = NULL;
+        }
+
+    iNaviLabel = iNaviPane->CreateNavigationLabelL( aLabel );
+    iNaviPane->PushL( *iNaviLabel ); // activate navi label in navi pane
+    }
+
+// ----------------------------------------------------
+// CAttendeeUiUtils::CreateNaviLabelL
+// ----------------------------------------------------
+//
+void CAttendeeUiUtils::CreateNaviLabelL( const TInt aResourceId )
+    {
+    CEikonEnv* env = CEikonEnv::Static();
+    HBufC* label = StringLoader::LoadLC( aResourceId, env);
+    CreateNaviLabelL( *label );
+    CleanupStack::PopAndDestroy(label); //label
+    }
+
+// ----------------------------------------------------
+// CAttendeeUiUtils::StoreNaviPane
+// ----------------------------------------------------
+//
+void CAttendeeUiUtils::StoreNaviPane()
+    {
+    if ( iNaviPane )
+        {
+        iStoredDecorator = iNaviPane->Top();
+        }
+    }
+
+// ----------------------------------------------------
+// CAttendeeUiUtils::RestoreOldNaviPaneL
+// ----------------------------------------------------
+//
+void CAttendeeUiUtils::RestoreOldNaviPaneL()
+    {
+    if ( iStoredDecorator )
+        {
+        iNaviPane->PushL( *iStoredDecorator );
+        iStoredDecorator = NULL;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::OpenResourceFilesL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::OpenResourceFilesL()
+    {
+    FindResourceFileL();
+
+    BaflUtils::NearestLanguageFile( iEnv->FsSession(), iResourceFileName );
+    iResourceOffset = iEnv->AddResourceFileL( iResourceFileName );
+
+    //Open phonebooks resource file
+    iPbkResourceFile.OpenL();
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::CloseResourceFile
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::CloseResourceFile()
+    {
+    iEnv->DeleteResourceFile( iResourceOffset );
+
+    //Phonebooks resource file
+    iPbkResourceFile.Close();
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::StoreTitlePaneL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::StoreTitlePaneL()
+	{    
+    CEikStatusPane* statusPane = StatusPane();
+    if ( statusPane && statusPane->PaneCapabilities(
+        TUid::Uid(EEikStatusPaneUidTitle) ).IsPresent() )
+        {
+        iTitlePane = static_cast<CAknTitlePane*>( statusPane->
+                            ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );  
+
+        if ( iTitlePane->Text() ) 
+            {
+            iStoredTitlePaneText = iTitlePane->Text()->AllocL();
+            }
+        }
+	}
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::ChangeTitlePaneL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::ChangeTitlePaneL( TInt aResourceText )
+    {
+    if ( aResourceText != 0 )
+        {
+        HBufC* buf = StringLoader::LoadLC( aResourceText );
+        ChangeTitlePaneL( buf );
+        CleanupStack::Pop(buf); // buf, ownership transferred
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::ChangeTitlePaneL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::ChangeTitlePaneL( HBufC* aTitle )
+	{    
+    CEikStatusPane* statusPane = StatusPane();
+    if ( statusPane && statusPane->PaneCapabilities(
+            TUid::Uid( EEikStatusPaneUidTitle ) ).IsPresent() )
+        {
+        CAknTitlePane* titlePane = static_cast<CAknTitlePane*>( statusPane->
+                            ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+        titlePane->SetText( aTitle ); // Takes ownership of aTitle
+        }
+	}
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::RestoreOldTitlePane
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::RestoreOldTitlePane()
+    {
+    if ( iTitlePane && iStoredTitlePaneText )
+        {
+        // iTitlePane takes ownership of iStoredTitlePaneText
+        iTitlePane->SetText( iStoredTitlePaneText );
+        iStoredTitlePaneText = NULL;
+        }
+    }
+
+// ----------------------------------------------------
+// CAttendeeUiUtils::AttendeeViewIconFileL
+// ----------------------------------------------------
+//
+TFileName CAttendeeUiUtils::AttendeeViewIconFileL()
+    {
+    TFileName file( KDC_APP_BITMAP_DIR );
+    file.Append( KAttendeeViewIconFileName ); //always safe    
+    GetFileWithCorrectDriveL( file );
+    return file;
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::FindResourceFileL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::FindResourceFileL()
+    {
+    // Path and file name:
+    TFileName* file = new(ELeave)TFileName;
+    CleanupStack::PushL( file );
+    file->Append( KDC_RESOURCE_FILES_DIR ); // always safe
+    file->Append( KAttendeeViewRscFileName ); // always safe
+
+    // Drive:
+    TFileName* drive = new(ELeave)TFileName;
+    CleanupStack::PushL( drive );
+    Dll::FileName( *drive );
+
+    // Add drive to path & file name:
+    TParse* parse = new(ELeave)TParse;
+    CleanupStack::PushL( parse );
+    User::LeaveIfError( parse->Set( *file, drive, NULL ) );
+    iResourceFileName = parse->FullName();
+
+    CleanupStack::PopAndDestroy( 3 ); // parse, drive, file
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::StatusPane
+// ----------------------------------------------------------------------------
+//
+CEikStatusPane* CAttendeeUiUtils::StatusPane()
+    {
+    return CEikonEnv::Static()->AppUiFactory()->StatusPane();
+    }
+
+// ----------------------------------------------------------------------------
+// CAttendeeUiUtils::GetFileWithCorrectDriveL
+// ----------------------------------------------------------------------------
+//
+void CAttendeeUiUtils::GetFileWithCorrectDriveL( TFileName& aFileName )
+    {
+    TFileName* dllDrive = new(ELeave)TFileName;
+    CleanupStack::PushL( dllDrive );
+    TParse* parse = new(ELeave)TParse;
+    CleanupStack::PushL( parse );
+
+    Dll::FileName( *dllDrive );
+	User::LeaveIfError( parse->Set( *dllDrive, NULL, NULL ) );
+    *dllDrive = parse->Drive(); // contains drive, e.g. "c:"
+    User::LeaveIfError( parse->Set( *dllDrive, &aFileName, NULL ) );
+	aFileName = parse->FullName();
+
+    CleanupStack::PopAndDestroy( 2 ); // parse, dlldrive
+    }
+
+//  End of File