emailuis/nmailui/src/nmviewerserviceinterface.cpp
author hgs
Fri, 03 Sep 2010 14:07:42 +0300
changeset 66 084b5b1f02a7
parent 62 a8c646b56683
child 68 83cc6bae1de8
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     3
* All rights reserved.
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     4
* This component and the accompanying materials are made available
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     6
* which accompanies this distribution, and is available
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     8
*
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
     9
* Initial Contributors:
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    10
* Nokia Corporation - initial contribution.
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    11
*
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    12
* Contributors:
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    13
*
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    14
* Description: NMail application service interface used for viewing a mail
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    15
*              according to given id. The service utilizes the Qt highway framework.
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    16
*/
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
//  INCLUDES
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include "nmuiheaders.h" // Includes also the class header.
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
/*!
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
    \class NmViewerServiceInterface
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
    \brief A service interface for displaying the message according to given id.
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
*/
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
/*!
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
    Class constructor.
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
*/
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
NmViewerServiceInterface::NmViewerServiceInterface(QObject *parent,
66
hgs
parents: 62
diff changeset
    32
                                                   NmApplication *application,
hgs
parents: 62
diff changeset
    33
                                                   NmUiEngine &uiEngine)
hgs
parents: 62
diff changeset
    34
: XQServiceProvider(emailFullServiceNameMessage, parent),
hgs
parents: 62
diff changeset
    35
  mApplication(application),
hgs
parents: 62
diff changeset
    36
  mUiEngine(uiEngine),
hgs
parents: 62
diff changeset
    37
  mAsyncReqId(0)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
{
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
    publishAll();
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
/*!
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
    Class desctructor.
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
*/
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
NmViewerServiceInterface::~NmViewerServiceInterface()
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
{
43
hgs
parents: 40
diff changeset
    48
    NM_FUNCTION;
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
/*!
66
hgs
parents: 62
diff changeset
    53
    This has the soon to be DEPRICATED three argument interface!!!
hgs
parents: 62
diff changeset
    54
    Use viewMessage(QVariant idList, QVariant flags) instead!!!
hgs
parents: 62
diff changeset
    55
*/
hgs
parents: 62
diff changeset
    56
void NmViewerServiceInterface::viewMessage(QVariant mailboxId,
hgs
parents: 62
diff changeset
    57
                                           QVariant folderId,
hgs
parents: 62
diff changeset
    58
                                           QVariant messageId)
hgs
parents: 62
diff changeset
    59
{
hgs
parents: 62
diff changeset
    60
    QVariantList idList;
hgs
parents: 62
diff changeset
    61
    idList.append(mailboxId);
hgs
parents: 62
diff changeset
    62
    idList.append(folderId);
hgs
parents: 62
diff changeset
    63
    idList.append(messageId);
hgs
parents: 62
diff changeset
    64
    QVariant idListAsVariant = QVariant::fromValue(idList);
hgs
parents: 62
diff changeset
    65
    viewMessage(idListAsVariant, QVariant());
hgs
parents: 62
diff changeset
    66
}
hgs
parents: 62
diff changeset
    67
hgs
parents: 62
diff changeset
    68
hgs
parents: 62
diff changeset
    69
/*!
hgs
parents: 62
diff changeset
    70
    Opens the message view according to the given IDs.
hgs
parents: 62
diff changeset
    71
hgs
parents: 62
diff changeset
    72
    \param idList A list containing the required IDs for locating the wanted
hgs
parents: 62
diff changeset
    73
                  message. The ID are the following (and should be placed in
hgs
parents: 62
diff changeset
    74
                  the following order): mailbox ID, folder ID and message ID.
hgs
parents: 62
diff changeset
    75
    \param flags Will contain EmailBackReturnsToMessageList if the message
hgs
parents: 62
diff changeset
    76
                 list view should be added into the view stack.
hgs
parents: 62
diff changeset
    77
*/
hgs
parents: 62
diff changeset
    78
void NmViewerServiceInterface::viewMessage(QVariant idList, QVariant flags)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
{
43
hgs
parents: 40
diff changeset
    80
    NM_FUNCTION;
66
hgs
parents: 62
diff changeset
    81
    
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    mAsyncReqId = setCurrentRequestAsync();
66
hgs
parents: 62
diff changeset
    83
hgs
parents: 62
diff changeset
    84
    NmId mailboxId(0), folderId(0), messageId(0);
hgs
parents: 62
diff changeset
    85
hgs
parents: 62
diff changeset
    86
    // Check the given arguments.
hgs
parents: 62
diff changeset
    87
    if (idList.canConvert(QVariant::List)) {
hgs
parents: 62
diff changeset
    88
        QList<QVariant> ids = idList.toList();
hgs
parents: 62
diff changeset
    89
        
hgs
parents: 62
diff changeset
    90
        if (ids.count() >= 3) {
hgs
parents: 62
diff changeset
    91
            mailboxId = ids[0].toULongLong();
hgs
parents: 62
diff changeset
    92
            folderId = ids[1].toULongLong();
hgs
parents: 62
diff changeset
    93
            messageId = ids[2].toLongLong();
hgs
parents: 62
diff changeset
    94
        }
hgs
parents: 62
diff changeset
    95
    }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
66
hgs
parents: 62
diff changeset
    97
    quint64 flag(EmailNoFlags);
hgs
parents: 62
diff changeset
    98
hgs
parents: 62
diff changeset
    99
    if (flags.canConvert(QVariant::ULongLong)) {
hgs
parents: 62
diff changeset
   100
        flag = flags.toULongLong();
hgs
parents: 62
diff changeset
   101
    }
hgs
parents: 62
diff changeset
   102
hgs
parents: 62
diff changeset
   103
    bool addMessageListViewToStack(false);
hgs
parents: 62
diff changeset
   104
hgs
parents: 62
diff changeset
   105
    if (flag & EmailBackReturnsToMessageList) {
hgs
parents: 62
diff changeset
   106
        addMessageListViewToStack = true;
hgs
parents: 62
diff changeset
   107
    }
hgs
parents: 62
diff changeset
   108
hgs
parents: 62
diff changeset
   109
	// Make sure the app stays on the background if the user presses back button
hgs
parents: 62
diff changeset
   110
    // in the viewer view.
43
hgs
parents: 40
diff changeset
   111
	bool visible = mApplication->updateVisibilityState();
hgs
parents: 40
diff changeset
   112
66
hgs
parents: 62
diff changeset
   113
    NmMessage *message = mUiEngine.message(mailboxId, folderId, messageId);
hgs
parents: 62
diff changeset
   114
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
    if (message) {
66
hgs
parents: 62
diff changeset
   116
        // Bring the application to the foreground.
62
hgs
parents: 51
diff changeset
   117
        if (!XQServiceUtil::isEmbedded()) {
hgs
parents: 51
diff changeset
   118
            XQServiceUtil::toBackground(false);
hgs
parents: 51
diff changeset
   119
        }
66
hgs
parents: 62
diff changeset
   120
40
hgs
parents: 23
diff changeset
   121
        HbMainWindow *mainWindow = mApplication->mainWindow();
hgs
parents: 23
diff changeset
   122
        mainWindow->show();
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
66
hgs
parents: 62
diff changeset
   124
        if (addMessageListViewToStack) {
hgs
parents: 62
diff changeset
   125
            // Launch the message list view.
hgs
parents: 62
diff changeset
   126
            NmUiStartParam *startParam1 = 
hgs
parents: 62
diff changeset
   127
                new NmUiStartParam(NmUiViewMessageList,
hgs
parents: 62
diff changeset
   128
                                   mailboxId,
hgs
parents: 62
diff changeset
   129
                                   folderId,
hgs
parents: 62
diff changeset
   130
                                   messageId,
hgs
parents: 62
diff changeset
   131
                                   NmUiEditorCreateNew, // editor start mode
hgs
parents: 62
diff changeset
   132
                                   NULL, // address list
hgs
parents: 62
diff changeset
   133
                                   NULL, // attachment list
hgs
parents: 62
diff changeset
   134
                                   true); // start as service
hgs
parents: 62
diff changeset
   135
hgs
parents: 62
diff changeset
   136
            mApplication->enterNmUiView(startParam1);
hgs
parents: 62
diff changeset
   137
        }
44
hgs
parents: 43
diff changeset
   138
        
hgs
parents: 43
diff changeset
   139
        // Launch the message view.
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
        NmUiStartParam *startParam =
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
            new NmUiStartParam(NmUiViewMessageViewer,
66
hgs
parents: 62
diff changeset
   142
                               mailboxId,
hgs
parents: 62
diff changeset
   143
                               folderId, // folder id
hgs
parents: 62
diff changeset
   144
                               messageId, // message id
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
                               NmUiEditorCreateNew, // editor start mode
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
                               NULL, // address list
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
                               NULL, // attachment list
66
hgs
parents: 62
diff changeset
   148
                               !addMessageListViewToStack); // start as service?
hgs
parents: 62
diff changeset
   149
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
        mApplication->enterNmUiView(startParam);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
66
hgs
parents: 62
diff changeset
   152
        completeRequest(mAsyncReqId, 0);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
    else {
66
hgs
parents: 62
diff changeset
   155
        // The message was not found!
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
66
hgs
parents: 62
diff changeset
   157
        // If started as embedded, do not hide the app.
43
hgs
parents: 40
diff changeset
   158
		if (!XQServiceUtil::isEmbedded() && !visible) {
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
			XQServiceUtil::toBackground(true);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
		}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
66
hgs
parents: 62
diff changeset
   162
        completeRequest(mAsyncReqId, 1);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
66
hgs
parents: 62
diff changeset
   164
        // Close the application if started as a service.
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
        if (XQServiceUtil::isService()) {
66
hgs
parents: 62
diff changeset
   166
            // Exit the application when the return value is delivered.
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
            connect(this, SIGNAL(returnValueDelivered()),
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
                    mApplication, SLOT(delayedExitApplication()));
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
        }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
66
hgs
parents: 62
diff changeset
   173
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
// End of file.