# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1283489605 -10800 # Node ID 753e337806454f9d4bac938be56491d03dfb4764 # Parent 39ab869ed429ad54d66c3fe1c2982b0810a57336 Revision: 201033 Kit: 201035 diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiAppServicePlugin/src/HtiAppControl.cpp --- a/htiui/HtiServicePlugins/HtiAppServicePlugin/src/HtiAppControl.cpp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiAppServicePlugin/src/HtiAppControl.cpp Fri Sep 03 07:53:25 2010 +0300 @@ -33,12 +33,12 @@ #include #include #include +#include #else #include #include //RSoftwareComponentRegistry #endif #include -#include using namespace Java; #if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 ) @@ -49,6 +49,7 @@ _LIT8( KJarMIMEType, "application/java-archive" ); _LIT8( KJavaMIMEType, "application/java"); _LIT8( KJarxMIMEType, "application/x-java-archive"); +_LIT8( KWidgetMime, "application/x-nokia-widget"); #endif // CONSTANTS diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiMessagesServicePlugin/group/HtiMessagesServicePlugin.mmp --- a/htiui/HtiServicePlugins/HtiMessagesServicePlugin/group/HtiMessagesServicePlugin.mmp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiMessagesServicePlugin/group/HtiMessagesServicePlugin.mmp Fri Sep 03 07:53:25 2010 +0300 @@ -17,6 +17,7 @@ #include +#include "../../../symbian_version.hrh" TARGET HtiMessagesServicePlugin.dll TARGETTYPE PLUGIN @@ -34,6 +35,9 @@ SOURCE HtiIAPHandler.cpp SOURCE HtiMailboxHandler.cpp SOURCE HtiMsgSettingsHandler.cpp +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) +SOURCE HtiNotificationHandler.cpp +#endif USERINCLUDE ../inc APP_LAYER_SYSTEMINCLUDE @@ -62,6 +66,13 @@ LIBRARY mmsserversettings.lib LIBRARY flogger.lib +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) +// For CHtiNotificationHandler to create voice message notification +LIBRARY avkon.lib +LIBRARY aknnotify.lib +LIBRARY aknnotifyplugin.lib +#endif + SMPSAFE // End of file diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiMessagesServicePlugin/inc/HtiMessagesServicePlugin.h --- a/htiui/HtiServicePlugins/HtiMessagesServicePlugin/inc/HtiMessagesServicePlugin.h Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiMessagesServicePlugin/inc/HtiMessagesServicePlugin.h Fri Sep 03 07:53:25 2010 +0300 @@ -22,6 +22,7 @@ // INCLUDES #include +#include "../../../symbian_version.hrh" // CONSTANTS const TInt KHtiMessagesServiceUidValue = 0x10210CCF; // ECOM Implementation UID @@ -32,6 +33,9 @@ class CHtiIAPHandler; class CHtiMailboxHandler; class CHtiMsgSettingsHandler; +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) +class CHtiNotificationHandler; +#endif // CLASS DECLARATION @@ -74,6 +78,12 @@ ESetSmsSettings = 0x42, ESetMmsSettings = 0x45, +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) + // NotificationHandler + ECreateVoiceMessageNotification = 0x50, + EClearAllNotifications = 0x51, +#endif + // only for response message EResultOk = 0xFF, }; @@ -97,6 +107,9 @@ CHtiIAPHandler* iIAPHandler; CHtiMailboxHandler* iMailboxHandler; CHtiMsgSettingsHandler* iMsgSettingsHandler; +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) + CHtiNotificationHandler* iNotificationHandler; +#endif }; #endif // CHTIMESSAGESSERVICEPLUGIN_H diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiMessagesServicePlugin/inc/HtiNotificationHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/htiui/HtiServicePlugins/HtiMessagesServicePlugin/inc/HtiNotificationHandler.h Fri Sep 03 07:53:25 2010 +0300 @@ -0,0 +1,169 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: HTI NCN notification creating handler. +* +*/ + + +#ifndef CHTINOTIFICATIONHANDLER_H +#define CHTINOTIFICATIONHANDLER_H + + +// INCLUDES +#include +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION +#include //TAknSoftNotificationType +#include //CAknSoftNotifier +#include //CAknSoftNotificationParameters + +/** +* HTI NCN notification creating handler. +*/ +class CHtiNotificationHandler : public CActive + { + public: + + /** + * Two-phased constructor. + */ + static CHtiNotificationHandler* NewL(); + + /** + * Called when there is a message to be processed by this service. + * @param aMessage message body destinated to the servive + * @param aPriority message priority + */ + void ProcessMessageL( const TDesC8& aMessage, + THtiMessagePriority aPriority ); + + /** + * Destructor. + */ + virtual ~CHtiNotificationHandler(); + + /** + * Sets the dispatcher to send outgoing messages to. + * @param aDispatcher pointer to dispatcher instance + */ + void SetDispatcher( MHtiDispatcher* aDispatcher ); + + protected: + /*! from CActive */ + void RunL(); + /* from CActive */ + void DoCancel(); + /*! from CActive */ + TInt RunError(TInt aError); + + private: + + /** + * C++ default constructor. + */ + CHtiNotificationHandler(); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + private: + /** + * Indicator support values. + */ + enum TNcnIndicator + { + ENcnIndicatorFax, + ENcnIndicatorEmail, + ENcnIndicatorOther, + ENcnIndicatorVMLine1, + ENcnIndicatorVMLine2, + + ENcnIndicatorLast // This must be last + }; // TNcnIndicator + + enum TNcnCommand + { + ENcnSetIndicator, + ENcnResetIndicator + }; //TNcnCommand + + struct TNcnReqQueueElement + { + TNcnReqQueueElement(TNcnCommand aCmd, TNcnIndicator aIndicator, TUint aMsgCount, TBool aEnable) + { + iCmd = aCmd; + iIndicator = aIndicator; + iMsgCount = aMsgCount; + iEnable = aEnable; + } + TNcnCommand iCmd; + TNcnIndicator iIndicator; + TUint iMsgCount; + TBool iEnable; + }; + + private: // helpers + + void HandleCreateVoiceMessageNotificationL( const TDesC8& aData ); + void HandleClearAllNotificationsL( const TDesC8& aData ); + + CAknSoftNotificationParameters* CreateNotificationParametersLC( TBool aAmountKnown ); + void ShowNewItemsL( CAknSoftNotifier* aNotifier, + const TAknSoftNotificationType aNotificationType, const TInt aAmount ); + void SetNotificationL(TUint aAmount); + void SetIndicator(const TNcnIndicator aIndicator, TUint aMsgCount, TBool aEnable); + void ResetIndicator(); + + void SendOkMsgL( const TDesC8& aData ); + void SendErrorMessageL( TInt aError, const TDesC8& aDescription ); + + private: // Data + // Needed to initialize mobilePhone + RTelServer iTelServer; + + // Needed to initialize mobilePhone + RTelServer::TPhoneInfo iPhoneInfo; + + // Used to store indicator flags and message counts. + RMobilePhone iMobilePhone; + + // Struct is a container for indicator flags and message counts + RMobilePhone::TMobilePhoneMessageWaitingV1 iMsgWaiting; + + // Package for iMsgWaitingV1 + RMobilePhone::TMobilePhoneMessageWaitingV1Pckg iMsgWaitingPckg; + + // Pointer to the dispatcher (referenced) + MHtiDispatcher* iDispatcher; // referenced + + TUint iVoiceMailsInLine1; + + RArray iReqQueue; + }; + + +#endif // CHTINOTIFICATIONHANDLER_H diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiMessagesServicePlugin/src/HtiMessagesServicePlugin.cpp --- a/htiui/HtiServicePlugins/HtiMessagesServicePlugin/src/HtiMessagesServicePlugin.cpp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiMessagesServicePlugin/src/HtiMessagesServicePlugin.cpp Fri Sep 03 07:53:25 2010 +0300 @@ -22,6 +22,9 @@ #include "HtiIAPHandler.h" #include "HtiMailboxHandler.h" #include "HtiMsgSettingsHandler.h" +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) +#include "HtiNotificationHandler.h" +#endif #include #include @@ -54,6 +57,9 @@ delete iIAPHandler; delete iMailboxHandler; delete iMsgSettingsHandler; +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) + delete iNotificationHandler; +#endif } // ---------------------------------------------------------------------------- @@ -117,6 +123,18 @@ iMsgSettingsHandler->ProcessMessageL( aMessage, aPriority ); } +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) + else if ( command >= ECreateVoiceMessageNotification && command <= EClearAllNotifications) + { + if( !iNotificationHandler ) + { + iNotificationHandler = CHtiNotificationHandler::NewL(); + iNotificationHandler->SetDispatcher(iDispatcher); + } + iNotificationHandler->ProcessMessageL( aMessage, aPriority ); + } +#endif + else { User::LeaveIfError( iDispatcher->DispatchOutgoingErrorMessage( diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiMessagesServicePlugin/src/HtiNotificationHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/htiui/HtiServicePlugins/HtiMessagesServicePlugin/src/HtiNotificationHandler.cpp Fri Sep 03 07:53:25 2010 +0300 @@ -0,0 +1,463 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Implementation of creating notifications. +* +*/ + + +// INCLUDE FILES +#include "HtiMessagesServicePlugin.h" +#include "HtiNotificationHandler.h" + +#include +#include + +#include //CAknSDData +#include //R_AVKON_SOFTKEYS_LISTEN_EXIT + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + + +// MACROS +#define KSpeedDialViewId TVwsViewId( TUid::Uid( 0x1000590A ), TUid::Uid( 0x02 ) ) +#define R_NCN_VOICE_MAIL_NOTE 0x283d012 +#define R_NCN_VOICE_MAILS_UNK_AMOUNT 0x283d01a +#define R_NCN_VOICE_MAIL_GROUPED 0x283d017 +#define R_NCN_VOICE_MAILS_UNK_AMOUNT_GROUPED 0x283d01b + +// LOCAL CONSTANTS AND MACROS + +_LIT8( KErrorInvalidParameters, "Invalid command parameters" ); +_LIT8( KErrorCreateVoiceMessageNotificationFailed, "Creating voice message notification failed" ); +_LIT8( KErrorClearNotificationFailed, "Clearing notification failed" ); +_LIT8( KErrorUnrecognizedCommand, "Unrecognized command" ); + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CHtiNotificationHandler::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +CHtiNotificationHandler* CHtiNotificationHandler::NewL() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::NewL" ); + CHtiNotificationHandler* self = new (ELeave) CHtiNotificationHandler(); + CleanupStack::PushL ( self ); + self->ConstructL(); + CleanupStack::Pop(); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::NewL" ); + return self; + } + + +// ---------------------------------------------------------------------------- +// CHtiNotificationHandler::CHtiNotificationHandler +// C++ default constructor can NOT contain any code, that +// might leave. +// ---------------------------------------------------------------------------- +CHtiNotificationHandler::CHtiNotificationHandler() + : CActive( CActive::EPriorityStandard ), + iMsgWaiting(), + iMsgWaitingPckg( iMsgWaiting ), + iVoiceMailsInLine1(0) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::CHtiNotificationHandler" ); + CActiveScheduler::Add( this ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::CHtiNotificationHandler" ); + } + + +// ----------------------------------------------------------------------------- +// CHtiNotificationHandler::~CHtiNotificationHandler +// Destructor. +// ----------------------------------------------------------------------------- +CHtiNotificationHandler::~CHtiNotificationHandler() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::~CHtiNotificationHandler" ); + Cancel(); + iMobilePhone.Close(); + iTelServer.Close(); + iReqQueue.Close(); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::~CHtiNotificationHandler" ); + } + + +// ----------------------------------------------------------------------------- +// CHtiNotificationHandler::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +void CHtiNotificationHandler::ConstructL() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::ConstructL" ); + + TInt err; + + err = iTelServer.Connect(); + HTI_LOG_FORMAT("RTelServer::Connect() returns %d",err); + User::LeaveIfError( err ); + + err = iTelServer.GetPhoneInfo( 0, iPhoneInfo ); + HTI_LOG_FORMAT("RTelServer::GetPhoneInfo() returns %d",err); + User::LeaveIfError( err ); + + err = iMobilePhone.Open( iTelServer, iPhoneInfo.iName ); + HTI_LOG_FORMAT("RTelServer::Open() returns %d",err); + User::LeaveIfError( err ); + + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::ConstructL" ); + } + + +// ----------------------------------------------------------------------------- +// CHtiNotificationHandler::SetDispatcher +// Sets the dispatcher pointer. +// ----------------------------------------------------------------------------- + +void CHtiNotificationHandler::SetDispatcher( MHtiDispatcher* aDispatcher ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::SetDispatcher" ); + iDispatcher = aDispatcher; + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::SetDispatcher" ); + } + + +// ----------------------------------------------------------------------------- +// CHtiNotificationHandler::ProcessMessageL +// Parses the received message and calls handler functions. +// ----------------------------------------------------------------------------- +void CHtiNotificationHandler::ProcessMessageL( const TDesC8& aMessage, + THtiMessagePriority /*aPriority*/ ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::ProcessMessageL" ); + + // Zero length message and command code validity already checked + // in HtiMessagesServicePlugin. + + if ( aMessage[0] == CHtiMessagesServicePlugin::ECreateVoiceMessageNotification ) + { + TRAPD(err, HandleCreateVoiceMessageNotificationL(aMessage)); + if ( err != KErrNone ) + { + SendErrorMessageL( err, KErrorCreateVoiceMessageNotificationFailed ); + } + } + + else if ( aMessage[0] == CHtiMessagesServicePlugin::EClearAllNotifications) + { + TRAPD(err, HandleClearAllNotificationsL(aMessage)); + if( err!= KErrNone ) + { + SendErrorMessageL( err, KErrorClearNotificationFailed ); + } + } + else + { + SendErrorMessageL( KErrArgument, KErrorUnrecognizedCommand ); + } + + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::ProcessMessageL" ); + } + + +void CHtiNotificationHandler::RunL() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::RunL" ); + if(iReqQueue.Count()) + { + TNcnReqQueueElement elem = iReqQueue[0]; + iReqQueue.Remove(0); + if(elem.iCmd == ENcnSetIndicator) + { + SetIndicator(elem.iIndicator, elem.iMsgCount, elem.iEnable); + } + else if(elem.iCmd == ENcnResetIndicator) + { + ResetIndicator(); + } + } + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::RunL" ); + } + +void CHtiNotificationHandler::DoCancel() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::DoCancel" ); + if( IsActive() ) + { + iMobilePhone.CancelAsyncRequest( EMobilePhoneSetIccMessageWaitingIndicators ); + } + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::DoCancel" ); + } + +TInt CHtiNotificationHandler::RunError(TInt aError) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::RunError" ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::RunError" ); + return aError; + } + +CAknSoftNotificationParameters* CHtiNotificationHandler::CreateNotificationParametersLC(TBool aAmountKnown) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::CreateNotificationParametersLC" ); + const TUid KNcnDefaultMessageUid = { 1 }; + _LIT( KNcnResourceFile, "z:\\resource\\Ncnlist.rSC" ); + const TInt KNcnNotificationPriority = 2200; + + TInt noteId = aAmountKnown ? R_NCN_VOICE_MAIL_NOTE : R_NCN_VOICE_MAILS_UNK_AMOUNT; + TInt groupId = aAmountKnown ? R_NCN_VOICE_MAIL_GROUPED : R_NCN_VOICE_MAILS_UNK_AMOUNT_GROUPED; + TUid customMessageId = KNcnDefaultMessageUid; // default + _LIT8( KNcnExternalLaunch, "outside" ); + CAknSoftNotificationParameters* ret = CAknSoftNotificationParameters::NewL( + KNcnResourceFile, + noteId, + KNcnNotificationPriority, + R_AVKON_SOFTKEYS_LISTEN_EXIT, + CAknNoteDialog::ENoTone, + KSpeedDialViewId, + customMessageId, + EAknSoftkeyListen, + KNcnExternalLaunch ); + ret->SetGroupedTexts( groupId ); + CleanupStack::PushL( ret ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::CreateNotificationParametersLC" ); + return ret; + } + +void CHtiNotificationHandler::ShowNewItemsL( CAknSoftNotifier* aNotifier, + const TAknSoftNotificationType aNotificationType, const TInt aAmount ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::ShowNewItemsL" ); + TInt KVMMaximumNumber = 0xfe; + TBool amountKnown = ( aAmount <= KVMMaximumNumber ); + + // fuzzy voicemail note and normal voice mail note should never exist at the same time. + // Always cancel the other before adding new note. + if ( aNotificationType == EVoiceMailNotification + || aNotificationType == ESeparateVoiceMailOnLine1Notification + || aNotificationType == ESeparateVoiceMailOnLine2Notification ) + { + CAknSoftNotificationParameters* params = + CreateNotificationParametersLC(!amountKnown); + + aNotifier->CancelCustomSoftNotificationL( *params ); + CleanupStack::PopAndDestroy( params ); + } + + // create notification parameters + CAknSoftNotificationParameters* params = + CreateNotificationParametersLC(amountKnown); + + if( aAmount <= 0 ) + { + aNotifier->CancelCustomSoftNotificationL( *params ); + } + else + { + aNotifier->SetCustomNotificationCountL( *params, aAmount ); + } + + // destroy parameters + CleanupStack::PopAndDestroy( params ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::ShowNewItemsL" ); + } + +void CHtiNotificationHandler::SetNotificationL(TUint aAmount) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::SetNotificationL" ); + + //Convert to avkon type + TAknSoftNotificationType aknType = EVoiceMailNotification; + + //Get the secondary display id for this note + TInt dialogID = 5; //SecondaryDisplay::ECmdVoiceMailNotification in NcnSecondaryDisplayAPI.h + + // The category UID for the messages in this header file. + // + const TUid KCatNcnList = {0x100058F1}; + const TUint KNcnExternalizedNumberMaxLength = 8; + + // Amount needs to be stored to "additional parameter" + TBuf8 additionalData; + + additionalData.Num(aAmount); + + // Encapsulate the sent data + CAknSDData* sdData = NULL; + TRAPD( status, sdData = CAknSDData::NewL( + KCatNcnList, + dialogID, + additionalData) ); + + // Create notifier instance + CAknSoftNotifier* notifier = CAknSoftNotifier::NewL(); + CleanupStack::PushL(notifier); + + // Send data to cover ui + if ( status == KErrNone && sdData != NULL) + { + notifier->SetSecondaryDisplayData( sdData ); //Takes ownership + } + + // If there are problems with notifier, just catch the error and + // try to finish the other processes. + TRAP( status, ShowNewItemsL( notifier, aknType, aAmount ) ); + + CleanupStack::PopAndDestroy(notifier); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::SetNotificationL" ); + } + +void CHtiNotificationHandler::SetIndicator(const TNcnIndicator aIndicator, TUint aMsgCount, TBool aEnable) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::SetIndicator" ); + + TInt aId = RMobilePhone::KDisplayVoicemailActive; + if( aEnable ) + { + iMsgWaiting.iDisplayStatus |= aId; + } + else + { + iMsgWaiting.iDisplayStatus &= ~ aId; + } + iMsgWaiting.iVoiceMsgs = aMsgCount; + if(IsActive()) + { + TNcnReqQueueElement elem(ENcnSetIndicator, aIndicator, aMsgCount, aEnable ); + iReqQueue.Append( elem ); + } + else + { + iStatus = KRequestPending; + iMobilePhone.SetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg ); + HTI_LOG_FORMAT("iStatus: %d", iStatus.Int()); + SetActive(); + } + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::SetIndicator" ); + } + +void CHtiNotificationHandler::ResetIndicator() + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::ResetIndicator" ); + if( IsActive() ) + { + TNcnReqQueueElement elem(ENcnResetIndicator, ENcnIndicatorVMLine1, 0, EFalse ); + iReqQueue.Append( elem ); + return; + } + iMsgWaiting.iVoiceMsgs = 0; + iMsgWaiting.iDisplayStatus = 0; + iMobilePhone.SetIccMessageWaitingIndicators( iStatus, iMsgWaitingPckg ); + SetActive(); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::ResetIndicator" ); + } + +// ---------------------------------------------------------------------------- +// CHtiNotificationHandler::HandleCreateVoiceMessageNotificationL +// Creates new voice message notification. +// ---------------------------------------------------------------------------- +void CHtiNotificationHandler::HandleCreateVoiceMessageNotificationL( const TDesC8& aData ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::HandleCreateVoiceMessageNotificationL" ); + + if ( aData.Length() == 1 ) + { + HTI_LOG_TEXT( "no command parameter, using default value 1"); + iVoiceMailsInLine1 = 1; + } + else if(aData.Length() == 2) //1-byte command parameter + { + iVoiceMailsInLine1 = aData[1]; + HTI_LOG_FORMAT("%d new voice messages", iVoiceMailsInLine1); + } + else + { + SendErrorMessageL( KErrArgument, KErrorInvalidParameters ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::HandleCreateVoiceMessageNotificationL" ); + return; + } + + ResetIndicator(); + SetNotificationL(iVoiceMailsInLine1); + SetIndicator(ENcnIndicatorVMLine1, iVoiceMailsInLine1, iVoiceMailsInLine1 ? ETrue : EFalse); + SendOkMsgL( KNullDesC8 ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::HandleCreateVoiceMessageNotificationL" ); + } + +// ---------------------------------------------------------------------------- +// CHtiNotificationHandler::HandleClearAllNotificationsL +// Clears all message notifications. +// ---------------------------------------------------------------------------- +void CHtiNotificationHandler::HandleClearAllNotificationsL( const TDesC8& aData ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::HandleClearAllNotificationsL" ); + if ( aData.Length() != 1 ) + { + SendErrorMessageL( KErrArgument, KErrorInvalidParameters ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::HandleClearAllNotificationsL" ); + return; + } + + CAknSoftNotifier* notifier = CAknSoftNotifier::NewL(); + CleanupStack::PushL(notifier); + CAknSoftNotificationParameters* params = CreateNotificationParametersLC( ETrue ); + notifier->CancelCustomSoftNotificationL( *params ); + CleanupStack::PopAndDestroy(2);//param, notifier + + ResetIndicator(); + + SendOkMsgL( KNullDesC8 ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::HandleClearAllNotificationsL" ); + } + +// ---------------------------------------------------------------------------- +// CHtiNotificationHandler::SendOkMsgL +// Helper function for sending response messages. +// ---------------------------------------------------------------------------- +void CHtiNotificationHandler::SendOkMsgL( const TDesC8& aData ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::SendOkMsgL" ); + User::LeaveIfNull( iDispatcher ); + HBufC8* temp = HBufC8::NewL( aData.Length() + 1 ); + TPtr8 response = temp->Des(); + response.Append( ( TChar ) CHtiMessagesServicePlugin::EResultOk ); + response.Append( aData ); + User::LeaveIfError( iDispatcher->DispatchOutgoingMessage( + temp, KHtiMessagesServiceUid ) ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::SendOkMsgL" ); + } + + +// ---------------------------------------------------------------------------- +// CHtiNotificationHandler::SendErrorMessageL +// Helper function for sending error response messages. +// ---------------------------------------------------------------------------- +void CHtiNotificationHandler::SendErrorMessageL( TInt aError, const TDesC8& aDescription ) + { + HTI_LOG_FUNC_IN( "CHtiNotificationHandler::SendErrorMessageL" ); + User::LeaveIfNull( iDispatcher ); + User::LeaveIfError( iDispatcher->DispatchOutgoingErrorMessage( + aError, aDescription, KHtiMessagesServiceUid ) ); + HTI_LOG_FUNC_OUT( "CHtiNotificationHandler::SendErrorMessageL" ); + } + +// End of file diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiPIMServicePlugin/group/HtiPIMServicePlugin.mmp --- a/htiui/HtiServicePlugins/HtiPIMServicePlugin/group/HtiPIMServicePlugin.mmp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiPIMServicePlugin/group/HtiPIMServicePlugin.mmp Fri Sep 03 07:53:25 2010 +0300 @@ -17,6 +17,7 @@ #include +#include "../../../symbian_version.hrh" TARGET HtiPIMServicePlugin.dll TARGETTYPE PLUGIN @@ -32,8 +33,10 @@ SOURCE proxy.cpp SOURCE HtiPIMServicePlugin.cpp SOURCE PIMHandler.cpp +SOURCE HtiSimDirHandler.cpp +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) SOURCE HtiBookmarkHandler.cpp -SOURCE HtiSimDirHandler.cpp +#endif USERINCLUDE ../inc APP_LAYER_SYSTEMINCLUDE @@ -49,12 +52,16 @@ LIBRARY ecom.lib LIBRARY estor.lib LIBRARY euser.lib -LIBRARY favouritesengine.lib LIBRARY ws32.lib LIBRARY flogger.lib LIBRARY cntmodel.lib LIBRARY etelmm.lib LIBRARY etel.lib + +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) +LIBRARY favouritesengine.lib +#endif + SMPSAFE // End of file diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiPIMServicePlugin/inc/HtiPIMServicePlugin.h --- a/htiui/HtiServicePlugins/HtiPIMServicePlugin/inc/HtiPIMServicePlugin.h Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiPIMServicePlugin/inc/HtiPIMServicePlugin.h Fri Sep 03 07:53:25 2010 +0300 @@ -23,6 +23,7 @@ // INCLUDES #include #include +#include "../../../symbian_version.hrh" // CONSTANTS const TInt KPIMServiceUidValue = 0x10210CCD; // ECOM Implementation UID @@ -30,7 +31,11 @@ // FORWARD DECLARATIONS class CPIMHandler; + +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) class CHtiBookmarkHandler; +#endif + class CHtiSimDirHandler; // CLASS DECLARATION @@ -100,7 +105,9 @@ private: CPIMHandler* iPimHandler; +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) CHtiBookmarkHandler* iBookmarkHandler; +#endif CHtiSimDirHandler* iSimDirHandler; }; diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiPIMServicePlugin/src/HtiPIMServicePlugin.cpp --- a/htiui/HtiServicePlugins/HtiPIMServicePlugin/src/HtiPIMServicePlugin.cpp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiPIMServicePlugin/src/HtiPIMServicePlugin.cpp Fri Sep 03 07:53:25 2010 +0300 @@ -19,14 +19,18 @@ // INCLUDE FILES #include "HtiPIMServicePlugin.h" #include "PIMHandler.h" + +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) #include "HtiBookmarkHandler.h" +#endif + #include "HtiSimDirHandler.h" #include #include // CONSTANTS _LIT8( KErrorMissingCommand, "Missing command" ); - +_LIT8( KErrorUnrecognizedCommand, "Unrecognized command" ); // ---------------------------------------------------------------------------- // Create instance of concrete ECOM interface implementation CHtiPIMServicePlugin* CHtiPIMServicePlugin::NewL() @@ -48,7 +52,9 @@ { HTI_LOG_TEXT("CHtiPIMServicePlugin destroy"); delete iPimHandler; +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) delete iBookmarkHandler; +#endif delete iSimDirHandler; } @@ -91,7 +97,8 @@ } iSimDirHandler->ProcessMessageL( aMessage, aPriority ); } - else +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) + else if ( aCommand <= EDeleteBookmark) { if ( iBookmarkHandler == NULL ) { @@ -100,6 +107,12 @@ } iBookmarkHandler->ProcessMessageL( aMessage, aPriority ); } +#endif + else + { + User::LeaveIfError( iDispatcher->DispatchOutgoingErrorMessage( + KErrArgument, KErrorUnrecognizedCommand, KPIMServiceUid ) ); + } HTI_LOG_FUNC_OUT( "CHtiPIMServicePlugin::ProcessMessageL" ); } @@ -112,11 +125,13 @@ { return iPimHandler->IsBusy(); } - + +#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 ) if ( iBookmarkHandler ) { return iBookmarkHandler->IsBusy(); } +#endif if( iSimDirHandler) { diff -r 39ab869ed429 -r 753e33780645 htiui/HtiServicePlugins/HtiSysInfoServicePlugin/src/HtiSysInfoServicePlugin.cpp --- a/htiui/HtiServicePlugins/HtiSysInfoServicePlugin/src/HtiSysInfoServicePlugin.cpp Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/HtiServicePlugins/HtiSysInfoServicePlugin/src/HtiSysInfoServicePlugin.cpp Fri Sep 03 07:53:25 2010 +0300 @@ -1929,6 +1929,7 @@ { iDispatcher->DispatchOutgoingErrorMessage( KErrAccessDenied, KErrDescrBtOnDenied, KSysInfoServiceUid ); + CleanupStack::PopAndDestroy(); // btSettings return; } diff -r 39ab869ed429 -r 753e33780645 htiui/sis/HTI_S60-10_1.pkg --- a/htiui/sis/HTI_S60-10_1.pkg Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/sis/HTI_S60-10_1.pkg Fri Sep 03 07:53:25 2010 +0300 @@ -18,7 +18,7 @@ &EN ; Using UID of HtiFramework project -#{"HTI"},(0x1020DEB6),2,27,0 +#{"HTI"},(0x1020DEB6),2,28,0 ; Series60 product id for S60 5.2 [0x20022E6D], 0, 0, 0, {"Series60ProductID"} diff -r 39ab869ed429 -r 753e33780645 htiui/sis/HTI_S60-52.pkg --- a/htiui/sis/HTI_S60-52.pkg Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/sis/HTI_S60-52.pkg Fri Sep 03 07:53:25 2010 +0300 @@ -18,7 +18,7 @@ &EN ; Using UID of HtiFramework project -#{"HTI"},(0x1020DEB6),2,27,0 +#{"HTI"},(0x1020DEB6),2,28,0 ; Series60 product id for S60 5.2 [0x20022E6D], 0, 0, 0, {"Series60ProductID"} diff -r 39ab869ed429 -r 753e33780645 htiui/sis/HTI_S60_Upgrade-10_1.pkg --- a/htiui/sis/HTI_S60_Upgrade-10_1.pkg Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/sis/HTI_S60_Upgrade-10_1.pkg Fri Sep 03 07:53:25 2010 +0300 @@ -18,7 +18,7 @@ &EN ; Using UID of HtiFramework project -#{"HTI"},(0x1020DEB6),2,27,0,TYPE=SA,RU +#{"HTI"},(0x1020DEB6),2,28,0,TYPE=SA,RU ; Series60 product id for S60 5.2 [0x20022E6D], 0, 0, 0, {"Series60ProductID"} diff -r 39ab869ed429 -r 753e33780645 htiui/sis/HTI_S60_Upgrade-52.pkg --- a/htiui/sis/HTI_S60_Upgrade-52.pkg Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/sis/HTI_S60_Upgrade-52.pkg Fri Sep 03 07:53:25 2010 +0300 @@ -18,7 +18,7 @@ &EN ; Using UID of HtiFramework project -#{"HTI"},(0x1020DEB6),2,27,0,TYPE=SA,RU +#{"HTI"},(0x1020DEB6),2,28,0,TYPE=SA,RU ; Series60 product id for S60 5.2 [0x20022E6D], 0, 0, 0, {"Series60ProductID"} diff -r 39ab869ed429 -r 753e33780645 htiui/sis/HTI_stub.pkg --- a/htiui/sis/HTI_stub.pkg Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/sis/HTI_stub.pkg Fri Sep 03 07:53:25 2010 +0300 @@ -18,7 +18,7 @@ &EN ; Using UID of HtiFramework project -#{"HTI"},(0x1020DEB6),2,27,0 +#{"HTI"},(0x1020DEB6),2,28,0 ; Localised Vendor name %{"Nokia"} diff -r 39ab869ed429 -r 753e33780645 htiui/symbian_version.hrh --- a/htiui/symbian_version.hrh Wed Aug 25 15:45:01 2010 +0300 +++ b/htiui/symbian_version.hrh Fri Sep 03 07:53:25 2010 +0300 @@ -37,7 +37,7 @@ * used to variate the source code based on the SDK in use. The value of the * flag should be always changed to reflect the current build environment. */ -#define SYMBIAN_VERSION_SUPPORT SYMBIAN_3 +#define SYMBIAN_VERSION_SUPPORT SYMBIAN_4 #endif // __SYMBIAN_VERSION_HRH diff -r 39ab869ed429 -r 753e33780645 layers.sysdef.xml --- a/layers.sysdef.xml Wed Aug 25 15:45:01 2010 +0300 +++ b/layers.sysdef.xml Fri Sep 03 07:53:25 2010 +0300 @@ -1,17 +1,20 @@ - ]> - + - - - + + + + + + diff -r 39ab869ed429 -r 753e33780645 stifui/avkon/group/ReleaseNote.txt --- a/stifui/avkon/group/ReleaseNote.txt Wed Aug 25 15:45:01 2010 +0300 +++ b/stifui/avkon/group/ReleaseNote.txt Fri Sep 03 07:53:25 2010 +0300 @@ -1,5 +1,5 @@ ======================================================================== -RELEASE NOTE FOR STIF UI - STIF_201028 (7.3.37) +RELEASE NOTE FOR STIF UI - STIF_201030 (7.3.38) SUPPORTING SERIES 60 3.0 -> ======================================================================== diff -r 39ab869ed429 -r 753e33780645 stifui/avkon/stifui/data/Stifui.rss --- a/stifui/avkon/stifui/data/Stifui.rss Wed Aug 25 15:45:01 2010 +0300 +++ b/stifui/avkon/stifui/data/Stifui.rss Fri Sep 03 07:53:25 2010 +0300 @@ -27,8 +27,8 @@ #include #include #include -#include // Enumerations of memory selection, file selection, save etc dialogs -#include // Resource structures of memory selection, file selection, save etc dialogs +//#include // Enumerations of memory selection, file selection, save etc dialogs +//#include // Resource structures of memory selection, file selection, save etc dialogs #if defined (__S60_) #include #endif diff -r 39ab869ed429 -r 753e33780645 stifui/avkon/stifui/inc/version.h --- a/stifui/avkon/stifui/inc/version.h Wed Aug 25 15:45:01 2010 +0300 +++ b/stifui/avkon/stifui/inc/version.h Fri Sep 03 07:53:25 2010 +0300 @@ -20,9 +20,9 @@ #define STIFUI_MAJOR_VERSION 7 #define STIFUI_MINOR_VERSION 3 -#define STIFUI_BUILD_VERSION 37 +#define STIFUI_BUILD_VERSION 38 -#define STIFUI_REL_DATE "13th July 2010" +#define STIFUI_REL_DATE "27th July 2010" #define TO_UNICODE(text) _L(text) diff -r 39ab869ed429 -r 753e33780645 sysdef_1_4_0.dtd --- a/sysdef_1_4_0.dtd Wed Aug 25 15:45:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -