tests/messagingex/messagingex.cpp
changeset 0 876b1a06bc25
equal deleted inserted replaced
-1:000000000000 0:876b1a06bc25
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the Qt Mobility Components.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 #include "messagingex.h"
       
    42 #include "qmessagefilter.h"
       
    43 #include <QFileDialog>
       
    44 
       
    45 MessagingEx::MessagingEx(QWidget* parent)
       
    46      : QMainWindow(parent)
       
    47 {
       
    48     setupUi(this);
       
    49     createMenus();
       
    50     connect(&m_manager, SIGNAL(messageAdded(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageReceived(const QMessageId&)));
       
    51     connect(&m_manager, SIGNAL(messageRemoved(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageRemoved(const QMessageId&)));
       
    52     connect(&m_manager, SIGNAL(messageUpdated(const QMessageId&, const QMessageManager::NotificationFilterIdSet&)), this, SLOT(messageUpdated(const QMessageId&)));
       
    53     m_manager.registerNotificationFilter(QMessageFilter::byStandardFolder(QMessage::InboxFolder));
       
    54     connect(&m_service, SIGNAL(messagesFound(const QMessageIdList&)), this, SLOT(messagesFound(const QMessageIdList&)));
       
    55     m_accountList = m_manager.queryAccounts(QMessageAccountFilter(), QMessageAccountSortOrder(), 10 , 0);
       
    56     for(int i = 0; i < m_accountList.count(); ++i){
       
    57         QMessageAccount account = m_accountList[i];
       
    58         accountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    59         accountComboBox_2->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    60         folderAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    61         timeAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    62         timestampAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    63         subjectAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    64         recipientAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    65         statusAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    66         senderAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    67         priorityAccountComboBox->addItem(QString("%1 - %2").arg(i+1).arg(account.name()),account.id().toString());
       
    68     }
       
    69     connect(accountComboBox_2,SIGNAL(currentIndexChanged(int)),this,SLOT(sortParentAccountId()));
       
    70 
       
    71     timestampdateTimeEdit->setDateTime(QDateTime::currentDateTime());
       
    72     receptiondateTimeEdit->setDateTime(QDateTime::currentDateTime());
       
    73 }
       
    74 
       
    75 void MessagingEx::createMenus()
       
    76 {
       
    77     QAction* sendAction = new QAction(tr("Send"), this);
       
    78     connect(sendAction, SIGNAL(triggered()), this, SLOT(send()));
       
    79     
       
    80     m_createEmail = new QAction(tr("Create Message"), this);
       
    81     m_createSms = new QAction(tr("Create Text Message"), this);
       
    82     m_createMms = new QAction(tr("Create Multimedia Message"), this);
       
    83     m_sortId = new QAction(tr("By message id"), this);
       
    84     m_sortType = new QAction(tr("By priority"), this);
       
    85     m_sortSender = new QAction(tr("By sender"), this);
       
    86     m_sortRecipient = new QAction(tr("By recipient"), this);
       
    87     m_sortSubject = new QAction(tr("By subject"), this);
       
    88     m_sortTimestamp = new QAction(tr("By timestamp"), this);
       
    89     m_sortReceptiontimestamp = new QAction(tr("By receptiontimestamp"), this);
       
    90     m_sortStatus = new QAction(tr("By status"), this);
       
    91     m_sortParentAccountId = new QAction(tr("Messages by account"), this);
       
    92     m_sortStandardFolder = new QAction(tr("By standardFolder"), this);
       
    93     m_result = new QAction(tr("Results"), this);
       
    94     
       
    95     connect(m_createEmail, SIGNAL(triggered(bool)), m_createEmail, SLOT(setEnabled(bool)));
       
    96     connect(m_createEmail, SIGNAL(triggered(bool)), m_createSms, SLOT(setDisabled(bool)));
       
    97     connect(m_createEmail, SIGNAL(triggered(bool)), m_createMms, SLOT(setDisabled(bool)));
       
    98     
       
    99     connect(m_createSms, SIGNAL(triggered(bool)), m_createSms, SLOT(setEnabled(bool)));
       
   100     connect(m_createSms, SIGNAL(triggered(bool)), m_createEmail, SLOT(setDisabled(bool)));
       
   101     connect(m_createSms, SIGNAL(triggered(bool)), m_createMms, SLOT(setDisabled(bool)));
       
   102     
       
   103     connect(m_createMms, SIGNAL(triggered(bool)), m_createMms, SLOT(setEnabled(bool)));
       
   104     connect(m_createMms, SIGNAL(triggered(bool)), m_createEmail, SLOT(setDisabled(bool)));
       
   105     connect(m_createMms, SIGNAL(triggered(bool)), m_createSms, SLOT(setDisabled(bool)));
       
   106     
       
   107     QSignalMapper* signalMapper = new QSignalMapper(this);
       
   108     connect(m_createSms, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   109     signalMapper->setMapping(m_createSms, 0);
       
   110     connect(m_createEmail, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   111     signalMapper->setMapping(m_createEmail, 1);
       
   112     connect(m_createMms, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   113     signalMapper->setMapping(m_createMms, 2);
       
   114     connect(m_sortType, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   115     signalMapper->setMapping(m_sortType, 3);
       
   116     connect(m_sortSender, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   117     signalMapper->setMapping(m_sortSender, 4);
       
   118     connect(m_sortRecipient, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   119     signalMapper->setMapping(m_sortRecipient, 5);
       
   120     connect(m_sortSubject, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   121     signalMapper->setMapping(m_sortSubject, 6);
       
   122     connect(m_sortStatus, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   123     signalMapper->setMapping(m_sortStatus, 7);
       
   124     connect(m_sortTimestamp, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   125     signalMapper->setMapping(m_sortTimestamp, 8);
       
   126     connect(m_sortReceptiontimestamp, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   127     signalMapper->setMapping(m_sortReceptiontimestamp, 9);
       
   128     connect(m_sortStandardFolder, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   129     signalMapper->setMapping(m_sortStandardFolder, 10);
       
   130     connect(m_sortParentAccountId, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   131     signalMapper->setMapping(m_sortParentAccountId, 11);
       
   132     connect(m_result, SIGNAL(triggered()), signalMapper, SLOT(map()));
       
   133     signalMapper->setMapping(m_result, 12);
       
   134     
       
   135     connect(signalMapper, SIGNAL(mapped(int)), stackedWidget, SLOT(setCurrentIndex(int)));
       
   136     
       
   137     connect(appendAttachment,SIGNAL(clicked(bool)),this,SLOT(addAttachment()));
       
   138     connect(addEmailAttachmentButton,SIGNAL(clicked(bool)),this,SLOT(addAttachment()));
       
   139     connect(removeAttachmentButton,SIGNAL(clicked(bool)),this,SLOT(removeAttachment()));
       
   140     connect(removeAttachmentButton_2,SIGNAL(clicked(bool)),this,SLOT(removeAttachment()));
       
   141     connect(addMessageButton,SIGNAL(clicked(bool)),this,SLOT(addMessage()));
       
   142     
       
   143     filterMenu = menuBar()->addMenu(tr("&Filter"));
       
   144     filterMenu->addAction(m_sortId);
       
   145     m_sortId->setDisabled(true);
       
   146     // TODO: add filter by id functionality
       
   147     filterMenu->addAction(m_sortParentAccountId);
       
   148     connect(findMessagesButton, SIGNAL(clicked(bool)),this,SLOT(findMessages()));
       
   149     filterMenu->addAction(m_sortType);
       
   150     connect(typeButton, SIGNAL(clicked(bool)),this,SLOT(sortType()));
       
   151     filterMenu->addAction(m_sortSender);
       
   152     connect(senderButton, SIGNAL(clicked(bool)),this,SLOT(sortSender()));
       
   153     filterMenu->addAction(m_sortRecipient);
       
   154     connect(recipientButton, SIGNAL(clicked(bool)),this,SLOT(sortRecipient()));
       
   155     filterMenu->addAction(m_sortSubject);
       
   156     connect(subjectButton, SIGNAL(clicked(bool)),this,SLOT(sortSubject()));
       
   157     filterMenu->addAction(m_sortTimestamp);
       
   158     connect(timestampButton, SIGNAL(clicked(bool)),this,SLOT(sortTimestamp()));
       
   159     filterMenu->addAction(m_sortReceptiontimestamp);
       
   160     connect(receptionButton, SIGNAL(clicked(bool)),this,SLOT(sortReceptiontimestamp()));
       
   161     filterMenu->addAction(m_sortStatus);
       
   162     connect(statusButton, SIGNAL(clicked(bool)),this,SLOT(sortStatus()));
       
   163     filterMenu->addAction(m_sortStandardFolder);
       
   164     connect(folderButton, SIGNAL(clicked(bool)),this,SLOT(sortStandardFolder()));
       
   165     
       
   166     composeMenu = menuBar()->addMenu(tr("&Compose"));
       
   167 
       
   168     m_composeSMS = new QAction(tr("Compose SMS"), this);
       
   169     composeMenu->addAction(m_composeSMS);
       
   170     connect(m_composeSMS, SIGNAL(triggered()), this, SLOT(composeSMS()));
       
   171     
       
   172     m_composeMMS = new QAction(tr("Compose MMS"), this);
       
   173     composeMenu->addAction(m_composeMMS);
       
   174     connect(m_composeMMS, SIGNAL(triggered()), this, SLOT(composeMMS()));
       
   175     
       
   176     m_composeEmail = new QAction(tr("Compose Email"), this);
       
   177     composeMenu->addAction(m_composeEmail);
       
   178     connect(m_composeEmail, SIGNAL(triggered()), this, SLOT(composeEmail()));
       
   179      
       
   180     QAction* exitAct = new QAction(tr("Exit"), this);
       
   181     menuBar()->addAction(sendAction);
       
   182     QMenu* listMenu = menuBar()->addMenu(tr("Email accounts"));
       
   183 
       
   184     menuBar()->addAction(m_createEmail);
       
   185     menuBar()->addAction(m_createSms);
       
   186     menuBar()->addAction(m_createMms);
       
   187     menuBar()->addAction(exitAct);
       
   188     connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
       
   189 }
       
   190 
       
   191 void MessagingEx::send()
       
   192 {
       
   193     if ( stackedWidget->currentIndex() == 0 )
       
   194         on_sendSmsButton_clicked();
       
   195     if ( stackedWidget->currentIndex() == 1 )
       
   196         on_sendEmailButton_clicked();
       
   197     if ( stackedWidget->currentIndex() == 2 )
       
   198         on_sendMmsButton_clicked();
       
   199 }
       
   200 
       
   201 void MessagingEx::addAttachment()
       
   202 {
       
   203     QString fileName = QFileDialog::getOpenFileName(this, tr("Message Example"), "c:\\Data");
       
   204     QString labelText;
       
   205     if (!fileName.isNull()) 
       
   206     {
       
   207         m_attachments.append(fileName);
       
   208         m_fileNames.append(fileName);
       
   209         m_fileNames.append("\n");
       
   210     } 
       
   211     attachmentLabel->setText(m_fileNames);
       
   212     emailAttachmentLabel->setText(m_fileNames);
       
   213 }
       
   214 
       
   215 void MessagingEx::removeAttachment()
       
   216 {
       
   217     m_attachments.clear();
       
   218     emailAttachmentLabel->clear();
       
   219     m_fileNames.clear();
       
   220 }
       
   221 void MessagingEx::composeSMS()
       
   222 {
       
   223     QMessage message;
       
   224     message.setType(QMessage::Sms);
       
   225     m_service.compose(message);
       
   226 }
       
   227 
       
   228 void MessagingEx::composeMMS()
       
   229 {
       
   230     QMessage message;
       
   231     message.setType(QMessage::Mms);
       
   232     m_service.compose(message);
       
   233 }
       
   234 
       
   235 void MessagingEx::composeEmail()
       
   236 {
       
   237     QMessage message;
       
   238     message.setType(QMessage::Email);
       
   239     int index = accountComboBox->currentIndex();
       
   240     m_account = QMessageAccount(m_accountList[index]).id();
       
   241     QMessage::TypeFlags types = m_account.messageTypes();
       
   242     
       
   243     if (!emailAddressEdit->text().isEmpty()){
       
   244         message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
       
   245     }
       
   246     
       
   247     message.setParentAccountId(m_account.id());
       
   248     message.setSubject(subjectEdit->text());
       
   249    
       
   250     message.setBody(QString(emailMessageEdit->toPlainText()));
       
   251     message.appendAttachments(m_attachments);
       
   252     m_service.compose(message);
       
   253 }
       
   254 
       
   255 void MessagingEx::addMessage()
       
   256 {
       
   257     QMessage message;
       
   258     int index = accountComboBox->currentIndex();
       
   259     m_account = QMessageAccount(m_accountList[index]).id();
       
   260     QMessage::TypeFlags types = m_account.messageTypes();
       
   261     
       
   262     if (!emailAddressEdit->text().isEmpty()){
       
   263         message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
       
   264     }
       
   265     
       
   266     message.setParentAccountId(m_account.id());
       
   267     message.setSubject(subjectEdit->text());
       
   268     message.setBody(QString(emailMessageEdit->toPlainText()));
       
   269     message.appendAttachments(m_attachments);
       
   270     
       
   271     if (!m_attachments.isEmpty() && types == QMessage::Sms){
       
   272         QMessageBox msgBox;
       
   273         msgBox.setStandardButtons(QMessageBox::Close);
       
   274         msgBox.setText(tr("Cannot send attachments via Sms!"));
       
   275         msgBox.exec();
       
   276         m_attachments.clear();
       
   277         m_fileNames.clear();
       
   278         attachmentLabel->clear();
       
   279     } else {
       
   280         m_manager.addMessage(&message);
       
   281         emailAddressEdit->clear();
       
   282         subjectEdit->clear();
       
   283         emailMessageEdit->clear();  
       
   284         m_attachments.clear();
       
   285         m_fileNames.clear();
       
   286         emailAttachmentLabel->clear();
       
   287         attachmentLabel->clear();
       
   288         }       
       
   289 }
       
   290 
       
   291 
       
   292 void MessagingEx::on_sendSmsButton_clicked()
       
   293 {
       
   294     QMessage message;
       
   295     foreach (const QMessageAccountId& id,m_accountList) {
       
   296        QMessageAccount acc(id);
       
   297        if(acc.messageTypes() & QMessage::Sms) message.setParentAccountId(id);
       
   298     }
       
   299     message.setType(QMessage::Sms);
       
   300     message.setTo(QMessageAddress(QMessageAddress::Phone, phoneNumberEdit->text()));
       
   301     message.setBody(QString(smsMessageEdit->toPlainText()));
       
   302     
       
   303     if (!QString(phoneNumberEdit->text()).isEmpty())
       
   304     {
       
   305         if (m_service.send(message))
       
   306         {
       
   307             QMessageBox msgBox;
       
   308             msgBox.setStandardButtons(QMessageBox::Close);
       
   309             msgBox.setText(tr("SMS was successfully sent"));
       
   310             msgBox.exec();
       
   311         }
       
   312         phoneNumberEdit->clear();
       
   313         smsMessageEdit->clear();
       
   314     }
       
   315     else
       
   316     {
       
   317         QMessageBox msgBox;
       
   318         msgBox.setStandardButtons(QMessageBox::Close);
       
   319         msgBox.setText(tr("Set Phone number!"));
       
   320         msgBox.exec();
       
   321     }
       
   322 }
       
   323 
       
   324 
       
   325 void MessagingEx::on_sendMmsButton_clicked()
       
   326 {
       
   327     QMessage message;
       
   328     message.setType(QMessage::Mms);
       
   329     
       
   330     message.setTo(QMessageAddress(QMessageAddress::Email, mmsPhoneNumberEdit->text()));
       
   331     message.setSubject(mmsSubjectEdit->text());
       
   332     message.setBody(QString(mmsBodyEdit->toPlainText()));
       
   333     message.appendAttachments(m_attachments);
       
   334     
       
   335     if (!QString(mmsPhoneNumberEdit->text()).isEmpty())
       
   336     {
       
   337         if (m_service.send(message))
       
   338         {
       
   339             QMessageBox msgBox;
       
   340             msgBox.setStandardButtons(QMessageBox::Close);
       
   341             msgBox.setText(tr("MMS was successfully sent"));
       
   342             msgBox.exec();
       
   343         }
       
   344         mmsPhoneNumberEdit->clear();
       
   345         mmsSubjectEdit->clear();
       
   346         mmsBodyEdit->clear();
       
   347         attachmentLabel->clear();
       
   348         m_attachments.clear();
       
   349         m_fileNames.clear();
       
   350         emailAttachmentLabel->clear();
       
   351         
       
   352     }
       
   353     else
       
   354     {
       
   355         QMessageBox msgBox;
       
   356         msgBox.setStandardButtons(QMessageBox::Close);
       
   357         msgBox.setText(tr("Set Phone number!"));
       
   358         msgBox.exec();
       
   359     }
       
   360 }
       
   361 
       
   362 void MessagingEx::messageReceived(const QMessageId& aId)
       
   363 {
       
   364     m_service.show(aId);
       
   365 }
       
   366 
       
   367 void MessagingEx::messageRemoved(const QMessageId& aId)
       
   368 {
       
   369     Q_UNUSED(aId);
       
   370 }
       
   371 
       
   372 void MessagingEx::messageUpdated(const QMessageId& aId)
       
   373 {
       
   374     Q_UNUSED(aId);
       
   375 }
       
   376 
       
   377 void MessagingEx::queryMessages()
       
   378 {   
       
   379 
       
   380 }
       
   381 
       
   382 void MessagingEx::accountSelected(int index)
       
   383 {   
       
   384     Q_UNUSED(index); 
       
   385 }
       
   386 
       
   387 void MessagingEx::on_sendEmailButton_clicked()
       
   388 {
       
   389     QMessage message;
       
   390     int index = accountComboBox->currentIndex();
       
   391     m_account = QMessageAccount(m_accountList[index]).id();
       
   392     QMessage::TypeFlags types = m_account.messageTypes();
       
   393     
       
   394     if (!emailAddressEdit->text().isEmpty()){
       
   395         message.setTo(QMessageAddress(QMessageAddress::Email, emailAddressEdit->text()));
       
   396     }
       
   397     
       
   398     message.setParentAccountId(m_account.id());
       
   399     message.setSubject(subjectEdit->text());
       
   400     message.setBody(QString(emailMessageEdit->toPlainText()));
       
   401     message.appendAttachments(m_attachments);
       
   402     
       
   403     if (!m_attachments.isEmpty() && types == QMessage::Sms){
       
   404         QMessageBox msgBox;
       
   405         msgBox.setStandardButtons(QMessageBox::Close);
       
   406         msgBox.setText(tr("Cannot send attachments via Sms!"));
       
   407         msgBox.exec();
       
   408         m_attachments.clear();
       
   409         m_fileNames.clear();
       
   410         attachmentLabel->clear();
       
   411     } else if (QString(emailAddressEdit->text()).isEmpty()){    
       
   412         QMessageBox msgBox;
       
   413         msgBox.setStandardButtons(QMessageBox::Close);
       
   414         msgBox.setText(tr("Set address!"));
       
   415         msgBox.exec();
       
   416     } else {
       
   417         if (m_service.send(message)){
       
   418             emailAddressEdit->clear();
       
   419             subjectEdit->clear();
       
   420             emailMessageEdit->clear();  
       
   421             m_attachments.clear();
       
   422             m_fileNames.clear();
       
   423             emailAttachmentLabel->clear();
       
   424             attachmentLabel->clear();
       
   425         }
       
   426     }   
       
   427 }
       
   428 
       
   429 void MessagingEx::sortType()
       
   430 {   
       
   431     QMessageFilter filter;
       
   432     int priorityindex = priorityComboBox->currentIndex();
       
   433     // 0 = No priority filtering 1 = High Priority, 2 = Normal Priority, 3 = Low Priority
       
   434     switch(priorityindex){
       
   435         case 0:
       
   436             break;
       
   437         case 1:
       
   438             filter = QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::Equal);
       
   439             break;
       
   440         case 2:
       
   441             filter = QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::Equal);
       
   442             break;
       
   443         case 3:
       
   444             filter = QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::Equal);
       
   445             break;
       
   446         case 4:
       
   447             filter = QMessageFilter::byPriority(QMessage::HighPriority, QMessageDataComparator::NotEqual);
       
   448             break;
       
   449         case 5:
       
   450             filter = QMessageFilter::byPriority(QMessage::NormalPriority, QMessageDataComparator::NotEqual);
       
   451             break;
       
   452         case 6:
       
   453             filter = QMessageFilter::byPriority(QMessage::LowPriority, QMessageDataComparator::NotEqual);
       
   454             break;
       
   455     }
       
   456     
       
   457     QMessageSortOrder sortOrder;
       
   458     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   459     QString accountId = priorityAccountComboBox->itemData(priorityAccountComboBox->currentIndex()).toString();
       
   460     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   461     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   462     
       
   463 }
       
   464 
       
   465 void MessagingEx::sortSender()
       
   466 {
       
   467     QString sender = senderEdit->text();
       
   468     QMessageFilter filter;
       
   469     int index = sendercomboBox->currentIndex();
       
   470     switch(index){
       
   471         case 0:
       
   472             filter = QMessageFilter::bySender(sender, QMessageDataComparator::Equal);
       
   473             break;
       
   474         case 1:
       
   475             filter = QMessageFilter::bySender(sender, QMessageDataComparator::NotEqual);
       
   476             break;
       
   477         case 2:
       
   478             filter = QMessageFilter::bySender(sender, QMessageDataComparator::Includes);
       
   479             break;
       
   480         case 3:
       
   481             filter = QMessageFilter::bySender(sender, QMessageDataComparator::Excludes);
       
   482             break;
       
   483     }
       
   484     
       
   485     QMessageSortOrder sortOrder;
       
   486     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   487     QString accountId = senderAccountComboBox->itemData(senderAccountComboBox->currentIndex()).toString();
       
   488     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   489     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   490     
       
   491 }
       
   492 
       
   493 void MessagingEx::sortRecipient()
       
   494 {
       
   495     QString recipient = recipientEdit->text();
       
   496     QMessageFilter filter;
       
   497     int index = recipientcomboBox->currentIndex();
       
   498     switch(index){
       
   499         case 0:
       
   500             filter = QMessageFilter::byRecipients(recipient, QMessageDataComparator::Includes);
       
   501             break;
       
   502         case 1:
       
   503             filter = QMessageFilter::byRecipients(recipient, QMessageDataComparator::Excludes);
       
   504             break;
       
   505     }
       
   506     
       
   507     QMessageSortOrder sortOrder;
       
   508     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   509     QString accountId = recipientAccountComboBox->itemData(recipientAccountComboBox->currentIndex()).toString();
       
   510     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   511     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   512 
       
   513 }
       
   514 
       
   515 void MessagingEx::sortSubject()
       
   516 {
       
   517     QString subject = subjectEdit_2->text();
       
   518     QMessageFilter filter;
       
   519     int index = subjectcomboBox->currentIndex();
       
   520     switch(index){
       
   521         case 0:
       
   522             filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Equal);
       
   523             break;
       
   524         case 1:
       
   525             filter = QMessageFilter::bySubject(subject, QMessageDataComparator::NotEqual);
       
   526             break;
       
   527         case 2:
       
   528             filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Includes);
       
   529             break;
       
   530         case 3:
       
   531             filter = QMessageFilter::bySubject(subject, QMessageDataComparator::Excludes);
       
   532             break;
       
   533     }
       
   534     
       
   535     QMessageSortOrder sortOrder;
       
   536     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   537     QString accountId = subjectAccountComboBox->itemData(subjectAccountComboBox->currentIndex()).toString();
       
   538     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   539     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   540 }
       
   541 
       
   542 void MessagingEx::sortTimestamp()
       
   543 {
       
   544     QDateTime time = timestampdateTimeEdit->dateTime();
       
   545     QMessageFilter filter;
       
   546     int index = timestampcomboBox->currentIndex();
       
   547     switch(index){
       
   548         case 0:
       
   549             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::Equal);
       
   550             break;
       
   551         case 1:
       
   552             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::NotEqual);
       
   553             break;
       
   554         case 2:
       
   555             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::LessThan);
       
   556             break;
       
   557         case 3:
       
   558             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::LessThanEqual);
       
   559             break;
       
   560         case 4:
       
   561             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::GreaterThan);
       
   562             break;
       
   563         case 5:
       
   564             filter = QMessageFilter::byTimeStamp(time, QMessageDataComparator::GreaterThanEqual);
       
   565             break;
       
   566     }
       
   567     
       
   568     QMessageSortOrder sortOrder;
       
   569     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   570     QString accountId = timestampAccountComboBox->itemData(timestampAccountComboBox->currentIndex()).toString();
       
   571     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   572     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   573 
       
   574 }
       
   575 
       
   576 void MessagingEx::sortReceptiontimestamp()
       
   577 {
       
   578     QDateTime time = receptiondateTimeEdit->dateTime();
       
   579     QMessageFilter filter;
       
   580     int index = receptioncomboBox->currentIndex();
       
   581     switch(index){
       
   582         case 0:
       
   583             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::Equal);
       
   584             break;
       
   585         case 1:
       
   586             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::NotEqual);
       
   587             break;
       
   588         case 2:
       
   589             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::LessThan);
       
   590             break;
       
   591         case 3:
       
   592             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::LessThanEqual);
       
   593             break;
       
   594         case 4:
       
   595             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::GreaterThan);
       
   596             break;
       
   597         case 5:
       
   598             filter = QMessageFilter::byReceptionTimeStamp(time, QMessageDataComparator::GreaterThanEqual);
       
   599             break;
       
   600     }
       
   601     
       
   602     QMessageSortOrder sortOrder;
       
   603     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   604     QString accountId = timeAccountComboBox->itemData(timeAccountComboBox->currentIndex()).toString();
       
   605     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   606     m_service.queryMessages(filter, sortOrder, 100, 0);   
       
   607 }
       
   608 
       
   609 void MessagingEx::sortStatus()
       
   610 {
       
   611     QMessageFilter filter;
       
   612     int index = statuscomboBox->currentIndex();
       
   613     switch(index){
       
   614         case 0:
       
   615             filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Equal);
       
   616             break;
       
   617         case 1:
       
   618             filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::NotEqual);
       
   619             break;
       
   620         case 2:
       
   621             filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Includes);
       
   622             break;
       
   623         case 3:
       
   624             filter = QMessageFilter::byStatus(QMessage::Read, QMessageDataComparator::Excludes);
       
   625             break;
       
   626         case 4:
       
   627             filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Equal);
       
   628             break;
       
   629         case 5:
       
   630             filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::NotEqual);
       
   631             break;
       
   632         case 6:
       
   633             filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Includes);
       
   634             break;
       
   635         case 7:
       
   636             filter = QMessageFilter::byStatus(QMessage::HasAttachments, QMessageDataComparator::Excludes);
       
   637             break;
       
   638         case 8:
       
   639             filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Equal);
       
   640             break;
       
   641         case 9:
       
   642             filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::NotEqual);
       
   643             break;
       
   644         case 10:
       
   645             filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Includes);
       
   646             break;
       
   647         case 11:
       
   648             filter = QMessageFilter::byStatus(QMessage::Incoming, QMessageDataComparator::Excludes);
       
   649             break;
       
   650         case 12:
       
   651             filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Equal);
       
   652             break;
       
   653         case 13:
       
   654             filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::NotEqual);
       
   655             break;
       
   656         case 14:
       
   657             filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Includes);
       
   658             break;
       
   659         case 15:
       
   660             filter = QMessageFilter::byStatus(QMessage::Removed, QMessageDataComparator::Excludes);
       
   661             break;
       
   662     }
       
   663     
       
   664     QMessageSortOrder sortOrder;
       
   665     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   666     QString accountId = statusAccountComboBox->itemData(statusAccountComboBox->currentIndex()).toString();
       
   667     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   668     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   669 
       
   670 }
       
   671 
       
   672 void MessagingEx::sortParentAccountId()
       
   673 {
       
   674     int index = accountComboBox_2->currentIndex();
       
   675     folderComboBox->clear ();
       
   676     QMessageFolderFilter filter = QMessageFolderFilter::byParentAccountId(m_accountList[index]);// & QMessageFolderFilter::byName("Inbox");
       
   677     QMessageFolderIdList ids = m_manager.queryFolders(filter);
       
   678     for (int i=0; i < ids.count(); i++) {
       
   679         QMessageFolder folder;
       
   680         folder = m_manager.folder(ids[i]);
       
   681         QString name = folder.name();
       
   682         folderComboBox->addItem(name, folder.id().toString());
       
   683     }
       
   684 }
       
   685 
       
   686 void MessagingEx::sortStandardFolder()
       
   687 {
       
   688     QMessageFilter filter;
       
   689     int index = foldercomboBox->currentIndex();
       
   690     switch(index){
       
   691         case 0:
       
   692             filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::Equal);
       
   693             break;
       
   694         case 1:
       
   695             filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::NotEqual);
       
   696             break;
       
   697         case 2:
       
   698             filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::Equal);
       
   699             break;
       
   700         case 3:
       
   701             filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::NotEqual);
       
   702             break;
       
   703         case 4:
       
   704             filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal);
       
   705             break;
       
   706         case 5:
       
   707             filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::NotEqual);
       
   708             break;
       
   709         case 6:
       
   710             filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::Equal);
       
   711             break;
       
   712         case 7:
       
   713             filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::NotEqual);
       
   714             break;
       
   715         case 8:
       
   716             filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal);
       
   717             break;
       
   718         case 9:
       
   719             filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::NotEqual);
       
   720             break;
       
   721     }
       
   722     QString accountId = folderAccountComboBox->itemData(folderAccountComboBox->currentIndex()).toString();
       
   723     filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   724     QMessageSortOrder sortOrder;
       
   725     sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   726     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   727 }
       
   728 
       
   729 void MessagingEx::findMessages()
       
   730 {
       
   731     QString accountId = accountComboBox_2->itemData(accountComboBox_2->currentIndex()).toString();
       
   732     int folderIndex = folderComboBox->currentIndex();
       
   733     int defaultIndex = defaultAccountBox->currentIndex();
       
   734     QMessageFilter filter;
       
   735     if (defaultIndex >= 0 && folderComboBox->count() == 0){
       
   736         switch(defaultIndex){
       
   737         case 0:
       
   738             filter = QMessageFilter::byStandardFolder(QMessage::InboxFolder, QMessageDataComparator::Equal);
       
   739             break;
       
   740         case 1:
       
   741             filter = QMessageFilter::byStandardFolder(QMessage::OutboxFolder, QMessageDataComparator::Equal);
       
   742             break;
       
   743         case 2:
       
   744             filter = QMessageFilter::byStandardFolder(QMessage::DraftsFolder, QMessageDataComparator::Equal);
       
   745             break;
       
   746         case 3:
       
   747             filter = QMessageFilter::byStandardFolder(QMessage::SentFolder, QMessageDataComparator::Equal);
       
   748             break;
       
   749         case 4:
       
   750             filter = QMessageFilter::byStandardFolder(QMessage::TrashFolder, QMessageDataComparator::Equal);
       
   751             break;
       
   752         }
       
   753         filter &= QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   754     }
       
   755     else if (folderIndex >= 0) {
       
   756         QString folderId = folderComboBox->itemData(folderComboBox->currentIndex()).toString();
       
   757         filter = QMessageFilter::byParentFolderId(QMessageFolderId(folderId), QMessageDataComparator::Equal);
       
   758     } else {
       
   759         filter = QMessageFilter::byParentAccountId(QMessageAccountId(accountId));
       
   760     }
       
   761 
       
   762     QMessageSortOrder sortOrder = sortOrder.byTimeStamp(Qt::DescendingOrder);
       
   763     m_service.queryMessages(filter, sortOrder, 100, 0);
       
   764     
       
   765 }
       
   766 
       
   767 void MessagingEx::messagesFound(const QMessageIdList &ids)
       
   768 {
       
   769     QString labelText;
       
   770     QStandardItemModel* standardModel = new QStandardItemModel(this);
       
   771     messageListView->setModel(standardModel);
       
   772     stackedWidget->setCurrentIndex(12);
       
   773     for (int i=0; i < ids.count(); i++) {
       
   774         QMessage message = m_manager.message(ids[i]);
       
   775         QString from = message.from().addressee();
       
   776         QString subject = message.subject();
       
   777         if (subject.length() == 0) {
       
   778             subject = message.textContent();
       
   779         }
       
   780       //  QString body = QString(message.textContent().left(20));
       
   781        // labelText.append(from);
       
   782         QStandardItem* item1 = new QStandardItem(from);
       
   783         QStandardItem* item2 = new QStandardItem(subject);
       
   784         standardModel->appendRow(item1);
       
   785         standardModel->appendRow(item2);
       
   786         messageListView->setModel(standardModel);
       
   787     }
       
   788     
       
   789 }
       
   790 
       
   791 
       
   792 // End of file