diff -r 35488577e233 -r 2fa1fa551b0b cbs/CbsServer/ServerInc/CCbsReceiverHelper.h --- a/cbs/CbsServer/ServerInc/CCbsReceiverHelper.h Mon Aug 23 15:50:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,275 +0,0 @@ -/* -* Copyright (c) 2003 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: This file contains the header file of the CCbsReceiverHelper class. -* -*/ - - -#ifndef CCBSRECEIVERHELPER_H -#define CCBSRECEIVERHELPER_H - -// INCLUDES -#include -#include "CbsCommon.h" - -// FORWARD DECLARATIONS -class CCbsRecMessage; -class CCbsServer; -class CCbsDbImp; -class CVwsSessionWrapper; -class CCbsMessage; - - -// CLASS DECLARATION - -/** -* CCbsReceiverHelper gets the messages from the receiver and -* sends them to the database. All received messages are -* sent to CCbsReceiverHelper instance by CCbsRecEtel. -* This class makes subscription and existence checks -* to these messages and also implements topic detection -* feature. -*/ -class CCbsReceiverHelper : public CBase - { - public: // New functions - - /** - * Creates an instance of the class. - * - * @param aDatabase Database object. - * @return New CCbsReceiverHelper instance. - */ - static CCbsReceiverHelper* NewL( CCbsDbImp& aDatabase ); - - /** - * The destructor. - */ - ~CCbsReceiverHelper(); - - /** - * Clears the topic detected counter. - */ - void ClearTopicsDetectedCounter(); - - /** - * Returns the amount of detected topics. - * - * @return The amount of detected topics. - */ - TUint TopicsDetected() const; - - /** - * This function is called when a message is received. - * - * Assumptions; - * 1. The message doesn't have it's permanent or read - * flags raised - method leaves with KErrNotSupported - * if this is the case. - * 2. If an index message (root or subindex) is passed as - * a parameter, the language indication prefix, if any, - * has been removed before HandleReceivedMessageL() is called. - * - * Assumption (2) holds because language indications are removed - * by Receiver module in an instance of CCbsRecDecoder. - * - * Exceptions: - * KErrNoMemory OOM occurred. - * KErrNotSupported aMessage's flags were invalid. - * KErrAlreadyExists aMessage is already stored in - * the database. - * - * @param aMessage Interface to get the information - * about the message. - */ - void HandleReceivedMessageL( CCbsMessage& aMessage ); - - /** - * Checks if aMessage's topic is in the topic list. - * If the topic detection is enabled and the aMessage's topic - * is not in the list, the topic is added. The method - * will then return ETrue. Otherwise EFalse is returned. - * - * @param aMessage Message page. - * @return ETrue, if topic added - */ - TBool CheckForNewTopicL( const CCbsMessage& aMessage ); - - /** - * Checks if aMessage's topic is subscribed and - * if the message already exists in the database. - * - * Returns ETrue only if the message does not exist in the - * database and the message's topic is subscribed. - * - * @param aMessage Message page. - * @return ETrue, if message can be received - */ - TBool CheckForSubscriptionAndExistenceL( const CCbsMessage& aMessage ); - - /** - * Checks if aMessage's language has been subscribed by the user. - * - * ETrue is returned either if the language specified has been - * subscribed, message language is "Other" or the user has - * preferred to receive messages of all languages. - * - * @param aMessage Message page - * @return ETrue, if message can be received - */ - TBool LanguageOfMessageSubscribedL( const CCbsMessage& aMessage ); - - /** - * Stores the CB topic (aNumber, aName) retrieved from - * SIM into the DB. If a topic of the same number already exists - * in DB, does nothing. - * - * @param aNumber Number of the topic. - * @param aName Name of the topic. - */ - void AddSimTopicL( const TUint aNumber, const TDesC& aName ); - - /** - * Returns a reference to the CCbsDbImp instance. - * - * @return Main database object. - */ - CCbsDbImp& Database() const; - - /** - * Returns a reference to SIM Topic array - * - * @return SIM Topic array. - */ - CArrayFixFlat& SimTopics() const; - - /** - * Deletes a topic from the local SIM Topic array. - * - * @param aNumber Number of the topic. - */ - void DeleteFromSimTopicCache( const TUint16 aNumber ); - - /** - * Requests a notification to be launched when a message - * arrives to a hotmarked topic. - * - * @param aPlayTone Should the message alert tone be - * played. - */ - void LaunchMessageSoftNotificationL( const TBool aPlayTone ); - - private: - - /** - * The constructor. - * - * @param aDatabase Database object. - * @param aServer Server object. - */ - CCbsReceiverHelper( CCbsDbImp& aDatabase ); - - /** - Finalizes the construction. - */ - void ConstructL(); - - /** - * Handles detected topic. - * - * @param iTopicNumber The number of the topic detected. - * @return ETrue if the detected topic is added - * to the topic list. EFalse otherwise. - */ - TBool HandleTopicDetectedL( const TCbsDbTopicNumber& iTopicNumber ); - - /** - * Handles index message. Parses topic identities and - * stores them into the database. - * - * Leave reasons: - * KErrNoMemory OOM occured. - * KErrNotSupported Index message was of unsupported - * version. - * KErrCorrupt Parsing of the index message failed. - * - * @param aContents Index message body. - * @param aIsChildSubIndex ETrue, if child subindex. - * EFalse, if root index. - * @return Result code. - */ - void HandleIndexMessageL( const TDesC& aContents, - const TBool aIsChildSubIndex ); - - /** - * Parses all topic identities from aText which is assumed to be - * an index message's content. - * - * Leave code values: - * KErrNoMemory Storing of topic identities failed - * because of insufficient memory. - * KErrNotSupported Index message identifies itself as - * an index of unknown type to the server. - * KErrCorrupt A problem was encountered while parsing - * the index message content. - * KErrAlreadyExists Index message contained two or more - * identities which shared the same topic - * number. - * - * @param aText Index message body - */ - void ParseTopicIdentitiesL( const TDesC& aText ); - - /** - * Requests a notification to be launched about a message that - * requires immediate displaying. - * - * @param aMessage Message to be displayed - */ - void LaunchMessageImmediateDisplay( const TCbsDbMessage& aMessage ); - - /** - * Turn lights on - */ - void TurnLightsOn(); - - /** - * Play Cbs tone. - */ - void PlayCbsTone(); - - private: // Member variables - - // Reference to the database - CCbsDbImp& iDatabase; - - // Number of topics detected after startup. - TUint iTopicsDetected; - - CArrayFixFlat* iSimTopics; - - // View server session wrapper. - // Used to launch CBS UI application on arrival of - // CB messages designated "requiring immediate display". - CVwsSessionWrapper* iVwsSession; - - // Local variation bits, fetched from CenRep - TInt iLVBits; - }; - -#endif // CCBSRECEIVERHELPER_H - -// End of File - -