--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterdbtable.h Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,181 @@
+/*
+* 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: Encapsulates db operations on a table
+*
+*/
+
+
+#ifndef CMPXHARVESTERDBTABLE_H
+#define CMPXHARVESTERDBTABLE_H
+
+#include <e32base.h>
+#include <d32dbms.h>
+
+//#define __PRINTDB__
+
+// Forward Declarations
+//
+class CMPXHarvesterDbItem;
+
+/**
+ * CMPXHarvesterDatabaseTable
+ * Encapsulates operations on the database
+ *
+ * @lib mpxfilehandler.lib
+ * @since S60 v3.0
+ */
+NONSHARABLE_CLASS( CMPXHarvesterDatabaseTable ): public CBase
+ {
+
+public:
+
+ /**
+ * Two-Phased Constructor
+ * @param aDb database to create the table from
+ * @return CMPXHarvesterDatabaseTable instance
+ */
+ static CMPXHarvesterDatabaseTable* NewLC( RDbStoreDatabase& aDB );
+
+ /**
+ * Virtual Destructor
+ */
+ virtual ~CMPXHarvesterDatabaseTable();
+
+public:
+
+ /**
+ * Open a table to list all files
+ */
+ void OpenAllFilesTableL();
+
+ /**
+ * Opens a table to a specific directory
+ * @param aDirectory directory to list the files
+ */
+ void OpenDirectoryL( const TDesC& aDirectory );
+
+ /**
+ * Open a table to a specific song
+ * @param aSongName song to open
+ */
+ void OpenItemL( const TDesC& aSongName );
+
+ /**
+ * Open a table to list of files with DRM flag set.
+ * @param aSongName song to open
+ */
+ void OpenDrmL();
+
+ /**
+ * Add an item
+ * @param aPath path of the file
+ * @param aFileName file to add
+ * @param aLastModTime last modified time
+ * @param aDRM is the file a drm file
+ */
+ void AddItemL( const TDesC& aPath, const TDesC& aFileName,
+ const TTime aLastModTime, const TInt aColId,
+ const TBool aDRM );
+
+ /**
+ * Updates an item
+ * @param aPath, file path
+ * @paran aLastModTime, last modified time
+ * @param aColID, collection id
+ * @param aDrm, is this file drm'd?
+ * @param aNewTransaction create new transaction for operation
+ */
+ void UpdateItemL( const TDesC& aPath, const TTime aLastModTime,
+ const TInt aColID, const TBool aDRM,
+ TBool aNewTransaction = ETrue);
+
+ /**
+ * Updates an item (don't care about drm)
+ * @paran aLastModTime, last modified time
+ * @param aColID, collection id
+ * @param aNewTransaction create new transaction for operation
+ * @param aPath, path of the item
+ */
+ void UpdateItemL( const TTime aLastModTime,
+ const TInt aColID = KNullUid.iUid,
+ TBool aNewTransaction = ETrue,
+ const TDesC& aPath = KNullDesC );
+
+ /**
+ * Delete the current song
+ */
+ void DeleteItemL(TBool aEndTransaction);
+
+ /**
+ * Return the count of the current view
+ */
+ TInt CountL();
+
+ /**
+ * Generates a RPointerArray to represent the table
+ * @return pointer array containing the list of items
+ */
+ RPointerArray<CMPXHarvesterDbItem>* CreateTableRepresentationL();
+
+#ifdef __PRINTDB__
+ /**
+ * Debug function to print out all of the elements
+ */
+ void PrintItemsInTableL();
+#endif
+
+private: // New Functions
+
+ /**
+ * Read a long text string from db at the specified column
+ * @param aColumn
+ * @return string left on cleanup stack
+ */
+ HBufC* ReadLongTextLC( TInt aColumn );
+
+ /**
+ * Replaces single quotes with two single quotes
+ * @param aSrc source descriptor
+ * @param aTrg destination descriptor
+ */
+ void FindAndReplaceSingleQuote(const TDesC& aSrc, TDes& aTrg);
+
+private:
+
+ /**
+ * Private Constructor
+ * @param aDb database to create the table from
+ */
+ CMPXHarvesterDatabaseTable( RDbStoreDatabase& aDB );
+
+private:
+
+ // Enumeration of what state this table is
+ //
+ enum TTableState
+ {
+ EInvalidState,
+ EAllItems, // Listing all items
+ EDirectory, // Listing only a directory
+ EFile, // Listing only a file
+ EDrm // Listing files with DRM flag
+ };
+
+private: // data
+ RDbStoreDatabase& iDb;
+ RDbView iView;
+ TTableState iState;
+ };
+
+#endif // CMPXHARVESTERDBTABLE_H