diff -r 000000000000 -r 96612d01cf9f videofeeds/livetvutils/inc/CIptvSettingsDatabase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/livetvutils/inc/CIptvSettingsDatabase.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,189 @@ +/* +* 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: header file for CIptvSettingsDatabase class* +*/ + + + + +#ifndef __CIPTVSETTINGSDATABASE_H__ +#define __CIPTVSETTINGSDATABASE_H__ + +// INCLUDES +#include +#include +#include + +// CONSTANTS +// Settings table +_LIT( KIptvSettingsTable, "Settings" ); +_LIT( KIptvSettingsDbKeyCol, "Key" ); +_LIT( KIptvParentalControlCol, "ParentalControl" ); +_LIT( KIptvRecordingTimeCol, "RecordingTime" ); +_LIT( KIptvReminderTimeCol, "ReminderTime" ); +_LIT( KIptvLastUsedServiceCol, "LastService" ); +_LIT( KIptvLastUsedChannelCol, "LastChannel" ); +_LIT( KIptvIsLastUsedCol, "IsLast" ); +_LIT( KIptvQuerySettingsSql, "SELECT ParentalControl, RecordingTime, ReminderTime, LastService, LastChannel, IsLast FROM Settings" ); + +// Default setting values +const TInt KIptvDefaultParentalControl = 0; +const TInt KIptvDefaultRecordingTimeReserve = 0; +const TInt KIptvDefaultReminderTime = 0; +const TUint32 KIptvDefaultLastUsedServiceId = 0; +const TInt64 KIptvDefaultLastUsedChannelId = 0; +const TInt KIptvDefaultIsLastUsed = 0; + +// FORWARD DECLARATIONS +// CLASS DECLARATIONS +/** +* Live TV specific settings class. +*/ +class TIptvLiveUISettings + { + public: + + TInt iParentalControl; // 0 = Off, or "%N Years" + TInt iRecordingTimeReserve; // 0 = Off, or "%N min" + TInt iReminderTime; // 0 = Off, or "%N min" + TUint32 iLastUsedServiceId; // 0 = Not used + TInt64 iLastUsedChannelId; // 0 = Not used + TInt iIsLastUsed; // 0 = No (default), 1 = Yes + }; + +/** + * Class: CIptvSettingsDatabase + * + * Description: An instance of class CIptvSettingsDatabase provides settings + * database access: creating & manipulating settings database + * files and database entries. + * + */ +class CIptvSettingsDatabase : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aDbFile Database file name. + */ + IMPORT_C static CIptvSettingsDatabase* NewL( const TFileName& aDbFile ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CIptvSettingsDatabase(); + + + public: // Public API for database operations + + /** + * Save settings to the database. + * @param aSettings Settings object. + */ + IMPORT_C void SaveSettingsL( const TIptvLiveUISettings& aSettings ); + + /** + * Read settings from database. + * @param aSettings On return, contains current settings. + */ + IMPORT_C void ReadSettingsL( TIptvLiveUISettings& aSettings ); + + /** + * Save last used service and channel ids to database. + * @param aSettings Settings object. + */ + IMPORT_C void SaveLastUsageL( const TIptvLiveUISettings& aSettings ); + + /** + * Read last used service and channel ids from database. + * @param aServiceId current service id + * @param aSettings On return, contains current settings. + */ + IMPORT_C void ReadLastUsageByServiceL( const TUint32 aServiceId, + TIptvLiveUISettings& aSettings ); + + /** + * Reads the actual last watched channel and service from the database. + * @param aSettings On return, contains current settings (=last usage) + */ + IMPORT_C void ReadLastUsageL( TIptvLiveUISettings& aSettings ); + + private: // Constructors + + /** + * Constructor + * @param aDbFile Filename of the database to be used + */ + CIptvSettingsDatabase( const TFileName& aDbFile ); + + /** + * Symbian second phase constructor. All code that might leave + * during construction is placed in here. + * @param None + * @return None + */ + void ConstructL(); + + private: // Methods + + /** + * Create table for Settings and last used service and channel. + * @param aDatabase Database. + */ + void CreateTableL( RDbNamedDatabase& aDatabase ) const; + + /** + * + * Create new database if DB file is not found. + */ + void CreateDbL(); + + /** + * Creates session to iptv database + */ + void CreateDbSessionL(); + + /** + * Put in default settings. + * @param aDatabase Database. + */ + void SetDefaultValuesL( RDbNamedDatabase& aDatabase ) const; + + /** + * Initialise database + */ + void InitDbL(); + + + private: // Data + + /** File server session is connected in construction and closed in + destruction */ + RFs iFsSession; + + /** File name of the database which to handle */ + TFileName iDbFile; + + /** DB session */ + RDbs iDbSession; + + /** database */ + RDbNamedDatabase iDb; + + }; + +#endif // __CIPTVSETTINGSDATABASE_H__ + +// End of File