diff -r aaeeca1f15af -r e8d784ac1a4b scrsaver/scrsaverplugins/SlideshowPlugin/inc/SlideshowPluginUtils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scrsaver/scrsaverplugins/SlideshowPlugin/inc/SlideshowPluginUtils.h Wed Sep 01 12:30:40 2010 +0100 @@ -0,0 +1,283 @@ +/* +* 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 "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: SlideshowPlugin utilities collection +* +*/ + + + +#ifndef C_SLIDESHOWPLUGINUTILS_H +#define C_SLIDESHOWPLUGINUTILS_H + +// INCLUDES +#include +#include +#include + +#include "SlideshowSlide.h" + +// FORWARD DECLARATIONS +class CDRMHelper; +class CCoeEnv; +class CRepository; + +// CLASS DECLARATION + +/** +* Central Repository Change watcher +* @since 3.2 +* @internal +*/ +class CRepositoryWatcher : public CBase, public MCenRepNotifyHandlerCallback + { +public: + static CRepositoryWatcher* NewL( + const TUid aUid, + const TUint32 aKey, + CCenRepNotifyHandler::TCenRepKeyType aKeyType, + TCallBack aCallBack, + CRepository* aRepository); + + static CRepositoryWatcher* NewL( + const TUid aUid, + TCallBack aCallBack, + CRepository* aRepository); + + ~CRepositoryWatcher(); + + TUint32 ChangedKey(); + +public: // from MCenRepNotifyHandlerCallback + void HandleNotifyInt(TUint32 aKey, TInt aNewValue); + void HandleNotifyString(TUint32 aKey, const TDesC16& aNewValue); + void HandleNotifyGeneric(TUint32 aKey); + void HandleNotifyError( + TUint32 aKey, TInt aError, CCenRepNotifyHandler* aHandler); + +private: + CRepositoryWatcher( + const TUid aUid, + const TUint32 aKey, + TCallBack aCallBack, + CRepository* aRepository); + + void ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType); + + void ConstructL(); + +private: + TUid iUid; + TUint32 iKey; + TUint32 iChangedKey; + TCallBack iCallBack; + CRepository* iRepository; + CCenRepNotifyHandler* iNotifyHandler; +}; + + +/** +* Publish & Subscribe change subscriber +* @since 3.2 +* @internal +*/ +class CPSSubscriber : public CActive + { +public: + CPSSubscriber(TCallBack aCallBack, RProperty& aProperty); + ~CPSSubscriber(); + +public: // New functions + void SubscribeL(); + void StopSubscribe(); + +private: // from CActive + void RunL(); + void DoCancel(); + +private: + TCallBack iCallBack; + RProperty& iProperty; +}; + + +// ========== UTILITIES CLASS ============================= + +class SlideshowUtil + { +public: + // Checks if memory card is present + static TBool IsMCPresent(); + + // Checks if the given file is on memory card + static TBool IsOnMC(TFileName aFile); + + // Checks that the file has enough DRM rights to be displayed + static TBool DRMCheck(CDRMHelper *aDRMHelper, TDesC& aFileName); + + // Checks that the slide has enough DRM rights to be displayed + static TBool DRMCheck(CDRMHelper *aDRMHelper, CSlideshowSlide* aSlide); + + // Consumes the slide's DRM rights + static void DRMConsume(CDRMHelper* aDRMHelper, CSlideshowSlide* aSlide); + +private: + /** + * Static class can not be instantiated. + */ + SlideshowUtil(); + //lint -esym(1526, SlideshowUtil::SlideshowUtil) Intentionally undefined + + /** + * Static class can not be instantiated. + */ + ~SlideshowUtil(); + }; + + +// ========== LOGGING MACROS =============================== + +#ifdef USE_LOGGER + +#include +#include +#include +#include + + +/* logging macros usage: + +// set logging on in mmp file... +MACRO USE_LOGGER +#ifdef WINS +MACRO USE_RDEBUG +#endif + + +void CTestAppUi::ConstructL() +{ +// creates log directory and log file on app startup. +// prints starting banner... +SCRLOGGER_CREATE; + +// entering to function... +SCRLOGGER_ENTERFN("ConstructL()"); + +TInt number = 42; +TFileName file; +file = "something" .... + +// print variable number of parameters... +// Note: use _L macro for format string! +SCRLOGGER_WRITEF(_L("SCR: number = %d, file = %S"), number, &file); + +// print just a string (no _L macro here!) +SCRLOGGER_WRITE("Hello world!"); + +// leave from function... +SCRLOGGER_LEAVEFN("ConstructL()"); +} + +CTestAppUi::~CTestAppUi() +{ +// print app exit banner when application exits. +SCRLOGGER_DELETE; +} + +*/ + +#ifdef USE_RDEBUG + +_LIT(KSSPLogBanner, "SlideshowPlugin log start"); +_LIT(KSSPLogEnterFn, "SSP: enter --> %S"); +_LIT(KSSPLogLeaveFn, "SSP: leave <-- %S"); +_LIT(KSSPLogWrite, "SSP: %S"); +_LIT(KSSPLogTag, "SSP: "); +_LIT(KSSPLogExit, "SlideshowPlugin log end"); +_LIT(KSSPLogTimeFormatString, "%H:%T:%S:%*C2"); + +#define SSPLOGGER_CREATE {RDebug::Print(KSSPLogBanner);} +#define SSPLOGGER_DELETE {RDebug::Print(KSSPLogExit);} +#define SSPLOGGER_ENTERFN(a) {_LIT(temp, a); RDebug::Print(KSSPLogEnterFn, &temp);} +#define SSPLOGGER_LEAVEFN(a) {_LIT(temp, a); RDebug::Print(KSSPLogLeaveFn, &temp);} +#define SSPLOGGER_WRITE(a) {_LIT(temp, a); RDebug::Print(KSSPLogWrite, &temp);} +#define SSPLOGGER_WRITE_TIMESTAMP(a) {_LIT(temp, a); TTime time; time.HomeTime(); TBuf<256> buffer; time.FormatL(buffer, KSSPLogTimeFormatString); buffer.Insert(0, temp); buffer.Insert(0, KSSPLogTag); RDebug::Print(buffer); } +#define SSPLOGGER_WRITEF RDebug::Print + +#else + +_LIT(KSSPLogDir, "SSP"); +_LIT(KSSPLogFile, "SSP.txt"); +_LIT8(KSSPLogBanner, "SlideshowPlugin log start"); +_LIT8(KSSPLogEnterFn, "SSP: -> %S"); +_LIT8(KSSPLogLeaveFn, "SSP: <- %S"); +_LIT8(KSSPLogExit, "SlideshowPlugin log end"); +_LIT(KSSPLogTimeFormatString, "%H:%T:%S:%*C2"); + +#define SSPLOGGER_CREATE {FCreate();} +#define SSPLOGGER_DELETE {RFileLogger::Write(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, KSSPLogExit);} +#define SSPLOGGER_ENTERFN(a) {_LIT8(temp, a); RFileLogger::WriteFormat(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, KSSPLogEnterFn, &temp);} +#define SSPLOGGER_LEAVEFN(a) {_LIT8(temp, a); RFileLogger::WriteFormat(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, KSSPLogLeaveFn, &temp);} +#define SSPLOGGER_WRITE(a) {_LIT(temp, a); RFileLogger::Write(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, temp);} +#define SSPLOGGER_WRITE_TIMESTAMP(a) {_LIT(temp, a); TTime time; time.HomeTime(); TBuf<256> buffer; time.FormatL(buffer, KSSPLogTimeFormatString); buffer.Insert(0, temp); RFileLogger::Write(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, buffer); } +#define SSPLOGGER_WRITEF FPrint + +inline void FPrint(const TRefByValue aFmt, ...) + { + VA_LIST list; + VA_START(list, aFmt); + RFileLogger::WriteFormat(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, aFmt, list); + } + +inline void FPrint(const TDesC& aDes) + { + RFileLogger::WriteFormat(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, aDes); + } + +inline void FHex(const TUint8* aPtr, TInt aLen) + { + RFileLogger::HexDump(KSSPLogDir, KSSPLogFile, EFileLoggingModeAppend, 0, 0, aPtr, aLen); + } + +inline void FHex(const TDesC8& aDes) + { + FHex(aDes.Ptr(), aDes.Length()); + } + +inline void FCreate() + { + TFileName path(_L("c:\\logs\\")); + path.Append(KSSPLogDir); + path.Append(_L("\\")); + RFs& fs = CEikonEnv::Static()->FsSession(); + fs.MkDirAll(path); + RFileLogger::WriteFormat(KSSPLogDir, KSSPLogFile, EFileLoggingModeOverwrite, KSSPLogBanner); + } + +#endif // USE_RDEBUG + +#else // USE_LOGGER + +inline void FPrint(const TRefByValue /*aFmt*/, ...) { }; + +#define SSPLOGGER_CREATE +#define SSPLOGGER_DELETE +#define SSPLOGGER_ENTERFN(a) +#define SSPLOGGER_LEAVEFN(a) +#define SSPLOGGER_WRITE(a) +#define SSPLOGGER_WRITEF 1 ? ((void)0) : FPrint +#define SSPLOGGER_WRITE_TIMESTAMP(a) + +#endif // USE_LOGGER + +#endif // C_SLIDESHOWPLUGINUTILS_H