phonebookui/pbkcommonui/src/cntgroupactionsview.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 31 2a11b5b00470
--- a/phonebookui/pbkcommonui/src/cntgroupactionsview.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntgroupactionsview.cpp	Mon May 03 12:24:20 2010 +0300
@@ -17,51 +17,48 @@
 
 #include "cntgroupactionsview.h"
 
-#include <QGraphicsLinearLayout>
-#include <qtcontacts.h>
-#include <hbdocumentloader.h>
-#include <QGraphicsSceneResizeEvent>
-#include <hbscrollarea.h>
-#include <hbgroupbox.h>
-#include <thumbnailmanager_qt.h>
-#include "cntcontactcarddatacontainer.h"
-#include "cntcontactcarddetailitem.h"
-#include "cntcontactcardheadingitem.h"
-#include "cntcommands.h"
-#include <hbdialog.h>
+#include <hblistview.h>
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <hblistview.h>
+#include <hblistviewitem.h>
+#include <hbview.h>
 #include <hbaction.h>
 #include <hblabel.h>
-
+#include <hbicon.h>
+#include <hbgroupbox.h>
+#include <mobcntmodel.h>
+#include <hbframebackground.h>
 
-const char *CNT_GROUPACTIONVIEW_XML = ":/xml/contacts_cc.docml";
+#include <QStandardItemModel>
 
-/*!
-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)
-*/
-CntGroupActionsView::CntGroupActionsView(CntViewManager *viewManager, QGraphicsItem *parent) :
-    CntBaseView(viewManager, parent),
-    mGroupContact(0),
-    mScrollArea(0),
-    mContainerWidget(0),
-    mContainerLayout(0),
-    mDataContainer(0),
-    mHeadingItem(0),
-    mBanner(0)
+const char *CNT_GROUPACTIONSVIEW_XML = ":/xml/contacts_groupactions.docml";
+
+CntGroupActionsView::CntGroupActionsView() :
+mGroupContact(NULL),
+mModel(NULL),
+mViewManager(NULL),
+mListView(NULL)
 {
     bool ok = false;
-    ok = loadDocument(CNT_GROUPACTIONVIEW_XML);
-
+    mDocumentLoader.load(CNT_GROUPACTIONSVIEW_XML, &ok);
+  
     if (ok)
-       {
-           QGraphicsWidget *content = findWidget(QString("content"));
-           setWidget(content);
-       }
-       else
-       {
-           qFatal("Unable to read :/xml/contacts_cc.docml");
-       }
-
+    {
+        mView = static_cast<HbView*>(mDocumentLoader.findWidget(QString("view")));
+    }
+    else
+    {
+        qFatal("Unable to read :/xml/contacts_groupactions.docml");
+    }
+    
+    //back button
+    mSoftkey = new HbAction(Hb::BackNaviAction, mView);
+    connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView()));
+    
+    // menu actions
+    mEditGrpDetailAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:editgroupdetail"));
+    connect(mEditGrpDetailAction, SIGNAL(triggered()), this, SLOT(editGroup()));
 }
 
 /*!
@@ -69,175 +66,107 @@
 */
 CntGroupActionsView::~CntGroupActionsView()
 {
+    mView->deleteLater();
+    
+    delete mEditGrpDetailAction; 
+    mEditGrpDetailAction = NULL;
+    
     delete mGroupContact;
-    delete mDataContainer;
+    mGroupContact = NULL;
+    
+    delete mModel;
+    mModel = NULL;
 }
 
 
 void CntGroupActionsView::editGroup()
 {
-    CntViewParameters viewParameters(CntViewParameters::groupEditorView);
-    viewParameters.setSelectedAction("EditGroupMembers");
-    viewParameters.setSelectedContact(*mGroupContact);
-    viewManager()->changeView(viewParameters);
+    CntViewParameters viewParameters;
+    viewParameters.insert(EViewId, groupEditorView);
+    QVariant var;
+    var.setValue(*mGroupContact);
+    viewParameters.insert(ESelectedContact, var);
+    mViewManager->changeView(viewParameters);
+
 }
 
-/*!
-Launch contact editor 
-*/
-void CntGroupActionsView::editContact()
-{
-    commands()->editContact(*mGroupContact);
-}
 
 /*!
 Activates a previous view
 */
-void CntGroupActionsView::aboutToCloseView()
+void CntGroupActionsView::showPreviousView()
 {
-    CntViewParameters args;
-    args.setSelectedContact(*mGroupContact);
-    viewManager()->back( args );
+    CntViewParameters viewParameters;
+    QVariant var;
+    var.setValue(*mGroupContact);
+    viewParameters.insert(ESelectedContact, var);
+    mViewManager->back(viewParameters);
 }
 
-void CntGroupActionsView::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
-    if (mScrollArea)
-    {
-        mContainerWidget->resize(mScrollArea->size().width(), 0);
-    }
-    CntBaseView::resizeEvent(event);
-}
-
-void CntGroupActionsView::addActionsToToolBar()
+void CntGroupActionsView::deactivate()
 {
     
 }
+
 /*
 Activates a default view and setup name label texts
 */
-void CntGroupActionsView::activateView(const CntViewParameters &viewParameters)
-{	
-    QContact contact = viewParameters.selectedContact();
-    mGroupContact = new QContact(contact);
-
-    // add heading widget to the content
-    QGraphicsWidget *c = findWidget(QString("content"));
-    QGraphicsLinearLayout* l = static_cast<QGraphicsLinearLayout*>(c->layout());
+void CntGroupActionsView::activate( CntAbstractViewManager* aMgr, const CntViewParameters aArgs )
+{
+    if (mView->navigationAction() != mSoftkey)
+        mView->setNavigationAction(mSoftkey);   
+    
+    mGroupContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
+    mViewManager = aMgr;
 
     QContactName groupContactName = mGroupContact->detail( QContactName::DefinitionName );
     QString groupName(groupContactName.value( QContactName::FieldCustomLabel ));
-       
-    mBanner = new HbGroupBox(this);
-    l->insertItem(0, mBanner);
-    mBanner->setHeading(groupName);
+    
+    
+    //group box
+    HbGroupBox* groupBox = static_cast<HbGroupBox *>(mDocumentLoader.findWidget(QString("groupBox")));
+    groupBox->setHeading(groupName);
+    
+    // create list & model
+    mListView = static_cast<HbListView*> (mDocumentLoader.findWidget("listView"));
+    mListView->setUniformItemSizes(true);
+    
+    HbFrameBackground frame;
+    frame.setFrameGraphicsName("qtg_fr_list_parent_normal");
+    frame.setFrameType(HbFrameDrawer::NinePieces);
+    mListView->itemPrototypes().first()->setDefaultFrame(frame);
+    
+    mListView->listItemPrototype()->setGraphicsSize(HbListViewItem::LargeIcon);
     
     
-       
-    // data
-    mDataContainer = new CntContactCardDataContainer(mGroupContact);
-
-    mScrollArea = static_cast<HbScrollArea*>(findWidget(QString("scrollArea")));
-    mScrollArea->setScrollDirections(Qt::Vertical);
-
-    mContainerWidget = new QGraphicsWidget(mScrollArea);
-    mContainerWidget->setPreferredWidth(mScrollArea->size().width());
-    mScrollArea->setContentWidget(mContainerWidget);
-
-    mContainerLayout = new QGraphicsLinearLayout(Qt::Vertical);
-    mContainerLayout->setContentsMargins(0, 0, 0, 0);
-    mContainerLayout->setSpacing(0);
-    mContainerWidget->setLayout(mContainerLayout); 
+    mModel = new QStandardItemModel();
     
-    for (int index = 0; index < mDataContainer->rowCount(); index++)
-    {
-       // communication methods
-       if (mDataContainer->separatorIndex() == -1 || index < mDataContainer->separatorIndex())
-       { 
-           CntContactCardDetailItem* item = new CntContactCardDetailItem(index, mContainerWidget);
-
-           connect(item, SIGNAL(clicked()), this, SLOT(onItemActivated()));
-           
-           HbIcon icon("");
-           QString text;
-           QString valueText;
-
-           // DecorationRole
-           QVariant decorationRole = mDataContainer->data(index, Qt::DecorationRole);
-           QVariantList variantList;
-           if (decorationRole.isValid())
-           {
-               if (decorationRole.canConvert<HbIcon>())
-               {
-                   icon = decorationRole.value<HbIcon>();
-               }
-               else if (decorationRole.canConvert< QList<QVariant> >())
-               {
-                   variantList = decorationRole.toList();
-                   for (int j = 0; j < variantList.count(); j++)
-                   {
-                       if (j==0 && variantList.at(0).canConvert<HbIcon>())
-                       {
-                           icon = variantList.at(0).value<HbIcon>();
-                       }
-                   }
-               }
-           }
-
-           // DisplayRole
-           QVariant displayRole = mDataContainer->data(index, Qt::DisplayRole);
-           QStringList stringList;
-           if (displayRole.isValid())
-           {
-               if (displayRole.canConvert<QString>())
-               {
-                   stringList.append(displayRole.toString());
-               }
-               else if (displayRole.canConvert<QStringList>())
-               {
-                   stringList = displayRole.toStringList();
-               }
-           }
-
-           for (int j = 0; j < stringList.count(); j++)
-           {
-               if (j==0)
-               {
-                   text = stringList.at(0);
-               }
-               else if (j==1)
-               {
-                   valueText = stringList.at(1);
-               }
-           }
-           QString confCall("Conference Call");
-           if(text==confCall) // conference call
-               {
-               item->setDetails(icon, text, valueText);
-               }
-           else
-               {
-               item->setDetails(icon, text); // for group Email and Message, we dont need any Value text
-               }
-           mContainerLayout->addItem(item);
-       }
-   }
-
-
+    QContactPhoneNumber confCallNumber = mGroupContact->detail<QContactPhoneNumber>();
+    if(!confCallNumber.number().isEmpty())
+        {
+        populatelist(hbTrId("txt_phob_dblist_conference_call"), HbIcon("qtg_large_call_group"),confCallNumber.number());
+        }
+      
+    populatelist(hbTrId("txt_phob_dblist_send_message"),HbIcon("qtg_large_message_group"),hbTrId("txt_phob_dblist_send_message_val_members"));
+    populatelist(hbTrId("txt_phob_dblist_email"),HbIcon("qtg_large_email_group"),hbTrId("txt_phob_dblist_send_message_val_members"));
+    
+    mListView->setModel(mModel);
+    mListView->setSelectionMode(HbAbstractItemView::NoSelection);
+    
 }
 
-/*!
-Add actions to menu
-*/
-void CntGroupActionsView::addMenuItems()
+void CntGroupActionsView:: populatelist(QString primaryText,HbIcon icon,QString secondaryText)
 {
-    actions()->clearActionList();
-    actions()->actionList() << actions()->baseAction("cnt:editgroupdetails");
-    actions()->addActionsToMenu(menu());
-
-    connect(actions()->baseAction("cnt:editgroupdetails"), SIGNAL(triggered()),
-            this, SLOT (editGroup()));
+    QList<QStandardItem*> items;
+    QStandardItem *labelItem = new QStandardItem();
+    
+    QStringList textList;
+   
+    textList << primaryText << secondaryText;
+    
+    labelItem->setData(textList, Qt::DisplayRole);
+    labelItem->setData(icon, Qt::DecorationRole);
+    
+    items << labelItem ;
+    mModel->appendRow(items);
 }
-
-
-