messagingapp/msgservices/msgserviceapp/src/msgstorehandler.cpp
author hgs
Tue, 29 Jun 2010 23:42:47 +0530
changeset 38 4e4b6adb1024
parent 37 518b245aa84c
child 41 25fe1fe642e3
permissions -rw-r--r--
201025_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:   Reads message information from message store.
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <msvids.h>
hgs
parents:
diff changeset
    19
#include <mmsconst.h>
hgs
parents:
diff changeset
    20
#include <SendUiConsts.h>
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "msgstorehandler.h"
hgs
parents:
diff changeset
    23
#include "msgbiouids.h"
hgs
parents:
diff changeset
    24
#include "convergedmessage.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    27
// MsgStoreHandler::MsgStoreHandler
hgs
parents:
diff changeset
    28
// @see header
hgs
parents:
diff changeset
    29
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    30
MsgStoreHandler::MsgStoreHandler():
hgs
parents:
diff changeset
    31
iMsvSession(NULL)
hgs
parents:
diff changeset
    32
        {
hgs
parents:
diff changeset
    33
        TRAP_IGNORE(InitL());
hgs
parents:
diff changeset
    34
        }
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// MsgStoreHandler::~MsgStoreHandler
hgs
parents:
diff changeset
    38
// @see header
hgs
parents:
diff changeset
    39
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
MsgStoreHandler::~MsgStoreHandler()
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
    if(iMsvSession)
hgs
parents:
diff changeset
    43
        {
hgs
parents:
diff changeset
    44
        delete iMsvSession;
hgs
parents:
diff changeset
    45
        iMsvSession = NULL;
hgs
parents:
diff changeset
    46
        }
hgs
parents:
diff changeset
    47
    }
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    50
// MsgStoreHandler::InitL
hgs
parents:
diff changeset
    51
// @see header
hgs
parents:
diff changeset
    52
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    53
void MsgStoreHandler::InitL( )
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
    iMsvSession = CMsvSession::OpenSyncL(*this);
hgs
parents:
diff changeset
    56
    }
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    59
// MsgStoreHandler::markAsReadAndGetType
hgs
parents:
diff changeset
    60
// @see header
hgs
parents:
diff changeset
    61
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    62
void MsgStoreHandler::markAsReadAndGetType(int msgId,
hgs
parents:
diff changeset
    63
                                          int& msgType,
hgs
parents:
diff changeset
    64
                                          int& msgSubType)
hgs
parents:
diff changeset
    65
    {
hgs
parents:
diff changeset
    66
    msgType = ConvergedMessage::None;
hgs
parents:
diff changeset
    67
    
hgs
parents:
diff changeset
    68
    CMsvEntry* cEntry = NULL;
hgs
parents:
diff changeset
    69
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
hgs
parents:
diff changeset
    70
    if ( err == KErrNone)
hgs
parents:
diff changeset
    71
        {
hgs
parents:
diff changeset
    72
        TMsvEntry entry = cEntry->Entry();
hgs
parents:
diff changeset
    73
        if ( entry.Unread() ) 
hgs
parents:
diff changeset
    74
            {
hgs
parents:
diff changeset
    75
            // Mark the entry as read
hgs
parents:
diff changeset
    76
            entry.SetUnread( EFalse );
hgs
parents:
diff changeset
    77
            cEntry->ChangeL( entry );
hgs
parents:
diff changeset
    78
            }
hgs
parents:
diff changeset
    79
        // extract message type
hgs
parents:
diff changeset
    80
        extractMsgType(entry,msgType,msgSubType);
hgs
parents:
diff changeset
    81
        }
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
    delete cEntry;
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    87
// MsgStoreHandler::HandleSessionEventL
hgs
parents:
diff changeset
    88
// @see header
hgs
parents:
diff changeset
    89
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    90
void MsgStoreHandler::HandleSessionEventL(TMsvSessionEvent /*aEvent*/,
hgs
parents:
diff changeset
    91
        TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
    // Nothing to do
hgs
parents:
diff changeset
    94
    }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    97
// MsgStoreHandler::extractMsgType
hgs
parents:
diff changeset
    98
// @see header
hgs
parents:
diff changeset
    99
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
void MsgStoreHandler::extractMsgType(const TMsvEntry& entry,
hgs
parents:
diff changeset
   101
                                    int& msgType,
hgs
parents:
diff changeset
   102
                                    int& msgSubType)
hgs
parents:
diff changeset
   103
    {
hgs
parents:
diff changeset
   104
    msgType = ConvergedMessage::None;
hgs
parents:
diff changeset
   105
    msgSubType = ConvergedMessage::None;
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
    switch(entry.iMtm.iUid)   
hgs
parents:
diff changeset
   108
        {
hgs
parents:
diff changeset
   109
        case KSenduiMtmSmsUidValue:            
hgs
parents:
diff changeset
   110
            msgType = ConvergedMessage::Sms;
hgs
parents:
diff changeset
   111
            break;
hgs
parents:
diff changeset
   112
        case KSenduiMtmBtUidValue:
hgs
parents:
diff changeset
   113
            msgType = ConvergedMessage::BT;
hgs
parents:
diff changeset
   114
            break;
hgs
parents:
diff changeset
   115
        case KSenduiMtmMmsUidValue:        
hgs
parents:
diff changeset
   116
            msgType = ConvergedMessage::Mms;
hgs
parents:
diff changeset
   117
            break;
hgs
parents:
diff changeset
   118
        case KSenduiMMSNotificationUidValue:            
hgs
parents:
diff changeset
   119
            msgType = ConvergedMessage::MmsNotification;
hgs
parents:
diff changeset
   120
            break;
hgs
parents:
diff changeset
   121
        case KSenduiMtmBioUidValue:
hgs
parents:
diff changeset
   122
            { 
hgs
parents:
diff changeset
   123
            msgType = ConvergedMessage::BioMsg; 
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
            // based on the biotype uid set message type
hgs
parents:
diff changeset
   126
            if(entry.iBioType == KMsgBioUidRingingTone.iUid)
hgs
parents:
diff changeset
   127
                {
hgs
parents:
diff changeset
   128
                msgSubType = ConvergedMessage::RingingTone;
hgs
parents:
diff changeset
   129
                }
hgs
parents:
diff changeset
   130
            else if(entry.iBioType == KMsgBioProvisioningMessage.iUid)
hgs
parents:
diff changeset
   131
                {
hgs
parents:
diff changeset
   132
                msgSubType = ConvergedMessage::Provisioning;
hgs
parents:
diff changeset
   133
                }     
hgs
parents:
diff changeset
   134
            else if (entry.iBioType == KMsgBioUidVCard.iUid)
hgs
parents:
diff changeset
   135
                {
hgs
parents:
diff changeset
   136
                msgSubType = ConvergedMessage::VCard;
hgs
parents:
diff changeset
   137
                }
hgs
parents:
diff changeset
   138
            else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
hgs
parents:
diff changeset
   139
                {
hgs
parents:
diff changeset
   140
                msgSubType = ConvergedMessage::VCal;
hgs
parents:
diff changeset
   141
                }        
hgs
parents:
diff changeset
   142
            }
hgs
parents:
diff changeset
   143
            break;
hgs
parents:
diff changeset
   144
        default:
hgs
parents:
diff changeset
   145
            msgType = ConvergedMessage::None;       
hgs
parents:
diff changeset
   146
            break;
hgs
parents:
diff changeset
   147
        }
hgs
parents:
diff changeset
   148
    }
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
// MsgStoreHandler::deleteMessage
hgs
parents:
diff changeset
   152
// @see header
hgs
parents:
diff changeset
   153
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   154
void MsgStoreHandler::deleteMessage(int msgId)
hgs
parents:
diff changeset
   155
    {
hgs
parents:
diff changeset
   156
    iMsvSession->RemoveEntry(msgId);
hgs
parents:
diff changeset
   157
    }
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   158
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   159
//----------------------------------------------------------------------------
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   160
// MsgStoreHandler::isDraftMessage
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   161
// @see header
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   162
//----------------------------------------------------------------------------
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   163
bool MsgStoreHandler::isDraftMessage(int msgId)
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   164
{       
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   165
    bool draftmsg = false;
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   166
    CMsvEntry* cEntry = NULL;
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   167
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   168
    if ( err == KErrNone)
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   169
    {
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   170
        TMsvEntry msvEntry = cEntry->Entry();
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   171
        TMsvId parent = msvEntry.Parent();
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   172
        if(parent == KMsvDraftEntryIdValue)
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   173
        {
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   174
            draftmsg = true;  
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   175
        }
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   176
    }
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   177
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   178
    delete cEntry;
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   179
    return draftmsg;
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   180
}
37
hgs
parents:
diff changeset
   181
// End of file