/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Mobility Components.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "messagingex.h"
#include "qmessagefilter.h"
#include <QFileDialog>
MessagingEx::MessagingEx(QWidget* parent)
: QMainWindow(parent)
{
setupUi(this);
createMenus();
connect(&m_manager, SIGNAL(messageAdded(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageReceived(const QMessageId&)));
connect(&m_manager, SIGNAL(messageRemoved(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageRemoved(const QMessageId&)));
connect(&m_manager, SIGNAL(messageUpdated(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageUpdated(const QMessageId&)));
m_manager.registerNotificationFilter(QMessageFilter::byStandardFolder(QMessage::InboxFolder));
connect(&m_service, SIGNAL(messagesFound(const QMessageIdList&)), this, SLOT(messagesFound(const QMessageIdList&)));
m_accountList = m_manager.queryAccounts(QMessageAccountFilter(), QMessageAccountSortOrder(), 10 , 0);
for(int i = 0; i < m_accountList.count(); ++i){
QMessageAccount account = m_accountList[i];
accountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
accountComboBox_2->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
folderAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
timeAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
timestampAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
subjectAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
recipientAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
statusAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
senderAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
priorityAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
}
connect(accountComboBox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(sortParentAccountId()));
timestampdateTimeEdit->setDateTime(QDateTime::currentDateTime());
receptiondateTimeEdit->setDateTime(QDateTime::currentDateTime());
}
void MessagingEx::createMenus()
{
QAction* sendAction = new QAction(tr("Send"), this);
connect(sendAction, SIGNAL(triggered()), this, SLOT(send()));
m_createEmail = new QAction(tr("Create Message"), this);
m_createSms = new QAction(tr("Create Text Message"), this);
m_createMms = new QAction(tr("Create Multimedia Message"), this);
m_sortId = new QAction(tr("By message id"), this);
m_sortType = new QAction(tr("By priority"), this);
m_sortSender = new QAction(tr("By sender"), this);
m_sortRecipient = new QAction(tr("By recipient"), this);
m_sortSubject = new QAction(tr("By subject"), this);
m_sortTimestamp = new QAction(tr("By timestamp"), this);
m_sortReceptiontimestamp = new QAction(tr("By receptiontimestamp"), this);
m_sortStatus = new QAction(tr("By status"), this);
m_sortParentAccountId = new QAction(tr("Messages by account"), this);
m_sortStandardFolder = new QAction(tr("By standardFolder"), this);
m_result = new QAction(tr("Results"), this);
connect(m_createEmail, SIGNAL(triggered(bool)), m_createEmail, SLOT(setEnabled(bool)));
connect(m_createEmail, SIGNAL(triggered(bool)), m_createSms, SLOT(setDisabled(bool)));
connect(m_createEmail, SIGNAL(triggered(bool)), m_createMms, SLOT(setDisabled(bool)));
connect(m_createSms, SIGNAL(triggered(bool)), m_createSms, SLOT(setEnabled(bool)));
connect(m_createSms, SIGNAL(triggered(bool)), m_createEmail, SLOT(setDisabled(bool)));
connect(m_createSms, SIGNAL(triggered(bool)), m_createMms, SLOT(setDisabled(bool)));
connect(m_createMms, SIGNAL(triggered(bool)), m_createMms, SLOT(setEnabled(bool)));
connect(m_createMms, SIGNAL(triggered(bool)), m_createEmail, SLOT(setDisabled(bool)));
connect(m_createMms, SIGNAL(triggered(bool)), m_createSms, SLOT(setDisabled(bool)));
QSignalMapper* signalMapper = new QSignalMapper(this);
connect(m_createSms, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_createSms, 0);
connect(m_createEmail, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_createEmail, 1);
connect(m_createMms, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_createMms, 2);
connect(m_sortType, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortType, 3);
connect(m_sortSender, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortSender, 4);
connect(m_sortRecipient, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortRecipient, 5);
connect(m_sortSubject, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortSubject, 6);
connect(m_sortStatus, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortStatus, 7);
connect(m_sortTimestamp, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortTimestamp, 8);
connect(m_sortReceptiontimestamp, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortReceptiontimestamp, 9);
connect(m_sortStandardFolder, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortStandardFolder, 10);
connect(m_sortParentAccountId, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_sortParentAccountId, 11);
connect(m_result, SIGNAL(triggered()), signalMapper, SLOT(map()));
signalMapper->setMapping(m_result, 12);
connect(signalMapper, SIGNAL(mapped(int)), stackedWidget, SLOT(setCurrentIndex(int)));
connect(appendAttachment,SIGNAL(clicked(bool)),this,SLOT(addAttachment()));
connect(addEmailAttachmentButton,SIGNAL(clicked(bool)),this,SLOT(addAttachment()));
connect(removeAttachmentButton,SIGNAL(clicked(bool)),this,SLOT(removeAttachment()));
connect(removeAttachmentButton_2,SIGNAL(clicked(bool)),this,SLOT(removeAttachment()));
connect(addMessageButton,SIGNAL(clicked(bool)),this,SLOT(addMessage()));
filterMenu = menuBar()->addMenu(tr("&Filter"));
filterMenu->addAction(m_sortId);
m_sortId->setDisabled(true);
// TODO: add filter by id functionality
filterMenu->addAction(m_sortParentAccountId);
connect(findMessagesButton, SIGNAL(clicked(bool)),this,SLOT(findMessages()));
filterMenu->addAction(m_sortType);
connect(typeButton, SIGNAL(clicked(bool)),this,SLOT(sortType()));
filterMenu->addAction(m_sortSender);
connect(senderButton, SIGNAL(clicked(bool)),this,SLOT(sortSender()));
filterMenu->addAction(m_sortRecipient);
connect(recipientButton, SIGNAL(clicked(bool)),this,SLOT(sortRecipient()));
filterMenu->addAction(m_sortSubject);
connect(subjectButton, SIGNAL(clicked(bool)),this,SLOT(sortSubject()));
filterMenu->addAction(m_sortTimestamp);
connect(timestampButton, SIGNAL(clicked(bool)),this,SLOT(sortTimestamp()));
filterMenu->addAction(m_sortReceptiontimestamp);
connect(receptionButton, SIGNAL(clicked(bool)),this,SLOT(sortReceptiontimestamp()));
filterMenu->addAction(m_sortStatus);
connect(statusButton, SIGNAL(clicked(bool)),this,SLOT(sortStatus()));
filterMenu->addAction(m_sortStandardFolder);
connect(folderButton, SIGNAL(clicked(bool)),this,SLOT(sortStandardFolder()));
composeMenu = menuBar()->addMenu(tr("&Compose"));
m_composeSMS = new QAction(tr("Compose SMS"), this);
composeMenu->addAction(m_composeSMS);
connect(m_composeSMS, SIGNAL(triggered()), this, SLOT(composeSMS()));
m_composeMMS = new QAction(tr("Compose MMS"), this);
composeMenu->addAction(m_composeMMS);
connect(m_composeMMS, SIGNAL(triggered()), this, SLOT(composeMMS()));
m_composeEmail = new QAction(tr("Compose Email"), this);
composeMenu->addAction(m_composeEmail);
connect(m_composeEmail, SIGNAL(triggered()), this, SLOT(composeEmail()));
QAction* exitAct = new QAction(tr("Exit"), this);
menuBar()->addAction(sendAction);
QMenu* listMenu = menuBar()->addMenu(tr("Email accounts"));
menuBar()->addAction(m_createEmail);
menuBar()->addAction(m_createSms);
menuBar()->addAction(m_createMms);
menuBar()->addAction(exitAct);
connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
}
void MessagingEx::send()
{
if ( stackedWidget->currentIndex() == 0 )
on_sendSmsButton_clicked();
if ( stackedWidget->currentIndex() == 1 )
on_sendEmailButton_clicked();
if ( stackedWidget->currentIndex() == 2 )
on_sendMmsButton_clicked();
}
void MessagingEx::addAttachment()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Message Example"), "c:\\Data");
QString labelText;
if (!fileName.isNull())
{
m_attachments.append(fileName);
m_fileNames.append(fileName);
m_fileNames.append("\n");
}
attachmentLabel->setText(m_fileNames);
emailAttachmentLabel->setText(m_fileNames);
}
void MessagingEx::removeAttachment()
{
m_attachments.clear();
emailAttachmentLabel->clear();
m_fileNames.clear();
}
void MessagingEx::composeSMS()
{
QMessage message;
message.setType(QMessage::Sms);
m_service.compose(message);
}
void MessagingEx::composeMMS()
{
QMessage message;
message.setType(QMessage::Mms);
m_service.compose(message);
}
void MessagingEx::composeEmail()
{
QMessage message;
message.setType(QMessage::Email);
int index = accountComboBox->currentIndex();
m_account = QMessageAccount(m_accountList[index]).id();
QMessage::TypeFlags types = m_account.messageTypes();
if (!emailAddressEdit->text().isEmpty()){
message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
}
message.setParentAccountId(m_account.id());
message.setSubject(subjectEdit->text());
message.setBody(QString(emailMessageEdit->toPlainText()));
message.appendAttachments(m_attachments);
m_service.compose(message);
}
void MessagingEx::addMessage()
{
QMessage message;
int index = accountComboBox->currentIndex();
m_account = QMessageAccount(m_accountList[index]).id();
QMessage::TypeFlags types = m_account.messageTypes();
if (!emailAddressEdit->text().isEmpty()){
message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
}
message.setParentAccountId(m_account.id());
message.setSubject(subjectEdit->text());
message.setBody(QString(emailMessageEdit->toPlainText()));
message.appendAttachments(m_attachments);
if (!m_attachments.isEmpty() && types == QMessage::Sms){
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("Cannot send attachments via Sms!"));
msgBox.exec();
m_attachments.clear();
m_fileNames.clear();
attachmentLabel->clear();
} else {
m_manager.addMessage(&message);
emailAddressEdit->clear();
subjectEdit->clear();
emailMessageEdit->clear();
m_attachments.clear();
m_fileNames.clear();
emailAttachmentLabel->clear();
attachmentLabel->clear();
}
}
void MessagingEx::on_sendSmsButton_clicked()
{
QMessage message;
foreach (const QMessageAccountId& id,m_accountList) {
QMessageAccount acc(id);
if(acc.messageTypes() & QMessage::Sms) message.setParentAccountId(id);
}
message.setType(QMessage::Sms);
message.setTo(QMessageAddress(QMessageAddress::Phone, phoneNumberEdit->text()));
message.setBody(QString(smsMessageEdit->toPlainText()));
if (!QString(phoneNumberEdit->text()).isEmpty())
{
if (m_service.send(message))
{
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("SMS was successfully sent"));
msgBox.exec();
}
phoneNumberEdit->clear();
smsMessageEdit->clear();
}
else
{
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("Set Phone number!"));
msgBox.exec();
}
}
void MessagingEx::on_sendMmsButton_clicked()
{
QMessage message;
message.setType(QMessage::Mms);
message.setTo(QMessageAddress(QMessageAddress::Email, mmsPhoneNumberEdit->text()));
message.setSubject(mmsSubjectEdit->text());
message.setBody(QString(mmsBodyEdit->toPlainText()));
message.appendAttachments(m_attachments);
if (!QString(mmsPhoneNumberEdit->text()).isEmpty())
{
if (m_service.send(message))
{
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("MMS was successfully sent"));
msgBox.exec();
}
mmsPhoneNumberEdit->clear();
mmsSubjectEdit->clear();
mmsBodyEdit->clear();
attachmentLabel->clear();
m_attachments.clear();
m_fileNames.clear();
emailAttachmentLabel->clear();
}
else
{
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("Set Phone number!"));
msgBox.exec();
}
}
void MessagingEx::messageReceived(const QMessageId& aId)
{
m_service.show(aId);
}
void MessagingEx::messageRemoved(const QMessageId& aId)
{
Q_UNUSED(aId);
}
void MessagingEx::messageUpdated(const QMessageId& aId)
{
Q_UNUSED(aId);
}
void MessagingEx::queryMessages()
{
}
void MessagingEx::accountSelected(int index)
{
Q_UNUSED(index);
}
void MessagingEx::on_sendEmailButton_clicked()
{
QMessage message;
int index = accountComboBox->currentIndex();
m_account = QMessageAccount(m_accountList[index]).id();
QMessage::TypeFlags types = m_account.messageTypes();
if (!emailAddressEdit->text().isEmpty()){
message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
}
message.setParentAccountId(m_account.id());
message.setSubject(subjectEdit->text());
message.setBody(QString(emailMessageEdit->toPlainText()));
message.appendAttachments(m_attachments);
if (!m_attachments.isEmpty() && types == QMessage::Sms){
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("Cannot send attachments via Sms!"));
msgBox.exec();
m_attachments.clear();
m_fileNames.clear();
attachmentLabel->clear();
} else if (QString(emailAddressEdit->text()).isEmpty()){
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
msgBox.setText(tr("Set address!"));
msgBox.exec();
} else {
if (m_service.send(message)){
emailAddressEdit->clear();
subjectEdit->clear();
emailMessageEdit->clear();
m_attachments.clear();
m_fileNames.clear();
emailAttachmentLabel->clear();
attachmentLabel->clear();
}
}
}
void MessagingEx::sortType()
{
QMessageFilter filter;
int priorityindex = priorityComboBox->currentIndex();
// 0 = No priority filtering 1 = High Priority, 2 = Normal Priority, 3 = Low Priority
switch(priorityindex){
case 0:
break;
case 1:
filter = QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::Equal);
break;
case 2:
filter = QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::Equal);
break;
case 3:
filter = QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::Equal);
break;
case 4:
filter = QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::NotEqual);
break;
case 5:
filter = QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::NotEqual);
break;
case 6:
filter = QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::NotEqual);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = priorityAccountComboBox->itemData(priorityAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortSender()
{
QString sender = senderEdit->text();
QMessageFilter filter;
int index = sendercomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::bySender(sender, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::bySender(sender, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::bySender(sender, QMessageDataComparator::Includes);
break;
case 3:
filter = QMessageFilter::bySender(sender, QMessageDataComparator::Excludes);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = senderAccountComboBox->itemData(senderAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortRecipient()
{
QString recipient = recipientEdit->text();
QMessageFilter filter;
int index = recipientcomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::byRecipients(recipient, QMessageDataComparator::Includes);
break;
case 1:
filter = QMessageFilter::byRecipients(recipient, QMessageDataComparator::Excludes);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = recipientAccountComboBox->itemData(recipientAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortSubject()
{
QString subject = subjectEdit_2->text();
QMessageFilter filter;
int index = subjectcomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::bySubject(subject, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Includes);
break;
case 3:
filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Excludes);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = subjectAccountComboBox->itemData(subjectAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortTimestamp()
{
QDateTime time = timestampdateTimeEdit->dateTime();
QMessageFilter filter;
int index = timestampcomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::LessThan);
break;
case 3:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::LessThanEqual);
break;
case 4:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::GreaterThan);
break;
case 5:
filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::GreaterThanEqual);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = timestampAccountComboBox->itemData(timestampAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortReceptiontimestamp()
{
QDateTime time = receptiondateTimeEdit->dateTime();
QMessageFilter filter;
int index = receptioncomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::LessThan);
break;
case 3:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::LessThanEqual);
break;
case 4:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::GreaterThan);
break;
case 5:
filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::GreaterThanEqual);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = timeAccountComboBox->itemData(timeAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortStatus()
{
QMessageFilter filter;
int index = statuscomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes);
break;
case 3:
filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Excludes);
break;
case 4:
filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Equal);
break;
case 5:
filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::NotEqual);
break;
case 6:
filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Includes);
break;
case 7:
filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Excludes);
break;
case 8:
filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Equal);
break;
case 9:
filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::NotEqual);
break;
case 10:
filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Includes);
break;
case 11:
filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Excludes);
break;
case 12:
filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Equal);
break;
case 13:
filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::NotEqual);
break;
case 14:
filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Includes);
break;
case 15:
filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Excludes);
break;
}
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
QString accountId = statusAccountComboBox->itemData(statusAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::sortParentAccountId()
{
int index = accountComboBox_2->currentIndex();
folderComboBox->clear ();
QMessageFolderFilter filter = QMessageFolderFilter::byParentAccountId(m_accountList[index]);// & QMessageFolderFilter::byName("Inbox");
QMessageFolderIdList ids = m_manager.queryFolders(filter);
for (int i=0; i < ids.count(); i++) {
QMessageFolder folder;
folder = m_manager.folder(ids[i]);
QString name = folder.name();
folderComboBox->addItem(name, folder.id().toString());
}
}
void MessagingEx::sortStandardFolder()
{
QMessageFilter filter;
int index = foldercomboBox->currentIndex();
switch(index){
case 0:
filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::NotEqual);
break;
case 2:
filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::Equal);
break;
case 3:
filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::NotEqual);
break;
case 4:
filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal);
break;
case 5:
filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::NotEqual);
break;
case 6:
filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::Equal);
break;
case 7:
filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::NotEqual);
break;
case 8:
filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal);
break;
case 9:
filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::NotEqual);
break;
}
QString accountId = folderAccountComboBox->itemData(folderAccountComboBox->currentIndex()).toString();
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
QMessageSortOrder sortOrder;
sortOrder.byTimeStamp(Qt::DescendingOrder);
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::findMessages()
{
QString accountId = accountComboBox_2->itemData(accountComboBox_2->currentIndex()).toString();
int folderIndex = folderComboBox->currentIndex();
int defaultIndex = defaultAccountBox->currentIndex();
QMessageFilter filter;
if (defaultIndex >= 0 && folderComboBox->count() == 0){
switch(defaultIndex){
case 0:
filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::Equal);
break;
case 1:
filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::Equal);
break;
case 2:
filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal);
break;
case 3:
filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::Equal);
break;
case 4:
filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal);
break;
}
filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
}
else if (folderIndex >= 0) {
QString folderId = folderComboBox->itemData(folderComboBox->currentIndex()).toString();
filter = QMessageFilter::byParentFolderId(QMessageFolderId(folderId), QMessageDataComparator::Equal);
} else {
filter = QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
}
QMessageSortOrder sortOrder = sortOrder.byTimeStamp(Qt::DescendingOrder);
m_service.queryMessages(filter, sortOrder, 100, 0);
}
void MessagingEx::messagesFound(const QMessageIdList &ids)
{
QString labelText;
QStandardItemModel* standardModel = new QStandardItemModel(this);
messageListView->setModel(standardModel);
stackedWidget->setCurrentIndex(12);
for (int i=0; i < ids.count(); i++) {
QMessage message = m_manager.message(ids[i]);
QString from = message.from().addressee();
QString subject = message.subject();
if (subject.length() == 0) {
subject = message.textContent();
}
// QString body = QString(message.textContent().left(20));
// labelText.append(from);
QStandardItem* item1 = new QStandardItem(from);
QStandardItem* item2 = new QStandardItem(subject);
standardModel->appendRow(item1);
standardModel->appendRow(item2);
messageListView->setModel(standardModel);
}
}
// End of file