--- a/phonebookui/pbkcommonui/src/cntcollectionview.cpp Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntcollectionview.cpp Mon May 03 12:24:20 2010 +0300
@@ -19,8 +19,12 @@
#include "cntgroupselectionpopup.h"
#include "cntgroupdeletepopup.h"
#include "cntcollectionlistmodel.h"
+#include "cntextensionmanager.h"
#include "qtpbkglobal.h"
+#include <cntuiextensionfactory.h>
+#include <cntuigroupsupplier.h>
+
#include <hblistview.h>
#include <hblistviewitem.h>
#include <hbmenu.h>
@@ -38,16 +42,18 @@
/*!
*/
-CntCollectionView::CntCollectionView() :
- mView(0),
- mSoftkey(0),
- mViewManager(0),
- mModel(0),
- mListView(0),
- mNamesAction(0),
- mRefreshAction(0),
- mNewGroupAction(0),
- mDeleteGroupsAction(0)
+CntCollectionView::CntCollectionView(CntExtensionManager &extensionManager) :
+ mExtensionManager(extensionManager),
+ mView(NULL),
+ mSoftkey(NULL),
+ mViewManager(NULL),
+ mModel(NULL),
+ mListView(NULL),
+ mNamesAction(NULL),
+ mFindAction(NULL),
+ mExtensionAction(NULL),
+ mNewGroupAction(NULL),
+ mDeleteGroupsAction(NULL)
{
bool ok = false;
mDocumentLoader.load(CNT_COLLECTIONVIEW_XML, &ok);
@@ -66,20 +72,17 @@
connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView()));
// menu actions
+ mNewGroupAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:newgroup"));
+ connect(mNewGroupAction, SIGNAL(triggered()), this, SLOT(newGroup()));
mDeleteGroupsAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:deletegroups"));
- mDeleteGroupsAction->setParent(mView);
connect(mDeleteGroupsAction, SIGNAL(triggered()), this, SLOT(deleteGroups()));
// toolbar actions
+
mNamesAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:names"));
- mNamesAction->setParent(mView);
connect(mNamesAction, SIGNAL(triggered()), this, SLOT(showPreviousView()));
- mRefreshAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:refresh"));
- mRefreshAction->setParent(mView);
- connect(mRefreshAction, SIGNAL(triggered()), this, SLOT(refreshDataModel()));
- mNewGroupAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:newgroup"));
- mNewGroupAction->setParent(mView);
- connect(mNewGroupAction, SIGNAL(triggered()), this, SLOT(newGroup()));
+ mFindAction = static_cast<HbAction*>(mDocumentLoader.findObject("cnt:find"));
+ mExtensionAction = static_cast<HbAction*> (mDocumentLoader.findObject("cnt:activity"));
}
/*!
@@ -93,7 +96,7 @@
/*!
Called when activating the view
*/
-void CntCollectionView::activate( CntAbstractViewManager* aMgr, const CntViewParameters& aArgs )
+void CntCollectionView::activate( CntAbstractViewManager* aMgr, const CntViewParameters aArgs )
{
Q_UNUSED(aArgs)
@@ -114,6 +117,7 @@
// set up the list
mListView = static_cast<HbListView*>(mDocumentLoader.findWidget(QString("listView")));
+ mListView->setUniformItemSizes(true);
connect(mListView, SIGNAL(activated(const QModelIndex&)), this,
SLOT(openGroup(const QModelIndex&)));
@@ -126,8 +130,8 @@
mListView->itemPrototypes().first()->setDefaultFrame(frame);
mListView->listItemPrototype()->setGraphicsSize(HbListViewItem::LargeIcon);
-
- mModel = new CntCollectionListModel(mViewManager->contactManager(SYMBIAN_BACKEND), this);
+ mListView->listItemPrototype()->setStretchingStyle(HbListViewItem::StretchLandscape);
+ mModel = new CntCollectionListModel(mViewManager->contactManager(SYMBIAN_BACKEND), mExtensionManager, this);
mListView->setModel(mModel);
}
@@ -150,72 +154,104 @@
*/
void CntCollectionView::openGroup(const QModelIndex &index)
{
- int id = index.data(Qt::UserRole).toInt();
- int favoriteGrpId = mModel->favoriteGroupId();
-
- if (id == favoriteGrpId )
+ if (mModel->isExtensionGroup(index))
{
- QContact favoriteGroup = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(favoriteGrpId);
- QContactRelationshipFilter rFilter;
- rFilter.setRelationshipType(QContactRelationship::HasMember);
- rFilter.setRelatedContactRole(QContactRelationshipFilter::First);
- rFilter.setRelatedContactId(favoriteGroup.id());
- // group members and their count
- QList<QContactLocalId> groupMemberIds = mViewManager->contactManager(SYMBIAN_BACKEND)->contactIds(rFilter);
-
- if (groupMemberIds.isEmpty())
+ CntViewParameters params = mModel->extensionGroupActivated(index.row());
+ if (params.count())
{
- CntViewParameters viewParameters(CntViewParameters::collectionFavoritesView);
- viewParameters.setSelectedContact(favoriteGroup);
- mViewManager->changeView(viewParameters);
- }
- else
- {
- CntViewParameters viewParameters(CntViewParameters::FavoritesMemberView);
- viewParameters.setSelectedContact(favoriteGroup);
- mViewManager->changeView(viewParameters);
+ mViewManager->changeView(params);
}
}
else
{
- QContact groupContact = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(id);
- CntViewParameters viewParameters(CntViewParameters::groupMemberView);
- viewParameters.setSelectedContact(groupContact);
- mViewManager->changeView(viewParameters);
+ int id = index.data(Qt::UserRole).toInt();
+ int favoriteGrpId = mModel->favoriteGroupId();
+
+ if (id == favoriteGrpId )
+ {
+ QContact favoriteGroup = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(favoriteGrpId);
+ QContactRelationshipFilter rFilter;
+ rFilter.setRelationshipType(QContactRelationship::HasMember);
+ rFilter.setRelatedContactRole(QContactRelationship::First);
+ rFilter.setRelatedContactId(favoriteGroup.id());
+ // group members and their count
+ QList<QContactLocalId> groupMemberIds = mViewManager->contactManager(SYMBIAN_BACKEND)->contactIds(rFilter);
+
+ if (groupMemberIds.isEmpty())
+ {
+ CntViewParameters viewParameters;
+ viewParameters.insert(EViewId, collectionFavoritesView);
+ QVariant var;
+ var.setValue(favoriteGroup);
+ viewParameters.insert(ESelectedContact, var);
+ mViewManager->changeView(viewParameters);
+ }
+ else
+ {
+ CntViewParameters viewParameters;
+ viewParameters.insert(EViewId, FavoritesMemberView);
+ QVariant var;
+ var.setValue(favoriteGroup);
+ viewParameters.insert(ESelectedContact, var);
+ mViewManager->changeView(viewParameters);
+ }
+ }
+ else
+ {
+ QContact groupContact = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(id);
+
+ CntViewParameters viewParameters;
+ viewParameters.insert(EViewId, groupMemberView);
+ QVariant var;
+ var.setValue(groupContact);
+ viewParameters.insert(ESelectedContact, var);
+ mViewManager->changeView(viewParameters);
+ }
}
}
void CntCollectionView::showContextMenu(HbAbstractViewItem *item, const QPointF &coords)
{
- int id = item->modelIndex().data(Qt::UserRole).toInt();
- int favoriteGrpId = mModel->favoriteGroupId();
-
- HbMenu *menu = new HbMenu();
- HbAction *openAction = 0;
- HbAction *deleteAction = 0;
-
- openAction = menu->addAction(hbTrId("txt_common_menu_open"));
-
- if (id != favoriteGrpId)
+ if (mModel->isExtensionGroup(item->modelIndex()))
{
- deleteAction = menu->addAction(hbTrId("txt_phob_menu_delete_group"));
- }
-
- HbAction *selectedAction = menu->exec(coords);
-
- if (selectedAction)
- {
- if (selectedAction == openAction)
+ CntViewParameters params = mModel->extensionGroupLongPressed(item->modelIndex().row(), coords);
+ if (params.count())
{
- openGroup(item->modelIndex());
- }
- else if (selectedAction == deleteAction)
- {
- QContact groupContact = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(id);
- deleteGroup(groupContact);
+ mViewManager->changeView(params);
}
}
- menu->deleteLater();
+ else
+ {
+ int id = item->modelIndex().data(Qt::UserRole).toInt();
+ int favoriteGrpId = mModel->favoriteGroupId();
+
+ HbMenu *menu = new HbMenu();
+ HbAction *openAction = 0;
+ HbAction *deleteAction = 0;
+
+ openAction = menu->addAction(hbTrId("txt_common_menu_open"));
+
+ if (id != favoriteGrpId)
+ {
+ deleteAction = menu->addAction(hbTrId("txt_phob_menu_delete_group"));
+ }
+
+ HbAction *selectedAction = menu->exec(coords);
+
+ if (selectedAction)
+ {
+ if (selectedAction == openAction)
+ {
+ openGroup(item->modelIndex());
+ }
+ else if (selectedAction == deleteAction)
+ {
+ QContact groupContact = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(id);
+ deleteGroup(groupContact);
+ }
+ }
+ menu->deleteLater();
+ }
}
void CntCollectionView::newGroup()
@@ -257,9 +293,14 @@
if (action == groupSelectionPopup->primaryAction())
{
groupSelectionPopup->saveNewGroup();
- CntViewParameters viewParameters(CntViewParameters::groupMemberView);
- viewParameters.setSelectedContact(groupContact);
+
+ CntViewParameters viewParameters;
+ viewParameters.insert(EViewId, groupMemberView);
+ QVariant var;
+ var.setValue(groupContact);
+ viewParameters.insert(ESelectedContact, var);
mViewManager->changeView(viewParameters);
+
delete groupSelectionPopup;
}
else if (action == groupSelectionPopup->secondaryAction())
@@ -280,15 +321,10 @@
mListView->setModel(0);
delete mModel;
mModel = 0;
- mModel = new CntCollectionListModel(mViewManager->contactManager(SYMBIAN_BACKEND), this);
+ mModel = new CntCollectionListModel(mViewManager->contactManager(SYMBIAN_BACKEND), mExtensionManager, this);
mListView->setModel(mModel);
}
-void CntCollectionView::reorderGroup()
-{
- // wait for specs
-}
-
void CntCollectionView::deleteGroup(QContact group)
{
QString name = group.displayLabel();
@@ -341,10 +377,4 @@
mDeleteGroupsAction->setEnabled(false);
}
}
-
-void CntCollectionView::disconnectAll()
-{
- // wait for specs
-}
-
// EOF