diff -r 8173571d354e -r 1fc85118c3ae landmarksui/uicontrols/src/CLmkUiUtils.cpp --- a/landmarksui/uicontrols/src/CLmkUiUtils.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,426 +0,0 @@ -/* -* Copyright (c) 2002 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: LandmarksUi Content File - -* -*/ - - -// INCLUDE FILES - -// Added for testing -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "CLmkUiUtils.h" -#include "MLmkEditorUiBuilder.h" -#include "MLmkFieldData.h" -#include "CLmkFieldData.h" -#include "CLmkFields.h" -#include "LmkConsts.h" -#include "landmarks.hrh" - -// CONSTANTS -/// Unnamed namespace for local definitions -namespace { - const TInt KPosUrlColon (3); - - _LIT( KPanicMsg, "CLmkUiUtils" ); - - void Panic( TPanicCode aReason ) - { - User::Panic( KPanicMsg, aReason ); - } - } // namespace - -//============================ MEMBER FUNCTIONS =============================== -//---------------------------------------------------------------------------- -// CLmkUiUtils::NewL -// ---------------------------------------------------------------------------- -// -CLmkUiUtils* CLmkUiUtils::NewL() - { - CLmkUiUtils* self = new( ELeave ) CLmkUiUtils(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::CLmkUiUtils -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CLmkUiUtils::CLmkUiUtils() - { - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::ConstructL -// ---------------------------------------------------------------------------- -// -void CLmkUiUtils::ConstructL() - { - iNaviPane = static_cast( - StatusPane()->ControlL( TUid::Uid(EEikStatusPaneUidNavi) ) ); - - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::~CLmkUiUtils() -// ----------------------------------------------------------------------------- -// -CLmkUiUtils::~CLmkUiUtils() - { - CEikonEnv* env = CEikonEnv::Static(); - env->DeleteResourceFile( iResourceOffset ); - - if ( iNaviLabel ) - { - if (iNaviPane) - { - iNaviPane->Pop( iNaviLabel ); - } - delete iNaviLabel; - iNaviLabel = NULL; - } - - delete iOldImage; - delete iStoredTitlePaneText; - - //If RestoreOldNaviPaneL is not called, it - //must do atleast now - if ( iStoredDecorator ) - { - TRAPD( error, RestoreOldNaviPaneL() ); - if ( error != KErrNone ) - { - env->HandleError( error ); - } - } - delete iStoredDecorator; - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::StoreTitlePaneL -// ---------------------------------------------------------------------------- -// -void CLmkUiUtils::StoreTitlePaneL() - { - CEikStatusPane* statusPane = StatusPane(); - if ( statusPane && statusPane->PaneCapabilities( - TUid::Uid(EEikStatusPaneUidTitle) ).IsPresent() ) - { - iTitlePane = static_cast( statusPane-> - ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - - if ( iTitlePane->Text() ) - { - iStoredTitlePaneText = iTitlePane->Text()->AllocL(); - } - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::ChangeTitlePaneL -// ---------------------------------------------------------------------------- -// -EXPORT_C void CLmkUiUtils::ChangeTitlePaneL( HBufC* aTitle ) - { - CEikStatusPane* statusPane = StatusPane(); - if ( statusPane && statusPane->PaneCapabilities( - TUid::Uid(EEikStatusPaneUidTitle) ).IsPresent() ) - { - CAknTitlePane* titlePane = static_cast( statusPane-> - ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - titlePane->SetText( aTitle ); // Takes ownership of aTitle - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::ChangeTitlePaneL -// ---------------------------------------------------------------------------- -// -EXPORT_C void CLmkUiUtils::ChangeTitlePaneL( TInt aResourceText ) - { - if ( aResourceText != KZeroResourceId ) - { - HBufC* buf = StringLoader::LoadLC( aResourceText ); - ChangeTitlePaneL( buf ); - CleanupStack::Pop(); // buf, ownership transferred - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::GetFileWithCorrectDriveL -// ---------------------------------------------------------------------------- -// -EXPORT_C void CLmkUiUtils::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 - } - -// ---------------------------------------------------- -// CLmkUiUtils::AvkonIconFileL -// ---------------------------------------------------- -// -TFileName* CLmkUiUtils::AvkonIconFileLC() - { - TFileName* iconFile = new(ELeave) TFileName(AknIconUtils::AvkonIconFileName()); - CleanupStack::PushL(iconFile); - //return AknIconUtils::AvkonIconFileName(); //fix - return iconFile; - } - -// ---------------------------------------------------- -// CLmkUiUtils::LmkUiIconFileL -// ---------------------------------------------------- -// -TFileName* CLmkUiUtils::LmkUiIconFileLC() - { - TFileName* file = new(ELeave) TFileName( KLmkSystemMbmPath ); - CleanupStack::PushL(file); - file->Append( KLmkUiIconFileName ); //always safe - GetFileWithCorrectDriveL( *file ); - return file; - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::RestoreOldTitlePane -// ---------------------------------------------------------------------------- -// -void CLmkUiUtils::RestoreOldTitlePane() - { - if ( iTitlePane && iStoredTitlePaneText ) - { - // iTitlePane takes ownership of iStoredTitlePaneText - iTitlePane->SetText( iStoredTitlePaneText ); - iStoredTitlePaneText = NULL; - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::ReadLmkUiResourceFileL -// ---------------------------------------------------------------------------- -// -void CLmkUiUtils::ReadLmkUiResourceFileL() - { - CEikonEnv* env = CEikonEnv::Static(); - TFileName* file = new( ELeave ) TFileName; - CleanupStack::PushL( file ); - - file->Append( KLmkTmp_RESOURCE_FILES_DIR ); // always safe - file->Append( KLmkUiRscFileName ); // always safe - GetFileWithCorrectDriveL( *file ) ; - BaflUtils::NearestLanguageFile( env->FsSession(), *file ); - iResourceOffset = env->AddResourceFileL( *file ); - - CleanupStack::PopAndDestroy( file ); - } - -// ---------------------------------------------------- -// CLmkUiUtils::CreateDefaultNaviPaneL -// ---------------------------------------------------- -// -void CLmkUiUtils::CreateDefaultNaviPaneL() - { - iNaviPane->PushDefaultL(); - } - -// ---------------------------------------------------- -// CLmkUiUtils::CreateNaviLabelL -// ---------------------------------------------------- -// -void CLmkUiUtils::CreateNaviLabelL( const TDesC& aLabel ) - { - __ASSERT_ALWAYS( iNaviPane, Panic( KLmkPanicNullPointer ) ); - if ( iNaviLabel ) - { - iNaviPane->Pop( iNaviLabel ); - delete iNaviLabel; - iNaviLabel = NULL; - } - - iNaviLabel = iNaviPane->CreateNavigationLabelL( aLabel ); - iNaviPane->PushL( *iNaviLabel ); // activate navi label in navi pane - } - -// ---------------------------------------------------- -// CLmkUiUtils::StoreNaviPaneL -// ---------------------------------------------------- -// -void CLmkUiUtils::StoreNaviPaneL() - { - iStoredDecorator = iNaviPane->Top(); - } - -// ---------------------------------------------------- -// CLmkUiUtils::RestoreOldNaviPaneL -// ---------------------------------------------------- -// -void CLmkUiUtils::RestoreOldNaviPaneL() - { - if ( iStoredDecorator && iNaviPane ) - { - iNaviPane->PushL( *iStoredDecorator ); - iStoredDecorator = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::SwapNewContextIcon -// ----------------------------------------------------------------------------- -// -void CLmkUiUtils::SwapNewContextIconL( CEikImage* aNewImage ) - { - SetContextPaneL(); - if ( iContextPane ) - { - iOldImage = iContextPane->SwapPicture( aNewImage ); - } - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::SetOldContextIcon -// ----------------------------------------------------------------------------- -// -void CLmkUiUtils::SetOldContextIcon() - { - if ( iContextPane && iOldImage && iOldImage->Bitmap()) - { - iContextPane->SetPicture( iOldImage ); - iOldImage = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::UpdateContextIconL -// ----------------------------------------------------------------------------- -// -void CLmkUiUtils::UpdateContextIconL( CEikImage* aNewImage ) - { - SetContextPaneL(); - if ( iContextPane ) - { - iContextPane->SetPicture( aNewImage ); - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::StatusPane -// ---------------------------------------------------------------------------- -// -CEikStatusPane* CLmkUiUtils::StatusPane() - { - return CEikonEnv::Static()->AppUiFactory()->StatusPane(); - } - -// ----------------------------------------------------------------------------- -// CLmkUiUtils::SetContextPane -// ----------------------------------------------------------------------------- -// -void CLmkUiUtils::SetContextPaneL() - { - iContextPane = static_cast( - StatusPane()->ControlL( TUid::Uid( - EEikStatusPaneUidContext ) ) ); - } - - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::ChangeLmNameLabelIconL() -// ---------------------------------------------------------------------------- -// -EXPORT_C void CLmkUiUtils::ChangeLmNameLabelIconL ( - MLmkEditorUiBuilder& aUiBuilder, - MLmkFieldData& nameField) - { - if ( nameField.FieldType() == EName ) - { - CEikImage* image = new(ELeave) CEikImage(); - CleanupStack::PushL( image ); - //TFileName* defaultIconFile = CLmkUiUtils::LmkUiIconFileLC(); - // No need to add iconFile to cleanupstack since it is a member variable from CLmkFieldData class - HBufC* iconFile = nameField.IconPath(); - TInt err = KErrNotFound; - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - - if (iconFile) // landmark has a defined icon - { - if ( nameField.IconId() != KErrNotFound ) - { - TRAP(err,AknIconUtils::CreateIconL( bitmap, mask, - *iconFile, nameField.IconId(), - nameField.IconId()+1 );); - } - - image->SetPictureOwnedExternally(EFalse); - image->SetPicture(bitmap, mask); - image->CopyControlContextFrom(aUiBuilder.LineControl( nameField.UniqueFieldIdentity() )); - image->SetContainerWindowL(*aUiBuilder.LineControl( nameField.UniqueFieldIdentity() )); - image->SetNonFocusing(); - image->SetBrushStyle(CGraphicsContext::ENullBrush); - delete aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->iBitmap; - aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->iBitmap = image; - aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->iBitmap = image; - - TRect rect = aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->Rect(); - rect.Resize(-1, -1); - aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->SetRect(rect); - rect.Resize(1, 1); - aUiBuilder.LineControl(nameField.UniqueFieldIdentity())->SetRect(rect); - } - CleanupStack::Pop(image); - } - } - -// ---------------------------------------------------------------------------- -// CLmkUiUtils::FindIfWebAddrFieldIsEmpty() -// ---------------------------------------------------------------------------- -// -TBool CLmkUiUtils::FindIfWebAddrFieldIsEmpty (const TDes& aUrl) - { - TBool result = EFalse; - TInt totalLength = aUrl.Length(); - TInt forSlashPos = aUrl.Find(KProtocol); - if (((forSlashPos + KPosUrlColon) > 0 && - (forSlashPos + KPosUrlColon) >= totalLength )) - { - result = ETrue; - } - return result; - } -// End of File