phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 31 2a11b5b00470
--- a/phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp	Mon May 03 12:24:20 2010 +0300
@@ -17,36 +17,46 @@
 
 #include "cntfavoritesmemberview.h"
 #include "cntgroupselectionpopup.h"
+#include "qtpbkglobal.h"
 
 #include <hblistview.h>
-#include <hbtoolbar.h>
 #include <hbmenu.h>
 #include <hbaction.h>
+#include <hblistview.h>
+#include <hblistviewitem.h>
+#include <hbview.h>
+#include <hbaction.h>
+#include <hblabel.h>
+#include <mobcntmodel.h>
+#include <hbframebackground.h>
 
 const char *CNT_FAVORITESMEMBERVIEW_XML = ":/xml/contacts_favmember.docml";
 
-/*!
-Constructor, initialize member variables.
-\a viewManager is the parent that creates this view. \a parent is a pointer to parent QGraphicsItem (by default this is 0)
-*/
-CntFavoritesMemberView::CntFavoritesMemberView(CntViewManager *viewManager, QGraphicsItem *parent)
-:CntBaseView(viewManager, parent),
-mManageFavoritesAction(0), 
-mFavoritesMenu(0),
-mFavoriteListView(0)
+CntFavoritesMemberView::CntFavoritesMemberView() :
+mContact(NULL),
+mModel(NULL),
+mFavoriteListView(NULL), 
+mViewManager(NULL)
 {
     bool ok = false;
-    ok = loadDocument(CNT_FAVORITESMEMBERVIEW_XML);
-    
+    mDocumentLoader.load(CNT_FAVORITESMEMBERVIEW_XML, &ok);
+  
     if (ok)
     {
-        QGraphicsWidget *content = findWidget(QString("content"));
-        setWidget(content);
+        mView = static_cast<HbView*>(mDocumentLoader.findWidget(QString("view")));
     }
     else
     {
         qFatal("Unable to read :/xml/contacts_favmember.docml");
     }
+    
+    //back button
+    mSoftkey = new HbAction(Hb::BackNaviAction, mView);
+    connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView()));
+    
+    // menu actions
+    mManageFavoritesAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:manageFavorite"));
+    connect(mManageFavoritesAction, SIGNAL(triggered()), this, SLOT(manageFavorites()));
 }
 
 /*!
@@ -54,44 +64,83 @@
 */
 CntFavoritesMemberView::~CntFavoritesMemberView()
 {
-delete mManageFavoritesAction; 
-delete mFavoritesMenu;
-delete mContact;
+    mView->deleteLater();
+
+    delete mManageFavoritesAction; 
+    mManageFavoritesAction = 0;
+
+    delete mContact;
+    mContact = 0;
+
+    delete mModel;
+    mModel = 0;
 }
 
-/*!
-Save selections
-*/
-void CntFavoritesMemberView::aboutToCloseView()
+void CntFavoritesMemberView::showPreviousView()
 {
     CntViewParameters viewParameters;
-    viewManager()->back(viewParameters);
+    mViewManager->back(viewParameters);
 }
 
-void CntFavoritesMemberView::activateView(const CntViewParameters &viewParameters)
+void CntFavoritesMemberView::activate( CntAbstractViewManager* aMgr, const CntViewParameters aArgs )
 {
-    //group box
-    HbGroupBox* groupBox = static_cast<HbGroupBox *>(findWidget(QString("groupBox")));
-    mContact = new QContact(viewParameters.selectedContact());
+    if (mView->navigationAction() != mSoftkey)
+        mView->setNavigationAction(mSoftkey);   
+    
+    mContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
+    mViewManager = aMgr;
 
-    mFavoriteListView = static_cast<HbListView*>(findWidget(QString("cnt_listview_favorites")));
+    mFavoriteListView = static_cast<HbListView*> (mDocumentLoader.findWidget("listView"));
+    mFavoriteListView->setUniformItemSizes(true);
     connect(mFavoriteListView, SIGNAL(longPressed(HbAbstractViewItem *, const QPointF &)),
                       this,  SLOT(onLongPressed(HbAbstractViewItem *, const QPointF &)));
     
-    QContactRelationshipFilter rFilter;
-    rFilter.setRelationshipType(QContactRelationship::HasMember);
-    rFilter.setRelatedContactRole(QContactRelationshipFilter::First);
-    rFilter.setRelatedContactId(mContact->id());
-           
-    contactModel()->setFilterAndSortOrder(rFilter);
-    contactModel()->showMyCard(false);
-    mFavoriteListView->setModel(contactModel());
+    HbFrameBackground frame;
+    frame.setFrameGraphicsName("qtg_fr_list_normal");
+    frame.setFrameType(HbFrameDrawer::NinePieces);
+    mFavoriteListView->itemPrototypes().first()->setDefaultFrame(frame);
+
+    mFavoriteListView->listItemPrototype()->setGraphicsSize(HbListViewItem::Thumbnail);
+
+    if (!mModel)
+    {
+        QContactRelationshipFilter rFilter;
+        rFilter.setRelationshipType(QContactRelationship::HasMember);
+        rFilter.setRelatedContactRole(QContactRelationship::First);
+        rFilter.setRelatedContactId(mContact->id());
+
+        QContactSortOrder sortOrderFirstName;
+        sortOrderFirstName.setDetailDefinitionName(QContactName::DefinitionName,
+            QContactName::FieldFirst);
+        sortOrderFirstName.setCaseSensitivity(Qt::CaseInsensitive);
+
+        QContactSortOrder sortOrderLastName;
+        sortOrderLastName.setDetailDefinitionName(QContactName::DefinitionName,
+            QContactName::FieldLast);
+        sortOrderLastName.setCaseSensitivity(Qt::CaseInsensitive);
+
+        QList<QContactSortOrder> sortOrders;
+        sortOrders.append(sortOrderFirstName);
+        sortOrders.append(sortOrderLastName);
+
+        mModel = new MobCntModel(mViewManager->contactManager(SYMBIAN_BACKEND), rFilter, sortOrders, false);
     }
 
+    mFavoriteListView->setModel(mModel);
+
+    connect(mFavoriteListView, SIGNAL(activated (const QModelIndex&)), this,
+            SLOT(openContact(const QModelIndex&)));
+}
+
+void CntFavoritesMemberView::deactivate()
+{
+    
+}
+
 void CntFavoritesMemberView::manageFavorites()
 {
     // call a dialog to display the contacts
-    CntGroupSelectionPopup *groupSelectionPopup = new CntGroupSelectionPopup(contactManager(), mContact);
+    CntGroupSelectionPopup *groupSelectionPopup = new CntGroupSelectionPopup(mViewManager->contactManager(SYMBIAN_BACKEND), mContact);
     mFavoriteListView->setModel(0);
     groupSelectionPopup->populateListOfContact();
 
@@ -102,23 +151,9 @@
     }
     delete groupSelectionPopup;
 	
-    mFavoriteListView->setModel(contactModel());
+    mFavoriteListView->setModel(mModel);
 }
 
-/*!
-Add actions also to toolbar
-*/
-void CntFavoritesMemberView::addMenuItems()
-{
-mManageFavoritesAction = new HbAction(hbTrId("Manage favorites"));
-mFavoritesMenu = new HbMenu();
-mFavoritesMenu->addAction(mManageFavoritesAction);
-
-connect(mManageFavoritesAction, SIGNAL(triggered()),
-        this, SLOT (manageFavorites()));
-
-setMenu(mFavoritesMenu);
-}
 
 /*!
 Called when a list item is longpressed
@@ -126,7 +161,7 @@
 void CntFavoritesMemberView::onLongPressed (HbAbstractViewItem *aItem, const QPointF &aCoords)
 {
     QModelIndex index = aItem->modelIndex();
-  QVariant variant = index.data(Qt::UserRole+1);
+    QVariant variant = index.data(Qt::UserRole+1);
     const QMap<QString, QVariant> map = variant.toMap();
 
     HbMenu *menu = new HbMenu();
@@ -169,18 +204,30 @@
 
 void CntFavoritesMemberView::openContact(const QModelIndex &index)
 {
-    QContact selectedContact = contactModel()->contact(index);
-    CntViewParameters viewParameters(CntViewParameters::commLauncherView);
-    viewParameters.setSelectedContact(selectedContact);
-    viewManager()->changeView(viewParameters);  
+    QContact selectedContact = mModel->contact(index);
+    
+    CntViewParameters viewParameters;
+    viewParameters.insert(EViewId, commLauncherView);
+    QVariant var;
+    var.setValue(selectedContact);
+    viewParameters.insert(ESelectedContact, var);
+    QVariant varGroup;
+    varGroup.setValue(*mContact);
+    viewParameters.insert(ESelectedGroupContact, varGroup);
+    viewParameters.insert(ESelectedAction, "FromGroupMemberView");
+    mViewManager->changeView(viewParameters);
 }
 
 void CntFavoritesMemberView::editContact(const QModelIndex &index)
 {
-    QContact selectedContact = contactModel()->contact(index);
-    CntViewParameters viewParameters(CntViewParameters::editView);
-    viewParameters.setSelectedContact(selectedContact);
-    viewManager()->changeView(viewParameters);
+    QContact selectedContact = mModel->contact(index);
+    
+    CntViewParameters viewParameters;
+    viewParameters.insert(EViewId, editView);
+    QVariant var;
+    var.setValue(selectedContact);
+    viewParameters.insert(ESelectedContact, var);
+    mViewManager->changeView(viewParameters);
 }
 
 /*!
@@ -189,11 +236,11 @@
 void CntFavoritesMemberView::removeFromFavorites(const QModelIndex &index)
 {
     // get contact id using index
-        QContact selectedContact = contactModel()->contact(index);
+        QContact selectedContact = mModel->contact(index);
         QContactRelationship relationship;
         relationship.setRelationshipType(QContactRelationship::HasMember);
         relationship.setFirst(mContact->id());
         relationship.setSecond(selectedContact.id());
-        contactManager()->removeRelationship(relationship);
+        mViewManager->contactManager(SYMBIAN_BACKEND)->removeRelationship(relationship);
 }