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