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