--- a/phonebookui/pbkcommonui/src/cntnamesview_p.cpp Fri May 14 15:42:23 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntnamesview_p.cpp Thu May 27 12:45:19 2010 +0300
@@ -27,7 +27,6 @@
#include <qapplication.h>
#include <hbabstractviewitem.h>
#include <hbaction.h>
-#include <hbnotificationdialog.h>
#include <hbmenu.h>
#include <hbtoolbar.h>
#include <hbmainwindow.h>
@@ -101,6 +100,9 @@
SLOT(showContextMenu(HbAbstractViewItem*,QPointF)));
connect(list(), SIGNAL(activated (const QModelIndex&)), this,
SLOT(showContactView(const QModelIndex&)));
+
+ HbAction* settings = static_cast<HbAction*>(document()->findObject("cnt:settings") );
+ connect( settings, SIGNAL(triggered()), this, SLOT(showSettings()) );
}
CntNamesViewPrivate::~CntNamesViewPrivate()
@@ -134,6 +136,7 @@
void CntNamesViewPrivate::activate(CntAbstractViewManager* aMgr, const CntViewParameters aArgs)
{
+ Q_UNUSED( aArgs )
mViewManager = aMgr;
if (!mListModel) {
QContactSortOrder sortOrderFirstName;
@@ -172,35 +175,31 @@
}
QContactManager* contactManager = aMgr->contactManager( SYMBIAN_BACKEND );
- if ( aArgs.contains(ESelectedContact) )
- {
- QContact selectedContact = aArgs.value(ESelectedContact).value<QContact>();
- QString action = aArgs.value(ESelectedAction).toString();
-
- if ( action == "save" )
- {
- QString name = contactManager->synthesizedDisplayLabel( selectedContact );
- HbNotificationDialog::launchDialog(qtTrId("Contact \"%1\" saved").arg(name));
- }
-
- else if ( action == "delete" )
- {
- QString name = contactManager->synthesizedDisplayLabel( selectedContact );
- HbNotificationDialog::launchDialog(qtTrId("%1 deleted").arg(name));
- }
- else if ( action == "failed")
- {
- HbNotificationDialog::launchDialog(qtTrId("SAVING FAILED!"));
- }
- }
+
+ disableDeleteAction();
+ connect(contactManager, SIGNAL(contactsAdded(const QList<QContactLocalId>&)),
+ this, SLOT(handleContactAddition(const QList<QContactLocalId>&)));
- bool multipleContacts = mListModel->rowCount() >= CNT_MIN_ROW_COUNT;
- mMultipleDeleter->setEnabled(multipleContacts);
+ connect(contactManager, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)),
+ this, SLOT(handleContactRemoval(const QList<QContactLocalId>&)));
+
+ connect(contactManager, SIGNAL(selfContactIdChanged(const QContactLocalId&, const QContactLocalId&)),
+ this, SLOT(handleSelfContactIdChange(const QContactLocalId&, const QContactLocalId&)));
}
void CntNamesViewPrivate::deactivate()
{
hideFinder();
+
+ QContactManager* contactManager = mViewManager->contactManager( SYMBIAN_BACKEND );
+ disconnect(contactManager, SIGNAL(contactsAdded(const QList<QContactLocalId>&)),
+ this, SLOT(handleContactAddition(const QList<QContactLocalId>&)));
+
+ disconnect(contactManager, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)),
+ this, SLOT(handleContactRemoval(const QList<QContactLocalId>&)));
+
+ disconnect(contactManager, SIGNAL(selfContactIdChanged(const QContactLocalId&, const QContactLocalId&)),
+ this, SLOT(handleSelfContactIdChange(const QContactLocalId&, const QContactLocalId&)));
delete mMenuBuilder;
mMenuBuilder = NULL;
@@ -210,6 +209,12 @@
mSearchPanel = NULL;
}
+void CntNamesViewPrivate::disableDeleteAction()
+{
+ bool multipleContacts = mListModel->rowCount() >= CNT_MIN_ROW_COUNT;
+ mMultipleDeleter->setEnabled(multipleContacts);
+}
+
void CntNamesViewPrivate::setFilter(const QString &filterString)
{
QStringList searchList = filterString.split(QRegExp("\\s+"), QString::SkipEmptyParts);
@@ -286,33 +291,41 @@
void CntNamesViewPrivate::hideFinder()
{
- layout()->removeItem(emptyLabel());
- layout()->removeItem(search());
- emptyLabel()->setVisible(false);
- search()->setVisible(false);
+ if ( mSearchPanel )
+ {
+ layout()->removeItem(emptyLabel());
+ layout()->removeItem(search());
+ emptyLabel()->setVisible(false);
+ search()->setVisible(false);
- hideBanner();
+ hideBanner();
- layout()->addItem(list());
- list()->setVisible(true);
+ layout()->addItem(list());
+ list()->setVisible(true);
- QContactDetailFilter filter;
- filter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
- QString typeContact = QContactType::TypeContact;
- filter.setValue(typeContact);
+ QContactDetailFilter filter;
+ filter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
+ QString typeContact = QContactType::TypeContact;
+ filter.setValue(typeContact);
- mListModel->setFilterAndSortOrder(filter);
- mListModel->showMyCard(true);
+ mListModel->setFilterAndSortOrder(filter);
+ mListModel->showMyCard(true);
- mNewContact->setVisible(true);
- mImportSim->setVisible(true);
- mMultipleDeleter->setVisible(true);
- mView->toolBar()->show();
+ mNewContact->setVisible(true);
+ mImportSim->setVisible(true);
+ mMultipleDeleter->setVisible(true);
+ mView->toolBar()->show();
+ }
}
bool CntNamesViewPrivate::isFinderVisible()
{
- return search()->isVisible();
+ bool isVisible = false;
+ if ( mSearchPanel )
+ {
+ isVisible = mSearchPanel->isVisible();
+ }
+ return isVisible;
}
void CntNamesViewPrivate::showPreviousView()
@@ -368,7 +381,7 @@
connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleDeleteMultipleContacts()));
}
- mFetchView->setDetails(hbTrId("txt_phob_opt_delete_contact"),hbTrId("txt_phob_button_delete"));
+ mFetchView->setDetails(hbTrId("txt_phob_title_delete_contacts"),hbTrId("txt_phob_button_delete"));
QSet<QContactLocalId> emptyContactsSet;
// Pop up a list of contacts for deletion
@@ -383,18 +396,12 @@
QContactManager* manager = mViewManager->contactManager( SYMBIAN_BACKEND );
if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) {
- QList<QContactLocalId> selectedContactsList = selectedContacts.values();
- foreach (QContactLocalId id, selectedContactsList) {
- QContact contact = manager->contact(id);
-
- manager->removeContact(contact.localId());
+ foreach ( QContactLocalId id, selectedContacts.values() )
+ {
+ manager->removeContact( id );
}
}
- if (mListModel->rowCount() < CNT_MIN_ROW_COUNT) {
- mMultipleDeleter->setEnabled(false);
- }
-
delete mFetchView;
mFetchView = NULL;
}
@@ -423,10 +430,17 @@
void CntNamesViewPrivate::showContextMenu(HbAbstractViewItem* aItem, QPointF aPoint)
{
QContact contact = mListModel->contact(aItem->modelIndex());
- HbMenu* menu = mMenuBuilder->actionMenu( contact );
- menu->setPreferredPos( aPoint );
- menu->setAttribute( Qt::WA_DeleteOnClose, true );
- menu->open();
+
+ // In case of an empty MyCard, do not show any ContextMenu
+ if (!(contact.localId() == mListModel->myCardId() && contact.details().count() <= 4))
+ {
+ HbMenu* menu = mMenuBuilder->actionMenu( contact, mListModel->myCardId() );
+ menu->setPreferredPos( aPoint );
+ menu->setAttribute( Qt::WA_DeleteOnClose, true );
+ menu->open();
+ }
+
+
}
void CntNamesViewPrivate::executeAction( QContact& aContact, QString aAction )
@@ -479,6 +493,31 @@
mViewManager->changeView(args);
}
+void CntNamesViewPrivate::showSettings()
+{
+ CntViewParameters args;
+ args.insert( EViewId, settingsView );
+ mViewManager->changeView( args );
+}
+
+void CntNamesViewPrivate::handleContactAddition(const QList<QContactLocalId>& aAddedList)
+{
+ Q_UNUSED(aAddedList);
+ disableDeleteAction();
+}
+
+void CntNamesViewPrivate::handleContactRemoval(const QList<QContactLocalId>& aRemovedList)
+{
+ Q_UNUSED(aRemovedList);
+ disableDeleteAction();
+}
+
+void CntNamesViewPrivate::handleSelfContactIdChange(const QContactLocalId& aOldId, const QContactLocalId& aNewId)
+{
+ Q_UNUSED(aOldId);
+ Q_UNUSED(aNewId);
+ disableDeleteAction();
+}
//// lazy accessors
HbListView* CntNamesViewPrivate::list()