--- 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 <SWInstApi.h>
#include <swi/sisregistrysession.h>
#include <swi/sisregistrypackage.h>
+#include <widgetregistryclient.h>
#else
#include <usif/sif/sif.h>
#include <usif/scr/scr.h> //RSoftwareComponentRegistry
#endif
#include <javaregistryincludes.h>
-#include <widgetregistryclient.h>
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
--- 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 <platform_paths.hrh>
+#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
--- 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 <HtiServicePluginInterface.h>
+#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
--- /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 <HtiServicePluginInterface.h>
+#include <etelmm.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+#include <AknNotifyStd.h> //TAknSoftNotificationType
+#include <AknSoftNotifier.h> //CAknSoftNotifier
+#include <AknSoftNotificationParameters.h> //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<TNcnReqQueueElement> iReqQueue;
+ };
+
+
+#endif // CHTINOTIFICATIONHANDLER_H
--- 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 <HtiDispatcherInterface.h>
#include <HtiLogging.h>
@@ -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(
--- /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 <HtiDispatcherInterface.h>
+#include <HtiLogging.h>
+
+#include <aknSDData.h> //CAknSDData
+#include <avkon.rsg> //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<KNcnExternalizedNumberMaxLength> 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
--- 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 <platform_paths.hrh>
+#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
--- 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 <HtiServicePluginInterface.h>
#include <w32std.h>
+#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;
};
--- 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 <HtiDispatcherInterface.h>
#include <HtiLogging.h>
// 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)
{
--- 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;
}
--- 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"}
--- 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"}
--- 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"}
--- 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"}
--- 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"}
--- 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
--- 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 @@
<?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
<!ENTITY layer_real_source_path "sf/app/testtools" >
]>
-<SystemDefinition name="testtools" schema="1.4.0">
+<SystemDefinition name="testtools" schema="1.5.1">
<systemModel>
<layer name="app_layer">
- <module name="htiui">
- <unit unitID="testtools.htiui" mrp="" bldFile="&layer_real_source_path;/htiui/group" name="htiui" />
- </module>
+ <module name="htiui">
+ <unit unitID="testtools.htiuiqt" mrp="" bldFile="&layer_real_source_path;/htiui" proFile="htiui.pro" name="htiui" />
+ </module>
<module name="stifui">
<unit unitID="testtools.stifui" mrp="" bldFile="&layer_real_source_path;/stifui/avkon/group" name="stifui" />
</module>
+ <module name="sutui">
+ <unit unitID="testtools.sutui" mrp="" bldFile="&layer_real_source_path;/symbianunittestui/qt" proFile="symbianunittestqt.pro" name="sutui" />
+ </module>
</layer>
</systemModel>
</SystemDefinition>
--- 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 ->
========================================================================
--- 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 <avkon.rh>
#include <avkon.mbg>
#include <avkon.hrh>
-#include <CommonDialogs.hrh> // Enumerations of memory selection, file selection, save etc dialogs
-#include <CommonDialogs.rh> // Resource structures of memory selection, file selection, save etc dialogs
+//#include <CommonDialogs.hrh> // Enumerations of memory selection, file selection, save etc dialogs
+//#include <CommonDialogs.rh> // Resource structures of memory selection, file selection, save etc dialogs
#if defined (__S60_)
#include <data_caging_paths_strings.hrh>
#endif
--- 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)
--- 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 @@
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
- name CDATA #REQUIRED
- schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
- name CDATA #REQUIRED
- levels CDATA #IMPLIED
- span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
- name CDATA #REQUIRED
- level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
- unitID ID #REQUIRED
- name CDATA #REQUIRED
- mrp CDATA #REQUIRED
- filter CDATA #IMPLIED
- bldFile CDATA #REQUIRED
- priority CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
- name CDATA #REQUIRED
- mrp CDATA #REQUIRED
- filter CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
- name CDATA #REQUIRED
- version CDATA #REQUIRED
- late (Y|N) #IMPLIED
- filter CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
- name ID #REQUIRED
- description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
- name ID #REQUIRED
- description CDATA #REQUIRED
- target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
- name ID #REQUIRED
- abldTarget CDATA #REQUIRED
- description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
- name ID #REQUIRED
- abldOption CDATA #REQUIRED
- description CDATA #REQUIRED
- enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
- name ID #REQUIRED
- description CDATA #REQUIRED
- filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
- command CDATA #REQUIRED
- targetList IDREFS #IMPLIED
- unitParallel (Y | N | y | n) #REQUIRED
- targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
- name CDATA #REQUIRED
- cwd CDATA #REQUIRED
- command CDATA #REQUIRED>