summaryrefslogtreecommitdiffstats
path: root/src/messaging/maemohelpers.cpp
diff options
context:
space:
mode:
authorMarko Minkkinen <marko.minkkinen@digia.com>2010-11-10 21:23:24 +0200
committerMarko Minkkinen <marko.minkkinen@digia.com>2010-11-10 21:23:24 +0200
commite577a48d6b96b21aa1ad7a456fa5b5bb5ebce994 (patch)
tree32972e17a789e477c9b78f24be6cc4b42141eaac /src/messaging/maemohelpers.cpp
parent74b86826ae2f6fba0b755d5fdd49a1fee6df9607 (diff)
Fixes MOBILITY-985, optimizations, stability fixes and bug fixes
Diffstat (limited to 'src/messaging/maemohelpers.cpp')
-rw-r--r--src/messaging/maemohelpers.cpp72
1 files changed, 67 insertions, 5 deletions
diff --git a/src/messaging/maemohelpers.cpp b/src/messaging/maemohelpers.cpp
index 2a7afc75d9..3ef09feead 100644
--- a/src/messaging/maemohelpers.cpp
+++ b/src/messaging/maemohelpers.cpp
@@ -255,22 +255,33 @@ bool MessagingHelper::messageLessThan(const QMessageId messageId1, const QMessag
if (msg1 == 0 || msg2 == 0) {
QMessageStore* store = QMessageStore::instance();
if (msg1 != 0) {
+ cache->unlock();
+ QMessage message2 = store->message(messageId2);
+ cache->lock();
retVal = QMessageSortOrderPrivate::lessThan(*messagingHelper()->m_MessageSortOrder,
*msg1,
- store->message(messageId2));
+ message2);
+ cache->unlock();
} else if (msg2 != 0) {
+ cache->unlock();
+ QMessage message1 = store->message(messageId1);
+ cache->lock();
retVal = QMessageSortOrderPrivate::lessThan(*messagingHelper()->m_MessageSortOrder,
- store->message(messageId1),
+ message1,
*msg2);
+ cache->unlock();
} else {
+ cache->unlock();
+ QMessage message1 = store->message(messageId1);
+ QMessage message2 = store->message(messageId2);
retVal = QMessageSortOrderPrivate::lessThan(*messagingHelper()->m_MessageSortOrder,
- store->message(messageId1),
- store->message(messageId2));
+ message1,
+ message2);
}
} else {
retVal = QMessageSortOrderPrivate::lessThan(*messagingHelper()->m_MessageSortOrder, *msg1, *msg2);
+ cache->unlock();
}
- cache->unlock();
return retVal;
}
@@ -546,14 +557,48 @@ bool MessagingHelper::preFilter(QMessageFilter &filter, QMessage::Type type)
QString prefix;
if (type == QMessage::Email) {
+#if defined(Q_OS_SYMBIAN)
+ #ifdef FREESTYLEMAILUSED
+ prefix = "FS_";
+ #else
+ prefix = "MTM_";
+ #endif
+#else // Q_WS_MAEMO_5
prefix = "MO_";
+#endif
} else if (type == QMessage::Sms) {
+#if defined(Q_OS_SYMBIAN)
+ prefix = "MTM_";
+#else // Q_WS_MAEMO_5
prefix = "el";
+#endif
}
return pMFFilter->preFilter(type, prefix);
}
+void MessagingHelper::extractMIMEHeaderParts(const QByteArray &mimeHeaderString, QByteArray &mimeType,
+ QByteArray &mimeSubType, QByteArray &charset)
+{
+ int index = mimeHeaderString.indexOf("/");
+ if (index != -1) {
+ mimeType = mimeHeaderString.left(index).trimmed();
+
+ mimeSubType = mimeHeaderString.mid(index + 1).trimmed();
+ index = mimeSubType.indexOf(";");
+ if (index != -1) {
+ QString remainder = mimeSubType.mid(index + 1);
+ mimeSubType = mimeSubType.left(index).trimmed();
+
+ QRegExp charsetPattern("charset=(\\S+)");
+ index = charsetPattern.indexIn(remainder);
+ if (index != -1) {
+ charset = charsetPattern.cap(1).toLatin1().toUpper();
+ }
+ }
+ }
+}
+
MessageCache* MessageCache::instance()
{
return messageCache();
@@ -623,6 +668,17 @@ QMessage MessageCache::message(const QMessageId &id)
return message;
}
+bool MessageCache::contains(const QMessageId &id)
+{
+ bool retVal;
+
+ m_mutex.lock();
+ retVal = m_messageCache.contains(id.toString());
+ m_mutex.unlock();
+
+ return retVal;
+}
+
bool MessageCache::isFull() const
{
if (m_messageCache.size() >= maxMessageCacheSize) {
@@ -675,5 +731,11 @@ void MessageCache::unlock()
m_mutex.unlock();
}
+void MessageCache::clear()
+{
+ m_mutex.lock();
+ m_messageCache.clear();
+ m_mutex.unlock();
+}
QTM_END_NAMESPACE