QMessageAccount QMessageStore::account(const QMessageAccountId& id) const { if (!id.isValid()) { d_ptr->error = QMessageManager::InvalidId; return QMessageAccount(); } d_ptr->error = QMessageManager::NoError; if (id.toString().startsWith("QMF_")) { return QMFStore::instance()->account(id, d_ptr->error); } else { return TelepathyEngine::instance()->account(id); } return QMessageAccount(); }
QMessageAccountFilter QMessageAccountFilter::byName(const QString &pattern, QMessageDataComparator::LikeComparator cmp) { QMessageAccountIdList ids; foreach (QMessageAccountId const& id, QMessageManager().queryAccounts()) { bool matched(MessagingUtil::globMatch(pattern, QMessageAccount(id).name())); if ((matched && cmp == QMessageDataComparator::Like) || (!matched && cmp == QMessageDataComparator::NotLike)) { ids.push_back(id); } } return QMessageAccountFilter::byId(ids); }
bool QMessageStore::addMessage(QMessage *m) { 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; d_ptr->error = QMessageManager::ConstraintFailure; } } if (retVal) { // Check account if (!accountId.isValid()) { accountId = QMessageAccount::defaultAccount(m->type()); if (!accountId.isValid()) { d_ptr->error = QMessageManager::ConstraintFailure; retVal = false; } } } QMessageAccount account(accountId); if (retVal) { // Check account/message type compatibility if (!(account.messageTypes() & m->type()) && (msgType == QMessage::NoType)) { retVal = false; d_ptr->error = QMessageManager::ConstraintFailure; } } if (retVal) { // Set default account if unset if (!m->parentAccountId().isValid()) { m->setParentAccountId(accountId); } if (account.messageTypes() & QMessage::Sms) { retVal = StorageEngine::instance()->addMessage(*m); } else if (account.messageTypes() & QMessage::InstantMessage) { retVal = false; //TODO: d_ptr->error = QMessageManager::NotYetImplemented; qWarning() << "QMessageManager::add not yet implemented for Instant Message"; } else if (account.messageTypes() & QMessage::Mms) { retVal = false; //TODO: d_ptr->error = QMessageManager::NotYetImplemented; qWarning() << "QMessageManager::add not yet implemented for MMS"; } else if (account.messageTypes() & QMessage::Email) { retVal = QMFStore::instance()->addMessage(*m, d_ptr->error); } } return retVal; }