--- a/qtmobility/src/messaging/qmessagestore_maemo.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/messaging/qmessagestore_maemo.cpp Mon May 03 13:18:40 2010 +0300
@@ -43,6 +43,7 @@
#include "modestengine_maemo_p.h"
#include "telepathyengine_maemo_p.h"
#include "maemohelpers_p.h"
+#include "eventloggerengine_maemo_p.h"
QTM_BEGIN_NAMESPACE
@@ -54,13 +55,14 @@
:d_ptr(d), q_ptr(q) {}
QMessageStorePrivate *d_ptr;
QMessageStore *q_ptr;
- //...
+ EventLoggerEngine *el;
};
QMessageStorePrivate::QMessageStorePrivate()
:q_ptr(0),
p_ptr(0)
{
+
}
QMessageStorePrivate::~QMessageStorePrivate()
@@ -68,11 +70,29 @@
}
void QMessageStorePrivate::initialize(QMessageStore *store)
-{
+{
q_ptr = store;
p_ptr = new QMessageStorePrivatePlatform(this, store);
+ p_ptr->el= EventLoggerEngine::instance();
}
+void QMessageStorePrivate::messageNotification(QMessageStorePrivate::NotificationType type, const QMessageId& id,
+ const QMessageManager::NotificationFilterIdSet &matchingFilters)
+{
+ switch (type) {
+ case Added:
+ emit q_ptr->messageAdded(id, matchingFilters);
+ break;
+ case Updated:
+ emit q_ptr->messageUpdated(id, matchingFilters);
+ break;
+ case Removed:
+ emit q_ptr->messageRemoved(id, matchingFilters);
+ break;
+ }
+}
+
+
Q_GLOBAL_STATIC(QMessageStorePrivate,data);
QMessageStore::QMessageStore(QObject *parent)
@@ -81,7 +101,10 @@
{
Q_ASSERT(d_ptr != 0);
Q_ASSERT(d_ptr->q_ptr == 0); // QMessageStore should be singleton
- d_ptr->initialize(this);
+ // d_ptr->initialize(this);
+ // be sure that singletons are initialized
+ EventLoggerEngine::instance();
+ TelepathyEngine::instance();
}
QMessageStore::~QMessageStore()
@@ -105,31 +128,66 @@
QMessageIdList QMessageStore::queryMessages(const QMessageFilter &filter, const QMessageSortOrder &sortOrder, uint limit, uint offset) const
{
- Q_UNUSED(filter)
- Q_UNUSED(sortOrder)
- Q_UNUSED(limit)
- Q_UNUSED(offset)
- return QMessageIdList(); // stub
+ QMessageIdList messageIds;
+
+ bool isFiltered = false;
+ bool isSorted = false;
+
+ messageIds = ModestEngine::instance()->queryMessagesSync(filter, sortOrder, limit, offset,
+ isFiltered, isSorted);
+
+ // messageIds += d_ptr->p_ptr->el->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags());
+ messageIds += EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,QString(),QMessageDataComparator::MatchFlags());
+
+ if (!isFiltered) {
+ MessagingHelper::filterMessages(messageIds, filter);
+ }
+ if (!isSorted) {
+ MessagingHelper::orderMessages(messageIds, sortOrder);
+ }
+ MessagingHelper::applyOffsetAndLimitToMessageIdList(messageIds, limit, offset);
+
+ return messageIds;
}
QMessageIdList QMessageStore::queryMessages(const QMessageFilter &filter, const QString &body, QMessageDataComparator::MatchFlags matchFlags, const QMessageSortOrder &sortOrder, uint limit, uint offset) const
{
- Q_UNUSED(filter)
- Q_UNUSED(sortOrder)
- Q_UNUSED(body)
- Q_UNUSED(matchFlags)
- Q_UNUSED(limit)
- Q_UNUSED(offset)
- return QMessageIdList(); // stub
+ QMessageIdList messageIds;
+
+ bool isFiltered = false;
+ bool isSorted = false;
+ messageIds = ModestEngine::instance()->queryMessagesSync(filter, body, matchFlags, sortOrder, limit, offset,
+ isFiltered, isSorted);
+ // messageIds +=d_ptr->p_ptr->el->filterAndOrderMessages(filter,sortOrder,body,matchFlags);
+ messageIds +=EventLoggerEngine::instance()->filterAndOrderMessages(filter,sortOrder,body,matchFlags);
+
+ if (!isFiltered) {
+ MessagingHelper::filterMessages(messageIds, filter);
+ }
+ if (!isSorted) {
+ MessagingHelper::orderMessages(messageIds, sortOrder);
+ }
+ MessagingHelper::applyOffsetAndLimitToMessageIdList(messageIds, limit, offset);
+
+ return messageIds;
}
QMessageFolderIdList QMessageStore::queryFolders(const QMessageFolderFilter &filter, const QMessageFolderSortOrder &sortOrder, uint limit, uint offset) const
{
- Q_UNUSED(filter)
- Q_UNUSED(sortOrder)
- Q_UNUSED(limit)
- Q_UNUSED(offset)
- return QMessageFolderIdList(); // stub
+ QMessageFolderIdList folderIds;
+
+ bool isFiltered = false;
+ bool isSorted = false;
+ folderIds = ModestEngine::instance()->queryFolders(filter, sortOrder, limit, offset, isFiltered, isSorted);
+ if (!isFiltered) {
+ MessagingHelper::filterFolders(folderIds, filter);
+ }
+ if (!isSorted) {
+ MessagingHelper::orderFolders(folderIds, sortOrder);
+ }
+ MessagingHelper::applyOffsetAndLimitToFolderIdList(folderIds, limit, offset);
+
+ return folderIds;
}
QMessageAccountIdList QMessageStore::queryAccounts(const QMessageAccountFilter &filter, const QMessageAccountSortOrder &sortOrder, uint limit, uint offset) const
@@ -156,14 +214,20 @@
int QMessageStore::countMessages(const QMessageFilter& filter) const
{
- Q_UNUSED(filter)
- return 0; // stub
+ int count = 0;
+
+ count += ModestEngine::instance()->countMessagesSync(filter);
+
+ return count;
}
int QMessageStore::countFolders(const QMessageFolderFilter& filter) const
{
- Q_UNUSED(filter)
- return 0; // stub
+ int count = 0;
+
+ count += ModestEngine::instance()->countFolders(filter);
+
+ return count;
}
int QMessageStore::countAccounts(const QMessageAccountFilter& filter) const
@@ -177,58 +241,155 @@
bool QMessageStore::removeMessage(const QMessageId& id, QMessageManager::RemovalOption option)
{
- Q_UNUSED(id)
- Q_UNUSED(option)
- return false; // stub
+ if (id.toString().startsWith("MO_")) {
+ return ModestEngine::instance()->removeMessage(id, option);
+ }
+ return EventLoggerEngine::instance()->deleteMessage(id);
}
bool QMessageStore::removeMessages(const QMessageFilter& filter, QMessageManager::RemovalOption option)
{
- Q_UNUSED(filter)
- Q_UNUSED(option)
- return true; // stub
+ QMessageIdList ids = queryMessages(filter, QMessageSortOrder(), 0, 0);
+
+ for (int i=0; i < ids.count(); i++) {
+ if (ids[i].toString().startsWith("MO_")) {
+ if (!ModestEngine::instance()->removeMessage(ids[i], option)) {
+ return false;
+ }
+ } else
+ if(!EventLoggerEngine::instance()->deleteMessage(ids[i]))
+ return false;
+ }
+ return true;
}
bool QMessageStore::addMessage(QMessage *m)
{
- Q_UNUSED(m)
- return true; // stub
+ bool retVal = true;
+
+ QMessageAccountId accountId = m->parentAccountId();
+ QMessage::Type msgType = QMessage::NoType;
+
+ // Check message type
+ if (m->type() == QMessage::AnyType || m->type() == QMessage::NoType) {
+ if (accountId.isValid()) {
+ // ParentAccountId was defined => Message type can be read
+ // from parent account
+ QMessageAccount account = QMessageAccount(accountId);
+ QMessage::TypeFlags types = account.messageTypes();
+ if (types & QMessage::Sms) {
+ msgType = QMessage::Sms;
+ } else if (account.messageTypes() & QMessage::InstantMessage) {
+ msgType = QMessage::InstantMessage;
+ } else if (types & QMessage::Mms) {
+ msgType = QMessage::Mms;
+ } else if (types & QMessage::Email) {
+ msgType = QMessage::Email;
+ }
+ }
+ if (msgType == QMessage::NoType) {
+ retVal = false;
+ }
+ }
+
+ if (retVal) {
+ // Check account
+ if (!accountId.isValid()) {
+ accountId = QMessageAccount::defaultAccount(m->type());
+ if (!accountId.isValid()) {
+ retVal = false;
+ }
+ }
+ }
+
+ QMessageAccount account(accountId);
+ if (retVal) {
+ // Check account/message type compatibility
+ if (!(account.messageTypes() & m->type()) && (msgType == QMessage::NoType)) {
+ retVal = false;
+ }
+ }
+
+ if (retVal) {
+ // Set default account if unset
+ if (!m->parentAccountId().isValid()) {
+ m->setParentAccountId(accountId);
+ }
+
+ if (account.messageTypes() & QMessage::Sms) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::add not yet implemented for SMS";
+ } else if (account.messageTypes() & QMessage::InstantMessage) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::add not yet implemented for Instant Message";
+ } else if (account.messageTypes() & QMessage::Mms) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::add not yet implemented for MMS";
+ } else if (account.messageTypes() & QMessage::Email) {
+ retVal = ModestEngine::instance()->addMessage(*m);
+ }
+ }
+
+ return retVal;
}
bool QMessageStore::updateMessage(QMessage *m)
{
- Q_UNUSED(m)
- return true; // stub
+ bool retVal = false;
+
+ if (m->type() == QMessage::Sms) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::update not yet implemented for SMS";
+ } else if (m->type() == QMessage::InstantMessage) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::update not yet implemented for Instant Message";
+ } else if (m->type() == QMessage::Mms) {
+ retVal = false; //TODO:
+ qWarning() << "QMessageManager::update not yet implemented for Instant MMS";
+ } else if (m->type() == QMessage::Email) {
+ retVal = ModestEngine::instance()->updateMessage(*m);
+ }
+
+ return retVal;
}
QMessage QMessageStore::message(const QMessageId& id) const
{
- Q_UNUSED(id)
- return QMessage(); // stub
+ if (id.toString().startsWith("MO_")) {
+ return ModestEngine::instance()->message(id);
+ } else {
+ return d_ptr->p_ptr->el->message(id);
+ }
}
QMessageFolder QMessageStore::folder(const QMessageFolderId& id) const
{
- Q_UNUSED(id)
- return QMessageFolder(); // stub
+ if (id.toString().startsWith("MO_")) {
+ return ModestEngine::instance()->folder(id);
+ }
+
+ return QMessageFolder();
}
QMessageAccount QMessageStore::account(const QMessageAccountId& id) const
{
- QMessageAccount acc=ModestEngine::instance()->account(id);
- if(acc.id()==id) return acc;
- return TelepathyEngine::instance()->account(id);
+ if (id.toString().startsWith("MO_")) {
+ return ModestEngine::instance()->account(id);
+ } else {
+ return TelepathyEngine::instance()->account(id);
+ }
}
QMessageManager::NotificationFilterId QMessageStore::registerNotificationFilter(const QMessageFilter &filter)
{
- Q_UNUSED(filter)
- return 0; // stub
+ QMessageManager::NotificationFilterId id = d_ptr->p_ptr->el->registerNotificationFilter(*d_ptr,filter);
+ return ModestEngine::instance()->registerNotificationFilter(*data(), filter, id);
}
void QMessageStore::unregisterNotificationFilter(QMessageManager::NotificationFilterId notificationFilterId)
{
- Q_UNUSED(notificationFilterId)
+ ModestEngine::instance()->unregisterNotificationFilter(notificationFilterId);
+ d_ptr->p_ptr->el->unregisterNotificationFilter( notificationFilterId);
}