diff -r 2a11b5b00470 -r fd64c38c277d phonebookui/pbkcommonui/src/cntnamesview_p.cpp --- 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 #include #include -#include #include #include #include @@ -101,6 +100,9 @@ SLOT(showContextMenu(HbAbstractViewItem*,QPointF))); connect(list(), SIGNAL(activated (const QModelIndex&)), this, SLOT(showContactView(const QModelIndex&))); + + HbAction* settings = static_cast(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(); - 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&)), + this, SLOT(handleContactAddition(const QList&))); - bool multipleContacts = mListModel->rowCount() >= CNT_MIN_ROW_COUNT; - mMultipleDeleter->setEnabled(multipleContacts); + connect(contactManager, SIGNAL(contactsRemoved(const QList&)), + this, SLOT(handleContactRemoval(const QList&))); + + 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&)), + this, SLOT(handleContactAddition(const QList&))); + + disconnect(contactManager, SIGNAL(contactsRemoved(const QList&)), + this, SLOT(handleContactRemoval(const QList&))); + + 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 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 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& aAddedList) +{ + Q_UNUSED(aAddedList); + disableDeleteAction(); +} + +void CntNamesViewPrivate::handleContactRemoval(const QList& 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()