psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp
changeset 37 89c890c70182
parent 34 6b5204869ed5
child 45 667edd0b8678
--- a/psln/pslnslidesetdialog/src/pslnslidesetmodel.cpp	Fri Jun 25 18:53:58 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,531 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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:  Model class for slide set dialog.
-*
-*/
-
-
-// Central repository.
-#include <centralrepository.h>
-#include <pslninternalcrkeys.h>
-#include "PslnVariationPrivateCRKeys.h"
-#include "PslnVariant.hrh"
-#include <AknSkinsInternalCRKeys.h>
-
-// Notes & Dialogs
-#include <AknGlobalNote.h>
-#include <aknnotewrappers.h>
-
-// Skin server.
-#include <AknsWallpaperUtils.h>
-#include <AknsSrvClient.h>
-
-// Generic.
-#include <bautils.h>
-
-// Psln Slide set specific.
-#include <pslnslidesetdialoginterface.h>
-#include "pslnslidesetmodel.h"
-#include "pslnslidesetconst.hrh"
-#include "pslnslidesetconst.h"
-#include <pslnslidesetdialogrsc.rsg>
-
-// Slide set duration default value: 5 seconds.
-const TInt KPslnSlideSetDefaultDuration = 5;
-// Slide set backlight default value: off.
-const TInt KPslnSlideSetBacklightOff = 0;
-// Slide set interval default value: 10min.
-const TInt KPslnSlideSetDefaultInterval = EPslnSlideSetInterval10Min;
-// Slide set minimum duration is 1 second.
-const TInt KPslnSlideSetMinDuration = 1;
-// Slide set maximum duration is 60 seconds.
-const TInt KPslnSlideSetMaxDuration = 60;
-// Slide set maximum backlight period is 30secs.
-const TInt KPslnSlideSetMaxBacklight = 30;
-// Slide set minimum interval period is 1 min.
-const TInt KPslnSlideSetMinInterval = EPslnSlideSetInterval1Min;
-// Slide set maximum interval period is 1 day.
-const TInt KPslnSlideSetMaxInterval = EPslnSlideSetInterval1Day;
-
-
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CPslnSlideSetModel::CPslnSlideSetModel() : iImageListChanged ( EFalse )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CPslnSlideSetModel::ConstructL()
-    {
-    iRepository = CRepository::NewL( KCRUidThemes );
-    iCoeEnv = CCoeEnv::Static();
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CPslnSlideSetModel* CPslnSlideSetModel::NewL()
-    {
-    CPslnSlideSetModel* self = CPslnSlideSetModel::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Two-phased constructor. Same as above, but leaves object to the 
-// cleanup stack.
-// ---------------------------------------------------------------------------
-//
-CPslnSlideSetModel* CPslnSlideSetModel::NewLC()
-    {
-    CPslnSlideSetModel* self = new( ELeave ) CPslnSlideSetModel;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CPslnSlideSetModel::~CPslnSlideSetModel()
-    {
-    delete iRepository;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns current selection for slide set type: random / image set.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::GetSlideSetType( const TInt aSlideSetType ) const
-    {
-    TInt imageSelection = KErrNotFound;
-
-    TInt error = KErrNone;
-    if ( aSlideSetType == EPslnScreensaverDialog )
-        {
-        error = iRepository->Get( 
-            KThemesScreenSaverSlideSetType, 
-            imageSelection );
-        }
-    else
-        {
-        error = iRepository->Get( 
-            KThemesWallpaperSlideSetType, 
-            imageSelection );
-        }
-    // In case of error, or invalid value, just return default value.
-    if ( error != KErrNone ||
-         ( imageSelection != KPslnSlideSetRandomIndex && 
-           imageSelection != KPslnSlideSetImageSelImageSet ) )
-        {
-        if ( aSlideSetType == EPslnScreensaverDialog )
-            {
-            return KPslnSlideSetRandomIndex;
-            }
-        else
-            {
-            return KPslnSlideSetImageSelImageSet;
-            }
-        }
-    return imageSelection;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets slide set type (random/image set).
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::SetSlideSetType( 
-        const TInt aSlideSetType, const TInt aValue )
-    {
-    TInt error = KErrNone;
-
-    TInt prevValue = KErrNone; 
-    if ( aSlideSetType == EPslnScreensaverDialog )
-        {
-        error = iRepository->Get( KThemesScreenSaverSlideSetType, prevValue );
-        }
-    else
-        {
-        error = iRepository->Get( KThemesWallpaperSlideSetType, prevValue );            
-        }
-    
-    // Validate that value is valid and changed.
-    if ( ( aValue == KPslnSlideSetImageSelImageSet || 
-           aValue == KPslnSlideSetRandomIndex ) &&
-         ( prevValue != aValue ) )
-        {
-        // Store selection.
-        if ( aSlideSetType == EPslnScreensaverDialog )
-            {
-            error = iRepository->Set( KThemesScreenSaverSlideSetType, aValue );
-            }
-        else
-            {
-            error = iRepository->Set( KThemesWallpaperSlideSetType, aValue );
-            }
-        }
-    else
-        {
-        error = KErrArgument;
-        }
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns current selection for screensaver slide set duration.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::GetSlideSetDuration() const
-    {
-    TInt slideSetDuration = KPslnSlideSetDefaultDuration;
-    TInt error = KErrNone;
-    error = iRepository->Get( 
-        KThemesScreenSaverSlideSetDuration, 
-        slideSetDuration );
-    if ( error != KErrNone )
-        {
-        // return default value in case of error.
-        return KPslnSlideSetDefaultDuration;
-        }
-    return slideSetDuration;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets screensaver slide set duration.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::SetSlideSetDuration( const TInt aValue )
-    {
-    TInt error = KErrNone;
-    TInt prevValue = KErrNone; 
-    error = iRepository->Get( KThemesScreenSaverSlideSetDuration, prevValue );
-
-    // Validate value and check that new value is different from previous
-    // value.
-    if ( ( aValue >= KPslnSlideSetMinDuration && 
-           aValue <= KPslnSlideSetMaxDuration ) &&
-         ( prevValue != aValue ) )
-        {
-        error = iRepository->Set( 
-            KThemesScreenSaverSlideSetDuration, 
-            aValue );
-        }
-    else
-        {
-        error = KErrArgument;
-        }
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns current selection for screensaver slide set backlight period.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::GetSlideSetBacklight() const
-    {
-    TInt slideSetBacklight = KPslnSlideSetBacklightOff;
-    TInt error = KErrNone;
-    error = iRepository->Get( 
-        KThemesScreenSaverSlideSetBacklight, 
-        slideSetBacklight );
-    if ( error != KErrNone )
-        {
-        // return default value in case of error.
-        return KPslnSlideSetBacklightOff;
-        }
-    return slideSetBacklight;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets screensaver slide set backlight period.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::SetSlideSetBacklight( const TInt aValue )
-    {
-    TInt error = KErrNone;
-    TInt prevValue = KErrNone; 
-    error = iRepository->Get( KThemesScreenSaverSlideSetBacklight, prevValue );
-
-    if ( ( aValue >= KPslnSlideSetBacklightOff ||
-           aValue <= KPslnSlideSetMaxBacklight ) &&
-         ( prevValue != aValue ) )
-        {
-        error = iRepository->Set( 
-            KThemesScreenSaverSlideSetBacklight, 
-            aValue );
-        }
-    else
-        {
-        error = KErrArgument;
-        }
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns current selection for wallpaper slide set image change interval.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::GetSlideSetInterval() const
-    {
-    TInt slideSetInterval = KPslnSlideSetDefaultInterval;
-    TInt error = KErrNone;
-    error = iRepository->Get( 
-        KThemesWallpaperSlideSetInterval, 
-        slideSetInterval );
-    if ( error != KErrNone )
-        {
-        // return default value in case of error.
-        return KPslnSlideSetDefaultInterval;
-        }
-    return slideSetInterval;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets wallpaper slide set image change period.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::SetSlideSetInterval( const TInt aValue )
-    {
-    TInt error = KErrNone;
-    TInt prevValue = KErrNone; 
-    error = iRepository->Get( KThemesWallpaperSlideSetInterval, prevValue );
-
-    if ( ( aValue >= KPslnSlideSetMinInterval ||
-           aValue <= KPslnSlideSetMaxInterval ) && 
-         ( prevValue != aValue ) )
-        {
-        error = iRepository->Set( KThemesWallpaperSlideSetInterval, aValue );
-        }
-    else
-        {
-        error = KErrArgument;
-        }
-    return error;
-    }
-
-// ---------------------------------------------------------------------------
-// Stores list of image filenames to be used as slide set image set.
-// ---------------------------------------------------------------------------
-//
-void CPslnSlideSetModel::SetImageListL( const TInt aSlideSetType, 
-    CDesCArray& aSelectedFiles, const TInt aLaunchMode )
-    {
-    if ( aSlideSetType == EPslnWallpaperDialog )
-        {
-        if ( aLaunchMode == CPslnSlidesetDialogInterface::EPslnNormal )
-            {
-            TInt retVal = 
-                AknsWallpaperUtils::SetSlidesetWallpaper( aSelectedFiles, NULL );
-            if ( retVal != KErrNone )
-                {
-                // Show information note about image
-                HBufC* prompt = iCoeEnv->AllocReadResourceLC( 
-                        R_PSLN_SLIDE_SET_IMAGE_CORRUPTED );
-                CAknInformationNote* note = 
-                    new (ELeave) CAknInformationNote( ETrue );
-                note->ExecuteLD( *prompt );
-                CleanupStack::PopAndDestroy( prompt );
-                }
-            }
-        // Write file names to file, if configuring only.
-        else
-            {
-            TInt fileType = EAknsSrvInifileSSWP;
-            StoreImageListToFileL( fileType, aSelectedFiles );
-            }
-        }
-    else
-        {
-        TInt fileType = EAknsSrvInifileSSSS;
-        StoreImageListToFileL( fileType, aSelectedFiles );
-        }
-    iImageListChanged = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// Check if the image file exists.
-// ---------------------------------------------------------------------------
-//
-TBool CPslnSlideSetModel::SlideSetImageFileExistsL( 
-    const TInt aSlideSetType ) const
-    {    
-    // Get file from server.
-    RFile imgFile;
-    OpenImageFileL( imgFile, aSlideSetType );
-    CleanupClosePushL( imgFile );
-
-    // Check if the file exists.
-    TInt fileSize = 0;
-    TBool retValue = EFalse;
-    User::LeaveIfError( imgFile.Size( fileSize ) );
-
-    // If file has size, then it exists.
-    if ( fileSize > 0 )
-        {
-        retValue = ETrue;
-        }
-
-    CleanupStack::PopAndDestroy(); // imgFile
-    return retValue;
-    }
-
-// ---------------------------------------------------------------------------
-// Indicates whether or not setting values have been updated.
-// ---------------------------------------------------------------------------
-//
-TBool CPslnSlideSetModel::HasDialogUpdatedValues() const
-    {
-    return iImageListChanged;
-    }
-
-// ---------------------------------------------------------------------------
-// Counts how many images have been selected.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnSlideSetModel::GetImageCountInSlideSetL( 
-    const TInt aSlideSetType ) const
-    {
-    // Get file from server.
-    RFile imgFile;
-    OpenImageFileL( imgFile, aSlideSetType );
-    CleanupClosePushL( imgFile );
-
-    TInt fileSize = 0;
-    TInt imageCount = 0;
-    User::LeaveIfError( imgFile.Size( fileSize ) );
-    
-    // If file size is zero => no images.
-    if ( fileSize > 0 )
-        {
-        TFileText textFile;
-        textFile.Set( imgFile );
-        textFile.Seek( ESeekStart );
-        
-        RFs& fs = CCoeEnv::Static()->FsSession();
-        // Count images from file.
-        FOREVER
-            {
-            TFileName filename;
-            if( textFile.Read( filename ) != KErrNone )
-                {                
-                break;
-                }
-            if ( BaflUtils::FileExists(fs, filename) )
-            	{
-            	imageCount++;
-            	}
-            }
-        }
-    CleanupStack::PopAndDestroy(); // imgFile
-    return imageCount;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets feature support - see pslnslidesetconst.h for feature list.
-// ---------------------------------------------------------------------------
-//
-void CPslnSlideSetModel::GetFeatureSupportL( TBitFlags& aFeatureBitFlags ) const
-    {
-    CRepository* featureRep = CRepository::NewLC( KCRUidThemesVariation );
-    TInt value = KErrNone;
-    featureRep->Get( KThemesLocalVariation, value );
-
-    aFeatureBitFlags.ClearAll();
-
-    //map value to feature flags
-    if ( value & KPslnRandomSlideSets )
-        {
-        aFeatureBitFlags.Set( EPslnSlideSetFeatureRandom );
-        }
-    if ( value & KPslnRemoveSlideSetTimeout )
-        {
-        aFeatureBitFlags.Set( EPslnSlideSetBacklightRemoved );
-        }
-
-    CleanupStack::PopAndDestroy( featureRep );
-    }
-
-// ---------------------------------------------------------------------------
-// Stores slide set image file names to file.
-// ---------------------------------------------------------------------------
-//
-void CPslnSlideSetModel::StoreImageListToFileL( 
-    const TInt aSlideSetType, CDesCArray& aSelectedFiles  ) const
-    {
-    // Get file from server.
-    RFile imgFile;
-    OpenImageFileL( imgFile, aSlideSetType );
-    CleanupClosePushL( imgFile );
-    User::LeaveIfError( imgFile.SetSize( 0 ) ); // possibly wipe existing file 
-
-    // Finally, write image filenames to the file.
-    TFileText textFile;
-    textFile.Set( imgFile );
-    textFile.Seek( ESeekStart );
-
-    for ( TInt imgCount = 0; imgCount < aSelectedFiles.Count(); imgCount++ )
-        {
-        User::LeaveIfError( 
-            textFile.Write( aSelectedFiles.MdcaPoint( imgCount ) ) );
-        }
-    imgFile.Flush();
-
-    CleanupStack::PopAndDestroy(); // imgFile
-    }
-
-// ---------------------------------------------------------------------------
-// Open image list file for operations.
-// ---------------------------------------------------------------------------
-//
-void CPslnSlideSetModel::OpenImageFileL( RFile& aImageFile, const TInt aSlideSetType ) const
-    {
-    // First, connect to skin server.
-    RAknsSrvSession skinsrv;
-    User::LeaveIfError( skinsrv.Connect() );
-    CleanupClosePushL( skinsrv );
-
-    // Then get file handle.
-    TInt fileserverhandle = 0;
-    TInt filehandle = 0;
-    // Validate type and open image file.
-    if ( aSlideSetType == EAknsSrvInifileSSWP )
-        {
-        fileserverhandle = 
-            skinsrv.OpenImageInifile( EAknsSrvInifileSSWP, filehandle );
-        }
-    else
-        {
-        fileserverhandle = 
-            skinsrv.OpenImageInifile( EAknsSrvInifileSSSS, filehandle );
-
-        }
-    if ( fileserverhandle <= 0 || filehandle == 0 )
-        {
-        User::Leave( fileserverhandle );
-        }
-
-    // Finally adopt file from server.
-    User::LeaveIfError( aImageFile.AdoptFromServer( fileserverhandle, filehandle ) );
-    CleanupStack::PopAndDestroy(); // skinsrv
-    }
-
-// End of file