--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/View/src/CPbkContactEditorFieldBase.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,148 @@
+/*
+* 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:
+* Methods for Phonebook Contact editor base class.
+*
+*/
+
+
+// INCLUDE FILES
+#include "CPbkContactEditorFieldBase.h"
+
+#include <eikcapc.h>
+#include <eikedwin.h>
+#include <eikimage.h>
+
+#include <AknsUtils.h>
+
+#include "TPbkContactItemField.h"
+#include "CPbkFieldInfo.h"
+#include "PbkIconInfo.h"
+#include "MPbkContactEditorUiBuilder.h"
+#include "CPbkContactItem.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+CPbkContactEditorFieldBase::CPbkContactEditorFieldBase
+ (const TPbkContactItemField& aField,
+ CPbkIconInfoContainer& aIconInfoContainer,
+ MPbkContactEditorUiBuilder& aUiBuilder) :
+ iContactItemField(aField),
+ iIconInfoContainer(aIconInfoContainer),
+ iUiBuilder(aUiBuilder),
+ iContactDataHasChanged(EFalse)
+ {
+ }
+
+void CPbkContactEditorFieldBase::BaseConstructL()
+ {
+ }
+
+CPbkContactEditorFieldBase::~CPbkContactEditorFieldBase()
+ {
+ }
+
+TInt CPbkContactEditorFieldBase::ControlId() const
+ {
+ return iContactItemField.UniqueFieldIdentity();
+ }
+
+TPbkFieldId CPbkContactEditorFieldBase::FieldId() const
+ {
+ return iContactItemField.FieldInfo().FieldId();
+ }
+
+TPtrC CPbkContactEditorFieldBase::FieldLabel() const
+ {
+ return iContactItemField.Label();
+ }
+
+void CPbkContactEditorFieldBase::SetFieldLabelL
+ (HBufC* aLabel)
+ {
+ iUiBuilder.SetCurrentLineCaptionL(*aLabel);
+ iContactItemField.ItemField().SetLabel(aLabel);
+ }
+
+const TPbkContactItemField& CPbkContactEditorFieldBase::ContactItemField() const
+ {
+ return iContactItemField;
+ }
+
+TBool CPbkContactEditorFieldBase::FieldDataChanged() const
+ {
+ return iContactDataHasChanged;
+ }
+
+HBufC* CPbkContactEditorFieldBase::ControlTextL() const
+ {
+ HBufC* textBuf = NULL;
+ CCoeControl* ctrl = iUiBuilder.Control(ControlId());
+ if (ctrl && iContactItemField.StorageType() == KStorageTypeText)
+ {
+ textBuf = static_cast<CEikEdwin*>(ctrl)->GetTextInHBufL();
+ }
+ return textBuf;
+ }
+
+TBool CPbkContactEditorFieldBase::ConsumesKeyEvent(
+ const TKeyEvent& /*aKeyEvent*/,
+ TEventCode /*aType*/)
+ {
+ return EFalse;
+ }
+
+TPbkContactItemField& CPbkContactEditorFieldBase::Field()
+ {
+ return iContactItemField;
+ }
+
+void CPbkContactEditorFieldBase::LoadBitmapToFieldL
+ (MPbkContactEditorUiBuilder& aUiBuilder)
+ {
+ const TPbkIconInfo* iconInfo = iIconInfoContainer.Find(iContactItemField.IconId());
+
+ if (iconInfo)
+ {
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+
+ CEikImage* image = new (ELeave) CEikImage;
+ CleanupStack::PushL(image);
+
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ AknsUtils::CreateIconL(skin, iconInfo->SkinId(),
+ bitmap, mask, iconInfo->MbmFileName(),
+ iconInfo->IconId(), iconInfo->MaskId());
+ image->SetPictureOwnedExternally(EFalse);
+ image->SetPicture(bitmap, mask);
+ image->CopyControlContextFrom(aUiBuilder.LineControl(ControlId()));
+ image->SetContainerWindowL(*aUiBuilder.LineControl(ControlId()));
+ image->SetNonFocusing();
+ image->SetBrushStyle(CGraphicsContext::ENullBrush);
+
+ delete aUiBuilder.LineControl(ControlId())->iBitmap;
+ aUiBuilder.LineControl(ControlId())->iBitmap = image;
+ CleanupStack::Pop(image);
+
+ // TODO: There should be a simpler way to do this
+ TRect rect = aUiBuilder.LineControl(ControlId())->Rect();
+ rect.Resize(-1, -1);
+ aUiBuilder.LineControl(ControlId())->SetRect(rect);
+ rect.Resize(1, 1);
+ aUiBuilder.LineControl(ControlId())->SetRect(rect);
+ }
+ }
+
+// End of File