qtmobility/src/messaging/qmessagestore_symbian.cpp
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- a/qtmobility/src/messaging/qmessagestore_symbian.cpp	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/src/messaging/qmessagestore_symbian.cpp	Wed Jun 23 19:08:38 2010 +0300
@@ -40,11 +40,19 @@
 ****************************************************************************/
 #include "qmessagestore_symbian_p.h"
 #include "qmtmengine_symbian_p.h"
+#ifdef FREESTYLEMAILUSED
+#include "qfsengine_symbian_p.h"
+#endif
+#include "messagingutil_p.h"
+#include "maemohelpers_p.h" // contains non-meamo specific helpers for messaging
 
 #include <QString>
 
 QTM_BEGIN_NAMESPACE
 
+using namespace SymbianHelpers;
+
+
 Q_GLOBAL_STATIC(QMessageStorePrivate,messageStorePrivate);
 
 QMessageStorePrivate::QMessageStorePrivate()
@@ -62,6 +70,9 @@
 {
     q_ptr = store;
     _mtmEngine = CMTMEngine::instance();
+#ifdef FREESTYLEMAILUSED
+    _fsEngine = CFSEngine::instance();
+#endif
 }
 
 QMessageIdList QMessageStorePrivate::queryMessages(const QMessageFilter &filter, const QMessageSortOrder &sortOrder, uint limit, uint offset) const
@@ -130,43 +141,124 @@
 
 QMessageAccountIdList QMessageStorePrivate::queryAccounts(const QMessageAccountFilter &filter, const QMessageAccountSortOrder &sortOrder, uint limit, uint offset) const
 {
-    return _mtmEngine->queryAccounts(filter, sortOrder, limit, offset);
+    QMessageAccountIdList idList;
+
+    idList << _mtmEngine->queryAccounts(filter, sortOrder, 0, 0);
+
+#ifdef FREESTYLEMAILUSED    
+    _fsEngine->setMtmAccountIdList(idList);
+    idList << _fsEngine->queryAccounts(filter, sortOrder, 0, 0);
+#endif
+
+    MessagingHelper::orderAccounts(idList, sortOrder);
+
+    MessagingHelper::applyOffsetAndLimitToAccountIdList(idList, limit, offset);
+
+    return idList;
 }
 
 int QMessageStorePrivate::countAccounts(const QMessageAccountFilter &filter) const
 {
-    return _mtmEngine->countAccounts(filter);
+    int count = 0;
+#ifdef FREESTYLEMAILUSED
+    count += _fsEngine->countAccounts(filter);
+#endif
+    count += _mtmEngine->countAccounts(filter);
+    return count;
 }
 
 QMessageFolderIdList QMessageStorePrivate::queryFolders(const QMessageFolderFilter &filter, const QMessageFolderSortOrder &sortOrder, uint limit, uint offset) const
 {
-    return _mtmEngine->queryFolders(filter, sortOrder, limit, offset);
+    QMessageFolderIdList idList;
+#ifdef FREESTYLEMAILUSED
+    idList << _fsEngine->queryFolders(filter, sortOrder, 0, 0);
+#endif
+    idList << _mtmEngine->queryFolders(filter, sortOrder, 0, 0);
+ 
+    MessagingHelper::orderFolders(idList, sortOrder);
+
+    MessagingHelper::applyOffsetAndLimitToFolderIdList(idList, limit, offset);
+
+    return idList;
 }
 
 int QMessageStorePrivate::countFolders(const QMessageFolderFilter& filter) const
 {
-    return _mtmEngine->countFolders(filter);
+    int count = 0;
+#ifdef FREESTYLEMAILUSED
+    count += _fsEngine->countFolders(filter);
+#endif
+    count += _mtmEngine->countFolders(filter);
+    return count;
 }
 
 QMessageFolder QMessageStorePrivate::folder(const QMessageFolderId& id) const
 {
-    return _mtmEngine->folder(id);
+    switch (idType(id)) {
+        case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+            return _fsEngine->folder(id);
+#else
+            return QMessageFolder();
+#endif
+            break;
+        case EngineTypeMTM:
+        default:
+            return _mtmEngine->folder(id);
+            break;
+    }
 }
 
 
 bool QMessageStorePrivate::addMessage(QMessage *m)
 {
-    return _mtmEngine->addMessage(m);
+    switch (idType(m->parentAccountId())) {
+    case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+        return _fsEngine->addMessage(m);
+#else
+            return false;
+#endif
+        break;
+    case EngineTypeMTM:
+    default:
+        return _mtmEngine->addMessage(m);
+        break;
+    }
 }
 
 bool QMessageStorePrivate::updateMessage(QMessage *m)
 {
-    return _mtmEngine->updateMessage(m);
+    switch (idType(m->id())) {
+    case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+        return _fsEngine->updateMessage(m);
+#else
+        return false;
+#endif
+        break;
+    case EngineTypeMTM:
+    default:
+        return _mtmEngine->updateMessage(m);
+        break;
+    }
 }
 
 bool QMessageStorePrivate::removeMessage(const QMessageId &id, QMessageManager::RemovalOption option)
 {
-    return _mtmEngine->removeMessage(id, option);
+    switch (idType(id)) {
+    case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+        return _fsEngine->removeMessage(id, option);
+#else
+        return false;
+#endif
+        break;
+    case EngineTypeMTM:
+    default:
+        return _mtmEngine->removeMessage(id, option);
+        break;
+    }
 }
 
 bool QMessageStorePrivate::removeMessages(const QMessageFilter &filter, QMessageManager::RemovalOption option)
@@ -182,9 +274,25 @@
         loop.exec();
         ids = _ids;
         _ids.clear();
+        
         for (int i=0; i < ids.count(); i++) {
-            if (!_mtmEngine->removeMessage(ids[i], option)) {
-                retVal = false;
+            switch (idType(ids[i])) {
+                case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+                    if (!_fsEngine->removeMessage(ids[i], option)) {
+                        retVal = false;
+                    }
+#else
+                return false;
+#endif
+                    break;  
+                case EngineTypeMTM:
+                    if (!_mtmEngine->removeMessage(ids[i], option)) {
+                        retVal = false;
+                    }
+                    break;
+                default:
+                    return false;
             }
         }
     } else {
@@ -196,22 +304,55 @@
 
 QMessage QMessageStorePrivate::message(const QMessageId& id) const
 {
-    return _mtmEngine->message(id);
+    switch (idType(id)) {
+        case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+            return _fsEngine->message(id);
+#else
+        return QMessage();
+#endif
+            break;
+        case EngineTypeMTM:
+        default:
+            return _mtmEngine->message(id);
+            break;
+        }
 }
 
 QMessageAccount QMessageStorePrivate::account(const QMessageAccountId &id) const
 {
-    return _mtmEngine->account(id);
+    switch (idType(id)) {
+        case EngineTypeFreestyle:
+#ifdef FREESTYLEMAILUSED
+            return _fsEngine->account(id);
+#else
+        return QMessageAccount();
+#endif
+            break;
+        case EngineTypeMTM:
+        default:
+            return _mtmEngine->account(id);
+            break;
+        }
 }
 
 QMessageManager::NotificationFilterId QMessageStorePrivate::registerNotificationFilter(const QMessageFilter &filter)
 {
-    return _mtmEngine->registerNotificationFilter(*this, filter);
+    QMessageManager::NotificationFilterId id = _mtmEngine->registerNotificationFilter(*this, filter);
+#ifdef FREESTYLEMAILUSED
+    return _fsEngine->registerNotificationFilter(*this, filter, id);
+#else
+    return id;
+#endif   
 }
 
 void QMessageStorePrivate::unregisterNotificationFilter(QMessageManager::NotificationFilterId notificationFilterId)
 {
-    _mtmEngine->unregisterNotificationFilter(notificationFilterId);    
+#ifdef FREESTYLEMAILUSED
+    _fsEngine->unregisterNotificationFilter(notificationFilterId);  
+#endif
+    _mtmEngine->unregisterNotificationFilter(notificationFilterId);  
+
 }
 
 void QMessageStorePrivate::messageNotification(QMessageStorePrivate::NotificationType type, const QMessageId& id,
@@ -219,6 +360,7 @@
 {
     switch (type) {
         case Added:
+            qDebug() << "messageAdded notification" << id.toString();
             emit q_ptr->messageAdded(id, matchingFilters);
             break;
         case Updated: