diff -r d4f567ce2e7c -r 5b6f26637ad3 phonebookui/pbkcommonui/src/cntfavoritesview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/pbkcommonui/src/cntfavoritesview.cpp Tue Aug 31 15:05:21 2010 +0300 @@ -0,0 +1,168 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cntfavoritesview.h" +#include "cntfetchcontactpopup.h" +#include "cntglobal.h" +#include +#include +#include +#include +#include + +const char *CNT_FAVORITE_UI_XML = ":/xml/contacts_favorite.docml"; + +CntFavoritesView::CntFavoritesView() : + mContact(NULL), + mView(NULL), + mSoftkey(NULL), + mViewManager(NULL) +{ + bool ok = false; + mDocumentLoader.load(CNT_FAVORITE_UI_XML, &ok); + + if (ok) + { + mView = static_cast(mDocumentLoader.findWidget(QString("favoritesView"))); + } + else + { + qFatal("Unable to read :/xml/contacts_favorite.docml"); + } + + //back button + mSoftkey = new HbAction(Hb::BackNaviAction, mView); + connect(mSoftkey, SIGNAL(triggered()), this, SLOT(showPreviousView())); +} +/*! +Destructor +*/ +CntFavoritesView::~CntFavoritesView() +{ + mView->deleteLater(); + + delete mContact; + mContact = NULL; +} + +void CntFavoritesView::activate( const CntViewParameters aArgs ) +{ + if (mView->navigationAction() != mSoftkey) + mView->setNavigationAction(mSoftkey); + + HbMainWindow* window = mView->mainWindow(); + connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation))); + setOrientation(window->orientation()); + + mContact = new QContact(aArgs.value(ESelectedGroupContact).value()); + mViewManager = &mEngine->viewManager(); + + HbPushButton *addButton = static_cast(mDocumentLoader.findWidget(QString("cnt_button_add"))); + connect(addButton, SIGNAL(clicked()), this, SLOT(openSelectionPopup())); + + // If no contacts are present, then disable the button + QContactDetailFilter filter; + filter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType); + filter.setValue(QLatin1String(QContactType::TypeContact)); + + QList contactIds = getContactManager()->contactIds(filter); + if (contactIds.isEmpty()) + { + addButton->setEnabled(false); + } + +} + +void CntFavoritesView::deactivate() +{ +} + +void CntFavoritesView::openSelectionPopup() +{ + CntFetchContactPopup* popup = CntFetchContactPopup::createMultiSelectionPopup( + hbTrId("txt_phob_subtitle_favorites"), + hbTrId("txt_common_button_save"), + *getContactManager()); + connect(popup, SIGNAL(fetchReady(QSet)), + this, SLOT(handleMemberSelection(QSet))); + QSet ids; + popup->setSelectedContacts(ids); + popup->showPopup(); +} + +void CntFavoritesView::handleMemberSelection( QSet aIds ) +{ + if ( aIds.isEmpty() ) + { + showPreviousView(); + } + else + { + QList memberships; + foreach (QContactLocalId id, aIds) { + QContactId contactId; + contactId.setLocalId(id); + QContactRelationship membership; + membership.setRelationshipType(QContactRelationship::HasMember); + membership.setFirst(mContact->id()); + membership.setSecond(contactId); + memberships.append(membership); + } + + if (!memberships.isEmpty()) { + getContactManager()->saveRelationships(&memberships, NULL); + } + + CntViewParameters viewParameters; + viewParameters.insert(EViewId, favoritesMemberView); + QVariant var; + var.setValue(*mContact); + viewParameters.insert(ESelectedGroupContact, var); + mViewManager->changeView(viewParameters); + } +} + +void CntFavoritesView::setOrientation(Qt::Orientation orientation) +{ + if (orientation == Qt::Vertical) + { + // reading "portrait" section + mDocumentLoader.load(CNT_FAVORITE_UI_XML, "portrait"); + } + else + { + // reading "landscape" section + mDocumentLoader.load(CNT_FAVORITE_UI_XML, "landscape"); + } +} + +void CntFavoritesView::showPreviousView() +{ + CntViewParameters args; + mViewManager->back(args); +} + +QContactManager* CntFavoritesView::getContactManager() +{ + if (!mViewManager) { + return NULL; + } + + return &mEngine->contactManager(SYMBIAN_BACKEND); +} + +// end of file