diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgui/appengine/src/conversationsengine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgui/appengine/src/conversationsengine.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,288 @@ +/* + * 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 "conversationsengine.h" + +#include "conversationsenginedefines.h" +#include "convergedmessage.h" +#include "conversationmsgstorehandler.h" +#include "conversationssummarymodel.h" +#include "conversationsmodel.h" +#include "draftsmodel.h" +#include "conversationsengine_p.h" +#include "debugtraces.h" +#include "s60qconversions.h" + +//--------------------------------------------------------------- +// ConversationsEngine::instance +// @see header +//--------------------------------------------------------------- +ConversationsEngine* ConversationsEngine::instance() +{ + static ConversationsEngine* conversationsEngine = + new ConversationsEngine(); + return conversationsEngine; +} + +//--------------------------------------------------------------- +// ConversationsEngine::ConversationsEngine +// @see header +//--------------------------------------------------------------- +ConversationsEngine::ConversationsEngine(QObject* parent): + QObject(parent), mDraftsModel(NULL) +{ + mConversationMsgStoreHandler = new ConversationMsgStoreHandler; + mConversationsSummaryModel = new ConversationsSummaryModel(this); + mConversationsModel = new ConversationsModel(mConversationMsgStoreHandler, + this); + + d_ptr = new ConversationsEnginePrivate(mConversationMsgStoreHandler, + mConversationsSummaryModel, + mConversationsModel); +} + +//--------------------------------------------------------------- +// ConversationsEngine::~ConversationsEngine +// @see header +//--------------------------------------------------------------- +ConversationsEngine::~ConversationsEngine() +{ + if(mConversationMsgStoreHandler) + { + delete mConversationMsgStoreHandler; + mConversationMsgStoreHandler = NULL; + } + if(d_ptr) + { + delete d_ptr; + d_ptr = NULL; + } +} + +//--------------------------------------------------------------- +// ConversationsEngine::getConversationsSummaryModel +// @see header +//--------------------------------------------------------------- +QStandardItemModel* ConversationsEngine::getConversationsSummaryModel() +{ + return mConversationsSummaryModel; +} + +//--------------------------------------------------------------- +// ConversationsEngine::getConversationsModel +// @see header +//--------------------------------------------------------------- +QStandardItemModel* ConversationsEngine::getConversationsModel() +{ + return mConversationsModel; +} + +//--------------------------------------------------------------- +// ConversationsEngine::getDraftsModel +// @see header +//--------------------------------------------------------------- +QStandardItemModel* ConversationsEngine::getDraftsModel() + { + if(!mDraftsModel) + { + mDraftsModel = new DraftsModel(this); + mConversationMsgStoreHandler->FetchDraftMessages(mDraftsModel); + } + return mDraftsModel; + } +//--------------------------------------------------------------- +// ConversationsEngine::getConversations +// @see header +//--------------------------------------------------------------- +bool ConversationsEngine::getConversations(qint64 conversationId) +{ + int error; + TRAP(error,d_ptr->getConversationsL(conversationId)); + return (error!=KErrNone) ? false : true; +} + +//--------------------------------------------------------------- +// ConversationsEngine::clearConversations +// @see header +//--------------------------------------------------------------- +bool ConversationsEngine::clearConversations() +{ + int error; + TRAP(error,d_ptr->clearConversationsL()); + return (error!=KErrNone) ? false : true; +} + +//--------------------------------------------------------------- +// ConversationsEngine::deleteConversations +// @see header +//--------------------------------------------------------------- +bool ConversationsEngine::deleteConversations(qint64 conversationId) +{ + int error; + TRAP(error,d_ptr->deleteConversationL(conversationId)); + return (error!=KErrNone) ? false : true; +} + +//--------------------------------------------------------------- +// ConversationsEngine::deleteMessages +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::deleteMessages(QList& msgIdList) +{ + RArray idArray; + for(int i=0; i < msgIdList.count(); ++i) + { + idArray.Append(msgIdList[i]); + } + if(msgIdList.count()>0) + { + d_ptr->deleteMessages(idArray); + } +} + +//--------------------------------------------------------------- +// ConversationsEngine::markConversationRead +// @see header +//--------------------------------------------------------------- +bool ConversationsEngine::markConversationRead(qint64 conversationId) +{ + int error; + TRAP(error,d_ptr->markConversationReadL(conversationId)); + return (error!=KErrNone) ? false : true; +} + +//--------------------------------------------------------------- +// ConversationsEngine::markMessagesRead +// @see header +//--------------------------------------------------------------- +bool ConversationsEngine::markMessagesRead(QList& msgIdList) +{ + RArray idArray; + int error; + for(int i=0; i < msgIdList.count(); ++i) + { + idArray.Append(msgIdList[i]); + } + if(msgIdList.count()>0) + { + TRAP(error,d_ptr->markMessagesReadL(idArray)); + } + return (error!=KErrNone) ? false : true; +} + +//--------------------------------------------------------------- +// ConversationsEngine::getContactDetails +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::getContactDetails(qint64 conversationId, + QString& firstName, + QString& lastName, + QString& address) +{ + QModelIndexList indexList = mConversationsSummaryModel->match( + mConversationsSummaryModel->index(0, 0), + ConversationId, + conversationId, + 1, // One match + Qt::MatchExactly); + + if(indexList.count() > 0) + { + firstName = indexList[0].data(FirstName).toString(); + lastName = indexList[0].data(LastName).toString(); + address = indexList[0].data(ConversationAddress).toString(); + } +} + +//--------------------------------------------------------------- +// ConversationsEngine::getConversationIdFromAddress +// @see header +//--------------------------------------------------------------- +qint64 ConversationsEngine::getConversationIdFromAddress(QString address) +{ + qint64 conversationId = -1; + + int error; + HBufC* number = S60QConversions::qStringToS60Desc(address); + TRAP(error,conversationId = + d_ptr->getConversationIdFromAddressL(*number)); + + delete number; + + return conversationId; +} + +//--------------------------------------------------------------- +// ConversationsEngine::getCurrentConversationId +// @see header +//--------------------------------------------------------------- +qint64 ConversationsEngine::getCurrentConversationId() +{ + return d_ptr->getConversationCurrentId(); +} + +//--------------------------------------------------------------- +// ConversationsEngine::getConversationIdFromContactId +// @see header +//--------------------------------------------------------------- +qint64 ConversationsEngine::getConversationIdFromContactId(qint32 contactId) +{ + qint64 conversationId = -1; + int error; + TRAP(error,conversationId = + d_ptr->getConversationIdFromContactIdL(contactId)); + + return conversationId; +} + +//--------------------------------------------------------------- +// ConversationsEngine::emitConversationModelPopulated +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::emitConversationModelPopulated() +{ + emit conversationModelPopulated(); +} + +//--------------------------------------------------------------- +// ConversationsEngine::emitConversationModelUpdated +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::emitConversationModelUpdated() +{ + emit conversationModelUpdated(); +} + +//--------------------------------------------------------------- +// ConversationsEngine::emitConversationListModelPopulated +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::emitConversationListModelPopulated() +{ + emit conversationListModelPopulated(); +} + +//--------------------------------------------------------------- +// ConversationsEngine::fetchMoreConversations +// @see header +//--------------------------------------------------------------- +void ConversationsEngine::fetchMoreConversations() +{ + d_ptr->fetchMoreConversations(); +} + +//EOF +