messagingapp/msgappfw/server/src/ccscontactsmanager.cpp
changeset 23 238255e8b033
child 37 518b245aa84c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/server/src/ccscontactsmanager.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 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:QT contact manager interface
+ *
+ */
+
+// System includes
+#include "qtcontacts.h" 
+#include <QList>
+// User includes
+#include "ccscontactsmanager.h"
+#include "ccscontactsresolver.h"
+
+// ========================== Member Functions ===============================
+
+// ----------------------------------------------------------------------------
+// ContactsManager::ContactsManager
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+CCsContactsManager::CCsContactsManager(QObject* parent):QObject(parent)
+{
+    mPhonebookManager = new QContactManager("symbian");
+
+    // Connect to QContactManager signals
+    connect(mPhonebookManager, 
+            SIGNAL(contactsAdded(const QList<QContactLocalId>&)), 
+            this, 
+            SLOT(handleContactsAdded(const QList<QContactLocalId>&)));
+
+    connect(mPhonebookManager, 
+            SIGNAL(contactsChanged(const QList<QContactLocalId>&)), 
+            this, 
+            SLOT(handleContactsChanged(const QList<QContactLocalId>&)));
+
+    connect(mPhonebookManager, 
+            SIGNAL(contactsRemoved(QList<QContactLocalId>)), 
+            this, 
+            SLOT(handleContactsRemoved(QList<QContactLocalId>)));
+
+    mContactsResolver = new CCsContactsResolver(mPhonebookManager);
+}
+// ----------------------------------------------------------------------------
+// ContactsManager::~ContactsManager
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+CCsContactsManager::~CCsContactsManager()
+{
+    delete mContactsResolver;
+    mContactsResolver = NULL;
+    delete mPhonebookManager;
+    mPhonebookManager = NULL;
+    mObserverList.clear();
+}
+// ----------------------------------------------------------------------------
+// ContactsManager::resolver
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+CCsContactsResolver* CCsContactsManager::resolver() const
+{
+    return mContactsResolver;
+}
+
+// ----------------------------------------------------------------------------
+// ContactsManager::handleContactsAdded
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+void CCsContactsManager::handleContactsAdded(
+                                          const QList<QContactLocalId>& contactIds)
+{
+    int contactsCount = contactIds.count();
+    for (int i = 0; i < contactsCount; ++i)
+    {
+        CCsContactDetail detail;        
+        mContactsResolver->resolveContactId(contactIds.at(i), detail);
+                           
+        //notify observers
+        int count = mObserverList.count();
+        for (int observerCount=0; observerCount < count; observerCount++)
+        {
+            MCsContactsManagerObserver* observer = mObserverList.at(observerCount);
+            observer->HandleAddContact(detail);
+        }            
+    }
+}
+
+// ----------------------------------------------------------------------------
+// ContactsManager::handleContactsChanged
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+void CCsContactsManager::handleContactsChanged(
+                                            const QList<QContactLocalId>& contactIds)
+{
+    int contactsCount = contactIds.count();
+    for (int i = 0; i < contactsCount; ++i)
+    {
+        CCsContactDetail detail;
+        mContactsResolver->resolveContactId(contactIds.at(i), detail);
+        
+        //notify observers
+        int count = mObserverList.count();
+        for (int observerCount=0; observerCount < count; observerCount++)
+        {
+            MCsContactsManagerObserver* observer = mObserverList.at(observerCount);
+            observer->HandleContactChange(detail);
+        }    
+    }
+}
+
+// ----------------------------------------------------------------------------
+// ContactsManager::handleContactsRemoved
+// @see contactsmanager.h
+// ----------------------------------------------------------------------------
+void CCsContactsManager::handleContactsRemoved(const QList<QContactLocalId> &contactIds)
+{
+    CCsContactDetail detail;
+    int idCount = contactIds.count();
+    for (int i = 0; i < idCount; i++)
+    {
+        detail.contactId = contactIds.value(i);
+
+        //notify observers
+        int count = mObserverList.count();
+        for (int observerCount=0; observerCount < count; observerCount++)
+        {
+            MCsContactsManagerObserver* observer = mObserverList.at(observerCount);
+            observer->HandleDeleteContact(detail);
+        } 
+    }
+
+}
+
+// ---------------------------------------------------------------------------
+// CCsContactsManager::addObserver
+// Register for events.
+// ---------------------------------------------------------------------------
+void CCsContactsManager::addObserver(MCsContactsManagerObserver* aObserver)
+{
+    mObserverList.append(aObserver);
+}
+
+// ---------------------------------------------------------------------------
+// CCsContactsManager::removeObserver
+// DeRegister for events.
+// ---------------------------------------------------------------------------
+void CCsContactsManager::removeObserver(MCsContactsManagerObserver* aObserver)
+{
+    int index = mObserverList.indexOf(aObserver);
+    if ( index >= 0)
+    {
+        mObserverList.removeAt(index);
+    }
+}
+
+// EOF