phonebookui/Phonebook/View/src/CPbkContactViewListFixedIconModel.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/View/src/CPbkContactViewListFixedIconModel.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,122 @@
+/*
+* 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 view listbox model.
+*
+*/
+
+
+// INCLUDE FILES
+#include "CPbkContactViewListFixedIconModel.h"  // This class
+#include <CPbkIconArray.h>
+
+// PbkEng.dll include files
+#include <CPbkContactEngine.h>
+#include <TPbkContactEntry.h>
+#include <PbkEngUtils.h>
+#include <MPbkContactNameFormat.h>
+#include <CPbkViewContactNameFormatter.h>
+
+#include <PbkDebug.h>
+
+
+/// Unnamed namespace for local definitions
+namespace {
+
+// LOCAL CONSTANTS AND MACROS
+
+#ifdef _DEBUG
+enum TPanicCode
+    {
+    EPanicPreCond_NewL = 1
+    };
+#endif
+
+
+// ==================== LOCAL FUNCTIONS ====================
+
+#ifdef _DEBUG
+void Panic(TPanicCode aReason)
+    {
+    _LIT(KPanicText, "CPbkContactViewListFixedIconModel");
+    User::Panic(KPanicText, aReason);
+    }
+#endif
+
+}  // namespace
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+inline CPbkContactViewListFixedIconModel::CPbkContactViewListFixedIconModel
+    (PbkContactViewListModelFactory::TParams& aParams) : 
+    CPbkContactViewListModelCommon(aParams),
+    iNameFormatter(aParams.iEngine->ContactNameFormat())
+    {
+    // CBase::operator new(TLeave) resets other member data
+    }
+
+inline void CPbkContactViewListFixedIconModel::ConstructL()
+    {    
+    PBK_DEBUG_PRINT
+        (PBK_DEBUG_STRING("CPbkContactViewListFixedIconModel"));
+    __PBK_PROFILE_START(1);
+    CPbkContactViewListModelCommon::ConstructL();
+    iViewContactNameFormatter = 
+        CPbkViewContactNameFormatter::NewL(iNameFormatter);
+    __PBK_PROFILE_END(1);
+    __PBK_PROFILE_DISPLAY(1);
+    }
+
+CPbkContactViewListFixedIconModel* CPbkContactViewListFixedIconModel::NewL
+        (PbkContactViewListModelFactory::TParams& aParams)
+    {
+    __ASSERT_DEBUG(aParams.iEngine && aParams.iView && aParams.iIconArray, 
+        Panic(EPanicPreCond_NewL));
+    __ASSERT_DEBUG(aParams.iDefaultId != EPbkNullIconId || 
+                   aParams.iEmptyId != EPbkNullIconId,
+                   Panic(EPanicPreCond_NewL));
+        
+    CPbkContactViewListFixedIconModel* self =
+        new(ELeave) CPbkContactViewListFixedIconModel(aParams);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CPbkContactViewListFixedIconModel::~CPbkContactViewListFixedIconModel()
+    {
+    delete iViewContactNameFormatter;
+    }
+
+const TText KSeparator = '\t';
+
+void CPbkContactViewListFixedIconModel::FormatBufferForContactL
+        (const CViewContact& aViewContact) const
+    {
+    // Format only name using aViewContact
+    iBuffer.Zero();
+    AppendIconIndex(EPbkNullIconId);
+    iBuffer.Append(KSeparator);
+    TPtrC name(iViewContactNameFormatter->ContactTitleL
+        (aViewContact, ViewSortOrder()));
+    if (name.Length() == 0)
+        {
+        name.Set(iNameFormatter.UnnamedText());
+        }
+    AppendName(name);
+    }
+
+//  End of File