messagingapp/msgservices/msgserviceapp/src/msgstorehandler.cpp
author hgs
Fri, 17 Sep 2010 20:01:45 +0530
changeset 67 fc91263aee62
parent 48 4f501b74aeb1
child 73 ecf6a73a9186
permissions -rw-r--r--
201037_04
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>
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    19
#include <msvstd.h>
37
hgs
parents:
diff changeset
    20
#include <mmsconst.h>
hgs
parents:
diff changeset
    21
#include <SendUiConsts.h>
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    22
#include <mtclreg.h>    // for CClientMtmRegistry
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    23
#include <mmsnotificationclient.h>
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    24
#include <mmssettings.h>
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    25
#include <xqconversions.h> // from xqutils
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    26
#include <mmsconst.h>
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    27
#include <QDateTime>
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    28
#include <hbglobal.h>
37
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
#include "msgstorehandler.h"
hgs
parents:
diff changeset
    31
#include "msgbiouids.h"
hgs
parents:
diff changeset
    32
#include "convergedmessage.h"
hgs
parents:
diff changeset
    33
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    34
// CONSTANTS
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    35
_LIT(KUnixEpoch, "19700000:000000.000000");
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    36
#define BYTES_TO_KBYTES_FACTOR 1024
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    37
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    38
// LOCALIZATION
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    39
// TODO : use dialog localizations
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    40
#define LOC_MESSAGE_SIZE hbTrId("txt_messaging_list_size")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    41
#define LOC_CLASS_ADVERTISEMENT hbTrId("txt_messaging_list_advertisement")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    42
#define LOC_CLASS_INFORMATIONAL hbTrId("txt_messaging_list_informational")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    43
#define LOC_CLASS_PERSONAL hbTrId("txt_messaging_list_personal")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    44
#define LOC_MMS_RETRIEVAL_FAILED hbTrId("txt_messaging_dialog_mms_retrieval_failed")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    45
#define LOC_MMS_NOTIF_EXPIRED hbTrId("txt_messaging_list_message_expired")  
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    46
#define LOC_MMS_WAITING hbTrId("txt_wireframe_list_multimedia_message_waiting")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    47
#define LOC_MMS_RETRIEVING hbTrId("txt_messaging_list_retrieving_message")   
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    48
#define LOC_MMS_EXPIRY_DATE hbTrId("txt_messaging_list_expiry_date")
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    49
37
hgs
parents:
diff changeset
    50
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    51
// MsgStoreHandler::MsgStoreHandler
hgs
parents:
diff changeset
    52
// @see header
hgs
parents:
diff changeset
    53
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
MsgStoreHandler::MsgStoreHandler():
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    55
iMsvSession(NULL), iNotificationClient(NULL), iMtmReg(NULL)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    56
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    57
    InitL();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    58
}
37
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
// MsgStoreHandler::~MsgStoreHandler
hgs
parents:
diff changeset
    62
// @see header
hgs
parents:
diff changeset
    63
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
MsgStoreHandler::~MsgStoreHandler()
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    65
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    66
    if(iNotificationClient)
37
hgs
parents:
diff changeset
    67
    {
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    68
        delete iNotificationClient;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    69
        iNotificationClient = NULL;
37
hgs
parents:
diff changeset
    70
    }
hgs
parents:
diff changeset
    71
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    72
    if(iMtmReg)
37
hgs
parents:
diff changeset
    73
    {
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    74
        delete iMtmReg;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    75
        iMtmReg = NULL;
37
hgs
parents:
diff changeset
    76
    }
hgs
parents:
diff changeset
    77
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    78
    if(iMsvSession)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    79
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    80
        delete iMsvSession;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    81
        iMsvSession = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    82
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    83
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    84
37
hgs
parents:
diff changeset
    85
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    86
// MsgStoreHandler::HandleSessionEventL
hgs
parents:
diff changeset
    87
// @see header
hgs
parents:
diff changeset
    88
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
void MsgStoreHandler::HandleSessionEventL(TMsvSessionEvent /*aEvent*/,
hgs
parents:
diff changeset
    90
        TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    91
{
37
hgs
parents:
diff changeset
    92
    // Nothing to do
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    93
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    94
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    95
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    96
// MsgStoreHandler::InitL
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    97
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    98
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
    99
void MsgStoreHandler::InitL()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   100
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   101
    TInt err = KErrNone;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   102
    TRAP(err,iMsvSession = CMsvSession::OpenSyncL(*this));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   103
    if(err != KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   104
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   105
        iMsvSession = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   106
        return;
37
hgs
parents:
diff changeset
   107
    }
hgs
parents:
diff changeset
   108
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   109
    TRAP(err,iMtmReg = CClientMtmRegistry::NewL(*iMsvSession));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   110
    if(err != KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   111
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   112
        iMtmReg = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   113
        return;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   114
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   115
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   116
37
hgs
parents:
diff changeset
   117
//----------------------------------------------------------------------------
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   118
// MsgStoreHandler::MessageLocation
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   119
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   120
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   121
TMsvId MsgStoreHandler::MessageLocation( TMsvId aMsgId ) const
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   122
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   123
    TMsvId parent = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   124
    CMsvEntry* cEntry = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   125
    TRAPD(err, cEntry = iMsvSession->GetEntryL(aMsgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   126
    if(err == KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   127
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   128
        TMsvEntry msvEntry = cEntry->Entry();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   129
        parent = msvEntry.Parent();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   130
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   131
    delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   132
    return parent;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   133
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   134
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   135
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   136
// MsgStoreHandler::markAsRead
37
hgs
parents:
diff changeset
   137
// @see header
hgs
parents:
diff changeset
   138
//----------------------------------------------------------------------------
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   139
void MsgStoreHandler::markAsRead(int msgId)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   140
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   141
    CMsvEntry* cEntry = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   142
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   143
    if(err == KErrNone)
37
hgs
parents:
diff changeset
   144
    {
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   145
        TMsvEntry entry = cEntry->Entry();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   146
        if ( entry.Unread() ) 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   147
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   148
            // Mark the entry as read
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   149
            entry.SetUnread( EFalse );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   150
            cEntry->ChangeL( entry );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   151
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   152
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   153
    delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   154
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   155
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   156
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   157
// MsgStoreHandler::getMsgTypeInfo
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   158
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   159
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   160
void MsgStoreHandler::getMsgTypeInfo(int msgId,
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   161
                                     int& msgType,
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   162
                                     int& msgSubType)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   163
{
37
hgs
parents:
diff changeset
   164
    msgType = ConvergedMessage::None;
hgs
parents:
diff changeset
   165
    msgSubType = ConvergedMessage::None;
hgs
parents:
diff changeset
   166
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   167
    CMsvEntry* cEntry = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   168
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   169
    if(err != KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   170
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   171
        // error in getting the entry, return back
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   172
        delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   173
        return;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   174
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   175
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   176
    TMsvEntry entry = cEntry->Entry();
37
hgs
parents:
diff changeset
   177
    switch(entry.iMtm.iUid)   
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   178
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   179
        case KSenduiMtmSmsUidValue:
37
hgs
parents:
diff changeset
   180
        {
hgs
parents:
diff changeset
   181
            msgType = ConvergedMessage::Sms;
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   182
            if (entry.iBioType == KMsgBioUidVCard.iUid)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   183
            {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   184
                msgSubType = ConvergedMessage::VCard;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   185
            }
37
hgs
parents:
diff changeset
   186
            break;
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   187
        }
37
hgs
parents:
diff changeset
   188
        case KSenduiMtmBtUidValue:
hgs
parents:
diff changeset
   189
            msgType = ConvergedMessage::BT;
hgs
parents:
diff changeset
   190
            break;
hgs
parents:
diff changeset
   191
        case KSenduiMtmMmsUidValue:        
hgs
parents:
diff changeset
   192
            msgType = ConvergedMessage::Mms;
hgs
parents:
diff changeset
   193
            break;
hgs
parents:
diff changeset
   194
        case KSenduiMMSNotificationUidValue:            
hgs
parents:
diff changeset
   195
            msgType = ConvergedMessage::MmsNotification;
hgs
parents:
diff changeset
   196
            break;
hgs
parents:
diff changeset
   197
        case KSenduiMtmBioUidValue:
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   198
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   199
            if (entry.iMtmData1 == KSenduiMtmBtUidValue) 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   200
            {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   201
                msgType = ConvergedMessage::BT;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   202
                if (entry.iBioType == KMsgBioUidVCard.iUid) 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   203
                {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   204
                    msgSubType = ConvergedMessage::VCard;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   205
                }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   206
                else if (entry.iBioType == KMsgBioUidVCalendar.iUid) 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   207
                {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   208
                    msgSubType = ConvergedMessage::VCal;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   209
                }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   210
                break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   211
            }
41
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   212
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   213
            msgType = ConvergedMessage::BioMsg;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   214
            // based on the biotype uid set message type
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   215
            if(entry.iBioType == KMsgBioUidRingingTone.iUid)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   216
            {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   217
                msgSubType = ConvergedMessage::RingingTone;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   218
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   219
            else if(entry.iBioType == KMsgBioProvisioningMessage.iUid)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   220
            {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   221
                msgSubType = ConvergedMessage::Provisioning;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   222
            }     
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   223
            else if (entry.iBioType == KMsgBioUidVCard.iUid)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   224
            {
41
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   225
                msgSubType = ConvergedMessage::VCard;
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   226
            }
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   227
            else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   228
            {
41
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   229
                msgSubType = ConvergedMessage::VCal;
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   230
            }        
41
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   231
            break;
25fe1fe642e3 201027_02
hgs
parents: 38
diff changeset
   232
        }
37
hgs
parents:
diff changeset
   233
        default:
hgs
parents:
diff changeset
   234
            msgType = ConvergedMessage::None;       
hgs
parents:
diff changeset
   235
            break;
hgs
parents:
diff changeset
   236
    }
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   237
    delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   238
}
37
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   241
// MsgStoreHandler::deleteMessage
hgs
parents:
diff changeset
   242
// @see header
hgs
parents:
diff changeset
   243
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   244
void MsgStoreHandler::deleteMessage(int msgId)
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   245
{
37
hgs
parents:
diff changeset
   246
    iMsvSession->RemoveEntry(msgId);
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   247
}
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   248
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   249
//----------------------------------------------------------------------------
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   250
// MsgStoreHandler::isDraftMessage
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   251
// @see header
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   252
//----------------------------------------------------------------------------
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   253
bool MsgStoreHandler::isDraftMessage(int msgId)
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   254
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   255
    return (KMsvDraftEntryIdValue == MessageLocation(msgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   256
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   257
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   258
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   259
// MsgStoreHandler::locked
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   260
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   261
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   262
bool MsgStoreHandler::locked(int msgId)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   263
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   264
    bool msglocked = false;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   265
    CMsvEntry* cEntry = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   266
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   267
    if(err != KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   268
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   269
        // error in getting the entry e.g. already deleted message
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   270
        msglocked = true;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   271
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   272
    else
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   273
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   274
        // Outbox messages are locked and hence cann't be viewed.
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   275
        // However, make an exception for failed messages.
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   276
        TMsvEntry entry = cEntry->Entry();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   277
        if( (KMsvGlobalOutBoxIndexEntryIdValue == entry.Parent()) && 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   278
            (KMsvSendStateFailed != entry.SendingState()) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   279
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   280
            msglocked = true;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   281
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   282
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   283
    delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   284
    return msglocked;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   285
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   286
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   287
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   288
// MsgStoreHandler::exists
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   289
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   290
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   291
bool MsgStoreHandler::exists(int msgId)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   292
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   293
    bool msgexists = true;
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   294
    CMsvEntry* cEntry = NULL;
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   295
    TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   296
    if(err != KErrNone)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   297
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   298
        // error in getting the entry e.g. already deleted message
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   299
        msgexists = false;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   300
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   301
    delete cEntry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   302
    return msgexists;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   303
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   304
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   305
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   306
// MsgStoreHandler::setNotificationMessageId
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   307
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   308
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   309
int MsgStoreHandler::setNotificationMessageId(int msgId)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   310
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   311
    TRAPD(err, SetNotificationMessageIdL(msgId));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   312
    return err;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   313
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   314
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   315
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   316
// MsgStoreHandler::SetNotificationMessageIdL
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   317
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   318
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   319
void MsgStoreHandler::SetNotificationMessageIdL( TMsvId aMsgId )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   320
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   321
    // get MMS Notification client mtm & set the content to current entry
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   322
    if(iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   323
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   324
        delete iNotificationClient;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   325
        iNotificationClient = NULL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   326
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   327
    iNotificationClient = static_cast<CMmsNotificationClientMtm*>( 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   328
                    iMtmReg->NewMtmL( KUidMsgMMSNotification ));
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   329
    iNotificationClient->SwitchCurrentEntryL(aMsgId);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   330
    iNotificationClient->LoadMessageL();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   331
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   332
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   333
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   334
// MsgStoreHandler::MaxReceiveSizeLimitL
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   335
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   336
//----------------------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   337
TInt MsgStoreHandler::MaxReceiveSizeLimitL()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   338
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   339
    CMmsSettings* settings = CMmsSettings::NewL();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   340
    CleanupStack::PushL( settings );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   341
    iNotificationClient->RestoreSettingsL();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   342
    settings->CopyL( iNotificationClient->MmsSettings() );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   343
    TInt maxSize = static_cast<TInt>(settings->MaximumReceiveSize() );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   344
    CleanupStack::PopAndDestroy( settings );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   345
    return maxSize;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   346
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   347
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   348
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   349
// MsgStoreHandler::MmsNotificationStatus
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   350
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   351
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   352
TCsMmsNotificationMsgState 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   353
MsgStoreHandler::MmsNotificationStatus( TInt aMsvId )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   354
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   355
    TMsvId dummy = 0x0;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   356
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   357
    TMsvEntry entry;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   358
    iMsvSession->GetEntry(aMsvId, dummy, entry);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   359
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   360
    TCsMmsNotificationMsgState status = EMsgStatusNull;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   361
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   362
    TTime currentTime;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   363
    currentTime.HomeTime( );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   364
    TTime expiryTime = iNotificationClient->ExpiryDate( );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   365
    TLocale locale;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   366
    expiryTime += locale.UniversalTimeOffset();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   367
    if (locale.QueryHomeHasDaylightSavingOn())          
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   368
    {
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   369
        TTimeIntervalHours daylightSaving(1);          
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   370
        expiryTime += daylightSaving;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   371
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   372
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   373
    // operationMask includes operation type. It is not bitmap but ordinal number. 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   374
    // It does not include operation status and result
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   375
    TInt operationMask = (entry.iMtmData2 & KMmsOperationIdentifier) ;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   376
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   377
    // Note! Ongoing operation resets every bit of operation type, operation status
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   378
    // and result. E.g. If message has been forwarded and then fetching starts, 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   379
    // information about forwarding is lost
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   380
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   381
    if( ( entry.iMtmData1 & KMmsMessageTypeMask ) == KMmsMessageMNotificationInd )
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   382
        {
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   383
        if(     operationMask == KMmsOperationFetch 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   384
                &&  OperationOngoing( entry ) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   385
            { 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   386
            // It's in retrieving state
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   387
            status = EMsgStatusRetrieving;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   388
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   389
        else if(    operationMask == KMmsOperationForward
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   390
                &&  OperationOngoing( entry ) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   391
            { 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   392
            // It's in forwarding state
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   393
            status = EMsgStatusForwarding;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   394
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   395
        else if(    operationMask == KMmsOperationForward
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   396
                &&  OperationFinished( entry )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   397
                &&  !( entry.iMtmData2 & KMmsOperationResult ) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   398
            { 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   399
            // It's been forwarded succesfully
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   400
            status = EMsgStatusForwarded;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   401
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   402
        else if(    operationMask == KMmsOperationFetch 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   403
                &&  OperationFinished( entry )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   404
                &&   (  entry.iMtmData2 & KMmsOperationResult 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   405
                ||  entry.iError ) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   406
            { 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   407
            // Fetch has been failed
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   408
            status = EMsgStatusFailed;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   409
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   410
        else if(    operationMask == KMmsOperationDelete
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   411
                &&  OperationFinished( entry )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   412
                &&  !( entry.iMtmData2 & KMmsOperationResult ) )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   413
            { 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   414
            // It's been deleted succesfully
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   415
            status = EMsgStatusDeleted;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   416
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   417
        else if( currentTime > expiryTime )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   418
            {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   419
            status = EMsgStatusExpired;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   420
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   421
        else 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   422
            {   // Normal waiting state
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   423
            status = EMsgStatusReadyForFetching;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   424
            }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   425
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   426
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   427
    return status;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   428
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   429
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   430
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   431
// MsgStoreHandler::OperationOngoing
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   432
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   433
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   434
TBool MsgStoreHandler::OperationOngoing( 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   435
        const TMsvEntry& aEntry ) const
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   436
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   437
    return (    aEntry.iMtmData2 & KMmsOperationOngoing 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   438
            &&  !( aEntry.iMtmData2 & KMmsOperationFinished ) );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   439
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   440
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   441
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   442
// MsgStoreHandler::OperationFinished
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   443
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   444
// ---------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   445
TBool MsgStoreHandler::OperationFinished( 
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   446
    const TMsvEntry& aEntry ) const
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   447
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   448
    return (    aEntry.iMtmData2 & KMmsOperationFinished
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   449
            &&  !( aEntry.iMtmData2 & KMmsOperationOngoing ) );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   450
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   451
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   452
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   453
// MsgStoreHandler::notificationSubject
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   454
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   455
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   456
QString MsgStoreHandler::notificationSubject()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   457
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   458
    QString subject;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   459
    if(iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   460
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   461
        TPtrC sub =  iNotificationClient->SubjectL();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   462
        subject = XQConversions::s60DescToQString(sub);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   463
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   464
    return subject;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   465
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   466
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   467
// MsgStoreHandler::notificationMsgSize
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   468
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   469
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   470
QString MsgStoreHandler::notificationMsgSize()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   471
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   472
    // Null check
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   473
    if(!iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   474
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   475
        return LOC_MESSAGE_SIZE.arg(0);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   476
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   477
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   478
    // Size of message.
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   479
    TInt size = iNotificationClient->MessageTransferSize();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   480
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   481
    // read max receive size limit from settings
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   482
    TInt maxSize = 0;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   483
    TRAP_IGNORE(maxSize = MaxReceiveSizeLimitL());
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   484
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   485
    // apply max size limit rule
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   486
    if( maxSize > 0 )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   487
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   488
        if( size > maxSize )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   489
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   490
            size = maxSize;
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   491
        }
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   492
    }
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   493
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   494
    TInt fileSize = size / BYTES_TO_KBYTES_FACTOR;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   495
    if ( size % BYTES_TO_KBYTES_FACTOR )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   496
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   497
        fileSize++;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   498
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   499
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   500
    return LOC_MESSAGE_SIZE.arg(fileSize);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   501
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   502
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   503
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   504
// MsgStoreHandler::notificationClass
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   505
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   506
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   507
QString MsgStoreHandler::notificationClass()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   508
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   509
    QString notificationClass;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   510
    // Null Check
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   511
    if(!iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   512
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   513
        return notificationClass;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   514
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   515
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   516
    TInt msgClass = iNotificationClient->MessageClass( );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   517
    switch( msgClass )
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   518
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   519
        case EMmsClassPersonal:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   520
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   521
            notificationClass = LOC_CLASS_PERSONAL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   522
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   523
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   524
        case EMmsClassAdvertisement:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   525
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   526
            notificationClass = LOC_CLASS_ADVERTISEMENT;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   527
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   528
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   529
        case EMmsClassInformational:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   530
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   531
            notificationClass = LOC_CLASS_INFORMATIONAL;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   532
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   533
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   534
        default:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   535
        {   // In case no class is returned (0), don't add the field
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   536
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   537
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   538
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   539
    return notificationClass;
38
4e4b6adb1024 201025_01
hgs
parents: 37
diff changeset
   540
}
67
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   541
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   542
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   543
// MsgStoreHandler::notificationStatus
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   544
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   545
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   546
void MsgStoreHandler::notificationStatus(
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   547
        int& status,
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   548
        QString& statusStr)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   549
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   550
    // Null Check
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   551
    if(!iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   552
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   553
        return;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   554
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   555
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   556
    // fetch mms notification status from store handler
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   557
    // and map as per our UI requirements
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   558
    TMsvEntry entry = iNotificationClient->Entry().Entry();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   559
    status = MmsNotificationStatus(entry.Id());
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   560
    switch(status)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   561
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   562
        case ConvergedMessage::NotifFailed:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   563
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   564
            statusStr = LOC_MMS_RETRIEVAL_FAILED;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   565
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   566
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   567
        case ConvergedMessage::NotifExpired:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   568
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   569
            statusStr = LOC_MMS_NOTIF_EXPIRED;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   570
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   571
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   572
        case ConvergedMessage::NotifReadyForFetching:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   573
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   574
            statusStr = LOC_MMS_WAITING;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   575
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   576
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   577
        case ConvergedMessage::NotifWaiting:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   578
        case ConvergedMessage::NotifRetrieving:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   579
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   580
            statusStr = LOC_MMS_RETRIEVING;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   581
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   582
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   583
        default:
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   584
        {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   585
            // not handled, do nothing
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   586
            break;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   587
        }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   588
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   589
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   590
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   591
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   592
// MsgStoreHandler::notificationExpiryDate
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   593
// @see header
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   594
//---------------------------------------------------------------
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   595
QString MsgStoreHandler::notificationExpiryDate()
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   596
{
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   597
    // Null Check
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   598
    if(!iNotificationClient)
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   599
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   600
        return QString();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   601
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   602
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   603
    // get expiry time from entry
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   604
    TTime expiryTime = iNotificationClient->ExpiryDate( );
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   605
    TLocale locale;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   606
    expiryTime += locale.UniversalTimeOffset();
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   607
    if (locale.QueryHomeHasDaylightSavingOn())          
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   608
    {
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   609
        TTimeIntervalHours daylightSaving(1);          
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   610
        expiryTime += daylightSaving;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   611
    }
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   612
    
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   613
    // create formatted string for the expiry time
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   614
    TTime unixEpoch(KUnixEpoch);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   615
    TTimeIntervalSeconds seconds;
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   616
    expiryTime.SecondsFrom(unixEpoch, seconds);
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   617
    return LOC_MMS_EXPIRY_DATE.arg(seconds.Int());
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   618
}
fc91263aee62 201037_04
hgs
parents: 48
diff changeset
   619
37
hgs
parents:
diff changeset
   620
// End of file