messagingappbase/ncnlist/src/NcnSNNotifier.cpp
author hgs
Thu, 04 Nov 2010 02:02:03 +0530
changeset 81 2043ea884c04
parent 79 2981cb3aa489
permissions -rw-r--r--
201044_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 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:   Methods for CNcnSNNotifier class.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include    "NcnDebug.h"
hgs
parents:
diff changeset
    22
#include    "NcnSNNotifier.h"
hgs
parents:
diff changeset
    23
#include    <AknSoftNotifier.h>
hgs
parents:
diff changeset
    24
#include    <AknNotifyStd.h>
hgs
parents:
diff changeset
    25
#include    <AknSoftNotificationParameters.h>
hgs
parents:
diff changeset
    26
#include    <avkon.rsg>
hgs
parents:
diff changeset
    27
#include    <Ncnlist.rsg>
hgs
parents:
diff changeset
    28
#include    <aknSDData.h>
hgs
parents:
diff changeset
    29
#include    <centralrepository.h>
hgs
parents:
diff changeset
    30
#include    "NcnModel.h"
hgs
parents:
diff changeset
    31
#include    "CVoiceMailManager.h"
hgs
parents:
diff changeset
    32
#include "messaginginternalcrkeys.h"
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// ================= DEFINITIONS ============================
hgs
parents:
diff changeset
    35
#define KSpeedDialViewId TVwsViewId( TUid::Uid( 0x1000590A ), TUid::Uid( 0x02 ) )
hgs
parents:
diff changeset
    36
#define KMceMailViewId TVwsViewId( TUid::Uid( 0x100058C5 ), TUid::Uid( 0x01 ) )
hgs
parents:
diff changeset
    37
#define KMceAudioMessageViewId TVwsViewId(TUid::Uid(0x100058C5),TUid::Uid(0x01) )
hgs
parents:
diff changeset
    38
// Conversational messaging UIDs.
hgs
parents:
diff changeset
    39
#define KConversationApplicationViewUid TVwsViewId(TUid::Uid(0x2002A540),TUid::Uid(0x01))
hgs
parents:
diff changeset
    40
const TInt KConversationListViewUid  = 0x01 ;
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// ================= LOCAL CONSTANTS ========================
hgs
parents:
diff changeset
    43
namespace
hgs
parents:
diff changeset
    44
    {
hgs
parents:
diff changeset
    45
    _LIT( KNcnResourceFile, "z:\\resource\\Ncnlist.rSC" );
hgs
parents:
diff changeset
    46
    const TInt KNcnNotificationPriority = 2200;
hgs
parents:
diff changeset
    47
    const TUid KNcnDefaultMessageUid = { 1 };
hgs
parents:
diff changeset
    48
    const TUid KNcnLine2MessageUid = { 2 };
hgs
parents:
diff changeset
    49
    const TUid KNcnAudioMessageUid = { 3 };
hgs
parents:
diff changeset
    50
    _LIT8( KNcnExternalLaunch, "outside" );
hgs
parents:
diff changeset
    51
    const TUint KNcnExternalizedNumberMaxLength = 8;
hgs
parents:
diff changeset
    52
    }
hgs
parents:
diff changeset
    53
    
hgs
parents:
diff changeset
    54
// ================= MEMBER FUNCTIONS =======================
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
// ---------------------------------------------------------
hgs
parents:
diff changeset
    57
// CNcnSNNotifier default constructor
hgs
parents:
diff changeset
    58
// ---------------------------------------------------------
hgs
parents:
diff changeset
    59
//
hgs
parents:
diff changeset
    60
CNcnSNNotifier::CNcnSNNotifier()
hgs
parents:
diff changeset
    61
    {
hgs
parents:
diff changeset
    62
    }
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
// ---------------------------------------------------------
hgs
parents:
diff changeset
    66
// CNcnSNNotifier::~CNcnSNNotifier
hgs
parents:
diff changeset
    67
// ---------------------------------------------------------
hgs
parents:
diff changeset
    68
//
hgs
parents:
diff changeset
    69
CNcnSNNotifier::~CNcnSNNotifier()
hgs
parents:
diff changeset
    70
    {
hgs
parents:
diff changeset
    71
    // Delete notifier
hgs
parents:
diff changeset
    72
    delete iNotifier;
hgs
parents:
diff changeset
    73
    iNotifier = NULL;
hgs
parents:
diff changeset
    74
    if ( iMuiuSettings )
hgs
parents:
diff changeset
    75
       {
hgs
parents:
diff changeset
    76
       delete iMuiuSettings;
hgs
parents:
diff changeset
    77
       iMuiuSettings = NULL;
hgs
parents:
diff changeset
    78
       }
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------
hgs
parents:
diff changeset
    83
// CNcnSNNotifier::NewL
hgs
parents:
diff changeset
    84
// ---------------------------------------------------------
hgs
parents:
diff changeset
    85
//
hgs
parents:
diff changeset
    86
CNcnSNNotifier* CNcnSNNotifier::NewL()
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
    // Create the notifier instance
hgs
parents:
diff changeset
    89
    CNcnSNNotifier* self = new (ELeave) CNcnSNNotifier();
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    // Call the construct safely
hgs
parents:
diff changeset
    92
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    93
    self->ConstructL();
hgs
parents:
diff changeset
    94
    CleanupStack::Pop();
hgs
parents:
diff changeset
    95
        
hgs
parents:
diff changeset
    96
    return self;
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------
hgs
parents:
diff changeset
   101
// CNcnSNNotifier::ConstructL
hgs
parents:
diff changeset
   102
// ---------------------------------------------------------
hgs
parents:
diff changeset
   103
//
hgs
parents:
diff changeset
   104
void CNcnSNNotifier::ConstructL()
hgs
parents:
diff changeset
   105
    {
hgs
parents:
diff changeset
   106
    // Create notifier instance
hgs
parents:
diff changeset
   107
    iNotifier = CAknSoftNotifier::NewL();
hgs
parents:
diff changeset
   108
    // Muiu settings repository
hgs
parents:
diff changeset
   109
    iMuiuSettings = CRepository::NewL(KCRUidMuiuSettings);
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
// ---------------------------------------------------------
hgs
parents:
diff changeset
   114
// CNcnSNNotifier::IdleState
hgs
parents:
diff changeset
   115
// ---------------------------------------------------------
hgs
parents:
diff changeset
   116
//
hgs
parents:
diff changeset
   117
void CNcnSNNotifier::IdleState( TBool aCurrentState )
hgs
parents:
diff changeset
   118
    {
hgs
parents:
diff changeset
   119
    TRAP_IGNORE( DoInformIdleStateL( aCurrentState ) );
hgs
parents:
diff changeset
   120
    }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------
hgs
parents:
diff changeset
   124
// CNcnSNNotifier::NewItems
hgs
parents:
diff changeset
   125
// ---------------------------------------------------------
hgs
parents:
diff changeset
   126
//
hgs
parents:
diff changeset
   127
void CNcnSNNotifier::NewItems( const MNcnNotifier::TNcnNotificationType aNotificationType, const TInt aAmount )
hgs
parents:
diff changeset
   128
    {
hgs
parents:
diff changeset
   129
    //Convert to avkon type
hgs
parents:
diff changeset
   130
    TAknSoftNotificationType aknType = ConvertNCNTypeToAvkonType(aNotificationType);
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
	//Get the secondary display id for this note
hgs
parents:
diff changeset
   133
	SecondaryDisplay::TSecondaryDisplayNcnListDialogs dialogID = 
hgs
parents:
diff changeset
   134
		ConvertNCNTypeToSecondaryDisplayType(aNotificationType);
hgs
parents:
diff changeset
   135
	
hgs
parents:
diff changeset
   136
    // Amount needs to be stored to "additional parameter"
hgs
parents:
diff changeset
   137
    TBuf8<KNcnExternalizedNumberMaxLength> additionalData;
hgs
parents:
diff changeset
   138
    additionalData.Num(aAmount);
hgs
parents:
diff changeset
   139
    
hgs
parents:
diff changeset
   140
    // Encapsulate the sent data
hgs
parents:
diff changeset
   141
    CAknSDData* sdData = NULL;
hgs
parents:
diff changeset
   142
    TRAPD( status, sdData = CAknSDData::NewL(
hgs
parents:
diff changeset
   143
		    SecondaryDisplay::KCatNcnList, 
hgs
parents:
diff changeset
   144
		    dialogID, 
hgs
parents:
diff changeset
   145
		    additionalData) );
hgs
parents:
diff changeset
   146
    
hgs
parents:
diff changeset
   147
    // Send data to cover ui    
hgs
parents:
diff changeset
   148
    if ( status == KErrNone && sdData != NULL)
hgs
parents:
diff changeset
   149
	    {
hgs
parents:
diff changeset
   150
	    iNotifier->SetSecondaryDisplayData( sdData ); //Takes ownership	
hgs
parents:
diff changeset
   151
	    }
hgs
parents:
diff changeset
   152
    
hgs
parents:
diff changeset
   153
    // If there are problems with notifier, just catch the error and 
hgs
parents:
diff changeset
   154
    // try to finish the other processes.
hgs
parents:
diff changeset
   155
    TRAP( status, ShowNewItemsL( aknType, aAmount ) );
hgs
parents:
diff changeset
   156
    
hgs
parents:
diff changeset
   157
    NCN_RDEBUG_INT( _L("CNcnSNNotifier::NewItems: ShowNewItemsL returned %d"), status );    
hgs
parents:
diff changeset
   158
    }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------
hgs
parents:
diff changeset
   161
// CNcnSNNotifier::DoInformIdleStateL
hgs
parents:
diff changeset
   162
// ---------------------------------------------------------
hgs
parents:
diff changeset
   163
//
hgs
parents:
diff changeset
   164
void CNcnSNNotifier::DoInformIdleStateL( TBool aCurrentState )
hgs
parents:
diff changeset
   165
    {
hgs
parents:
diff changeset
   166
    NCN_RDEBUG_INT(_L("CNcnSNNotifier::DoInformIdleStateL aCurrentState = %d" ), aCurrentState );
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    // Inform the notifier component about new idle state status.
hgs
parents:
diff changeset
   169
    iNotifier->SetIdleStateL( aCurrentState );
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
// ---------------------------------------------------------
hgs
parents:
diff changeset
   174
// CNcnSNNotifier::ShowNewItemsL
hgs
parents:
diff changeset
   175
// ---------------------------------------------------------
hgs
parents:
diff changeset
   176
//
hgs
parents:
diff changeset
   177
void CNcnSNNotifier::ShowNewItemsL( const TAknSoftNotificationType aNotificationType, const TInt aAmount )
hgs
parents:
diff changeset
   178
    {
hgs
parents:
diff changeset
   179
    NCN_RDEBUG_INT2(_L("CNcnSNNotifier::ShowNewItemsL: aNotificationType %d, aAmount: %d" ), aNotificationType, aAmount );
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    // Separate handling for voice mail notifications for now
hgs
parents:
diff changeset
   182
    switch( aNotificationType )
hgs
parents:
diff changeset
   183
        {
hgs
parents:
diff changeset
   184
        case ECustomSoftNotification:
hgs
parents:
diff changeset
   185
        	// Fallthrough
hgs
parents:
diff changeset
   186
        case ENewMailNotification:
hgs
parents:
diff changeset
   187
            // Fallthrough
hgs
parents:
diff changeset
   188
        case EVoiceMailNotification:
hgs
parents:
diff changeset
   189
            // Fallthrough
hgs
parents:
diff changeset
   190
        case ESeparateVoiceMailOnLine1Notification:
hgs
parents:
diff changeset
   191
            // Fallthrough
hgs
parents:
diff changeset
   192
        case ESeparateVoiceMailOnLine2Notification:
hgs
parents:
diff changeset
   193
            {
hgs
parents:
diff changeset
   194
            ShowCustomNotificationL( aNotificationType, aAmount );
hgs
parents:
diff changeset
   195
            break;
hgs
parents:
diff changeset
   196
            }            
hgs
parents:
diff changeset
   197
        default:
hgs
parents:
diff changeset
   198
            {
hgs
parents:
diff changeset
   199
            ShowDefaultNotificationL( aNotificationType, aAmount );
hgs
parents:
diff changeset
   200
            break;
hgs
parents:
diff changeset
   201
            }
hgs
parents:
diff changeset
   202
        }
hgs
parents:
diff changeset
   203
    }
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
// ---------------------------------------------------------
hgs
parents:
diff changeset
   206
// CNcnSNNotifier::ShowVoiceMailNotificationL
hgs
parents:
diff changeset
   207
// ---------------------------------------------------------
hgs
parents:
diff changeset
   208
//
hgs
parents:
diff changeset
   209
void CNcnSNNotifier::ShowCustomNotificationL( const TAknSoftNotificationType aNotificationType, const TInt aAmount )
hgs
parents:
diff changeset
   210
    {
hgs
parents:
diff changeset
   211
    TBool amountKnown = ( aAmount <= CVoiceMailManager::EVMMaximumNumber );
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
    NCN_RDEBUG_INT2(_L("CNcnSNNotifier::ShowCustomNotificationL: aNotificationType %d, amount known: %d" ), aNotificationType, amountKnown );
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
    // fuzzy voicemail note and normal voice mail note should never exist at the same time. 
hgs
parents:
diff changeset
   216
    // Always cancel the other before adding new note.
hgs
parents:
diff changeset
   217
    if ( aNotificationType == EVoiceMailNotification
hgs
parents:
diff changeset
   218
        || aNotificationType == ESeparateVoiceMailOnLine1Notification
hgs
parents:
diff changeset
   219
        || aNotificationType == ESeparateVoiceMailOnLine2Notification )
hgs
parents:
diff changeset
   220
        {
hgs
parents:
diff changeset
   221
        CAknSoftNotificationParameters* params =
hgs
parents:
diff changeset
   222
            CreateNotificationParametersLC( aNotificationType, !amountKnown );
hgs
parents:
diff changeset
   223
        iNotifier->CancelCustomSoftNotificationL( *params );
hgs
parents:
diff changeset
   224
        CleanupStack::PopAndDestroy( params );
hgs
parents:
diff changeset
   225
        }
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
    // create notification parameters
hgs
parents:
diff changeset
   228
    CAknSoftNotificationParameters* params =
hgs
parents:
diff changeset
   229
        CreateNotificationParametersLC( aNotificationType, amountKnown );
hgs
parents:
diff changeset
   230
        
hgs
parents:
diff changeset
   231
    if( aAmount <= 0 )
hgs
parents:
diff changeset
   232
        {
hgs
parents:
diff changeset
   233
        iNotifier->CancelCustomSoftNotificationL( *params );
hgs
parents:
diff changeset
   234
        }
hgs
parents:
diff changeset
   235
    else
hgs
parents:
diff changeset
   236
        {
hgs
parents:
diff changeset
   237
        iNotifier->SetCustomNotificationCountL( *params, aAmount );
hgs
parents:
diff changeset
   238
        }
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
    // destroy parameters
hgs
parents:
diff changeset
   241
    CleanupStack::PopAndDestroy( params );
hgs
parents:
diff changeset
   242
    }
hgs
parents:
diff changeset
   243
     
hgs
parents:
diff changeset
   244
// ---------------------------------------------------------
hgs
parents:
diff changeset
   245
// CNcnSNNotifier::ShowDefaultNotificationL
hgs
parents:
diff changeset
   246
// ---------------------------------------------------------
hgs
parents:
diff changeset
   247
//
hgs
parents:
diff changeset
   248
void CNcnSNNotifier::ShowDefaultNotificationL( const TAknSoftNotificationType aNotificationType, const TInt aAmount )
hgs
parents:
diff changeset
   249
    {
hgs
parents:
diff changeset
   250
    NCN_RDEBUG_INT2(_L("CNcnSNNotifier::ShowDefaultNotificationL aNotificationType %d, aAmount: %d" ), aNotificationType, aAmount );
hgs
parents:
diff changeset
   251
    
hgs
parents:
diff changeset
   252
    if( aAmount <= 0 )
hgs
parents:
diff changeset
   253
        {
hgs
parents:
diff changeset
   254
        iNotifier->CancelSoftNotificationL( aNotificationType );
hgs
parents:
diff changeset
   255
        }
hgs
parents:
diff changeset
   256
    else
hgs
parents:
diff changeset
   257
        {
hgs
parents:
diff changeset
   258
        TRAPD( err, iNotifier->SetNotificationCountL( aNotificationType, aAmount ) );
hgs
parents:
diff changeset
   259
    	NCN_RDEBUG_INT(_L("CNcnSNNotifier::ShowDefaultNotificationL: SetNotificationCountL returned %d"  ), err );
hgs
parents:
diff changeset
   260
    	User::LeaveIfError( err );
hgs
parents:
diff changeset
   261
//      iNotifier->SetNotificationCountL( aNotificationType, aAmount );
hgs
parents:
diff changeset
   262
        }
hgs
parents:
diff changeset
   263
    }
hgs
parents:
diff changeset
   264
// ---------------------------------------------------------
hgs
parents:
diff changeset
   265
// CNcnSNNotifier::VoicemailNoteId
hgs
parents:
diff changeset
   266
// ---------------------------------------------------------
hgs
parents:
diff changeset
   267
//        
hgs
parents:
diff changeset
   268
CAknSoftNotificationParameters* CNcnSNNotifier::VoicemailNoteParametersL( 
hgs
parents:
diff changeset
   269
    const TAknSoftNotificationType aNotificationType, 
hgs
parents:
diff changeset
   270
    const TBool aAmountKnown )
hgs
parents:
diff changeset
   271
    {
hgs
parents:
diff changeset
   272
    NCN_RDEBUG_INT2(_L("CNcnSNNotifier::VoicemailNoteParametersL: aNotificationType %d, aAmountKnown: %d" ), aNotificationType, aAmountKnown );
hgs
parents:
diff changeset
   273
    
hgs
parents:
diff changeset
   274
    // note is different only for voice mails, if amount is known or not known.
hgs
parents:
diff changeset
   275
    TUid customMessageId = KNcnDefaultMessageUid; // default
hgs
parents:
diff changeset
   276
    TInt groupId(0);
hgs
parents:
diff changeset
   277
    TInt noteId(0);
hgs
parents:
diff changeset
   278
    switch( aNotificationType )
hgs
parents:
diff changeset
   279
        {
hgs
parents:
diff changeset
   280
        case EVoiceMailNotification:
hgs
parents:
diff changeset
   281
            {
hgs
parents:
diff changeset
   282
            noteId = aAmountKnown ? R_NCN_VOICE_MAIL_NOTE : R_NCN_VOICE_MAILS_UNK_AMOUNT;
hgs
parents:
diff changeset
   283
            groupId = aAmountKnown ? R_NCN_VOICE_MAIL_GROUPED : R_NCN_VOICE_MAILS_UNK_AMOUNT_GROUPED;
hgs
parents:
diff changeset
   284
            break;
hgs
parents:
diff changeset
   285
            }
hgs
parents:
diff changeset
   286
        case ESeparateVoiceMailOnLine1Notification:
hgs
parents:
diff changeset
   287
            {
hgs
parents:
diff changeset
   288
            noteId = aAmountKnown ? R_NCN_VOICE_MAIL_ON_LINE1_NOTE : R_NCN_VOICE_MAILS_UNK_AMOUNT_ON_LINE1;
hgs
parents:
diff changeset
   289
            groupId = aAmountKnown ? R_NCN_VOICE_MAIL_ON_LINE1_GROUPED : R_NCN_VOICE_MAILS_UNK_AMOUNT_ON_LINE1_GROUPED;
hgs
parents:
diff changeset
   290
            break;
hgs
parents:
diff changeset
   291
            }
hgs
parents:
diff changeset
   292
        case ESeparateVoiceMailOnLine2Notification:
hgs
parents:
diff changeset
   293
            {
hgs
parents:
diff changeset
   294
            noteId = aAmountKnown ? R_NCN_VOICE_MAIL_ON_LINE2_NOTE : R_NCN_VOICE_MAILS_UNK_AMOUNT_ON_LINE2;
hgs
parents:
diff changeset
   295
            groupId = aAmountKnown ? R_NCN_VOICE_MAIL_ON_LINE2_GROUPED : R_NCN_VOICE_MAILS_UNK_AMOUNT_ON_LINE2_GROUPED;
hgs
parents:
diff changeset
   296
            customMessageId = KNcnLine2MessageUid;
hgs
parents:
diff changeset
   297
            break;
hgs
parents:
diff changeset
   298
            }
hgs
parents:
diff changeset
   299
        default:
hgs
parents:
diff changeset
   300
            {
hgs
parents:
diff changeset
   301
            ASSERT( EFalse );
hgs
parents:
diff changeset
   302
            break;
hgs
parents:
diff changeset
   303
            }
hgs
parents:
diff changeset
   304
        }
hgs
parents:
diff changeset
   305
        
hgs
parents:
diff changeset
   306
        CAknSoftNotificationParameters* ret = CAknSoftNotificationParameters::NewL(
hgs
parents:
diff changeset
   307
                KNcnResourceFile,
hgs
parents:
diff changeset
   308
                noteId,
hgs
parents:
diff changeset
   309
                KNcnNotificationPriority,
hgs
parents:
diff changeset
   310
                R_AVKON_SOFTKEYS_LISTEN_EXIT,
hgs
parents:
diff changeset
   311
                CAknNoteDialog::ENoTone,
hgs
parents:
diff changeset
   312
                KSpeedDialViewId,
hgs
parents:
diff changeset
   313
                customMessageId,
hgs
parents:
diff changeset
   314
                EAknSoftkeyListen,
hgs
parents:
diff changeset
   315
                KNcnExternalLaunch );
hgs
parents:
diff changeset
   316
        ret->SetGroupedTexts( groupId );
hgs
parents:
diff changeset
   317
        return ret;
hgs
parents:
diff changeset
   318
    }
hgs
parents:
diff changeset
   319
    
hgs
parents:
diff changeset
   320
// ---------------------------------------------------------
hgs
parents:
diff changeset
   321
// CNcnSNNotifier::CreateNotificationParametersLC
hgs
parents:
diff changeset
   322
// ---------------------------------------------------------
hgs
parents:
diff changeset
   323
//    
hgs
parents:
diff changeset
   324
CAknSoftNotificationParameters* CNcnSNNotifier::CreateNotificationParametersLC(
hgs
parents:
diff changeset
   325
    const TAknSoftNotificationType aNotificationType,
hgs
parents:
diff changeset
   326
    TBool aAmountKnown )
hgs
parents:
diff changeset
   327
    {
hgs
parents:
diff changeset
   328
    NCN_RDEBUG_INT(_L("CNcnSNNotifier::CreateNotificationParametersLC: aNotificationType %d" ), aNotificationType );
hgs
parents:
diff changeset
   329
    // instantiate parameters    
hgs
parents:
diff changeset
   330
    CAknSoftNotificationParameters* ret = 0;
hgs
parents:
diff changeset
   331
        
hgs
parents:
diff changeset
   332
    // determine resource ids based on notification type
hgs
parents:
diff changeset
   333
    switch( aNotificationType )
hgs
parents:
diff changeset
   334
        {
hgs
parents:
diff changeset
   335
        // Notification for audio message
hgs
parents:
diff changeset
   336
        case ECustomSoftNotification:
hgs
parents:
diff changeset
   337
        	{
hgs
parents:
diff changeset
   338
       		TInt viewtype = 0; // Default is traditional Inbox
hgs
parents:
diff changeset
   339
		    if ( iMuiuSettings )
hgs
parents:
diff changeset
   340
		        {
hgs
parents:
diff changeset
   341
			    // Read the messaging settings
hgs
parents:
diff changeset
   342
		        iMuiuSettings->Get(KMuiuMceDefaultView,viewtype);
hgs
parents:
diff changeset
   343
		        } 	 
hgs
parents:
diff changeset
   344
        	 if ( viewtype == 1 ) // Launch conversations 
hgs
parents:
diff changeset
   345
    	        {        	        
hgs
parents:
diff changeset
   346
    	        ret = CAknSoftNotificationParameters::NewL(
hgs
parents:
diff changeset
   347
                        KNcnResourceFile,
hgs
parents:
diff changeset
   348
                        R_NCN_AUDIO_MESSAGE_NOTE,
hgs
parents:
diff changeset
   349
                        KNcnNotificationPriority,
hgs
parents:
diff changeset
   350
                        R_AVKON_SOFTKEYS_SHOW_EXIT,
hgs
parents:
diff changeset
   351
                        CAknNoteDialog::ENoTone,
hgs
parents:
diff changeset
   352
                        KConversationApplicationViewUid,
hgs
parents:
diff changeset
   353
                        TUid::Uid(KConversationListViewUid),   
hgs
parents:
diff changeset
   354
                        EAknSoftkeyShow,
hgs
parents:
diff changeset
   355
                        KNullDesC8() );    	        
hgs
parents:
diff changeset
   356
    	        }  
hgs
parents:
diff changeset
   357
        	 else
hgs
parents:
diff changeset
   358
        	    {
hgs
parents:
diff changeset
   359
        	ret = CAknSoftNotificationParameters::NewL(
hgs
parents:
diff changeset
   360
                KNcnResourceFile,
hgs
parents:
diff changeset
   361
                R_NCN_AUDIO_MESSAGE_NOTE,
hgs
parents:
diff changeset
   362
                KNcnNotificationPriority,
hgs
parents:
diff changeset
   363
                R_AVKON_SOFTKEYS_SHOW_EXIT,
hgs
parents:
diff changeset
   364
                CAknNoteDialog::ENoTone,
hgs
parents:
diff changeset
   365
                KMceAudioMessageViewId,
hgs
parents:
diff changeset
   366
                KNcnAudioMessageUid,
hgs
parents:
diff changeset
   367
                EAknSoftkeyShow,
hgs
parents:
diff changeset
   368
                KNullDesC8() );
hgs
parents:
diff changeset
   369
        	    }        	
hgs
parents:
diff changeset
   370
            ret->SetGroupedTexts( R_NCN_AUDIO_MESSAGE_GROUPED );
hgs
parents:
diff changeset
   371
            break;
hgs
parents:
diff changeset
   372
        	}
hgs
parents:
diff changeset
   373
        case ENewMailNotification:
hgs
parents:
diff changeset
   374
            {
hgs
parents:
diff changeset
   375
            ret = CAknSoftNotificationParameters::NewL(
hgs
parents:
diff changeset
   376
                KNcnResourceFile,
hgs
parents:
diff changeset
   377
                R_NCN_EMAIL_NOTE,
hgs
parents:
diff changeset
   378
                KNcnNotificationPriority,
hgs
parents:
diff changeset
   379
                R_AVKON_SOFTKEYS_SHOW_EXIT,
hgs
parents:
diff changeset
   380
                CAknNoteDialog::ENoTone,
hgs
parents:
diff changeset
   381
                KMceMailViewId,
hgs
parents:
diff changeset
   382
                KNcnDefaultMessageUid,
hgs
parents:
diff changeset
   383
                EAknSoftkeyShow,
hgs
parents:
diff changeset
   384
                KNullDesC8() );
hgs
parents:
diff changeset
   385
            ret->SetGroupedTexts( R_NCN_EMAIL_GROUPED );
hgs
parents:
diff changeset
   386
            break;
hgs
parents:
diff changeset
   387
            }
hgs
parents:
diff changeset
   388
        case EVoiceMailNotification:
hgs
parents:
diff changeset
   389
        case ESeparateVoiceMailOnLine1Notification:
hgs
parents:
diff changeset
   390
        case ESeparateVoiceMailOnLine2Notification:
hgs
parents:
diff changeset
   391
            {
hgs
parents:
diff changeset
   392
            ret = VoicemailNoteParametersL( aNotificationType, aAmountKnown );
hgs
parents:
diff changeset
   393
            break;
hgs
parents:
diff changeset
   394
            }
hgs
parents:
diff changeset
   395
        default:
hgs
parents:
diff changeset
   396
            {
hgs
parents:
diff changeset
   397
            // Not found.
hgs
parents:
diff changeset
   398
            User::Leave( KErrNotFound );
hgs
parents:
diff changeset
   399
            break;
hgs
parents:
diff changeset
   400
            }
hgs
parents:
diff changeset
   401
        }
hgs
parents:
diff changeset
   402
        
hgs
parents:
diff changeset
   403
    CleanupStack::PushL( ret );
hgs
parents:
diff changeset
   404
    return ret;
hgs
parents:
diff changeset
   405
    }
hgs
parents:
diff changeset
   406
    
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
// ---------------------------------------------------------
hgs
parents:
diff changeset
   409
// CNcnSNNotifier::ConvertNCNTypeToAvkonType
hgs
parents:
diff changeset
   410
// ---------------------------------------------------------
hgs
parents:
diff changeset
   411
//   
hgs
parents:
diff changeset
   412
TAknSoftNotificationType CNcnSNNotifier::ConvertNCNTypeToAvkonType( 
hgs
parents:
diff changeset
   413
        	const MNcnNotifier::TNcnNotificationType aNotification ) const
hgs
parents:
diff changeset
   414
	{
hgs
parents:
diff changeset
   415
    // default to no notification
hgs
parents:
diff changeset
   416
    TAknSoftNotificationType aknNotificationType = ENoSoftNotification;
hgs
parents:
diff changeset
   417
            
hgs
parents:
diff changeset
   418
    // Map ncn specific notification to Akn notification type and update
hgs
parents:
diff changeset
   419
    // notification.
hgs
parents:
diff changeset
   420
    // Note that only the messages with valid Akn notification need to be
hgs
parents:
diff changeset
   421
    // mapped (ie. class0 needs no mapping)
hgs
parents:
diff changeset
   422
    switch( aNotification )
hgs
parents:
diff changeset
   423
        {
hgs
parents:
diff changeset
   424
        case MNcnNotifier::ENcnMessagesNotification:
hgs
parents:
diff changeset
   425
            {
hgs
parents:
diff changeset
   426
            aknNotificationType = ENewMessagesNotification;
hgs
parents:
diff changeset
   427
            break;
hgs
parents:
diff changeset
   428
            }
hgs
parents:
diff changeset
   429
	    case MNcnNotifier::ENcnAudioMessagesNotification:
hgs
parents:
diff changeset
   430
	        {
hgs
parents:
diff changeset
   431
	        aknNotificationType = ECustomSoftNotification;
hgs
parents:
diff changeset
   432
	        break;
hgs
parents:
diff changeset
   433
	        }
hgs
parents:
diff changeset
   434
        case MNcnNotifier::ENcnEmailNotification:
hgs
parents:
diff changeset
   435
            {
hgs
parents:
diff changeset
   436
            aknNotificationType = ENewMailNotification;
hgs
parents:
diff changeset
   437
            break;
hgs
parents:
diff changeset
   438
            }
hgs
parents:
diff changeset
   439
        case MNcnNotifier::ENcnVoiceMailNotification:
hgs
parents:
diff changeset
   440
            {
hgs
parents:
diff changeset
   441
            aknNotificationType = EVoiceMailNotification;
hgs
parents:
diff changeset
   442
            break;
hgs
parents:
diff changeset
   443
            }
hgs
parents:
diff changeset
   444
        case MNcnNotifier::ENcnVoiceMailOnLine1Notification:
hgs
parents:
diff changeset
   445
            {
hgs
parents:
diff changeset
   446
            aknNotificationType = ESeparateVoiceMailOnLine1Notification;
hgs
parents:
diff changeset
   447
            break;
hgs
parents:
diff changeset
   448
            }
hgs
parents:
diff changeset
   449
        case MNcnNotifier::ENcnVoiceMailOnLine2Notification:
hgs
parents:
diff changeset
   450
            {
hgs
parents:
diff changeset
   451
            aknNotificationType = ESeparateVoiceMailOnLine2Notification;
hgs
parents:
diff changeset
   452
            break;
hgs
parents:
diff changeset
   453
            }
hgs
parents:
diff changeset
   454
        case MNcnNotifier::ENcnMissedCallsNotification:
hgs
parents:
diff changeset
   455
            {
hgs
parents:
diff changeset
   456
            aknNotificationType = EMissedCallsNotification;
hgs
parents:
diff changeset
   457
            break;
hgs
parents:
diff changeset
   458
            }
hgs
parents:
diff changeset
   459
        default:
hgs
parents:
diff changeset
   460
            {
hgs
parents:
diff changeset
   461
            break;
hgs
parents:
diff changeset
   462
            }
hgs
parents:
diff changeset
   463
        }
hgs
parents:
diff changeset
   464
        
hgs
parents:
diff changeset
   465
    return aknNotificationType;
hgs
parents:
diff changeset
   466
	}    
hgs
parents:
diff changeset
   467
	
hgs
parents:
diff changeset
   468
// ---------------------------------------------------------
hgs
parents:
diff changeset
   469
// CNcnSNNotifier::ConvertNCNTypeToSecondaryDisplayType
hgs
parents:
diff changeset
   470
// ---------------------------------------------------------
hgs
parents:
diff changeset
   471
//   
hgs
parents:
diff changeset
   472
SecondaryDisplay::TSecondaryDisplayNcnListDialogs CNcnSNNotifier::ConvertNCNTypeToSecondaryDisplayType( 
hgs
parents:
diff changeset
   473
	const MNcnNotifier::TNcnNotificationType aNotification ) const
hgs
parents:
diff changeset
   474
	{
hgs
parents:
diff changeset
   475
    // default to no notification
hgs
parents:
diff changeset
   476
    SecondaryDisplay::TSecondaryDisplayNcnListDialogs secDisplayDialog = 
hgs
parents:
diff changeset
   477
    	SecondaryDisplay::ECmdNoNotification;
hgs
parents:
diff changeset
   478
            
hgs
parents:
diff changeset
   479
    //Get the corresbonding secondary display dialog id
hgs
parents:
diff changeset
   480
    switch( aNotification )
hgs
parents:
diff changeset
   481
        {
hgs
parents:
diff changeset
   482
        case MNcnNotifier::ENcnMessagesNotification:
hgs
parents:
diff changeset
   483
            {
hgs
parents:
diff changeset
   484
            secDisplayDialog = SecondaryDisplay::ECmdMessagesNotification;
hgs
parents:
diff changeset
   485
            break;
hgs
parents:
diff changeset
   486
            }
hgs
parents:
diff changeset
   487
        case MNcnNotifier::ENcnClass0MessageNotification:
hgs
parents:
diff changeset
   488
            {
hgs
parents:
diff changeset
   489
            secDisplayDialog = SecondaryDisplay::ECmdClass0MessageNotification;
hgs
parents:
diff changeset
   490
            break;
hgs
parents:
diff changeset
   491
            }
hgs
parents:
diff changeset
   492
	    case MNcnNotifier::ENcnAudioMessagesNotification:
hgs
parents:
diff changeset
   493
	        {
hgs
parents:
diff changeset
   494
	        secDisplayDialog = SecondaryDisplay::ECmdAudioMessagesNotification;
hgs
parents:
diff changeset
   495
	        break;
hgs
parents:
diff changeset
   496
	        }
hgs
parents:
diff changeset
   497
        case MNcnNotifier::ENcnEmailNotification:
hgs
parents:
diff changeset
   498
            {
hgs
parents:
diff changeset
   499
            secDisplayDialog = SecondaryDisplay::ECmdEmailNotification;
hgs
parents:
diff changeset
   500
            break;
hgs
parents:
diff changeset
   501
            }
hgs
parents:
diff changeset
   502
        case MNcnNotifier::ENcnVoiceMailNotification:
hgs
parents:
diff changeset
   503
            {
hgs
parents:
diff changeset
   504
            secDisplayDialog = SecondaryDisplay::ECmdVoiceMailNotification;
hgs
parents:
diff changeset
   505
            break;
hgs
parents:
diff changeset
   506
            }
hgs
parents:
diff changeset
   507
        case MNcnNotifier::ENcnVoiceMailOnLine1Notification:
hgs
parents:
diff changeset
   508
            {
hgs
parents:
diff changeset
   509
            secDisplayDialog = SecondaryDisplay::ECmdVoiceMailOnLine1Notification;
hgs
parents:
diff changeset
   510
            break;
hgs
parents:
diff changeset
   511
            }
hgs
parents:
diff changeset
   512
        case MNcnNotifier::ENcnVoiceMailOnLine2Notification:
hgs
parents:
diff changeset
   513
            {
hgs
parents:
diff changeset
   514
            secDisplayDialog = SecondaryDisplay::ECmdVoiceMailOnLine2Notification;
hgs
parents:
diff changeset
   515
            break;
hgs
parents:
diff changeset
   516
            }
hgs
parents:
diff changeset
   517
        case MNcnNotifier::ENcnMissedCallsNotification:
hgs
parents:
diff changeset
   518
            {
hgs
parents:
diff changeset
   519
            secDisplayDialog = SecondaryDisplay::ECmdMissedCallsNotification;
hgs
parents:
diff changeset
   520
            break;
hgs
parents:
diff changeset
   521
            }
hgs
parents:
diff changeset
   522
        default:
hgs
parents:
diff changeset
   523
            {
hgs
parents:
diff changeset
   524
            break;
hgs
parents:
diff changeset
   525
            }
hgs
parents:
diff changeset
   526
        }
hgs
parents:
diff changeset
   527
        
hgs
parents:
diff changeset
   528
    return secDisplayDialog;		
hgs
parents:
diff changeset
   529
	}
hgs
parents:
diff changeset
   530
//  End of File