contacts_pub/phonebook_fetch_ui_api/tsrc/bc/MTPbkAddressSelect/src/CAddressSelect.cpp
changeset 0 e686773b3f54
child 21 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_pub/phonebook_fetch_ui_api/tsrc/bc/MTPbkAddressSelect/src/CAddressSelect.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,113 @@
+/*
+* Copyright (c) 2002-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:       
+*           Methods for Email address selection dialog.
+*
+*/
+
+
+
+
+
+
+
+
+// INCLUDE FILES
+
+#include    "CAddressSelect.h"
+#include    <CPbkContactItem.h>
+#include    <avkon.rsg> // R_AVKON_SOFTKEYS_SELECT_CANCEL;
+#include    <avkon.hrh> // AVKON softkey codes
+#include    <AknNoteWrappers.h>
+#include    <StringLoader.h>        // StringLoader
+#include    <CPbkFieldInfo.h>
+#include    <CPbkContactEngine.h>
+#include    "MTPbkAddressSelect.h"
+#include    <PbkAddressSelect.rsg>
+
+// ================= MEMBER FUNCTIONS =======================
+
+CAddressSelect::CAddressSelect()
+    {
+	iIsSame = EFalse;
+    }
+
+CAddressSelect::TParams::TParams
+        (const CPbkContactItem& aContact) :
+    TBaseParams(aContact, aContact.DefaultEmailField())
+    {
+    }
+
+TBool CAddressSelect::ExecuteLD(TParams& aParams, CMTPbkAddressSelect& aAddressSelect)
+    {
+    TBool   ret     = EFalse,
+            isSame  = EFalse;
+    
+	iContact = &aParams.ContactItem();
+	iAddressSelect = &aAddressSelect;
+    ret = CPbkAddressSelect::ExecuteLD(aParams);
+
+    if ( aParams.FocusedField() == aParams.SelectedField() )
+        {
+        isSame = ETrue;
+        aAddressSelect.SetSelectedAndFocusedField(isSame);
+        }
+        
+	// CPbkAddressSelect::ExecuteLD takes care of LD function semantics
+        
+    return ret;
+    }
+
+CAddressSelect::~CAddressSelect()
+	{
+	delete iQueryTitle;
+	}
+
+EXPORT_C TBool CAddressSelect::AddressField(const TPbkContactItemField& aField) const
+    {
+    const CPbkContactItem* contact(&ContactItem());
+
+    TBool isSame = EFalse;
+
+    if ( iContact==contact)
+        {
+        isSame = ETrue;
+        iAddressSelect->SetContactReturnValue(isSame);
+        }
+    
+    // Return true for non-empty email fields
+    return ((aField.FieldInfo().FieldId()) == EPbkFieldIdEmailAddress &&
+            !aField.IsEmptyOrAllSpaces());
+    }
+
+EXPORT_C void CAddressSelect::NoAddressesL()
+    {
+    // if contact is empty and it hasn't got email addresses it's ok if selected
+    // field and focused field are different
+    TBool isSame = ETrue;
+    iAddressSelect->SetSelectedAndFocusedField(isSame);
+    }
+
+EXPORT_C const TDesC& CAddressSelect::QueryTitleL()
+    {
+    iQueryTitle = ContactItem().GetContactTitleL();
+    return *iQueryTitle;
+    }
+
+EXPORT_C TInt CAddressSelect::QuerySoftkeysResource() const
+    {
+    return R_CBA;
+    }
+
+//  End of File