qtmobility/src/messaging/maemohelpers.cpp
changeset 4 90517678cc4f
parent 1 2b40d63a9c3d
child 5 453da2cfceef
--- a/qtmobility/src/messaging/maemohelpers.cpp	Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/src/messaging/maemohelpers.cpp	Mon May 03 13:18:40 2010 +0300
@@ -67,27 +67,29 @@
 
 void MessagingHelper::filterAccounts(QMessageAccountIdList& accountIds, const QMessageAccountFilter& filter)
 {
-    QMessageAccountFilterPrivate* pf = QMessageAccountFilterPrivate::implementation(filter);
-    if ((pf->_field == QMessageAccountFilterPrivate::None) &&
-        (pf->_filterList.count() == 0)) {
-        if (pf->_notFilter) {
-            // There is only one filter: empty ~QMessageFilter()
-            // => accountIds must be cleared
-            accountIds.clear();
-            return;
-        } else {
-            // There is only one filter: empty QMessageFilter()
-            // => accountIds list can remain intact
-            return;
+    if (accountIds.count() && !filter.isEmpty()) {
+        QMessageAccountFilterPrivate* pf = QMessageAccountFilterPrivate::implementation(filter);
+        if ((pf->_field == QMessageAccountFilterPrivate::None) &&
+            (pf->_filterList.count() == 0)) {
+            if (pf->_notFilter) {
+                // There is only one filter: empty ~QMessageFilter()
+                // => accountIds must be cleared
+                accountIds.clear();
+                return;
+            } else {
+                // There is only one filter: empty QMessageFilter()
+                // => accountIds list can remain intact
+                return;
+            }
         }
-    }
 
-    if (pf->_valid) {
-        QMessageStore* store = QMessageStore::instance();
-        for (int i=accountIds.count()-1; i >= 0; i--) {
-            QMessageAccount account = store->account(accountIds[i]);
-            if (!pf->filter(account)) {
-                accountIds.removeAt(i);
+        if (pf->_valid) {
+            QMessageStore* store = QMessageStore::instance();
+            for (int i=accountIds.count()-1; i >= 0; i--) {
+                QMessageAccount account = store->account(accountIds[i]);
+                if (!pf->filter(account)) {
+                    accountIds.removeAt(i);
+                }
             }
         }
     }
@@ -103,12 +105,18 @@
 
 void MessagingHelper::orderAccounts(QMessageAccountIdList& accountIds, const QMessageAccountSortOrder &sortOrder)
 {
-    messagingHelper()->m_AccountSortOrder = (QMessageAccountSortOrder*)&sortOrder;
-    qSort(accountIds.begin(), accountIds.end(), MessagingHelper::accountLessThan);
+    if (!sortOrder.isEmpty()) {
+        messagingHelper()->m_AccountSortOrder = (QMessageAccountSortOrder*)&sortOrder;
+        qSort(accountIds.begin(), accountIds.end(), MessagingHelper::accountLessThan);
+    }
 }
 
 void MessagingHelper::applyOffsetAndLimitToAccountIdList(QMessageAccountIdList& accountIds, int limit, int offset)
 {
+    if (accountIds.count() == 0) {
+        return;
+    }
+
     if (offset > 0) {
         if (offset > accountIds.count()) {
             accountIds.clear();
@@ -127,27 +135,29 @@
 
 void MessagingHelper::filterFolders(QMessageFolderIdList& folderIds, const QMessageFolderFilter& filter)
 {
-    QMessageFolderFilterPrivate* pf = QMessageFolderFilterPrivate::implementation(filter);
-    if ((pf->_field == QMessageFolderFilterPrivate::None) &&
-        (pf->_filterList.count() == 0)) {
-        if (pf->_notFilter) {
-            // There is only one filter: empty ~QMessageFilter()
-            // => accountIds must be cleared
-            folderIds.clear();
-            return;
-        } else {
-            // There is only one filter: empty QMessageFilter()
-            // => accountIds list can remain intact
-            return;
+    if (folderIds.count() && !filter.isEmpty()) {
+        QMessageFolderFilterPrivate* pf = QMessageFolderFilterPrivate::implementation(filter);
+        if ((pf->_field == QMessageFolderFilterPrivate::None) &&
+            (pf->_filterList.count() == 0)) {
+            if (pf->_notFilter) {
+                // There is only one filter: empty ~QMessageFilter()
+                // => accountIds must be cleared
+                folderIds.clear();
+                return;
+            } else {
+                // There is only one filter: empty QMessageFilter()
+                // => accountIds list can remain intact
+                return;
+            }
         }
-    }
 
-    if (pf->_valid) {
-        QMessageStore* store = QMessageStore::instance();
-        for (int i=folderIds.count()-1; i >= 0; i--) {
-            QMessageFolder folder = store->folder(folderIds[i]);
-            if (!pf->filter(folder)) {
-                folderIds.removeAt(i);
+        if (pf->_valid) {
+            QMessageStore* store = QMessageStore::instance();
+            for (int i=folderIds.count()-1; i >= 0; i--) {
+                QMessageFolder folder = store->folder(folderIds[i]);
+                if (!pf->filter(folder)) {
+                    folderIds.removeAt(i);
+                }
             }
         }
     }
@@ -163,12 +173,18 @@
 
 void MessagingHelper::orderFolders(QMessageFolderIdList& folderIds,  const QMessageFolderSortOrder &sortOrder)
 {
-    messagingHelper()->m_FolderSortOrder = (QMessageFolderSortOrder*)&sortOrder;
-    qSort(folderIds.begin(), folderIds.end(), MessagingHelper::folderLessThan);
+    if (!sortOrder.isEmpty()) {
+        messagingHelper()->m_FolderSortOrder = (QMessageFolderSortOrder*)&sortOrder;
+        qSort(folderIds.begin(), folderIds.end(), MessagingHelper::folderLessThan);
+    }
 }
 
 void MessagingHelper::applyOffsetAndLimitToFolderIdList(QMessageFolderIdList& folderIds, int limit, int offset)
 {
+    if (folderIds.count() == 0) {
+        return;
+    }
+
     if (offset > 0) {
         if (offset > folderIds.count()) {
             folderIds.clear();
@@ -187,27 +203,29 @@
 
 void MessagingHelper::filterMessages(QMessageIdList& messageIds, const QMessageFilter& filter)
 {
-    QMessageFilterPrivate* pf = QMessageFilterPrivate::implementation(filter);
-    if ((pf->_field == QMessageFilterPrivate::None) &&
-        (pf->_filterList.count() == 0)) {
-        if (pf->_notFilter) {
-            // There is only one filter: empty ~QMessageFilter()
-            // => accountIds must be cleared
-            messageIds.clear();
-            return;
-        } else {
-            // There is only one filter: empty QMessageFilter()
-            // => accountIds list can remain intact
-            return;
+    if (messageIds.count() && !filter.isEmpty()) {
+        QMessageFilterPrivate* pf = QMessageFilterPrivate::implementation(filter);
+        if ((pf->_field == QMessageFilterPrivate::None) &&
+            (pf->_filterList.count() == 0)) {
+            if (pf->_notFilter) {
+                // There is only one filter: empty ~QMessageFilter()
+                // => accountIds must be cleared
+                messageIds.clear();
+                return;
+            } else {
+                // There is only one filter: empty QMessageFilter()
+                // => accountIds list can remain intact
+                return;
+            }
         }
-    }
 
-    if (pf->_valid) {
-        QMessageStore* store = QMessageStore::instance();
-        for (int i=messageIds.count()-1; i >= 0; i--) {
-            QMessage message = store->message(messageIds[i]);
-            if (!pf->filter(message)) {
-                messageIds.removeAt(i);
+        if (pf->_valid) {
+            QMessageStore* store = QMessageStore::instance();
+            for (int i=messageIds.count()-1; i >= 0; i--) {
+                QMessage message = store->message(messageIds[i]);
+                if (!pf->filter(message)) {
+                    messageIds.removeAt(i);
+                }
             }
         }
     }
@@ -223,12 +241,18 @@
 
 void MessagingHelper::orderMessages(QMessageIdList& messageIds,  const QMessageSortOrder &sortOrder)
 {
-    messagingHelper()->m_MessageSortOrder = (QMessageSortOrder*)&sortOrder;
-    qSort(messageIds.begin(), messageIds.end(), MessagingHelper::messageLessThan);
+    if (!sortOrder.isEmpty()) {
+        messagingHelper()->m_MessageSortOrder = (QMessageSortOrder*)&sortOrder;
+        qSort(messageIds.begin(), messageIds.end(), MessagingHelper::messageLessThan);
+    }
 }
 
 void MessagingHelper::applyOffsetAndLimitToMessageIdList(QMessageIdList& messageIds, int limit, int offset)
 {
+    if (messageIds.count() == 0) {
+        return;
+    }
+
     if (offset > 0) {
         if (offset > messageIds.count()) {
             messageIds.clear();