emailservices/nmailagent/src/nmmailagent.cpp
author hgs
Mon, 23 Aug 2010 23:32:31 +0300
changeset 62 a8c646b56683
parent 56 15bc1d5d6267
child 66 084b5b1f02a7
permissions -rw-r--r--
201033
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
/*
51
hgs
parents: 48
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 48
diff changeset
     3
 * All rights reserved.
hgs
parents: 48
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 48
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 48
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 48
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 48
diff changeset
     8
 *
hgs
parents: 48
diff changeset
     9
 * Initial Contributors:
hgs
parents: 48
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 48
diff changeset
    11
 *
hgs
parents: 48
diff changeset
    12
 * Contributors:
hgs
parents: 48
diff changeset
    13
 *
hgs
parents: 48
diff changeset
    14
 * Description: Mail agent is responsible of monitoring mail accounts. It activates
hgs
parents: 48
diff changeset
    15
 *              and deactivates indicator depending on received events. Mail agent is
hgs
parents: 48
diff changeset
    16
 *              also responsible of monitoring silence mode, playing alert tone and vibrating
hgs
parents: 48
diff changeset
    17
 *              phone when new mail is received.
hgs
parents: 48
diff changeset
    18
 *
hgs
parents: 48
diff changeset
    19
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
43
hgs
parents: 40
diff changeset
    21
#include "emailtrace.h"
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "nmmailagentheaders.h"
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "nmmailagent.h"
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
44
hgs
parents: 43
diff changeset
    25
#include <xqaiwdeclplat.h>
hgs
parents: 43
diff changeset
    26
#include <xqapplicationmanager.h>
hgs
parents: 43
diff changeset
    27
#include <xqaiwrequest.h>
hgs
parents: 43
diff changeset
    28
hgs
parents: 43
diff changeset
    29
#include <xqsettingsmanager.h>
hgs
parents: 43
diff changeset
    30
#include <xqcentralrepositoryutils.h>
43
hgs
parents: 40
diff changeset
    31
#include <xqsystemtoneservice.h>
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    32
#include <xqsettingskey.h>
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    33
#include <ProfileEngineInternalCRKeys.h>
43
hgs
parents: 40
diff changeset
    34
51
hgs
parents: 48
diff changeset
    35
// CONSTANTS
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
    36
const int NmAgentIndicatorNotSet = -1;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
    37
const int NmAgentAlertToneTimer = 60000; // 60s
44
hgs
parents: 43
diff changeset
    38
const int NmAgentDefaultVibraDuration = 1000; // 1 second
47
hgs
parents: 44
diff changeset
    39
static const quint32 NmRepositoryId = 0x2002C326;
43
hgs
parents: 40
diff changeset
    40
static const QString NmMailboxIndicatorType = "com.nokia.nmail.indicatorplugin_%1/1.0";
hgs
parents: 40
diff changeset
    41
static const QString NmSendIndicatorName = "com.nokia.nmail.indicatorplugin.send/1.0";
hgs
parents: 40
diff changeset
    42
static const QString NmUnreadIndicatorName = "com.nokia.nmail.indicatorplugin.unread/1.0";
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    43
const XQCentralRepositorySettingsKey NmSilenceModeKey(KCRUidProfileEngine.iUid, KProEngSilenceMode);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    44
const int NmSilenceModeOn = 1;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    45
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    46
/*!
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    47
    Helper method for finding out if XQSettingsKey and XQCentralRepositorySettingsKey points to
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    48
    same key.
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    49
51
hgs
parents: 48
diff changeset
    50
    \param settingKey XQSettingsKey
hgs
parents: 48
diff changeset
    51
    \param cenrepSettingKey XQCentralRepositorySettingsKey
hgs
parents: 48
diff changeset
    52
    \return <code>true</code> if target, uid and key matches otherwise returns <code>false</code>
hgs
parents: 48
diff changeset
    53
 */
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    54
bool keysEqual(const XQSettingsKey& settingKey, const XQCentralRepositorySettingsKey& cenrepSettingKey)
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    55
{
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    56
    return ((settingKey.target() == cenrepSettingKey.target()) &&
51
hgs
parents: 48
diff changeset
    57
        (settingKey.uid() == cenrepSettingKey.uid()) &&
hgs
parents: 48
diff changeset
    58
        (settingKey.key() == cenrepSettingKey.key()));
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
    59
}
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
51
hgs
parents: 48
diff changeset
    61
/*!
hgs
parents: 48
diff changeset
    62
    \class NmMailboxInfo
hgs
parents: 48
diff changeset
    63
hgs
parents: 48
diff changeset
    64
    \brief Main class for storing mailbox data.
hgs
parents: 48
diff changeset
    65
 */
hgs
parents: 48
diff changeset
    66
NmMailboxInfo::NmMailboxInfo()
hgs
parents: 48
diff changeset
    67
: mId(0),
hgs
parents: 48
diff changeset
    68
  mIndicatorIndex(NmAgentIndicatorNotSet),
hgs
parents: 48
diff changeset
    69
  mInboxFolderId(0),
hgs
parents: 48
diff changeset
    70
  mOutboxFolderId(0),
hgs
parents: 48
diff changeset
    71
  mSyncState(SyncComplete),
hgs
parents: 48
diff changeset
    72
  mConnectState(Disconnected),
hgs
parents: 48
diff changeset
    73
  mInboxCreatedMessages(0),
hgs
parents: 48
diff changeset
    74
  mInboxChangedMessages(0),
hgs
parents: 48
diff changeset
    75
  mInboxDeletedMessages(0),
hgs
parents: 48
diff changeset
    76
  mOutboxMails(0),
62
hgs
parents: 56
diff changeset
    77
  mActive(false)
51
hgs
parents: 48
diff changeset
    78
  {
56
hgs
parents: 51
diff changeset
    79
      NM_FUNCTION;
51
hgs
parents: 48
diff changeset
    80
  }
hgs
parents: 48
diff changeset
    81
62
hgs
parents: 56
diff changeset
    82
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
/*!
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    \class NmMailAgent
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
62
hgs
parents: 56
diff changeset
    86
    \brief Main class for receiving email events. Activates and deactivates
hgs
parents: 56
diff changeset
    87
           the indicator.
hgs
parents: 56
diff changeset
    88
*/
hgs
parents: 56
diff changeset
    89
NmMailAgent::NmMailAgent()
hgs
parents: 56
diff changeset
    90
: mIndicator(NULL),
hgs
parents: 56
diff changeset
    91
  mPluginFactory(NULL),
hgs
parents: 56
diff changeset
    92
  mVibra(NULL),
hgs
parents: 56
diff changeset
    93
  mSettingManager(NULL),
hgs
parents: 56
diff changeset
    94
  mUiEventsNotifier(NULL),
hgs
parents: 56
diff changeset
    95
  mAlertToneAllowed(true),
hgs
parents: 56
diff changeset
    96
  mLastOutboxCount(0),
hgs
parents: 56
diff changeset
    97
  mUnreadIndicatorActive(false),
hgs
parents: 56
diff changeset
    98
  mSilenceMode(NmSilenceModeOn)  // by default silent mode is on
hgs
parents: 56
diff changeset
    99
{
hgs
parents: 56
diff changeset
   100
    NM_FUNCTION;
hgs
parents: 56
diff changeset
   101
}
hgs
parents: 56
diff changeset
   102
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
/*!
51
hgs
parents: 48
diff changeset
   105
    Delayed start.
hgs
parents: 48
diff changeset
   106
 */
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   107
void NmMailAgent::delayedStart()
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   108
{
43
hgs
parents: 40
diff changeset
   109
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   110
51
hgs
parents: 48
diff changeset
   111
    if (!init()) {
hgs
parents: 48
diff changeset
   112
        // Initialisation failed. Quit the agent.
hgs
parents: 48
diff changeset
   113
        QCoreApplication::exit(1);
hgs
parents: 48
diff changeset
   114
    }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   115
}
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   116
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   117
/*!
51
hgs
parents: 48
diff changeset
   118
    Initialise the agent.
hgs
parents: 48
diff changeset
   119
hgs
parents: 48
diff changeset
   120
    \return true if succesfully started.
62
hgs
parents: 56
diff changeset
   121
*/
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
bool NmMailAgent::init()
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
{
43
hgs
parents: 40
diff changeset
   124
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   125
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   126
    mPluginFactory = NmDataPluginFactory::instance();
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   127
    if (!mPluginFactory) {
43
hgs
parents: 40
diff changeset
   128
        NM_ERROR(1,"NmMailAgent::init(): PluginFactory not created");
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
        return false;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   132
    // Check status of silent mode.
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   133
    delete mSettingManager;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   134
    mSettingManager = NULL;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   135
    mSettingManager = new XQSettingsManager();
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   136
    QVariant silenceMode = mSettingManager->readItemValue(NmSilenceModeKey,
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   137
        XQSettingsManager::TypeInt);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   138
    mSilenceMode = silenceMode.toInt();
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   139
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   140
    // Start monitoring silence mode key.
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   141
    bool monitoring(mSettingManager->startMonitoring(NmSilenceModeKey, XQSettingsManager::TypeInt));
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   142
    monitoring &= connect(mSettingManager,
51
hgs
parents: 48
diff changeset
   143
                          SIGNAL(valueChanged(const XQSettingsKey &, const QVariant &)),
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   144
                          this,
51
hgs
parents: 48
diff changeset
   145
                          SLOT(valueChanged(const XQSettingsKey &, const QVariant &)),
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   146
                          Qt::UniqueConnection);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   147
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   148
    // If silence mode monitoring can't be started, then change silence mode on to be sure
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   149
    // that no tone is played if silence mode is turned on at somepoint.
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   150
    if (!monitoring) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   151
        mSilenceMode = NmSilenceModeOn;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   152
    }
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   153
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   154
    delete mIndicator;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   155
    mIndicator = NULL;
43
hgs
parents: 40
diff changeset
   156
    mIndicator = new HbIndicator();
51
hgs
parents: 48
diff changeset
   157
    connect(mIndicator,SIGNAL(userActivated(const QString &, const QVariantMap &)),
hgs
parents: 48
diff changeset
   158
        this, SLOT(indicatorActivated(const QString &, const QVariantMap &)));
43
hgs
parents: 40
diff changeset
   159
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   160
    QList<QObject*> *plugins = mPluginFactory->pluginInstances();
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   161
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   162
    foreach (QObject *plugin, *plugins) {
51
hgs
parents: 48
diff changeset
   163
        if (plugin) {
hgs
parents: 48
diff changeset
   164
            // Start listening events
hgs
parents: 48
diff changeset
   165
            connect(plugin, SIGNAL(mailboxEvent(NmMailboxEvent, const QList<NmId> &)),
hgs
parents: 48
diff changeset
   166
                    this, SLOT(handleMailboxEvent(NmMailboxEvent, const QList<NmId> &)),
hgs
parents: 48
diff changeset
   167
                    Qt::UniqueConnection);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
51
hgs
parents: 48
diff changeset
   169
            connect(plugin, SIGNAL(messageEvent(
hgs
parents: 48
diff changeset
   170
                        NmMessageEvent, const NmId &, const QList<NmId> &, const NmId &)),
hgs
parents: 48
diff changeset
   171
                    this, SLOT(handleMessageEvent(
hgs
parents: 48
diff changeset
   172
                        NmMessageEvent, const NmId &, const QList<NmId> &, const NmId &)),
hgs
parents: 48
diff changeset
   173
                    Qt::UniqueConnection);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
51
hgs
parents: 48
diff changeset
   175
            connect(plugin, SIGNAL(syncStateEvent(NmSyncState, const NmOperationCompletionEvent &)),
hgs
parents: 48
diff changeset
   176
                    this, SLOT(handleSyncStateEvent(NmSyncState, const NmOperationCompletionEvent &)),
hgs
parents: 48
diff changeset
   177
                Qt::UniqueConnection);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
51
hgs
parents: 48
diff changeset
   179
            connect(plugin, SIGNAL(connectionEvent(NmConnectState, const NmId, int)),
hgs
parents: 48
diff changeset
   180
                    this, SLOT(handleConnectionEvent(NmConnectState, const NmId, int)),
hgs
parents: 48
diff changeset
   181
                    Qt::UniqueConnection);
hgs
parents: 48
diff changeset
   182
        }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   183
    }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
44
hgs
parents: 43
diff changeset
   185
    // Construct the vibra interface instance.
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   186
    delete mVibra;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   187
    mVibra = NULL;
44
hgs
parents: 43
diff changeset
   188
    TRAP_IGNORE(mVibra = CHWRMVibra::NewL());
hgs
parents: 43
diff changeset
   189
62
hgs
parents: 56
diff changeset
   190
    // Start monitoring the UI events.
hgs
parents: 56
diff changeset
   191
    delete mUiEventsNotifier;
hgs
parents: 56
diff changeset
   192
    mUiEventsNotifier = NULL;
hgs
parents: 56
diff changeset
   193
    mUiEventsNotifier = new NmUiEventsNotifier(this);
hgs
parents: 56
diff changeset
   194
hgs
parents: 56
diff changeset
   195
    connect(mUiEventsNotifier,
hgs
parents: 56
diff changeset
   196
            SIGNAL(viewStateChanged(NmUiEventsNotifier::NmUiEventType,
hgs
parents: 56
diff changeset
   197
                                    NmUiViewId, NmId)),
hgs
parents: 56
diff changeset
   198
            this,
hgs
parents: 56
diff changeset
   199
            SLOT(handleViewStateChangedEvent(const NmUiEventsNotifier::NmUiEventType,
hgs
parents: 56
diff changeset
   200
                                             const NmUiViewId, const NmId)));
hgs
parents: 56
diff changeset
   201
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
    // load all current mailboxes
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
    initMailboxStatus();
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    return true;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
51
hgs
parents: 48
diff changeset
   208
/*!
hgs
parents: 48
diff changeset
   209
    Destructor of NmMailAgent.
62
hgs
parents: 56
diff changeset
   210
*/
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
NmMailAgent::~NmMailAgent()
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
{
43
hgs
parents: 40
diff changeset
   213
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   214
51
hgs
parents: 48
diff changeset
   215
    delete mIndicator;
44
hgs
parents: 43
diff changeset
   216
    delete mVibra;
62
hgs
parents: 56
diff changeset
   217
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   218
    if (mSettingManager) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   219
        mSettingManager->stopMonitoring(NmSilenceModeKey);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   220
        delete mSettingManager;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   221
    }
62
hgs
parents: 56
diff changeset
   222
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
    qDeleteAll(mMailboxes);
44
hgs
parents: 43
diff changeset
   224
62
hgs
parents: 56
diff changeset
   225
    delete mUiEventsNotifier;
hgs
parents: 56
diff changeset
   226
    mUiEventsNotifier = NULL;
hgs
parents: 56
diff changeset
   227
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   228
    NmDataPluginFactory::releaseInstance(mPluginFactory);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
/*!
51
hgs
parents: 48
diff changeset
   232
    Initialize the mailbox list with the current state.
hgs
parents: 48
diff changeset
   233
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
void NmMailAgent::initMailboxStatus()
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
{
43
hgs
parents: 40
diff changeset
   236
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   237
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    QList<NmMailbox*> mailboxes;
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   239
    QList<QObject*> *plugins = mPluginFactory->pluginInstances();
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   240
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   241
    foreach(QObject* pluginObject, *plugins) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   242
        NmDataPluginInterface *plugin =
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   243
            mPluginFactory->interfaceInstance(pluginObject);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   244
        if (plugin) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   245
            plugin->listMailboxes(mailboxes);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   246
        }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   247
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   248
        // Add the indicators
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   249
        // Must be made in reverse order to show them properly in
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   250
        // HbIndicator menu
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   251
        QListIterator<NmMailbox *> i(mailboxes);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   252
        i.toBack();
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   253
        while (i.hasPrevious()) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   254
            const NmMailbox *mailbox = i.previous();
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   255
            if (mailbox) {
51
hgs
parents: 48
diff changeset
   256
                NmMailboxInfo *mailboxInfo = createMailboxInfo(*mailbox, plugin);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   257
                if (mailboxInfo) {
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   258
                    bool activate = updateUnreadCount(mailbox->id(), *mailboxInfo);
62
hgs
parents: 56
diff changeset
   259
                    NM_COMMENT(QString("Mailbox %1 initial state: newUnread=%2 total=%3").
hgs
parents: 56
diff changeset
   260
                        arg(mailboxInfo->mName).
hgs
parents: 56
diff changeset
   261
                        arg(mailboxInfo->mNewUnreadMailIdList.count()).
hgs
parents: 56
diff changeset
   262
                        arg(mailboxInfo->mMailIdList.count()));
hgs
parents: 56
diff changeset
   263
44
hgs
parents: 43
diff changeset
   264
                    bool wasActive = isMailboxActive(mailbox->id());
62
hgs
parents: 56
diff changeset
   265
                    if (!wasActive) {
hgs
parents: 56
diff changeset
   266
                        // do not activate the mailbox if it was left as hidden last time
hgs
parents: 56
diff changeset
   267
                        activate = false;
hgs
parents: 56
diff changeset
   268
                        mailboxInfo->mNewUnreadMailIdList.clear();
44
hgs
parents: 43
diff changeset
   269
                    }
hgs
parents: 43
diff changeset
   270
51
hgs
parents: 48
diff changeset
   271
                    mailboxInfo->mOutboxMails = getOutboxCount(mailbox->id(),
hgs
parents: 48
diff changeset
   272
                        mailboxInfo->mOutboxFolderId);
44
hgs
parents: 43
diff changeset
   273
                    if (mailboxInfo->mOutboxMails > 0 && wasActive) {
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   274
                        activate = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   275
                    }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   276
51
hgs
parents: 48
diff changeset
   277
                    // Create indicator for visible mailboxes
hgs
parents: 48
diff changeset
   278
                    updateMailboxState(mailbox->id(), activate, false);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   279
                }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
            }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
        }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   282
        qDeleteAll(mailboxes);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
    }
44
hgs
parents: 43
diff changeset
   284
    updateUnreadIndicator();
43
hgs
parents: 40
diff changeset
   285
    updateSendIndicator();
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
/*!
51
hgs
parents: 48
diff changeset
   289
    Get mailbox unread count in inbox folder.
hgs
parents: 48
diff changeset
   290
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
    \param mailboxId id of the mailbox
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   292
    \param mailboxInfo contains the list of unread messages
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   293
    \return true if new unread mails was found
51
hgs
parents: 48
diff changeset
   294
 */
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   295
bool NmMailAgent::updateUnreadCount(const NmId &mailboxId, NmMailboxInfo &mailboxInfo)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
{
43
hgs
parents: 40
diff changeset
   297
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   298
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   299
    int newUnreadMessages(0);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   300
    NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   302
    if (plugin) {
51
hgs
parents: 48
diff changeset
   303
        NmId inboxId = mailboxInfo.mInboxFolderId.id();
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   304
51
hgs
parents: 48
diff changeset
   305
        // Inbox folder ID may be still unknown
hgs
parents: 48
diff changeset
   306
        if (inboxId == 0) {
hgs
parents: 48
diff changeset
   307
            mailboxInfo.mInboxFolderId = plugin->getStandardFolderId(mailboxId, NmFolderInbox);
hgs
parents: 48
diff changeset
   308
            inboxId = mailboxInfo.mInboxFolderId.id();
hgs
parents: 48
diff changeset
   309
        }
hgs
parents: 48
diff changeset
   310
hgs
parents: 48
diff changeset
   311
        // get list of messages in inbox
hgs
parents: 48
diff changeset
   312
        QList<NmMessageEnvelope*> messageList;
hgs
parents: 48
diff changeset
   313
        plugin->listMessages(mailboxId, inboxId, messageList);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
62
hgs
parents: 56
diff changeset
   315
        QList<NmId> newMessageIdList;
hgs
parents: 56
diff changeset
   316
hgs
parents: 56
diff changeset
   317
        int unreadCount(0);
51
hgs
parents: 48
diff changeset
   318
        foreach (const NmMessageEnvelope* envelope, messageList) {
hgs
parents: 48
diff changeset
   319
            // if the message is not read, it is "unread"
62
hgs
parents: 56
diff changeset
   320
            quint64 messageId = envelope->messageId().id();
hgs
parents: 56
diff changeset
   321
            newMessageIdList.append(envelope->messageId());
hgs
parents: 56
diff changeset
   322
            bool read = envelope->isRead();
hgs
parents: 56
diff changeset
   323
hgs
parents: 56
diff changeset
   324
            // This is a new unread mail
hgs
parents: 56
diff changeset
   325
            if (!read) {
hgs
parents: 56
diff changeset
   326
                unreadCount++;
hgs
parents: 56
diff changeset
   327
hgs
parents: 56
diff changeset
   328
                // Iterate through all known ids. If the id can't be found the mail is new.
51
hgs
parents: 48
diff changeset
   329
                bool found(false);
62
hgs
parents: 56
diff changeset
   330
                foreach (const NmId id, mailboxInfo.mMailIdList) {
51
hgs
parents: 48
diff changeset
   331
                    if (id.id() == messageId) {
hgs
parents: 48
diff changeset
   332
                        found = true;
hgs
parents: 48
diff changeset
   333
                        break;
hgs
parents: 48
diff changeset
   334
                    }
hgs
parents: 48
diff changeset
   335
                }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
62
hgs
parents: 56
diff changeset
   337
                // it was new unread message
51
hgs
parents: 48
diff changeset
   338
                if (!found) {
62
hgs
parents: 56
diff changeset
   339
					if (mailboxInfo.mNewUnreadMailIdList.indexOf(messageId)<0) {
hgs
parents: 56
diff changeset
   340
                        mailboxInfo.mNewUnreadMailIdList.append(messageId);
hgs
parents: 56
diff changeset
   341
                        newUnreadMessages++;
hgs
parents: 56
diff changeset
   342
					}
51
hgs
parents: 48
diff changeset
   343
                }
hgs
parents: 48
diff changeset
   344
            }
62
hgs
parents: 56
diff changeset
   345
            else {
hgs
parents: 56
diff changeset
   346
                // message is now 'read' - make sure it is no longer in list new unread mails
hgs
parents: 56
diff changeset
   347
                mailboxInfo.mNewUnreadMailIdList.removeAll(messageId);
hgs
parents: 56
diff changeset
   348
            }
51
hgs
parents: 48
diff changeset
   349
        }
hgs
parents: 48
diff changeset
   350
        qDeleteAll(messageList);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   351
51
hgs
parents: 48
diff changeset
   352
        // Save updated list of unread message IDs
62
hgs
parents: 56
diff changeset
   353
        mailboxInfo.mMailIdList = newMessageIdList;
hgs
parents: 56
diff changeset
   354
hgs
parents: 56
diff changeset
   355
        NM_COMMENT(QString("NmMailAgent::getUnreadCount(): totalCount=%1, newUnread=%2").
hgs
parents: 56
diff changeset
   356
            arg(mailboxInfo.mMailIdList.count()).
hgs
parents: 56
diff changeset
   357
            arg(newUnreadMessages));
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   360
    return (newUnreadMessages > 0);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
/*!
51
hgs
parents: 48
diff changeset
   364
    Get mailbox count in outbox folder.
hgs
parents: 48
diff changeset
   365
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   366
    \param mailboxId id of the mailbox
51
hgs
parents: 48
diff changeset
   367
    \param outboxId Outbox folder Id
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   368
    \return number of mails in the outbox
51
hgs
parents: 48
diff changeset
   369
 */
hgs
parents: 48
diff changeset
   370
int NmMailAgent::getOutboxCount(const NmId &mailboxId, const NmId &outboxId)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
{
43
hgs
parents: 40
diff changeset
   372
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   373
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   374
    int count(0);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   375
    NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   377
    if (plugin) {
51
hgs
parents: 48
diff changeset
   378
        // get list of messages in outbox
hgs
parents: 48
diff changeset
   379
        QList<NmMessageEnvelope*> messageList;
hgs
parents: 48
diff changeset
   380
        plugin->listMessages(mailboxId, outboxId, messageList);
hgs
parents: 48
diff changeset
   381
        count = messageList.count();
hgs
parents: 48
diff changeset
   382
        qDeleteAll(messageList);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   383
    }
43
hgs
parents: 40
diff changeset
   384
    NM_COMMENT(QString("NmMailAgent::getOutboxCount(): count=%1").arg(count));
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   385
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   386
    return count;
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
/*!
62
hgs
parents: 56
diff changeset
   390
    Get list of unread counts in all active mailboxes.
51
hgs
parents: 48
diff changeset
   391
43
hgs
parents: 40
diff changeset
   392
	\returns total number of unread mails
51
hgs
parents: 48
diff changeset
   393
 */
43
hgs
parents: 40
diff changeset
   394
int NmMailAgent::getTotalUnreadCount() const
hgs
parents: 40
diff changeset
   395
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   396
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   397
43
hgs
parents: 40
diff changeset
   398
    int unreads = 0;
hgs
parents: 40
diff changeset
   399
    foreach (const NmMailboxInfo *mailbox, mMailboxes) {
62
hgs
parents: 56
diff changeset
   400
        if (mailbox->mActive) {
hgs
parents: 56
diff changeset
   401
            unreads += mailbox->mNewUnreadMailIdList.count();
43
hgs
parents: 40
diff changeset
   402
        }
hgs
parents: 40
diff changeset
   403
    }
hgs
parents: 40
diff changeset
   404
    return unreads;
hgs
parents: 40
diff changeset
   405
}
hgs
parents: 40
diff changeset
   406
hgs
parents: 40
diff changeset
   407
/*!
51
hgs
parents: 48
diff changeset
   408
    Update the "@" indicator state according to unread state.
hgs
parents: 48
diff changeset
   409
43
hgs
parents: 40
diff changeset
   410
    \return true if the indicator was activated
51
hgs
parents: 48
diff changeset
   411
 */
43
hgs
parents: 40
diff changeset
   412
bool NmMailAgent::updateUnreadIndicator()
hgs
parents: 40
diff changeset
   413
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   414
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   415
43
hgs
parents: 40
diff changeset
   416
    int unreads = getTotalUnreadCount();
hgs
parents: 40
diff changeset
   417
    return updateUnreadIndicator(unreads>0);
hgs
parents: 40
diff changeset
   418
}
hgs
parents: 40
diff changeset
   419
hgs
parents: 40
diff changeset
   420
/*!
62
hgs
parents: 56
diff changeset
   421
    Update mailbox visibility according to current status
hgs
parents: 56
diff changeset
   422
*/
hgs
parents: 56
diff changeset
   423
bool NmMailAgent::updateMailboxState(const NmId &mailboxId) 
hgs
parents: 56
diff changeset
   424
{
hgs
parents: 56
diff changeset
   425
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
hgs
parents: 56
diff changeset
   426
    bool shown = false;
hgs
parents: 56
diff changeset
   427
    
hgs
parents: 56
diff changeset
   428
    if( mailboxInfo->mActive && 
hgs
parents: 56
diff changeset
   429
        (mailboxInfo->mNewUnreadMailIdList.count() > 0 ||
hgs
parents: 56
diff changeset
   430
         mailboxInfo->mOutboxMails>0)) {
hgs
parents: 56
diff changeset
   431
        shown = true;
hgs
parents: 56
diff changeset
   432
    }
hgs
parents: 56
diff changeset
   433
    
hgs
parents: 56
diff changeset
   434
    return updateMailboxState(mailboxId,shown,false);
hgs
parents: 56
diff changeset
   435
}
hgs
parents: 56
diff changeset
   436
hgs
parents: 56
diff changeset
   437
hgs
parents: 56
diff changeset
   438
/*!
51
hgs
parents: 48
diff changeset
   439
    Update the mailbox visibility and status.
hgs
parents: 48
diff changeset
   440
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    \param mailboxId id of the mailbox
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
    \param active visibility state of the mailbox
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   443
    \param refreshAlways true when the indicator should be always updated
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
    \return true if the mailbox state was changed
51
hgs
parents: 48
diff changeset
   445
 */
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   446
bool NmMailAgent::updateMailboxState(const NmId &mailboxId,
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   447
    bool active, bool refreshAlways)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
{
43
hgs
parents: 40
diff changeset
   449
    NM_FUNCTION;
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   450
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
    bool changed = false;
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   453
    if (mailboxInfo->mActive != active ||
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   454
        refreshAlways) {
47
hgs
parents: 44
diff changeset
   455
51
hgs
parents: 48
diff changeset
   456
        // store the new state to permanent storage
44
hgs
parents: 43
diff changeset
   457
        storeMailboxActive(mailboxId, active);
47
hgs
parents: 44
diff changeset
   458
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
        mailboxInfo->mActive = active;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
        changed = true;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
        if (active) {
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   462
            // Mailbox is not yet assigned to any indicator
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   463
            if (mailboxInfo->mIndicatorIndex < 0) {
43
hgs
parents: 40
diff changeset
   464
                mailboxInfo->mIndicatorIndex = getFreeIndicatorIndex();
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   465
            }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   466
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   467
            updateIndicator(true,*mailboxInfo);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   468
        }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   469
        else {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   470
            // Indicator not anymore active. Release it.
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   471
            if (mailboxInfo->mIndicatorIndex>=0) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   472
                updateIndicator(false,*mailboxInfo);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   473
                mailboxInfo->mIndicatorIndex = NmAgentIndicatorNotSet;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   474
            }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
        }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
    return changed;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
/*!
51
hgs
parents: 48
diff changeset
   481
    Updates indicator status.
hgs
parents: 48
diff changeset
   482
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
    \param mailboxIndex index of the item shown in indicator menu
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
    \param active indicator visibility state
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
    \param mailboxInfo information of the mailbox
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
    \return true if indicator was updated with no errors
51
hgs
parents: 48
diff changeset
   487
 */
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   488
bool NmMailAgent::updateIndicator(bool active,
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
    const NmMailboxInfo& mailboxInfo)
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
{
43
hgs
parents: 40
diff changeset
   491
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   492
    NM_COMMENT(QString("NmMailAgent::updateIndicator(): index=%1, active=%2").
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   493
        arg(mailboxInfo.mIndicatorIndex).arg(active));
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    bool ok = false;
43
hgs
parents: 40
diff changeset
   496
    QString name = QString(NmMailboxIndicatorType).
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   497
        arg(mailboxInfo.mIndicatorIndex);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
    QList<QVariant> list;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
    list.append(mailboxInfo.mId.id());
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
    list.append(mailboxInfo.mName);
62
hgs
parents: 56
diff changeset
   502
    list.append(mailboxInfo.mNewUnreadMailIdList.count());
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
    list.append(mailboxInfo.mSyncState);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
    list.append(mailboxInfo.mConnectState);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   505
    list.append(mailboxInfo.mOutboxMails);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
   506
    list.append(mailboxInfo.mIconName);
43
hgs
parents: 40
diff changeset
   507
    list.append(mLastOutboxCount);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
    if (active) {
43
hgs
parents: 40
diff changeset
   510
        ok = mIndicator->activate(name,list);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
    else {
43
hgs
parents: 40
diff changeset
   513
        ok = mIndicator->deactivate(name,list);
hgs
parents: 40
diff changeset
   514
    }
hgs
parents: 40
diff changeset
   515
hgs
parents: 40
diff changeset
   516
    updateUnreadIndicator();
hgs
parents: 40
diff changeset
   517
hgs
parents: 40
diff changeset
   518
    return ok;
hgs
parents: 40
diff changeset
   519
}
hgs
parents: 40
diff changeset
   520
hgs
parents: 40
diff changeset
   521
/*!
51
hgs
parents: 48
diff changeset
   522
    Update the unread indicator state.
hgs
parents: 48
diff changeset
   523
hgs
parents: 48
diff changeset
   524
    \param active if true unread indicator is activated otherwise deactivated
43
hgs
parents: 40
diff changeset
   525
    \return true if the indicator was activated
51
hgs
parents: 48
diff changeset
   526
 */
43
hgs
parents: 40
diff changeset
   527
bool NmMailAgent::updateUnreadIndicator(bool active)
hgs
parents: 40
diff changeset
   528
{
hgs
parents: 40
diff changeset
   529
    NM_FUNCTION;
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   530
43
hgs
parents: 40
diff changeset
   531
    bool activated = false;
62
hgs
parents: 56
diff changeset
   532
    bool ok;
hgs
parents: 56
diff changeset
   533
    if (active) {
hgs
parents: 56
diff changeset
   534
        ok = mIndicator->activate(NmUnreadIndicatorName);
hgs
parents: 56
diff changeset
   535
        activated = true;
hgs
parents: 56
diff changeset
   536
    }
hgs
parents: 56
diff changeset
   537
    else {
hgs
parents: 56
diff changeset
   538
        ok = mIndicator->deactivate(NmUnreadIndicatorName);
hgs
parents: 56
diff changeset
   539
    }
hgs
parents: 56
diff changeset
   540
hgs
parents: 56
diff changeset
   541
    // update the state only if the activation/deactivation was successful
hgs
parents: 56
diff changeset
   542
    if (ok) {
44
hgs
parents: 43
diff changeset
   543
        mUnreadIndicatorActive = active;
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
    }
44
hgs
parents: 43
diff changeset
   545
43
hgs
parents: 40
diff changeset
   546
    return activated;
hgs
parents: 40
diff changeset
   547
}
hgs
parents: 40
diff changeset
   548
hgs
parents: 40
diff changeset
   549
/*!
51
hgs
parents: 48
diff changeset
   550
    Opens inbox view to specific mailbox.
hgs
parents: 48
diff changeset
   551
hgs
parents: 48
diff changeset
   552
    \param mailboxId Id of mailbox
43
hgs
parents: 40
diff changeset
   553
    \return true if inbox is succesfully opened
51
hgs
parents: 48
diff changeset
   554
 */
43
hgs
parents: 40
diff changeset
   555
bool NmMailAgent::launchMailbox(quint64 mailboxId)
hgs
parents: 40
diff changeset
   556
{
hgs
parents: 40
diff changeset
   557
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   558
47
hgs
parents: 44
diff changeset
   559
    bool ok(false);
44
hgs
parents: 43
diff changeset
   560
    XQApplicationManager appManager;
hgs
parents: 43
diff changeset
   561
    XQAiwRequest *request = appManager.create(
hgs
parents: 43
diff changeset
   562
        XQI_EMAIL_INBOX_VIEW, XQOP_EMAIL_INBOX_VIEW, false);
47
hgs
parents: 44
diff changeset
   563
    // Instance might be NULL if the service is not available.
hgs
parents: 44
diff changeset
   564
    if (request) {
hgs
parents: 44
diff changeset
   565
        QList<QVariant> list;
hgs
parents: 44
diff changeset
   566
        list.append(QVariant(mailboxId));
hgs
parents: 44
diff changeset
   567
        request->setArguments(list);
hgs
parents: 44
diff changeset
   568
        ok = request->send();
hgs
parents: 44
diff changeset
   569
        NM_COMMENT(QString("Launch ok=%1 error=%2").arg(ok).arg(request->lastError()));
hgs
parents: 44
diff changeset
   570
        delete request;
hgs
parents: 44
diff changeset
   571
    }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
    return ok;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
/*!
51
hgs
parents: 48
diff changeset
   576
    Handles message created event.
hgs
parents: 48
diff changeset
   577
hgs
parents: 48
diff changeset
   578
    \param folderId Id of the folder that includes the message
hgs
parents: 48
diff changeset
   579
    \param messageIds Message ids that are checked
hgs
parents: 48
diff changeset
   580
    \param mailboxId Id of the mailbox that includes the message
hgs
parents: 48
diff changeset
   581
 */
hgs
parents: 48
diff changeset
   582
void NmMailAgent::handleMessageCreatedEvent(const NmId &folderId, const QList<NmId> &messageIds,
62
hgs
parents: 56
diff changeset
   583
    const NmId &mailboxId)
51
hgs
parents: 48
diff changeset
   584
{
hgs
parents: 48
diff changeset
   585
    NM_FUNCTION;
hgs
parents: 48
diff changeset
   586
hgs
parents: 48
diff changeset
   587
    // Check the new messages to make the indicator appear earlier
hgs
parents: 48
diff changeset
   588
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
hgs
parents: 48
diff changeset
   589
hgs
parents: 48
diff changeset
   590
    // Inbox folder ID may be still unknown
hgs
parents: 48
diff changeset
   591
    if (mailboxInfo->mInboxFolderId.id() == 0) {
hgs
parents: 48
diff changeset
   592
        NmDataPluginInterface *plugin =
hgs
parents: 48
diff changeset
   593
            mPluginFactory->interfaceInstance(mailboxId);
hgs
parents: 48
diff changeset
   594
hgs
parents: 48
diff changeset
   595
        if (plugin) {
hgs
parents: 48
diff changeset
   596
            mailboxInfo->mInboxFolderId =
hgs
parents: 48
diff changeset
   597
                plugin->getStandardFolderId(mailboxId, NmFolderInbox);
hgs
parents: 48
diff changeset
   598
        }
hgs
parents: 48
diff changeset
   599
    }
hgs
parents: 48
diff changeset
   600
hgs
parents: 48
diff changeset
   601
    if (folderId == mailboxInfo->mInboxFolderId) {
62
hgs
parents: 56
diff changeset
   602
        mailboxInfo->mInboxCreatedMessages += messageIds.count();
hgs
parents: 56
diff changeset
   603
51
hgs
parents: 48
diff changeset
   604
        foreach (NmId messageId, messageIds) {
hgs
parents: 48
diff changeset
   605
            bool messageUnread = false;
62
hgs
parents: 56
diff changeset
   606
            mailboxInfo->mMailIdList.append(messageId);
51
hgs
parents: 48
diff changeset
   607
62
hgs
parents: 56
diff changeset
   608
            // double check that the message ID is really new
hgs
parents: 56
diff changeset
   609
            bool newMessage = true;
hgs
parents: 56
diff changeset
   610
            if (mailboxInfo->mNewUnreadMailIdList.indexOf(messageId)>=0) {
hgs
parents: 56
diff changeset
   611
                newMessage = false;
hgs
parents: 56
diff changeset
   612
            }
hgs
parents: 56
diff changeset
   613
hgs
parents: 56
diff changeset
   614
            // If it is a new message, update the mailbox status
hgs
parents: 56
diff changeset
   615
            if (newMessage) {
51
hgs
parents: 48
diff changeset
   616
                if (getMessageUnreadInfo(folderId, messageId, mailboxId, messageUnread)) {
hgs
parents: 48
diff changeset
   617
                    if (messageUnread) {
62
hgs
parents: 56
diff changeset
   618
                        mailboxInfo->mNewUnreadMailIdList.append(messageId);
hgs
parents: 56
diff changeset
   619
                        NM_COMMENT(QString(" new unread messages: count=%1").
hgs
parents: 56
diff changeset
   620
                            arg(mailboxInfo->mNewUnreadMailIdList.count()));
hgs
parents: 56
diff changeset
   621
hgs
parents: 56
diff changeset
   622
                        if (!mUnreadIndicatorActive) {
hgs
parents: 56
diff changeset
   623
                            // make the "@" appear immediatelly
hgs
parents: 56
diff changeset
   624
                            updateUnreadIndicator(true);
hgs
parents: 56
diff changeset
   625
                        }
51
hgs
parents: 48
diff changeset
   626
                        updateMailboxState(mailboxId, true, false);
hgs
parents: 48
diff changeset
   627
hgs
parents: 48
diff changeset
   628
                        // Play the tone as well
hgs
parents: 48
diff changeset
   629
                        playAlertTone();
hgs
parents: 48
diff changeset
   630
                    }
hgs
parents: 48
diff changeset
   631
                }
hgs
parents: 48
diff changeset
   632
            }
hgs
parents: 48
diff changeset
   633
        }
hgs
parents: 48
diff changeset
   634
    }
hgs
parents: 48
diff changeset
   635
hgs
parents: 48
diff changeset
   636
    // When created a new mail in the outbox, we are in sending state
hgs
parents: 48
diff changeset
   637
    if (mailboxInfo->mOutboxFolderId == folderId) {
hgs
parents: 48
diff changeset
   638
        // The first mail created in the outbox
hgs
parents: 48
diff changeset
   639
        if (mailboxInfo->mOutboxMails <= 0) {
hgs
parents: 48
diff changeset
   640
            NM_COMMENT("NmMailAgent: first mail in outbox");
hgs
parents: 48
diff changeset
   641
        }
hgs
parents: 48
diff changeset
   642
        mailboxInfo->mOutboxMails += messageIds.count();
62
hgs
parents: 56
diff changeset
   643
        
hgs
parents: 56
diff changeset
   644
        updateMailboxState(mailboxId,true,true);
51
hgs
parents: 48
diff changeset
   645
        updateSendIndicator();
hgs
parents: 48
diff changeset
   646
    }
hgs
parents: 48
diff changeset
   647
}
hgs
parents: 48
diff changeset
   648
hgs
parents: 48
diff changeset
   649
hgs
parents: 48
diff changeset
   650
/*!
hgs
parents: 48
diff changeset
   651
    Handles message changed event.
hgs
parents: 48
diff changeset
   652
    \sa updateUnreadCount
hgs
parents: 48
diff changeset
   653
hgs
parents: 48
diff changeset
   654
    \param folderId Id of the folder that includes the message
56
hgs
parents: 51
diff changeset
   655
    \param messageIds Message ids that are checked
51
hgs
parents: 48
diff changeset
   656
    \param mailboxId Id of the mailbox that includes the message
hgs
parents: 48
diff changeset
   657
 */
62
hgs
parents: 56
diff changeset
   658
void NmMailAgent::handleMessageChangedEvent(const NmId &folderId,
56
hgs
parents: 51
diff changeset
   659
    const QList<NmId> &messageIds,
62
hgs
parents: 56
diff changeset
   660
    const NmId &mailboxId)
51
hgs
parents: 48
diff changeset
   661
{
62
hgs
parents: 56
diff changeset
   662
    NM_FUNCTION;
hgs
parents: 56
diff changeset
   663
51
hgs
parents: 48
diff changeset
   664
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
hgs
parents: 48
diff changeset
   665
56
hgs
parents: 51
diff changeset
   666
    // we are interested only about changes in the inbox
62
hgs
parents: 56
diff changeset
   667
    if (mailboxInfo && folderId == mailboxInfo->mInboxFolderId) {
51
hgs
parents: 48
diff changeset
   668
        mailboxInfo->mInboxChangedMessages++;
hgs
parents: 48
diff changeset
   669
62
hgs
parents: 56
diff changeset
   670
        if (mailboxInfo->mNewUnreadMailIdList.count()>0) {
hgs
parents: 56
diff changeset
   671
            bool updateMailbox = false;
hgs
parents: 56
diff changeset
   672
hgs
parents: 56
diff changeset
   673
            // Check how many messages was in the list of new unread mails
hgs
parents: 56
diff changeset
   674
            foreach (NmId messageId, messageIds) {
hgs
parents: 56
diff changeset
   675
                if (mailboxInfo->mNewUnreadMailIdList.indexOf(messageId)>=0) {
hgs
parents: 56
diff changeset
   676
                    bool messageUnread(false);
hgs
parents: 56
diff changeset
   677
                    if (getMessageUnreadInfo(folderId, messageId, mailboxId, messageUnread)) {
hgs
parents: 56
diff changeset
   678
                        // Message is no longer unread
hgs
parents: 56
diff changeset
   679
                        if (!messageUnread) {
hgs
parents: 56
diff changeset
   680
                            mailboxInfo->mNewUnreadMailIdList.removeAll(messageId);
hgs
parents: 56
diff changeset
   681
                            updateMailbox = true;
hgs
parents: 56
diff changeset
   682
                        }
56
hgs
parents: 51
diff changeset
   683
                    }
hgs
parents: 51
diff changeset
   684
                }
62
hgs
parents: 56
diff changeset
   685
            }
hgs
parents: 56
diff changeset
   686
            
hgs
parents: 56
diff changeset
   687
            if (updateMailbox) {
hgs
parents: 56
diff changeset
   688
                updateMailboxState(mailboxId);
hgs
parents: 56
diff changeset
   689
                updateUnreadIndicator();
56
hgs
parents: 51
diff changeset
   690
            }
51
hgs
parents: 48
diff changeset
   691
        }
hgs
parents: 48
diff changeset
   692
    }
hgs
parents: 48
diff changeset
   693
}
hgs
parents: 48
diff changeset
   694
hgs
parents: 48
diff changeset
   695
/*!
hgs
parents: 48
diff changeset
   696
    Handles message deleted event.
hgs
parents: 48
diff changeset
   697
hgs
parents: 48
diff changeset
   698
    \param folderId Id of the folder that includes the message
hgs
parents: 48
diff changeset
   699
    \param messageIds Message ids that are checked
hgs
parents: 48
diff changeset
   700
    \param mailboxId Id of the mailbox that includes the message
hgs
parents: 48
diff changeset
   701
 */
hgs
parents: 48
diff changeset
   702
void NmMailAgent::handleMessageDeletedEvent(const NmId &folderId, const QList<NmId> &messageIds,
62
hgs
parents: 56
diff changeset
   703
    const NmId &mailboxId)
51
hgs
parents: 48
diff changeset
   704
{
62
hgs
parents: 56
diff changeset
   705
    NM_FUNCTION;
hgs
parents: 56
diff changeset
   706
    
51
hgs
parents: 48
diff changeset
   707
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
hgs
parents: 48
diff changeset
   708
62
hgs
parents: 56
diff changeset
   709
    if (mailboxInfo && folderId == mailboxInfo->mInboxFolderId) {
51
hgs
parents: 48
diff changeset
   710
        mailboxInfo->mInboxDeletedMessages++;
62
hgs
parents: 56
diff changeset
   711
hgs
parents: 56
diff changeset
   712
        // Clear the IDs from 'new unread messages' list
hgs
parents: 56
diff changeset
   713
        foreach (NmId messageId, messageIds) {
hgs
parents: 56
diff changeset
   714
            mailboxInfo->mNewUnreadMailIdList.removeAll(messageId);
hgs
parents: 56
diff changeset
   715
        }
hgs
parents: 56
diff changeset
   716
hgs
parents: 56
diff changeset
   717
        // All new unread messages are now deleted
hgs
parents: 56
diff changeset
   718
        if (mailboxInfo->mNewUnreadMailIdList.count()==0) {
hgs
parents: 56
diff changeset
   719
            NM_COMMENT(" No more new unread messages");
hgs
parents: 56
diff changeset
   720
            updateUnreadIndicator();
hgs
parents: 56
diff changeset
   721
            updateMailboxState(mailboxId);
hgs
parents: 56
diff changeset
   722
        }
51
hgs
parents: 48
diff changeset
   723
    }
hgs
parents: 48
diff changeset
   724
hgs
parents: 48
diff changeset
   725
    // Deleted mails from the outbox
hgs
parents: 48
diff changeset
   726
    if (mailboxInfo->mOutboxFolderId == folderId) {
hgs
parents: 48
diff changeset
   727
        mailboxInfo->mOutboxMails -= messageIds.count();
hgs
parents: 48
diff changeset
   728
hgs
parents: 48
diff changeset
   729
        // Sanity check for the outbox count
hgs
parents: 48
diff changeset
   730
        if (mailboxInfo->mOutboxMails < 0) {
hgs
parents: 48
diff changeset
   731
            mailboxInfo->mOutboxMails = 0;
hgs
parents: 48
diff changeset
   732
        }
hgs
parents: 48
diff changeset
   733
62
hgs
parents: 56
diff changeset
   734
        // The last mail was now deleted from outbox
51
hgs
parents: 48
diff changeset
   735
        if (mailboxInfo->mOutboxMails == 0) {
hgs
parents: 48
diff changeset
   736
            NM_COMMENT("NmMailAgent: last mail deleted from outbox");
62
hgs
parents: 56
diff changeset
   737
            updateSendIndicator();
51
hgs
parents: 48
diff changeset
   738
        }
62
hgs
parents: 56
diff changeset
   739
        updateMailboxState(mailboxId);
51
hgs
parents: 48
diff changeset
   740
    }
hgs
parents: 48
diff changeset
   741
}
hgs
parents: 48
diff changeset
   742
hgs
parents: 48
diff changeset
   743
/*!
hgs
parents: 48
diff changeset
   744
    Get next free indicator index, starting from 0.
hgs
parents: 48
diff changeset
   745
hgs
parents: 48
diff changeset
   746
    \return index of the indicator that is available
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   747
 */
43
hgs
parents: 40
diff changeset
   748
int NmMailAgent::getFreeIndicatorIndex()
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   749
{
43
hgs
parents: 40
diff changeset
   750
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   751
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   752
    int index = 0;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   753
    bool found(false);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   754
    do {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   755
        found = false;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   756
        foreach (NmMailboxInfo *mailbox, mMailboxes) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   757
            if (mailbox->mIndicatorIndex == index &&
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   758
                mailbox->mActive) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   759
                found = true;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   760
                index++;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   761
            }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   762
        }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   763
    }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   764
    while( found );
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   765
    return index;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   766
}
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   767
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   768
/*!
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   769
    Received from NmFrameworkAdapter mailboxEvent signal
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   770
    \sa NmFrameworkAdapter
51
hgs
parents: 48
diff changeset
   771
hgs
parents: 48
diff changeset
   772
    \param event Mailbox event type
hgs
parents: 48
diff changeset
   773
    \param mailboxIds Mailbox ids that are checked
hgs
parents: 48
diff changeset
   774
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   775
void NmMailAgent::handleMailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds)
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   776
{
43
hgs
parents: 40
diff changeset
   777
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   778
    NM_COMMENT(QString("NmMailAgent::handleMailboxEvent(): event=%1").arg(event));
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   779
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   780
    switch(event) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   781
        case NmMailboxCreated:
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   782
            foreach (NmId mailboxId, mailboxIds) {
51
hgs
parents: 48
diff changeset
   783
                NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId); // create a new mailbox if needed
hgs
parents: 48
diff changeset
   784
                if (!mailboxInfo) {
hgs
parents: 48
diff changeset
   785
                    // Unable to initialise the mailbox. Try again later.
hgs
parents: 48
diff changeset
   786
                    NM_COMMENT("Cannot initialise mailbox");
56
hgs
parents: 51
diff changeset
   787
51
hgs
parents: 48
diff changeset
   788
                    qRegisterMetaType<NmId>("NmId");
hgs
parents: 48
diff changeset
   789
                    QMetaObject::invokeMethod(this, "delayedMailboxCreated",
hgs
parents: 48
diff changeset
   790
                        Qt::QueuedConnection, Q_ARG(NmId,mailboxId));
hgs
parents: 48
diff changeset
   791
                }
47
hgs
parents: 44
diff changeset
   792
44
hgs
parents: 43
diff changeset
   793
                // make sure the mailbox activity data is reseted
hgs
parents: 43
diff changeset
   794
                deleteStoredMailboxActivity(mailboxId);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   795
            }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   796
            break;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   797
        case NmMailboxChanged:
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   798
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   799
            // Mailbox name may have been changed
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   800
            foreach (NmId mailboxId, mailboxIds) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   801
                NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   802
                NmMailbox *mailbox(NULL);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   803
                NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   804
                if (plugin) {
51
hgs
parents: 48
diff changeset
   805
                    plugin->getMailboxById(mailboxId,mailbox);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   806
                }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   807
                if (mailbox && mailboxInfo) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   808
                    if(mailbox->name() != mailboxInfo->mName) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   809
                        mailboxInfo->mName = mailbox->name();
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   810
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   811
                        if (mailboxInfo->mActive) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   812
                            // Update the status of the mailbox
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   813
                            updateMailboxState(mailboxId, true, true);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   814
                        }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   815
                    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   816
                }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   817
                delete mailbox;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   818
            }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   819
            break;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   820
        case NmMailboxDeleted:
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   821
            foreach (NmId mailboxId, mailboxIds) {
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   822
                // Will hide also the indicator
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   823
                removeMailboxInfo(mailboxId);
47
hgs
parents: 44
diff changeset
   824
44
hgs
parents: 43
diff changeset
   825
                // make sure the mailbox activity data is deleted
hgs
parents: 43
diff changeset
   826
                deleteStoredMailboxActivity(mailboxId);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   827
            }
43
hgs
parents: 40
diff changeset
   828
            updateUnreadIndicator();
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   829
            break;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   830
        default:
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   831
            break;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   832
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   833
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   834
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   835
/*!
56
hgs
parents: 51
diff changeset
   836
    Called when mailbox is initialised with a delay. This may happen at least when
51
hgs
parents: 48
diff changeset
   837
    NmMailboxCreated event is received.
56
hgs
parents: 51
diff changeset
   838
51
hgs
parents: 48
diff changeset
   839
    \param mailboxId id of the mailbox
43
hgs
parents: 40
diff changeset
   840
*/
51
hgs
parents: 48
diff changeset
   841
void NmMailAgent::delayedMailboxCreated(const NmId mailboxId)
hgs
parents: 48
diff changeset
   842
{
hgs
parents: 48
diff changeset
   843
    NM_FUNCTION;
hgs
parents: 48
diff changeset
   844
hgs
parents: 48
diff changeset
   845
    // create and subscribe to the mailbox, if not done earlier
hgs
parents: 48
diff changeset
   846
    getMailboxInfo(mailboxId);
hgs
parents: 48
diff changeset
   847
}
hgs
parents: 48
diff changeset
   848
62
hgs
parents: 56
diff changeset
   849
hgs
parents: 56
diff changeset
   850
/*!
hgs
parents: 56
diff changeset
   851
    Handles the view state changed UI event. The event notification is received
hgs
parents: 56
diff changeset
   852
    via NmUiEventsNotifier.
hgs
parents: 56
diff changeset
   853
hgs
parents: 56
diff changeset
   854
    \param eventType The type of the UI event.
hgs
parents: 56
diff changeset
   855
    \param viewId The ID of the view the event concerns.
hgs
parents: 56
diff changeset
   856
    \param mailboxId The ID of the mailbox related to the UI event.
hgs
parents: 56
diff changeset
   857
*/
hgs
parents: 56
diff changeset
   858
void NmMailAgent::handleViewStateChangedEvent(
hgs
parents: 56
diff changeset
   859
    const NmUiEventsNotifier::NmUiEventType eventType,
hgs
parents: 56
diff changeset
   860
    const NmUiViewId viewId,
hgs
parents: 56
diff changeset
   861
    const NmId mailboxId)
hgs
parents: 56
diff changeset
   862
{
hgs
parents: 56
diff changeset
   863
    if (eventType == NmUiEventsNotifier::NmViewShownEvent &&
hgs
parents: 56
diff changeset
   864
        viewId == NmUiViewMessageList) {
hgs
parents: 56
diff changeset
   865
        // Get the mailbox info.
hgs
parents: 56
diff changeset
   866
        NmMailboxInfo *info = getMailboxInfo(mailboxId);
hgs
parents: 56
diff changeset
   867
hgs
parents: 56
diff changeset
   868
        if (info) {
hgs
parents: 56
diff changeset
   869
            // The message list view was shown. If the indicator of the mailbox
hgs
parents: 56
diff changeset
   870
            // in question is active, deactivate it.
hgs
parents: 56
diff changeset
   871
            updateMailboxState(info->mId, false, false);  
hgs
parents: 56
diff changeset
   872
            resetMailboxState(info);
hgs
parents: 56
diff changeset
   873
        }
hgs
parents: 56
diff changeset
   874
    }
hgs
parents: 56
diff changeset
   875
}
hgs
parents: 56
diff changeset
   876
hgs
parents: 56
diff changeset
   877
51
hgs
parents: 48
diff changeset
   878
/*!
hgs
parents: 48
diff changeset
   879
   Map the type name to mailbox info.
hgs
parents: 48
diff changeset
   880
hgs
parents: 48
diff changeset
   881
   \param type Indicator type name
hgs
parents: 48
diff changeset
   882
   \return NULL if no mailbox match the type
hgs
parents: 48
diff changeset
   883
 */
43
hgs
parents: 40
diff changeset
   884
NmMailboxInfo *NmMailAgent::getMailboxByType(const QString &type)
hgs
parents: 40
diff changeset
   885
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   886
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   887
51
hgs
parents: 48
diff changeset
   888
    NmMailboxInfo *foundMailbox = NULL;
43
hgs
parents: 40
diff changeset
   889
    foreach (NmMailboxInfo *mailbox, mMailboxes) {
hgs
parents: 40
diff changeset
   890
        // mailbox is shown in indicators
hgs
parents: 40
diff changeset
   891
        if (mailbox->mIndicatorIndex >= 0 && mailbox->mActive) {
hgs
parents: 40
diff changeset
   892
            QString typeName = QString(NmMailboxIndicatorType).arg(mailbox->mIndicatorIndex);
hgs
parents: 40
diff changeset
   893
hgs
parents: 40
diff changeset
   894
            // type names match(!)
51
hgs
parents: 48
diff changeset
   895
            if (type == typeName) {
hgs
parents: 48
diff changeset
   896
                foundMailbox = mailbox;
hgs
parents: 48
diff changeset
   897
                break;
43
hgs
parents: 40
diff changeset
   898
            }
hgs
parents: 40
diff changeset
   899
        }
hgs
parents: 40
diff changeset
   900
    }
51
hgs
parents: 48
diff changeset
   901
    return foundMailbox;
43
hgs
parents: 40
diff changeset
   902
}
hgs
parents: 40
diff changeset
   903
hgs
parents: 40
diff changeset
   904
/*!
62
hgs
parents: 56
diff changeset
   905
    Clear the mailbox state to be 'seen'
hgs
parents: 56
diff changeset
   906
    \param info mailbox that will be reseted
hgs
parents: 56
diff changeset
   907
 */
hgs
parents: 56
diff changeset
   908
void NmMailAgent::resetMailboxState(NmMailboxInfo *info)
hgs
parents: 56
diff changeset
   909
{
hgs
parents: 56
diff changeset
   910
    NM_FUNCTION;
hgs
parents: 56
diff changeset
   911
    
hgs
parents: 56
diff changeset
   912
    info->mActive = false; // indicator is no longer active
hgs
parents: 56
diff changeset
   913
    info->mNewUnreadMailIdList.clear(); // no mails are no longer 'new'
hgs
parents: 56
diff changeset
   914
    storeMailboxActive(info->mId, false);
hgs
parents: 56
diff changeset
   915
    updateUnreadIndicator();
hgs
parents: 56
diff changeset
   916
}
hgs
parents: 56
diff changeset
   917
hgs
parents: 56
diff changeset
   918
/*!
43
hgs
parents: 40
diff changeset
   919
    Called when indicator is clicked from the indicator menu
hgs
parents: 40
diff changeset
   920
    - indicator will be hide from the menu
hgs
parents: 40
diff changeset
   921
    - mailbox will be launched
51
hgs
parents: 48
diff changeset
   922
hgs
parents: 48
diff changeset
   923
    \param type Indicator type name
hgs
parents: 48
diff changeset
   924
    \param data Data sent by indicator
hgs
parents: 48
diff changeset
   925
 */
43
hgs
parents: 40
diff changeset
   926
void NmMailAgent::indicatorActivated(const QString &type, const QVariantMap &data)
hgs
parents: 40
diff changeset
   927
{
hgs
parents: 40
diff changeset
   928
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   929
    Q_UNUSED(data);
47
hgs
parents: 44
diff changeset
   930
43
hgs
parents: 40
diff changeset
   931
    // map the indicator type to mailbox
hgs
parents: 40
diff changeset
   932
    NmMailboxInfo *info = getMailboxByType(type);
hgs
parents: 40
diff changeset
   933
    if (info) {
62
hgs
parents: 56
diff changeset
   934
        resetMailboxState(info);
43
hgs
parents: 40
diff changeset
   935
hgs
parents: 40
diff changeset
   936
        launchMailbox(info->mId.id());
hgs
parents: 40
diff changeset
   937
    }
hgs
parents: 40
diff changeset
   938
}
hgs
parents: 40
diff changeset
   939
hgs
parents: 40
diff changeset
   940
/*!
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   941
    Called when cenrep key value has been changed.
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   942
    - only silence mode key handled
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   943
51
hgs
parents: 48
diff changeset
   944
    \param key changed key
hgs
parents: 48
diff changeset
   945
    \param value value for a key
hgs
parents: 48
diff changeset
   946
 */
hgs
parents: 48
diff changeset
   947
void NmMailAgent::valueChanged(const XQSettingsKey &key, const QVariant &value)
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   948
{
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   949
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   950
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   951
    if(keysEqual(key, NmSilenceModeKey)) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   952
        mSilenceMode = value.toInt();
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   953
    }
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   954
}
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   955
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
   956
/*!
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   957
    Received from NmFrameworkAdapter messageEvent signal
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   958
    \sa NmFrameworkAdapter
51
hgs
parents: 48
diff changeset
   959
hgs
parents: 48
diff changeset
   960
    \param event Message event
hgs
parents: 48
diff changeset
   961
    \param folderId Folder Id
hgs
parents: 48
diff changeset
   962
    \param messageIds List of message Ids
hgs
parents: 48
diff changeset
   963
    \param mailboxId Id of the mailbox
hgs
parents: 48
diff changeset
   964
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   965
void NmMailAgent::handleMessageEvent(
51
hgs
parents: 48
diff changeset
   966
    NmMessageEvent event,
hgs
parents: 48
diff changeset
   967
    const NmId &folderId,
hgs
parents: 48
diff changeset
   968
    const QList<NmId> &messageIds,
hgs
parents: 48
diff changeset
   969
    const NmId &mailboxId)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   970
{
43
hgs
parents: 40
diff changeset
   971
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   972
    NM_COMMENT(QString("NmMailAgent::handleMessageEvent(): event=%1, id=%2").
hgs
parents: 40
diff changeset
   973
        arg(event).arg(mailboxId.id()));
hgs
parents: 40
diff changeset
   974
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   975
    switch (event) {
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   976
        case NmMessageCreated: {
62
hgs
parents: 56
diff changeset
   977
            handleMessageCreatedEvent(folderId, messageIds, mailboxId);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   978
            break;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   979
        }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   980
        case NmMessageChanged: {
62
hgs
parents: 56
diff changeset
   981
            handleMessageChangedEvent(folderId, messageIds, mailboxId);
51
hgs
parents: 48
diff changeset
   982
            break;
hgs
parents: 48
diff changeset
   983
        }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   984
        case NmMessageDeleted: {
62
hgs
parents: 56
diff changeset
   985
            handleMessageDeletedEvent(folderId, messageIds, mailboxId);
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   986
            break;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   987
        }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   988
        default:
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   989
            break;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   990
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   991
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   992
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   993
/*!
51
hgs
parents: 48
diff changeset
   994
    Received from NmFrameworkAdapter syncStateEvent signal.
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
   995
    \sa NmFrameworkAdapter
51
hgs
parents: 48
diff changeset
   996
hgs
parents: 48
diff changeset
   997
    \param state state of synchronization
hgs
parents: 48
diff changeset
   998
    \param event Information related to asynchronous operation
hgs
parents: 48
diff changeset
   999
hgs
parents: 48
diff changeset
  1000
 */
hgs
parents: 48
diff changeset
  1001
void NmMailAgent::handleSyncStateEvent(NmSyncState state, const NmOperationCompletionEvent &event)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1002
{
43
hgs
parents: 40
diff changeset
  1003
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1004
    NM_COMMENT(QString("NmMailAgent::handleSyncStateEvent(): state=%1, id=%2").
hgs
parents: 40
diff changeset
  1005
        arg(state).arg(event.mMailboxId.id()));
hgs
parents: 40
diff changeset
  1006
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1007
    NmMailboxInfo *info = getMailboxInfo(event.mMailboxId);
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1008
    if (info) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1009
        info->mSyncState = state;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1010
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1011
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1012
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1013
/*!
51
hgs
parents: 48
diff changeset
  1014
    Received from NmFrameworkAdapter connectionState signal.
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1015
    \sa NmFrameworkAdapter
51
hgs
parents: 48
diff changeset
  1016
hgs
parents: 48
diff changeset
  1017
    \param state Connection state
hgs
parents: 48
diff changeset
  1018
    \param mailboxId Id of the mailbox
hgs
parents: 48
diff changeset
  1019
    \parma errorcode Error code
hgs
parents: 48
diff changeset
  1020
 */
40
hgs
parents: 23
diff changeset
  1021
void NmMailAgent::handleConnectionEvent(NmConnectState state, const NmId mailboxId, int errorcode)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1022
{
43
hgs
parents: 40
diff changeset
  1023
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1024
    NM_COMMENT(QString("NmMailAgent::handleConnectionEvent(): state=%1, id=%2").
hgs
parents: 40
diff changeset
  1025
        arg(state).arg(mailboxId.id()));
hgs
parents: 40
diff changeset
  1026
    Q_UNUSED(errorcode);
hgs
parents: 40
diff changeset
  1027
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1028
    NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1029
    if (mailboxInfo) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1030
        // Connecting, Connected, Disconnecting, Disconnected
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1031
        mailboxInfo->mConnectState = state;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1032
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1033
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1034
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1035
/*!
51
hgs
parents: 48
diff changeset
  1036
    Remove a mailbox info entry.
hgs
parents: 48
diff changeset
  1037
hgs
parents: 48
diff changeset
  1038
    \param id Id of the mailbox
hgs
parents: 48
diff changeset
  1039
    \return true if mailbox info was found.
hgs
parents: 48
diff changeset
  1040
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1041
bool NmMailAgent::removeMailboxInfo(const NmId &id)
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1042
{
43
hgs
parents: 40
diff changeset
  1043
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1044
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1045
    bool found = false;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1046
    foreach (NmMailboxInfo *mailbox, mMailboxes) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1047
        if (mailbox->mId == id) {
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1048
            // Hide the indicator too
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1049
            if(mailbox->mIndicatorIndex>=0) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1050
                updateIndicator(false,*mailbox);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1051
            }
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1052
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1053
            found = true;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1054
            mMailboxes.removeAll(mailbox);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1055
        }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1056
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1057
    return found;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1058
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1059
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1060
/*!
51
hgs
parents: 48
diff changeset
  1061
    Create a new mailbox info entry.
hgs
parents: 48
diff changeset
  1062
hgs
parents: 48
diff changeset
  1063
    \param id Id of the mailbox
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1064
    \return new mailbox info object
51
hgs
parents: 48
diff changeset
  1065
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1066
NmMailboxInfo *NmMailAgent::createMailboxInfo(const NmId &id)
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1067
{
43
hgs
parents: 40
diff changeset
  1068
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1069
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1070
    // get information of the mailbox
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1071
    NmMailbox *mailbox = NULL;
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1072
    NmMailboxInfo *info = NULL;
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1073
    NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(id);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1074
    if (plugin) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1075
        plugin->getMailboxById(id, mailbox);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1076
        if (mailbox) {
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1077
            info = createMailboxInfo(*mailbox,plugin);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1078
        }
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1079
    }
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1080
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1081
    return info;
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1082
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1083
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1084
/*!
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1085
    Create a new mailbox info with given parameters
51
hgs
parents: 48
diff changeset
  1086
hgs
parents: 48
diff changeset
  1087
    \param mailbox Mailbox which mailbox info will be created
hgs
parents: 48
diff changeset
  1088
    \param plugin Interface to access email data
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1089
    \return new mailbox info object
51
hgs
parents: 48
diff changeset
  1090
 */
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1091
NmMailboxInfo *NmMailAgent::createMailboxInfo(const NmMailbox &mailbox, NmDataPluginInterface *plugin)
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1092
{
43
hgs
parents: 40
diff changeset
  1093
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1094
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1095
    NmMailboxInfo *mailboxInfo = new NmMailboxInfo();
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1096
    mailboxInfo->mId = mailbox.id();
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1097
    mailboxInfo->mName = mailbox.name();
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1098
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1099
    mMailboxes.append(mailboxInfo);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1100
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1101
    // Subscribe to get all mailbox events
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1102
    plugin->subscribeMailboxEvents(mailboxInfo->mId);
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1103
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1104
    // get inbox folder ID. It might be still unknown (=0).
20
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1105
    mailboxInfo->mInboxFolderId = plugin->getStandardFolderId(
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1106
        mailbox.id(), NmFolderInbox );
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1107
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1108
    // get outbox folder ID
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1109
    mailboxInfo->mOutboxFolderId = plugin->getStandardFolderId(
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1110
        mailbox.id(), NmFolderOutbox );
ecc8def7944a Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 18
diff changeset
  1111
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1112
    // Get branded mailbox icon
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1113
    NmMailbox mailbox2( mailbox );
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1114
    QString domainName = mailbox2.address().address();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1115
    EmailMailboxInfo emailMailboxInfo;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1116
    mailboxInfo->mIconName =
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1117
        emailMailboxInfo.mailboxIcon(domainName);
40
hgs
parents: 23
diff changeset
  1118
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1119
    return mailboxInfo;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1120
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1121
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1122
/*!
51
hgs
parents: 48
diff changeset
  1123
    Return mailbox info class with mailbox id. If no class is found,
hgs
parents: 48
diff changeset
  1124
    create a new instance with given id.
hgs
parents: 48
diff changeset
  1125
hgs
parents: 48
diff changeset
  1126
    \param id Id of the mailbox
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1127
    \return mailbox info object
51
hgs
parents: 48
diff changeset
  1128
 */
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1129
NmMailboxInfo *NmMailAgent::getMailboxInfo(const NmId &id)
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1130
{
43
hgs
parents: 40
diff changeset
  1131
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1132
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1133
    foreach (NmMailboxInfo *mailbox, mMailboxes) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1134
        if (mailbox->mId == id) {
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1135
            return mailbox;
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1136
        }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1137
    }
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1138
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1139
    // Not found. Create a new mailbox info.
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1140
    return createMailboxInfo(id);
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1141
}
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1142
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1143
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1144
    Finds out if the message is unread.
51
hgs
parents: 48
diff changeset
  1145
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1146
    \param folderId the id of the folder that includes the message
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1147
    \param messageIds the message ids that are checked
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1148
    \param mailboxId the id of the mailbox that includes the message
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1149
    \param unreadMessage true if there was unread messages
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1150
    \return true if info fetching was successful
51
hgs
parents: 48
diff changeset
  1151
 */
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1152
bool NmMailAgent::getMessageUnreadInfo(const NmId &folderId,
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1153
    const NmId &messageId, const NmId &mailboxId, bool &unreadMessage)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1154
{
43
hgs
parents: 40
diff changeset
  1155
    NM_FUNCTION;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1156
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1157
    NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
51
hgs
parents: 48
diff changeset
  1158
    bool ok(false);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1159
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1160
    if (plugin) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1161
        NmMessage *message=NULL;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1162
        plugin->getMessageById(mailboxId, folderId, messageId, message);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1163
        if (message) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1164
            ok = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1165
            NmMessageEnvelope envelope = message->envelope();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1166
            if (!envelope.isRead()) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1167
                unreadMessage = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1168
            }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1169
            delete message;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1170
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1171
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1172
    return ok;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1173
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1174
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1175
/*!
51
hgs
parents: 48
diff changeset
  1176
    Plays email alert tone when new messages arrive.
hgs
parents: 48
diff changeset
  1177
43
hgs
parents: 40
diff changeset
  1178
	\returns true if the tone was played
51
hgs
parents: 48
diff changeset
  1179
 */
43
hgs
parents: 40
diff changeset
  1180
bool NmMailAgent::playAlertTone()
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1181
{
43
hgs
parents: 40
diff changeset
  1182
    NM_FUNCTION;
51
hgs
parents: 48
diff changeset
  1183
    bool played(false);
43
hgs
parents: 40
diff changeset
  1184
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1185
    if (mAlertToneAllowed) {
62
hgs
parents: 56
diff changeset
  1186
        // Play tone only when phone is not in silence mode.
hgs
parents: 56
diff changeset
  1187
        if (!mSilenceMode) {
hgs
parents: 56
diff changeset
  1188
            // Must instantiate it again to make sure correct tone is played  
hgs
parents: 56
diff changeset
  1189
            XQSystemToneService systemTone;
hgs
parents: 56
diff changeset
  1190
            systemTone.playTone(XQSystemToneService::EmailAlertTone);
47
hgs
parents: 44
diff changeset
  1191
        }
hgs
parents: 44
diff changeset
  1192
44
hgs
parents: 43
diff changeset
  1193
        // Execute the vibra effect.
hgs
parents: 43
diff changeset
  1194
        if (mVibra) {
hgs
parents: 43
diff changeset
  1195
            TRAP_IGNORE(mVibra->StartVibraL(NmAgentDefaultVibraDuration));
hgs
parents: 43
diff changeset
  1196
        }
47
hgs
parents: 44
diff changeset
  1197
43
hgs
parents: 40
diff changeset
  1198
        // play alert only once per minute
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1199
        mAlertToneAllowed = false;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1200
        QTimer::singleShot(NmAgentAlertToneTimer, this, SLOT(enableAlertTone()));
51
hgs
parents: 48
diff changeset
  1201
        played = true;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1202
    }
44
hgs
parents: 43
diff changeset
  1203
51
hgs
parents: 48
diff changeset
  1204
    return played;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1205
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1206
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1207
/*!
51
hgs
parents: 48
diff changeset
  1208
    Allows alert tune to be played again.
hgs
parents: 48
diff changeset
  1209
 */
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1210
void NmMailAgent::enableAlertTone()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1211
{
43
hgs
parents: 40
diff changeset
  1212
    NM_FUNCTION;
hgs
parents: 40
diff changeset
  1213
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1214
    mAlertToneAllowed = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1215
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 20
diff changeset
  1216
43
hgs
parents: 40
diff changeset
  1217
/*!
51
hgs
parents: 48
diff changeset
  1218
    Update send indicator according to outbox state.
hgs
parents: 48
diff changeset
  1219
 */
43
hgs
parents: 40
diff changeset
  1220
void NmMailAgent::updateSendIndicator()
hgs
parents: 40
diff changeset
  1221
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1222
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1223
43
hgs
parents: 40
diff changeset
  1224
    // Get number of mails in outboxes
51
hgs
parents: 48
diff changeset
  1225
    int outboxMails(0);
43
hgs
parents: 40
diff changeset
  1226
    foreach (NmMailboxInfo *mailboxInfo, mMailboxes) {
hgs
parents: 40
diff changeset
  1227
        outboxMails += mailboxInfo->mOutboxMails;
hgs
parents: 40
diff changeset
  1228
    }
hgs
parents: 40
diff changeset
  1229
hgs
parents: 40
diff changeset
  1230
    if( outboxMails == 0 ) {
hgs
parents: 40
diff changeset
  1231
        mIndicator->deactivate(NmSendIndicatorName);
hgs
parents: 40
diff changeset
  1232
    }
hgs
parents: 40
diff changeset
  1233
    else if (outboxMails > mLastOutboxCount) {
hgs
parents: 40
diff changeset
  1234
        // New mails detected in outbox
hgs
parents: 40
diff changeset
  1235
51
hgs
parents: 48
diff changeset
  1236
        // indicator will disappear automatically after a delay
43
hgs
parents: 40
diff changeset
  1237
        mIndicator->activate(NmSendIndicatorName);
51
hgs
parents: 48
diff changeset
  1238
    }
43
hgs
parents: 40
diff changeset
  1239
51
hgs
parents: 48
diff changeset
  1240
    mLastOutboxCount = outboxMails;
43
hgs
parents: 40
diff changeset
  1241
}
hgs
parents: 40
diff changeset
  1242
44
hgs
parents: 43
diff changeset
  1243
/*!
51
hgs
parents: 48
diff changeset
  1244
    Store the mailbox active information to permanent storage.
hgs
parents: 48
diff changeset
  1245
hgs
parents: 48
diff changeset
  1246
    \param mailboxId Id of the mailbox
44
hgs
parents: 43
diff changeset
  1247
    \param active true if the mailbox is active
51
hgs
parents: 48
diff changeset
  1248
 */
44
hgs
parents: 43
diff changeset
  1249
void NmMailAgent::storeMailboxActive(const NmId &mailboxId, bool active)
hgs
parents: 43
diff changeset
  1250
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1251
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1252
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1253
    if (mSettingManager) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1254
        XQCentralRepositorySettingsKey key(NmRepositoryId, mailboxId.id());
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1255
        XQCentralRepositoryUtils utils(*mSettingManager);
47
hgs
parents: 44
diff changeset
  1256
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1257
        if (active) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1258
            // when mailbox is active, key can be deleted
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1259
            utils.deleteKey(key);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1260
        }
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1261
        else {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1262
            utils.createKey(key,(int)active);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1263
        }
44
hgs
parents: 43
diff changeset
  1264
    }
hgs
parents: 43
diff changeset
  1265
}
hgs
parents: 43
diff changeset
  1266
hgs
parents: 43
diff changeset
  1267
/*!
47
hgs
parents: 44
diff changeset
  1268
    Get the mailbox activity state.
51
hgs
parents: 48
diff changeset
  1269
44
hgs
parents: 43
diff changeset
  1270
    \param mailboxId id of the mailbox
hgs
parents: 43
diff changeset
  1271
    \return true if the mailbox is active or no information was stored earlier
51
hgs
parents: 48
diff changeset
  1272
 */
44
hgs
parents: 43
diff changeset
  1273
bool NmMailAgent::isMailboxActive(const NmId &mailboxId)
hgs
parents: 43
diff changeset
  1274
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1275
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1276
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1277
    bool mailboxActive(true);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1278
    if (mSettingManager) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1279
        XQCentralRepositorySettingsKey key(NmRepositoryId, mailboxId.id());
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1280
        QVariant value = mSettingManager->readItemValue(key, XQSettingsManager::TypeInt);
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1281
        if (value.isValid()) {
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1282
            NM_COMMENT(QString("NmMailAgent::isMailboxActive - value=%1").arg(value.toInt()));
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1283
            mailboxActive = value.toInt();
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1284
        }
44
hgs
parents: 43
diff changeset
  1285
    }
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1286
    return mailboxActive;
44
hgs
parents: 43
diff changeset
  1287
}
hgs
parents: 43
diff changeset
  1288
hgs
parents: 43
diff changeset
  1289
/*!
51
hgs
parents: 48
diff changeset
  1290
    Delete all stored activity information for the mailbox id.
hgs
parents: 48
diff changeset
  1291
44
hgs
parents: 43
diff changeset
  1292
    \param mailboxId id of the mailbox
51
hgs
parents: 48
diff changeset
  1293
 */
44
hgs
parents: 43
diff changeset
  1294
void NmMailAgent::deleteStoredMailboxActivity(const NmId &mailboxId)
hgs
parents: 43
diff changeset
  1295
{
48
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1296
    NM_FUNCTION;
10eaf342f539 201025_1
hgs
parents: 47
diff changeset
  1297
44
hgs
parents: 43
diff changeset
  1298
    // deactivation delete the key too
51
hgs
parents: 48
diff changeset
  1299
    storeMailboxActive(mailboxId, false);
44
hgs
parents: 43
diff changeset
  1300
}
hgs
parents: 43
diff changeset
  1301
18
578830873419 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1302
// End of file