diff -r 724d4ec22f0d -r aaeeca1f15af scrsaver/scrsaverplugins/BmpAnimScrPlugin/src/CBmpAnimSettings.cpp --- a/scrsaver/scrsaverplugins/BmpAnimScrPlugin/src/CBmpAnimSettings.cpp Thu Aug 19 09:55:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +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: Loads and stores the bitmap animator settings -* -*/ - - - - - -#include - -#include "CBmpAnimSettings.h" - -#include "BmpAnimUtils.h" -#include - -// Defaults -const TInt KRunningTime = 1000000 * 60; // 60 secs -const TInt KTiming = 200000; // 5 fps -const TInt KSuspendTime = -1; // Max = KMaxTInt, -1 = indefinitely -const TInt KUndefined = -1; - -// Configuration file name -_LIT(KIniFile, "BmpAnimScrPlugin.ini"); - -// Default bitmap file name -_LIT(KMbmFileName, "BmpAnimScrPlugin.mbm"); - -// Default bitmap file name - lansdscape -_LIT(KMbmFileNameL, "BmpAnimScrPluginL.mbm"); - -// Basic info section name -_LIT8(KIniSectionInfo, "info"); - -// Info section keys -_LIT8(KIniKeyName, "name"); // plugin name -_LIT8(KIniKeyNumImages, "numimages"); // number of images -_LIT8(KIniKeyMbmFile, "mbmfile"); // name of imagefile -_LIT8(KIniKeyMbmFileL, "mbmfilelandscape"); // name of landscape imagefile -_LIT8(KIniKeyRunningTime, "runningtime"); // time to run animation (in millis) -_LIT8(KIniKeyLoopCount, "loopcount"); // loop count (if time is not defined) -_LIT8(KIniKeySuspendTime, "suspendtime"); // time to suspend (in millis) -_LIT8(KIniKeyTiming, "timing"); // time to display each image (RE-USED BELOW) -_LIT8(KIniKeyLights, "lights"); // lights on for 5 secs. Over 5 = number of secs -_LIT8(KIniKeyUseLandscape, "uselandscape"); // 1 = landscape image file used -_LIT8(KIniKeyScaleBmps, "scalebmps"); // 1 = bitmaps scaled to screen size - -// Image section base name -_LIT8(KIniSectionImageBase, "image"); // image information section name - -// Image section keys -_LIT8(KIniKeyType, "type"); // 0 = background, 1 = bitmap, 2 = icon -_LIT8(KIniKeyIndex, "index"); // index of image in mbm -_LIT8(KIniKeyMaskIndex, "maskindex"); // index of icon mask in mbm -_LIT8(KIniKeyFile, "file"); // name of image file (not yet supported) -_LIT8(KIniKeyPosX, "posx"); // display position X -_LIT8(KIniKeyPosY, "posy"); // display position Y -// _LIT8(KIniKeyTiming, "timing"); // time to display this image (NOTE RE-USE!) - - -// User constructor -CBmpAnimSettings* CBmpAnimSettings::NewL() - { - CBmpAnimSettings* self = new(ELeave) CBmpAnimSettings(); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - - -// C'tor, sets defaults -CBmpAnimSettings::CBmpAnimSettings() - : iRunningTime(KRunningTime), - iLoopCount(KUndefined), - iSuspendTime(KSuspendTime), - iTiming(KTiming), - iPluginName(KPluginName), - iMbmFileName(KMbmFileName), - iMbmFileNameL(KMbmFileNameL), - iLights(KUndefined), - iUseLandscape(0), - iScaleBmps(0) - { - } - - -// Two-phase constructor -void CBmpAnimSettings::ConstructL() - { - // Try to open the settings file - if (OpenSettings() == KErrNone) - { - LoadSettingsL(); - } - } - - -// D'tor -CBmpAnimSettings::~CBmpAnimSettings() - { - delete iIniData; - } - - -// --- Access functions --- - - -// Loads (common) settings from the settings file -TBool CBmpAnimSettings::LoadSettingsL() - { - // Sanity check - if (!iIniData) - { - return EFalse; - } - - // Running time (never mind the section) - if (!(iIniData->FindVar(KIniKeyRunningTime, iRunningTime))) - { - // Running time not found - try loop count - if (!(iIniData->FindVar(KIniKeyLoopCount, iLoopCount))) - { - // That's not there either - use default running time - iRunningTime = KRunningTime; - } - else - { - // Loop count found - running time is undefined - iRunningTime = KUndefined; - } - } - - // Suspend time - if (!(iIniData->FindVar(KIniKeySuspendTime, iSuspendTime))) - { - iSuspendTime = KSuspendTime; // TODO: KUndefined - } - - // Default timing (need to use section as well) - if (!(iIniData->FindVar( - KIniSectionInfo, - KIniKeyTiming, - iTiming))) - { - iTiming = KTiming; - } - - // Lights time - if (!(iIniData->FindVar(KIniKeyLights, iLights))) - { - iLights = KUndefined; - } - - // Use landscape - if (!(iIniData->FindVar(KIniKeyUseLandscape, iUseLandscape))) - { - iUseLandscape = 0; - } - - // Scale bmps - if (!(iIniData->FindVar(KIniKeyScaleBmps, iScaleBmps))) - { - iScaleBmps = 0; - } - - // Plugin name - iPluginName = KNullDesC; - if ((!(iIniData->FindVar(KIniKeyName, iPluginName))) || - (iPluginName.Length() <= 0)) - { - // Not found, or empty setting - use default - iPluginName = KPluginName; - } - - // Load BMP file names - LoadBitmapFileName(); - LoadBitmapFileName(ETrue); - - BMALOGGER_WRITEF(_L("BMA: Detected settings:")); - BMALOGGER_WRITEF(_L(" Name: %S"), &iPluginName); - BMALOGGER_WRITEF(_L(" Run for: %d"), RunningTime()); - BMALOGGER_WRITEF(_L(" Loops: %d"), LoopCount()); - BMALOGGER_WRITEF(_L(" Suspend: %d"), SuspendTime()); - BMALOGGER_WRITEF(_L(" Timing: %d"), Timing()); - BMALOGGER_WRITEF(_L(" Lights: %d"), Lights()); - BMALOGGER_WRITEF(_L(" Bitmap file: %S"), &iMbmFileName); - BMALOGGER_WRITEF(_L(" Lanscape bitmap file: %S"), &iMbmFileNameL); - BMALOGGER_WRITEF(_L(" Use landscape: %d"), UseLandscape()); - BMALOGGER_WRITEF(_L(" Scale bmps: %d"), ScaleBmps()); - BMALOGGER_WRITEF(_L("BMA: End settings")); - - return ETrue; - } - - -// Saves (common) settings -TBool CBmpAnimSettings::SaveSettingsL() - { - // Sanity check - if (!iIniData) - { - return EFalse; - } - - // Write lights - if (iIniData->WriteVarL( - KIniSectionInfo, KIniKeyLights, iLights) == KErrNone) - { - iIniData->CommitL(); - } - - return ETrue; - } - -// --- private --- - - -// Opens the settings file (initialises the settings reader) -TInt CBmpAnimSettings::OpenSettings() - { - // Locate the dll path - TFileName dllName; -// Dll::FileName(dllName); - dllName.Append(_L("\\resource\\plugins\\")); - - // Combine the dll path with the settings file name - TParse p; - p.SetNoWild(KIniFile, &dllName, NULL); - - BMALOGGER_WRITEF(_L("Searching INI: %S"), &(p.FullName())); - - // Try to open the INI file from plugin directory - TRAPD(err, iIniData = CBmpAnimIniData::NewL(p.FullName())); - - if (err != KErrNone) - { - BMALOGGER_WRITE("INI not in plugin dir, trying \\system\\data"); - // Try \system\data instead - TRAP(err, iIniData = CBmpAnimIniData::NewL(KIniFile)); - } - - if (err != KErrNone) - { - // Make sure the settings are not attempted to be used - delete iIniData; - iIniData = NULL; - BMALOGGER_WRITE("INI not found"); - } - else - { - BMALOGGER_WRITE("INI found"); - } - - return err; - } - - -// Gets the bitmap file name from settings, or uses default -void CBmpAnimSettings::LoadBitmapFileName(TBool aLandscape) - { - // Get the DLL path name. The path is used, if only a file name - // is specified. - TFileName dllName; - Dll::FileName(dllName); - - // Get whatever's in the settings - TFileName fileName; - TBool res = ETrue; - if (aLandscape) - { - res = iIniData->FindVar(KIniKeyMbmFileL, fileName); - } - else - { - res = iIniData->FindVar(KIniKeyMbmFile, fileName); - } - - if (!res) - { - // Not found - use the default name with the plugin directory - // there's really no need to do anything here (I think) - fileName = (_L("\\resource\\plugins\\")); - } - - // The combination order should be: - // 1. use whatever was defined in the settings (part or full path) - // 2. use the default name part - // 3. use the DLL path, if no path parts have yet been defined - TParse p; - if (p.SetNoWild(fileName, - aLandscape ? &KMbmFileNameL : &KMbmFileName, - &dllName) == KErrNone) - { - if (aLandscape) - { - iMbmFileNameL = p.FullName(); - } - else - { - iMbmFileName = p.FullName(); - } - } - } - -// End of File