diff -r 826cea16efd9 -r 13a33d82ad98 videoutils_plat/videoscheduler_api/inc/ipvideo/CCseScheduledProgram.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoutils_plat/videoscheduler_api/inc/ipvideo/CCseScheduledProgram.h Wed Sep 01 12:20:37 2010 +0100 @@ -0,0 +1,286 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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 class contains data for scheduled programs.* +*/ + + +#ifndef __CCSESCHEDULEDPROGRAM_H__ +#define __CCSESCHEDULEDPROGRAM_H__ + +#include +#include +#include + +// CONSTANTS +const TInt KCseNameMaxLength = 255; // Based on SymbianDB column max length + +/** +* Scheduled program data. +*/ +class CCseScheduledProgram : public CBase + { + public: // Constructors and destructors + /** + * Two-phased constructor. + */ + IMPORT_C static CCseScheduledProgram* NewL(); + + /** + * Two-phased copy constructor. + */ + IMPORT_C static CCseScheduledProgram* NewL( CCseScheduledProgram& aProg ); + + /** + * Destructor. + * @return None. + */ + IMPORT_C virtual ~CCseScheduledProgram(); + + + // Enums + // Schedule type + enum TCseScheduleType + { + ECseReminder = 0, + ECseRecording, + ECseProgramGuideUpdate, + ECseScheduleDownload, + ECseOther + }; + + // Plugin type: + enum TCsePluginType + { + // Only one of this kind of plugin can be running at same time + ECseUniPlugin = 1, + // Several of this kind of plugin can be running same time + ECseMultiPlugin + }; + public: // New methods + /** + * Externalizes class content to stream. + * @param aStream Writestream where to write content + * @return None. + */ + IMPORT_C void ExternalizeL( RWriteStream& aStream ); + + /** + * Internalizes class content from stream. + * @param aStream Readstream from where to read content + * @return None. + */ + IMPORT_C void InternalizeL( RReadStream& aStream ); + + /** + * Calculates externalization length. + * @return Length of the stream needed when class is externalized. + */ + IMPORT_C TInt ExternalizeLength(); + + public: // Setters + + /** + * Sets new plugin type for schedule. + * EUniPlugin for plugins that can have only one running at a given time. + * EMultiPlugin for plugins that can have several running at a given time + * @param aPluginType New plugin type + */ + IMPORT_C void SetPluginType( TInt32 aPluginType ); + + /** + * Sets new schedule name. + * @param aName New name of the schedule + */ + IMPORT_C void SetName( const TDesC8& aName ); + + /** + * Sets new schedule start time. + * @param aStartTime New start time of the schedule + */ + IMPORT_C void SetStartTime( const TTime& aStartTime ); + + /** + * Sets new schedule end time. + * @param aEndTime New end time of the schedule + */ + IMPORT_C void SetEndTime( const TTime& aEndTime ); + + /** + * Sets new application uid for schedule. + * @param aAppUid New application uid of the schedule + */ + IMPORT_C void SetAppUid( const TInt32 aAppUid ); + + /** + * Sets new plugin uid for schedule + * @param aPluginUid New plugin uid of the schedule + */ + IMPORT_C void SetPluginUid( const TInt32 aPluginUid ); + + /** + * Sets new application data for schedule + * @param aAppData New application data of the schedule + */ + IMPORT_C void SetApplicationDataL( const TDesC8& aAppData ); + + /** + * Sets new database identifier for the schedule. Note that this should only + * be set by Common Scheduling Engine, not the application using it. + * @param aDbIdentifier New database identifier of the schedule + */ + IMPORT_C void SetDbIdentifier( const TUint32 aDbIdentifier ); + + /** + * Sets new schedule for the schedule. + * @param aScheduleType New schedule type of the schedule + */ + IMPORT_C void SetScheduleType( const TInt32 aScheduleType ); + + // Getters + /** + * Get the type of scheduler plugin + * EUniPlugin for plugins that can have only one running at a given time. + * EMultiPlugin for plugins that can have several running at a given time + * @return Schedule plugin type. + */ + IMPORT_C TInt32 PluginType() const; + + /** + * Get the name of the schedule. + * @return Schedule name. + */ + IMPORT_C TPtrC8 Name() const; + + /** + * Gets the start time of the schedule. + * @return Start time. + */ + IMPORT_C TTime& StartTime(); + + /** + * Gets the end time of the schedule. + * @return End time. + */ + IMPORT_C TTime& EndTime(); + + /** + * Gets the application uid of the schedule + * @return Application uid. + */ + IMPORT_C TInt32 AppUid() const; + + /** + * Gets the plugin uid of the schedule. + * @return Plugin uid. + */ + IMPORT_C TInt32 PluginUid() const; + + /** + * Gets the application data of the schedule. + * @return Application data. + */ + IMPORT_C TPtrC8 ApplicationData(); + + /** + * Gets the database identifier of the schedule. + * @return Database identifier + */ + IMPORT_C TUint32 DbIdentifier() const; + + /** + * Gets the schedule type of the schedule. + * @return Schedule type + */ + IMPORT_C TInt32 ScheduleType() const; + + /** + * Dumps content of schedule to debug trace + * @return None + */ + IMPORT_C void DebugDump() const; + + protected: // Constructors + /** + * Default constructor + */ + EXPORT_C CCseScheduledProgram(); + + /** + * Symbian 2nd phase constructor can leave. + */ + void ConstructL(); + + protected: // Data + /** + * Name + * Name of the scheduled program, e.g. name of the TV program. + */ + TBuf8 iName; + + /** + * Start time + * Start time when the scheduled program is run (passed to plugin which is defined here). + */ + TTime iStartTime; + + /** + * End time + * End time for schedules that take longer time to complete, for example recording of the TV program. + * If schedule is "instant" (e.g. just notification to user) start time and end time should be the same. + */ + TTime iEndTime; + + /** + * Application UID + * This is the application uid of the program that has added this schedule. Can be used to retrieve + * all schedules of certain application. + */ + TInt32 iAppUid; + + /** + * Plugin UID + * UID of the plugin where this scheduled program is passed when the time is right. + */ + TInt32 iPluginUid; + + /** + * Application Data + * Application specific data for the plugin. Common scheduling Engine has no knowledge what + * this data contains. + */ + HBufC8* iAppData; + + /** + * DB identifier + * Used to separate schedules from each other in database. Should be only added by Common + * scheduling engine, not by application using it. + */ + TUint32 iDbIdentifier; + + /** + * Schedule type + * Type of this schedule, e.g. reminder, recording... + */ + TInt32 iScheduleType; + + /** + * Schedule plugin type + * Type of the plugin where this schedule will be run + */ + TInt32 iPluginType; + }; + +#endif //__CCSESCHEDULEDPROGRAM_H__ + +// End of file