upnpsharing/upnpcontentserver/src/upnpselectionwriter.cpp
branchnew development branch with rendering state machine and other goodies
changeset 38 5360b7ddc251
parent 0 7f85d04be362
--- a/upnpsharing/upnpcontentserver/src/upnpselectionwriter.cpp	Fri Sep 17 08:31:21 2010 +0300
+++ b/upnpsharing/upnpcontentserver/src/upnpselectionwriter.cpp	Mon Nov 01 12:37:49 2010 +0200
@@ -1,254 +1,235 @@
-/*
-* Copyright (c) 2005-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:      CUpnpSelectionWriter class implementation
- *
-*/
-
-
-
-
-
-
-// INCLUDE FILES
-
-#include <upnpstring.h>
-#include <centralrepository.h>
-#include <s32file.h>
-
-#include "upnpselectionwriter.h"
-#include "upnpcontentservercrkeys.h"
-#include "upnpcontentserverdefs.h"
-
-_LIT( KComponentLogfile, "contentserver.txt");
-#include "upnplog.h"
-
-using namespace UpnpContentServer;
-
-// ================= MEMBER FUNCTIONS =======================
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::NewL
-// Two-phased constructor.
-// --------------------------------------------------------------------------
-//
-CUpnpSelectionWriter* CUpnpSelectionWriter::NewL(
-    TUpnpMediaType aMediaType )
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-
-    CUpnpSelectionWriter* self =
-        new(ELeave) CUpnpSelectionWriter();
-
-    CleanupStack::PushL(self);
-    self->ConstructL( aMediaType );
-    CleanupStack::Pop(self);
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    return self;
-    }
-
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::ConstructL
-// Symbian 2nd phase constructor can leave.
-// --------------------------------------------------------------------------
-//
-void CUpnpSelectionWriter::ConstructL(
-    TUpnpMediaType aMediaType )
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-    iMediaType = aMediaType;
-
-    iFileArray = new (ELeave) CDesCArrayFlat(4);
-    iOkItems.Reset();
-
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    }
-
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::CUpnpSelectionWriter
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// --------------------------------------------------------------------------
-//
-CUpnpSelectionWriter::CUpnpSelectionWriter()
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::CUpnpSelectionWriter
-// C++ default destructor.
-// --------------------------------------------------------------------------
-//
-CUpnpSelectionWriter::~CUpnpSelectionWriter()
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-
-    delete iFileArray;
-    iOkItems.Reset();
-    delete iRepository;
-
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::AppendItemL
-// ( other items were commented in header )
-// --------------------------------------------------------------------------
-//
-void CUpnpSelectionWriter::AppendItemL( const TPtrC aNewObject)
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-    iFileArray->AppendL( aNewObject  );
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::AppendStatusL
-// ( other items were commented in header )
-// --------------------------------------------------------------------------
-//
-void CUpnpSelectionWriter::AppendStatusL( TInt aIndex )
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-    iOkItems.AppendL( aIndex  );
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpSelectionWriter::SaveSharingState
-// Saves sharing state to central repository
-// --------------------------------------------------------------------------
-//
-TInt CUpnpSelectionWriter::SaveSharingStateL( TInt aShareAllSelection )
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-
-    TInt status = KErrNone;
-    iRepository = CRepository::NewL( KCrUidUpnpContentserver );
-    switch ( iMediaType )
-        {
-    case EImageAndVideo:
-        {
-        if (aShareAllSelection == EShareAll ||
-            aShareAllSelection == EShareNone ||
-            aShareAllSelection == EShareMany )
-            {
-            status = iRepository->Set( KUPnPAppShareAllVisualFiles,
-                                       aShareAllSelection);
-            }
-        break;
-        }
-    case EPlaylist:
-        {
-        if (aShareAllSelection == EShareAll ||
-            aShareAllSelection == EShareNone ||
-            aShareAllSelection == EShareMany )
-            {
-            status = iRepository->Set( KUPnPAppShareAllMusicFiles,
-                                       aShareAllSelection);
-            }
-        break;
-        }
-    default:
-        {
-        __LOG( "SaveSharingStateL - default");
-        break;
-        }
-        }
-
-    delete iRepository;
-    iRepository = NULL;
-
-    // Store the item array
-    if ( aShareAllSelection == EShareMany )
-        {
-        StoreSharedContainerIDsL();
-        }
-
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    return status;
-    }
-
-// --------------------------------------------------------------------------
-// CUPnPFileSharingEngine::StoreSharedContainerIDsL
-// Creates main containers and starts sharing them
-// --------------------------------------------------------------------------
-//
-TInt CUpnpSelectionWriter::StoreSharedContainerIDsL() const
-    {
-    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
-
-    // Leave if aIdArray = NULL
-    if ( !iFileArray )
-        {
-        User::Leave(KErrArgument);
-        }
-
-    RFs fs;
-    RFile file;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-
-    TFileName directory;
-
-    // Get private directory path
-    fs.SessionPath(directory);
-
-    // Try to create directory
-    TInt error = fs.MkDir(directory);
-    // it's ok if directory already exists
-    if (!(error != KErrNone && error != KErrAlreadyExists))
-        {
-
-        // Add file name
-        if ( iMediaType == EImageAndVideo )
-            {
-            directory.Append( KVisualFile );
-            }
-        else if ( iMediaType == EPlaylist )
-            {
-            directory.Append( KMusicFile );
-            }
-
-        error = file.Replace(fs, directory, EFileWrite );
-        if ( !error )
-            {
-            CleanupClosePushL( file );
-            RFileWriteStream writeStream(file);
-            CleanupClosePushL( writeStream );
-
-            for (TInt index = 0; index < iFileArray->Count(); index++)
-                {
-                // check that sharing of the container was succesful
-                if ( iOkItems.Find( index ) != KErrNotFound )
-                    {
-                    // Write identifiers to the file
-                    writeStream << iFileArray->MdcaPoint(index);
-                    }
-                }
-
-            // Clean up
-            CleanupStack::PopAndDestroy(&writeStream); // Close writeStream
-            CleanupStack::PopAndDestroy(&file); // Close file
-            }
-        }
-    CleanupStack::PopAndDestroy(&fs);
-    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
-    return error;
-    }
-
-// End of file
+/*
+* Copyright (c) 2005-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:      CUpnpSelectionWriter class implementation
+ *
+*/
+
+
+
+
+
+
+// INCLUDE FILES
+
+#include <upnpstring.h>
+#include <centralrepository.h>
+#include <s32file.h>
+
+#include "upnpselectionwriter.h"
+#include "upnpcontentservercrkeys.h"
+#include "upnpcontentserverdefs.h"
+
+_LIT( KComponentLogfile, "contentserver.txt");
+#include "upnplog.h"
+
+using namespace UpnpContentServer;
+
+// ================= MEMBER FUNCTIONS =======================
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::NewL
+// Two-phased constructor.
+// --------------------------------------------------------------------------
+//
+CUpnpSelectionWriter* CUpnpSelectionWriter::NewL(
+    TUpnpMediaType aMediaType )
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+
+    CUpnpSelectionWriter* self =
+        new(ELeave) CUpnpSelectionWriter();
+
+    CleanupStack::PushL(self);
+    self->ConstructL( aMediaType );
+    CleanupStack::Pop(self);
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    return self;
+    }
+
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::ConstructL
+// Symbian 2nd phase constructor can leave.
+// --------------------------------------------------------------------------
+//
+void CUpnpSelectionWriter::ConstructL(
+    TUpnpMediaType aMediaType )
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+    iMediaType = aMediaType;
+
+    iFileArray = new (ELeave) CDesCArrayFlat(4);
+
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    }
+
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::CUpnpSelectionWriter
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// --------------------------------------------------------------------------
+//
+CUpnpSelectionWriter::CUpnpSelectionWriter()
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    }
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::CUpnpSelectionWriter
+// C++ default destructor.
+// --------------------------------------------------------------------------
+//
+CUpnpSelectionWriter::~CUpnpSelectionWriter()
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+
+    delete iFileArray;
+    delete iRepository;
+
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    }
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::AppendItemL
+// ( other items were commented in header )
+// --------------------------------------------------------------------------
+//
+void CUpnpSelectionWriter::AppendItemL( const TPtrC aNewObject)
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+    iFileArray->AppendL( aNewObject  );
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    }
+
+// --------------------------------------------------------------------------
+// CUpnpSelectionWriter::SaveSharingState
+// Saves sharing state to central repository
+// --------------------------------------------------------------------------
+//
+TInt CUpnpSelectionWriter::SaveSharingStateL( TInt aShareAllSelection )
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+
+    TInt status = KErrNone;
+    iRepository = CRepository::NewL( KCrUidUpnpContentserver );
+    switch ( iMediaType )
+        {
+    case EImageAndVideo:
+        {
+        if (aShareAllSelection == EShareAll ||
+            aShareAllSelection == EShareNone ||
+            aShareAllSelection == EShareMany )
+            {
+            status = iRepository->Set( KUPnPAppShareAllVisualFiles,
+                                       aShareAllSelection);
+            }
+        break;
+        }
+    case EPlaylist:
+        {
+        if (aShareAllSelection == EShareAll ||
+            aShareAllSelection == EShareNone ||
+            aShareAllSelection == EShareMany )
+            {
+            status = iRepository->Set( KUPnPAppShareAllMusicFiles,
+                                       aShareAllSelection);
+            }
+        break;
+        }
+    default:
+        {
+        __LOG( "SaveSharingStateL - default");
+        break;
+        }
+        }
+
+    delete iRepository;
+    iRepository = NULL;
+
+    // Store the item array
+    if ( aShareAllSelection == EShareMany )
+        {
+        StoreSharedContainerIDsL();
+        }
+
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    return status;
+    }
+
+// --------------------------------------------------------------------------
+// CUPnPFileSharingEngine::StoreSharedContainerIDsL
+// Creates main containers and starts sharing them
+// --------------------------------------------------------------------------
+//
+TInt CUpnpSelectionWriter::StoreSharedContainerIDsL() const
+    {
+    __LOG8_1( "%s begin.", __PRETTY_FUNCTION__ );
+
+    // Leave if aIdArray = NULL
+    if ( !iFileArray )
+        {
+        User::Leave(KErrArgument);
+        }
+
+    RFs fs;
+    RFile file;
+    User::LeaveIfError( fs.Connect() );
+    CleanupClosePushL(fs);
+
+    TFileName directory;
+
+    // Get private directory path
+    fs.SessionPath(directory);
+
+    // Try to create directory
+    TInt error = fs.MkDir(directory);
+    // it's ok if directory already exists
+    if (!(error != KErrNone && error != KErrAlreadyExists))
+        {
+
+        // Add file name
+        if ( iMediaType == EImageAndVideo )
+            {
+            directory.Append( KVisualFile );
+            }
+        else if ( iMediaType == EPlaylist )
+            {
+            directory.Append( KMusicFile );
+            }
+
+        error = file.Replace(fs, directory, EFileWrite );
+        if ( !error )
+            {
+            CleanupClosePushL( file );
+            RFileWriteStream writeStream(file);
+            CleanupClosePushL( writeStream );
+
+            for (TInt index = 0; index < iFileArray->Count(); index++)
+                {
+                writeStream << iFileArray->MdcaPoint(index);
+                }
+
+            // Clean up
+            CleanupStack::PopAndDestroy(&writeStream); // Close writeStream
+            CleanupStack::PopAndDestroy(&file); // Close file
+            }
+        }
+    CleanupStack::PopAndDestroy(&fs);
+    __LOG8_1( "%s end.", __PRETTY_FUNCTION__ );
+    return error;
+    }
+
+// End of file