messagingapp/msgnotifications/msgnotifier/src/msgstorehandler.cpp
author hgs
Fri, 06 Aug 2010 23:19:50 +0530
changeset 51 3507212d340e
parent 48 4f501b74aeb1
permissions -rw-r--r--
201031_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
 * All rights reserved.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
84d9eb65b26f Revision: 201015
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".
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
 *
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
 * Initial Contributors:
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
 *
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
 * Contributors:
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
 *
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
 * Description:  Message Store Handling for Indications
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
 *
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
 */
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include "msgstorehandler.h"
37
hgs
parents: 25
diff changeset
    19
#include <xqconversions.h>
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include "msgnotifier_p.h"
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <ccsrequesthandler.h>
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <ccsconversationentry.h>
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <ccsclientconversation.h>
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    24
#include "msgcontacthandler.h"
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <msvids.h>
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <mmsconst.h>
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    27
#include <smuthdr.h>
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <SendUiConsts.h>
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include <msvsearchsortquery.h>
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include <msvsearchsortoperation.h>
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    31
#include <tmsvsmsentry.h>
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    32
#include <txtrich.h>
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    33
#include <ssm/ssmdomaindefs.h>
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    34
#include "debugtraces.h"
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
// CONSTANTS
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    37
_LIT(KUnixEpoch, "19700000:000000.000000");
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
// ================= MEMBER FUNCTIONS =======================
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
// Default constructor.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
MsgStoreHandler::MsgStoreHandler(MsgNotifierPrivate* notifier, CCSRequestHandler* aCvServer) :
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    46
    CActive(EPriorityStandard), iMsvSession(NULL), iNotifier(notifier), iRequestHandler(aCvServer)
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
{
48
4f501b74aeb1 201029_02
hgs
parents: 37
diff changeset
    48
    InitL();
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
// Destructor.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
MsgStoreHandler::~MsgStoreHandler()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
{
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    57
	Cancel();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    58
    iStateAwareSession.Close();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    59
    
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
    if (iMsvEntry) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
        delete iMsvEntry;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
        iMsvEntry = NULL;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    if (iMsvSession) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
        delete iMsvSession;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
        iMsvSession = NULL;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    if (iFailedMessages) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
        delete iFailedMessages;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
        iFailedMessages = NULL;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
// InitL( )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
// Initialize the Store handler.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
void MsgStoreHandler::InitL()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    iMsvSession = CMsvSession::OpenSyncL(*this);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    iMsvEntry = iMsvSession->GetEntryL(KMsvGlobalOutBoxIndexEntryId);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
    iMsvEntry->AddObserverL(*this);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
    iFailedMessages = new (ELeave) CMsvEntrySelection;
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    88
    
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    89
    User::LeaveIfError(iStateAwareSession.Connect(KSM2GenMiddlewareDomain3));
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    90
    CActiveScheduler::Add(this);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    91
    
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    92
    TSsmState ssmState = iStateAwareSession.State();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    93
    
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    94
    if (ssmState.MainState() != ESsmNormal) 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    95
    {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    96
        iStateAwareSession.RequestStateNotification(iStatus);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    97
        SetActive();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    98
    }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
    99
    else
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   100
    {  
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   101
        RunL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   102
    }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   103
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   106
void MsgStoreHandler::RunL()
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   107
{
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   108
    TSsmState ssmState = iStateAwareSession.State();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   109
    if (ssmState.MainState() != ESsmNormal) 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   110
    {        
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   111
        iStateAwareSession.RequestStateNotification(iStatus);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   112
        SetActive();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   113
    }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   114
    else 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   115
    {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   116
        //Create  the query/operation object
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   117
        CMsvSearchSortOperation *operation = CMsvSearchSortOperation::NewL(*iMsvSession);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   118
        CleanupStack::PushL(operation);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   119
        CMsvSearchSortQuery *query = CMsvSearchSortQuery::NewL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   120
        CleanupStack::PushL(query);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   121
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   122
        //set the query options
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   123
        query->SetParentId(KMsvGlobalInBoxIndexEntryId);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   124
        query->SetResultType(EMsvResultAsTMsvId);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   125
        query->AddSearchOptionL(EMsvMtmTypeUID, KSenduiMtmSmsUidValue, EMsvEqual);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   126
        query->AddSearchOptionL(EMsvUnreadMessages, ETrue);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   127
        CleanupStack::Pop(query);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   128
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   129
        CMsvOperationActiveSchedulerWait* wait = CMsvOperationActiveSchedulerWait::NewLC();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   130
        //ownership of Query transferred to Operation  
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   131
        operation->RequestL(query, EFalse, wait->iStatus);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   132
        wait->Start();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   133
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   134
        //Get No of entries
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   135
        RArray<TMsvId> messageArray;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   136
        operation->GetResultsL(messageArray);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   137
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   138
        CMsvEntry* entry = NULL;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   139
        for (TInt i = 0; i < messageArray.Count(); ++i) 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   140
        {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   141
            entry = iMsvSession->GetEntryL(messageArray[i]);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   142
            TMsvSmsEntry smsEntry = entry->Entry();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   143
            TSmsDataCodingScheme::TSmsClass classType(TSmsDataCodingScheme::ESmsClass0);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   144
            if (smsEntry.Class(classType)) 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   145
            {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   146
                HandleClass0SmsL(entry, smsEntry.Id());
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   147
            }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   148
            else
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   149
            {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   150
                delete entry;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   151
                entry = NULL;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   152
            }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   153
        }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   154
        messageArray.Close();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   155
        CleanupStack::PopAndDestroy(2, operation);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   156
    }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   157
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   158
}
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   159
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   160
void MsgStoreHandler::DoCancel()
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   161
{
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   162
    iStateAwareSession.RequestStateNotificationCancel();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   163
}
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
// MsgStoreHandler::HandleSessionEventL()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
void MsgStoreHandler::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* /*aArg3*/)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    CMsvEntrySelection* selection = NULL;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
    TMsvId parent;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
    //args
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
    if (aArg1 == NULL || aArg2 == NULL) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
        return;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
    //start, processing the event
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
    selection = (CMsvEntrySelection*) aArg1;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
    parent = *(TMsvId*) aArg2;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
    // Return when not (outbox or inbox) and  event not EMsvEntriesChanged
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
    if (!(parent == KMsvGlobalOutBoxIndexEntryIdValue || parent == KMsvGlobalInBoxIndexEntryIdValue)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
        && aEvent != EMsvEntriesChanged) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
        return;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   188
    // check for incoming class 0 sms 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   189
    if (parent == KMsvGlobalInBoxIndexEntryIdValue && aEvent == EMsvEntriesChanged) {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   190
        CMsvEntry* inboxEntry = iMsvSession->GetEntryL(KMsvGlobalInBoxIndexEntryId);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   191
        for (TInt i = 0; i < selection->Count(); ++i) {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   192
            TMsvEntry entry = inboxEntry->ChildDataL(selection->At(i));
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   193
            if (KSenduiMtmSmsUidValue == entry.iMtm.iUid) {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   194
                CMsvEntry* msgEntry = iMsvSession->GetEntryL(entry.Id());
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   195
                TMsvSmsEntry smsEntry = msgEntry->Entry();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   196
                TSmsDataCodingScheme::TSmsClass classType(TSmsDataCodingScheme::ESmsClass0);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   197
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   198
                if (smsEntry.Class(classType) && smsEntry.Unread()) 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   199
                {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   200
                    HandleClass0SmsL(msgEntry, smsEntry.Id());
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   201
                }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   202
                else 
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   203
                {
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   204
                    delete msgEntry;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   205
                    msgEntry = NULL;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   206
                }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   207
            }
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   208
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   209
        } // for (TInt i = 0; i < selection->Count(); ++i)
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   210
        delete inboxEntry;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   211
    }
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
    //Handling for outbox entries
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   213
    else if (parent == KMsvGlobalOutBoxIndexEntryIdValue) {
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
        CMsvEntry* rootEntry = iMsvSession->GetEntryL(KMsvGlobalOutBoxIndexEntryId);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
        for (TInt i = 0; i < selection->Count(); ++i) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
            TMsvEntry entry = rootEntry->ChildDataL(selection->At(i));
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
            if ((entry.iMtm == KSenduiMtmSmsUid) || (entry.iMtm == KSenduiMtmMmsUid)) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
                TUint sendingState = entry.SendingState();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
                TInt index = iFailedMessages->Find(entry.Id());
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
                if (sendingState == KMsvSendStateFailed && KErrNotFound == index) {
37
hgs
parents: 25
diff changeset
   224
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
                    iFailedMessages->AppendL(entry.Id());
37
hgs
parents: 25
diff changeset
   226
                    MsgInfo aInfo;
hgs
parents: 25
diff changeset
   227
                    ProcessIndicatorDataL(entry.Id(), aInfo);
hgs
parents: 25
diff changeset
   228
                    iNotifier->displayFailedNote(aInfo);
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
                }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
                else if (sendingState != KMsvSendStateFailed && KErrNotFound != index) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
                    iFailedMessages->Delete(index);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
                    iFailedMessages->Compress();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
                }
37
hgs
parents: 25
diff changeset
   234
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
        }//end for
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    }
37
hgs
parents: 25
diff changeset
   238
    else {
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
        TMsvEntry entry;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
        TMsvId service;
37
hgs
parents: 25
diff changeset
   241
        TInt error = KErrNone;
hgs
parents: 25
diff changeset
   242
        for (TInt i = 0; i < selection->Count(); ++i) {
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
            error = iMsvSession->GetEntry(selection->At(i), service, entry);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
37
hgs
parents: 25
diff changeset
   245
            if (error == KErrNone && entry.iMtm == KUidMsgMMSNotification && 
hgs
parents: 25
diff changeset
   246
                MmsNotificationStatus(entry) == EMsgStatusFailed) {
hgs
parents: 25
diff changeset
   247
hgs
parents: 25
diff changeset
   248
                TInt index = iFailedMessages->Find(entry.Id());
hgs
parents: 25
diff changeset
   249
hgs
parents: 25
diff changeset
   250
                if (KErrNotFound == index) {
hgs
parents: 25
diff changeset
   251
                    iFailedMessages->AppendL(entry.Id());
hgs
parents: 25
diff changeset
   252
                    MsgInfo aInfo;
hgs
parents: 25
diff changeset
   253
                    //Fill aInfo with appropriate data
hgs
parents: 25
diff changeset
   254
                    aInfo.mMessageType = ECsMmsNotification;
hgs
parents: 25
diff changeset
   255
                    ProcessIndicatorDataL(entry.Id(), aInfo);
hgs
parents: 25
diff changeset
   256
                    iNotifier->displayFailedNote(aInfo);
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
37
hgs
parents: 25
diff changeset
   258
                }// end of if
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
            }
37
hgs
parents: 25
diff changeset
   260
            else if (error == KErrNone && entry.iMtm == KUidMsgMMSNotification
hgs
parents: 25
diff changeset
   261
                && MmsNotificationStatus(entry) == EMsgStatusRetrieving) {
hgs
parents: 25
diff changeset
   262
                
hgs
parents: 25
diff changeset
   263
                TInt index = iFailedMessages->Find(entry.Id());
hgs
parents: 25
diff changeset
   264
                if (KErrNotFound != index) {
hgs
parents: 25
diff changeset
   265
                    iFailedMessages->Delete(index);
hgs
parents: 25
diff changeset
   266
                    iFailedMessages->Compress();
hgs
parents: 25
diff changeset
   267
                }// end of KErrNotFound != index if block
hgs
parents: 25
diff changeset
   268
hgs
parents: 25
diff changeset
   269
            } // end of 2nd if  
hgs
parents: 25
diff changeset
   270
        } // for loop
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    }
37
hgs
parents: 25
diff changeset
   272
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
// ---------------------------------------------------------
51
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   276
// MsgStoreHandler::HandleClass0SmsL()
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   277
// ---------------------------------------------------------
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   278
//
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   279
void MsgStoreHandler::HandleClass0SmsL(CMsvEntry* aMsgEntry, TMsvId aMsgId)
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   280
{
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   281
    CleanupStack::PushL(aMsgEntry);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   282
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   283
    CMsvStore* store = aMsgEntry->ReadStoreL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   284
    CleanupStack::PushL(store);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   285
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   286
    CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   287
    CleanupStack::PushL(paraFormatLayer);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   288
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   289
    CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   290
    CleanupStack::PushL(charFormatLayer);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   291
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   292
    CRichText* richText = CRichText::NewL(paraFormatLayer, charFormatLayer);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   293
    CleanupStack::PushL(richText);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   294
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   295
    store->RestoreBodyTextL(*richText);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   296
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   297
    TInt len = richText->DocumentLength();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   298
    HBufC* bufBody = HBufC::NewLC(len * 2);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   299
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   300
    // Get Body content of SMS message
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   301
    TPtr bufBodyPtr = bufBody->Des();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   302
    richText->Extract(bufBodyPtr, 0, len);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   303
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   304
    //convert bufbody to qstring..
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   305
    QString body = XQConversions::s60DescToQString(*bufBody);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   306
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   307
    Class0Info class0Info;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   308
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   309
    class0Info.body = body;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   310
    CleanupStack::PopAndDestroy(bufBody);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   311
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   312
    // Get From address of SMS message
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   313
    CPlainText* nullString = CPlainText::NewL();
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   314
    CleanupStack::PushL(nullString);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   315
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   316
    CSmsHeader* smsheader = CSmsHeader::NewL(CSmsPDU::ESmsDeliver, *nullString);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   317
    CleanupStack::PushL(smsheader);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   318
    smsheader->RestoreL(*store);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   319
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   320
    QString address = XQConversions::s60DescToQString(smsheader->FromAddress());
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   321
    class0Info.address = address;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   322
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   323
    // Get alias of SMS message
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   324
    QString alias;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   325
    int count;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   326
    MsgContactHandler::resolveContactDisplayName(address, alias, count);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   327
    class0Info.alias = alias;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   328
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   329
    // Get timestamp of SMS message
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   330
    QDateTime timeStamp;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   331
    TTime time = aMsgEntry->Entry().iDate;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   332
    TTime unixEpoch(KUnixEpoch);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   333
    TTimeIntervalSeconds seconds;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   334
    time.SecondsFrom(unixEpoch, seconds);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   335
    timeStamp.setTime_t(seconds.Int());
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   336
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   337
    const QString times = timeStamp.toString("dd/MM/yy hh:mm ap");
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   338
    class0Info.time = times;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   339
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   340
    class0Info.messageId = aMsgId;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   341
    CleanupStack::PopAndDestroy(7);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   342
    aMsgEntry = NULL;
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   343
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   344
    // Show the SMS message..  
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   345
    iNotifier->ShowClass0Message(class0Info);
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   346
}
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   347
3507212d340e 201031_02
hgs
parents: 48
diff changeset
   348
// ---------------------------------------------------------
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
// MsgStoreHandler::HandleEntryEventL()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
void MsgStoreHandler::HandleEntryEventL(TMsvEntryEvent aEvent, TAny* /*aArg1*/, TAny* /*aArg2*/,
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
    TAny* /*aArg3*/)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
    switch (aEvent) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
    case EMsvChildrenChanged:
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
    case EMsvDeletedChildren:
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
    {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
        UpdateOutboxIndications();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
        break;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
    default:
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
        break;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
// UpdateOutboxIndications()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
// Outgoing Pending message/messages
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
void MsgStoreHandler::UpdateOutboxIndications()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   373
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
    MsgInfo failedIndicatorData;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
    MsgInfo pendingIndicatorData;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
    TInt err = KErrNone;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
    TRAP(err, GetOutboxEntriesL(failedIndicatorData, pendingIndicatorData));
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
    if (err == KErrNone) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
        iNotifier->displayOutboxIndications(failedIndicatorData);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
        iNotifier->displayOutboxIndications(pendingIndicatorData);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
// GetOutboxEntries()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
// Outgoing Pending message/messages
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
TInt MsgStoreHandler::GetOutboxEntriesL(MsgInfo& aFailedIndicatorData,
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
    MsgInfo& aPendingIndicatorData)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
    CMsvEntry* rootEntry = iMsvSession->GetEntryL(KMsvGlobalOutBoxIndexEntryId);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
    CMsvEntrySelection* messages = rootEntry->ChildrenL();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    TInt failedMessageCount = 0;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
    TInt pendingMessageCount = 0;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
    for (TInt i = 0; i < messages->Count(); ++i) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
        TMsvEntry entry = rootEntry->ChildDataL(messages->At(i));
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
        if ((entry.iMtm != KSenduiMtmSmsUid) && (entry.iMtm != KSenduiMtmMmsUid)) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   403
            continue;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
        if (entry.SendingState() == KMsvSendStateFailed) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
            ++failedMessageCount;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   408
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
        else {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
            ++pendingMessageCount;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
        if (entry.SendingState() == KMsvSendStateFailed) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
            ProcessIndicatorDataL(entry.Id(), aFailedIndicatorData);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
        else {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
            ProcessIndicatorDataL(entry.Id(), aPendingIndicatorData);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
       
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
    aFailedIndicatorData.mFromSingle = (failedMessageCount > 1) ? false : true;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
    aPendingIndicatorData.mFromSingle = (pendingMessageCount > 1) ? false : true;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
    aFailedIndicatorData.mIndicatorType = FailedIndicatorPlugin;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
    aPendingIndicatorData.mIndicatorType = PendingIndicatorPlugin;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
    aFailedIndicatorData.mMsgCount = failedMessageCount;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
    aPendingIndicatorData.mMsgCount = pendingMessageCount;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
    return KErrNone;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
// ProcessIndicatorData()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
// Process the data in the MsgInfo object. 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
void MsgStoreHandler::ProcessIndicatorDataL(TMsvId msgId, MsgInfo& indicatorData)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
    CCsClientConversation* conversation = iRequestHandler->GetConversationFromMessageIdL(msgId);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
    if (conversation == NULL)
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
        return;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    indicatorData.mConversationId = conversation->GetConversationEntryId();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
    CCsConversationEntry* convEntry = conversation->GetConversationEntry();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
    //check for valid data
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
    if ((indicatorData.mConversationId == -1) || (convEntry == NULL)) {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
        delete conversation;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
        return;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
    
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
    //set indicator data
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
    HBufC* displayName = conversation->GetDisplayName();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   455
    if (displayName) {
37
hgs
parents: 25
diff changeset
   456
        indicatorData.mDisplayName.append(XQConversions::s60DescToQString(*displayName));
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
    else {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
        HBufC* number = convEntry->Contact();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
        if (number)
37
hgs
parents: 25
diff changeset
   461
            indicatorData.mDisplayName.append(XQConversions::s60DescToQString(*number));
25
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
    delete conversation;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
// GetUnreadMessageCountL()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
// Get Unread message count.
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
int MsgStoreHandler::GetUnreadMessageCountL()
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
{
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
    //Create  the query/operation object
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
    CMsvSearchSortOperation *operation = CMsvSearchSortOperation::NewL(*iMsvSession);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
    CleanupStack::PushL(operation);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   476
    CMsvSearchSortQuery *query = CMsvSearchSortQuery::NewL();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   477
    CleanupStack::PushL(query);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   478
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
    //set the query options
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   480
    query->SetParentId(KMsvGlobalInBoxIndexEntryId);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   481
    query->SetResultType(EMsvResultAsTMsvEntry);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   482
    query->AddSearchOptionL(EMsvUnreadMessages, ETrue);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
    CleanupStack::Pop(query);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   485
    CMsvOperationWait* wait = CMsvOperationWait::NewLC();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   486
    //ownership of Query transferred to Operation  
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
    operation->RequestL(query, EFalse, wait->iStatus);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   488
    wait->Start();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   489
    CActiveScheduler::Start();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
    //Get No of entries
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
    int count = operation->GetResultCountL();
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
    CleanupStack::PopAndDestroy(2, operation);
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    return count;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
}
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
// MsgStoreHandler::MmsNotificationStatus
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   500
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
TCsMmsNotificationMsgState MsgStoreHandler::
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
MmsNotificationStatus( TMsvEntry entry )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
    {   
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
    TCsMmsNotificationMsgState status = EMsgStatusNull;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
    // operationMask includes operation type. It is not bitmap but ordinal number. 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
    // It does not include operation status and result
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
    TInt operationMask = (entry.iMtmData2 & KMmsOperationIdentifier) ;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
    // Note! Ongoing operation resets every bit of operation type, operation status
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
    // and result. E.g. If message has been forwarded and then fetching starts, 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
    // information about forwarding is lost
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
    if( ( entry.iMtmData1 & KMmsMessageTypeMask ) == KMmsMessageMNotificationInd )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
        {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
        if(     operationMask == KMmsOperationFetch 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
                &&  OperationOngoing( entry ) )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
            { 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
            // It's in retrieving state
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
            status = EMsgStatusRetrieving;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
        else if(    operationMask == KMmsOperationForward
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
                &&  OperationOngoing( entry ) )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
            { 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   526
            // It's in forwarding state
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
            status = EMsgStatusForwarding;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
        else if(    operationMask == KMmsOperationForward
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
                &&  OperationFinished( entry )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
                &&  !( entry.iMtmData2 & KMmsOperationResult ) )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
            { 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
            // It's been forwarded succesfully
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
            status = EMsgStatusForwarded;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
        else if(    operationMask == KMmsOperationFetch 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
                &&  OperationFinished( entry )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
                &&   (  entry.iMtmData2 & KMmsOperationResult 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
                ||  entry.iError ) )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
            { 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
            // Fetch has been failed
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
            status = EMsgStatusFailed;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
        else if(    operationMask == KMmsOperationDelete
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
                &&  OperationFinished( entry )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
                &&  !( entry.iMtmData2 & KMmsOperationResult ) )
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
            { 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
            // It's been deleted succesfully
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
            status = EMsgStatusDeleted;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
        else 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
            {   // Normal waiting state
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
            status = EMsgStatusReadyForFetching;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
            }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
        }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
    return status;
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
// MsgStoreHandler::OperationOngoing
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
TBool MsgStoreHandler::OperationOngoing( const TMsvEntry& aEntry ) const
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
    {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
    return (    aEntry.iMtmData2 & KMmsOperationOngoing 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
            &&  !( aEntry.iMtmData2 & KMmsOperationFinished ) );
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
// ConversationMsgStoreHandler::OperationFinished
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
// ---------------------------------------------------------
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
//
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
TBool MsgStoreHandler::OperationFinished( 
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
    const TMsvEntry& aEntry ) const
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
    {
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
    return (    aEntry.iMtmData2 & KMmsOperationFinished
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
            &&  !( aEntry.iMtmData2 & KMmsOperationOngoing ) );
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
    }
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
84d9eb65b26f Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
// End of file