notepad/notepad1/SyncMLAdapter/src/nsmlnotepadDatabase.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/notepad/notepad1/SyncMLAdapter/src/nsmlnotepadDatabase.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,710 @@
+/*
+* 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:  notepad database
+*
+*/
+
+
+#include <sysutil.h>
+
+
+#include <txtetext.h>
+#include "nsmlnotepadDatabase.h"
+#include <nsmlnotepaddatastoreformat.rsg>
+
+#include "nsmlnotepadlogging.h"
+
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::NewL
+// -----------------------------------------------------------------------------
+//
+CNSmlNotepadDatabase* CNSmlNotepadDatabase::NewL()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::NewL(): begin");
+	
+	CNSmlNotepadDatabase *instance = new(ELeave) CNSmlNotepadDatabase();
+	CleanupStack::PushL(instance);
+	instance->ConstructL();
+	CleanupStack::Pop(instance);
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::NewL(): end");
+	return instance;
+	}
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::~CNSmlNotepadDatabase()
+// -----------------------------------------------------------------------------
+//
+CNSmlNotepadDatabase::~CNSmlNotepadDatabase()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::~CNSmlNotepadDatabase(): begin");
+	
+    if(iOpened)
+        {
+    	iDatabase.Close();
+        }
+	
+	if(iDataFile)
+	{
+		delete iDataFile;
+		iDataFile = NULL;	
+	}
+	iTable.Close();	
+	iDbs.Close();
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::~CNSmlNotepadDatabase(): end");
+	}
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::CNSmlNotepadDatabase()
+// -----------------------------------------------------------------------------
+//
+CNSmlNotepadDatabase::CNSmlNotepadDatabase()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CNSmlNotepadDatabase(): begin");
+	
+	iOpened = EFalse;
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CNSmlNotepadDatabase(): end");
+	}	
+	
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::ConstructL()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ConstructL: begin");
+	
+    User::LeaveIfError(iDbs.Connect());
+    
+    iDataFile = HBufC::NewL(KMaxFileLength);
+    iDataFile->Des().Copy(KNpdDataFile);
+	
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ConstructL: end");
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::OpenL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::OpenL()
+{
+	_NOTEPAD_DBG_FILE("CCNSmlNotepadDatabase::OpenL(): begin");
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): end");
+	OpenL(*iDataFile);
+}
+// -----------------------------------------------------------------------------
+// TInt CNSmlNotepadDatabase::OpenL(const TDesC& aStoreName)
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::OpenL(const TDesC& aStoreName)
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): begin");
+    
+	TBuf<32> format;
+    format.Copy(KSecure);
+    format.Append(KSecureUid.Name());
+    
+	TInt err(iDatabase.Open(iDbs,aStoreName,format));
+	RFs fsession; 
+    switch ( err )
+        {
+        case KErrNone: // database open succeed
+			iOpened = ETrue;
+            break;
+        case KErrArgument: // when the datafile is empty
+        case KErrNotSupported: // UID mismatch, corrupted
+        case KErrEof: // read error, corrupted
+        case KErrCorrupt:
+		    iDatabase.Close(); // indespensable for RFs::Delete()
+		    User::LeaveIfError(fsession.Connect());
+			fsession.Delete(*iDataFile);
+			fsession.Close();
+        case KErrNotFound:
+			TRAP(err,CreateDBL());
+			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): after createDBL and before database open");
+			if( err == KErrNone) 
+				{
+				iOpened = ETrue;
+				}
+			break;
+         default:
+            break;
+        }
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::OpenL(): end");
+	User::Leave(err);
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::AddNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::AddNoteL(CNpdItem& aNote, TInt &aKey)
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::AddNoteL(): begin");
+    
+	if(!iOpened)
+		{
+		User::Leave(KErrNotReady);
+		}
+
+    if(!aNote.Content())
+        {
+        User::Leave(KErrArgument);
+        }
+
+	TInt err(KErrNone);
+    RDbView dbView;
+    CleanupClosePushL(dbView);
+
+    err =  dbView.Prepare(
+            iDatabase, TDbQuery(KNpdSqlInsert) );
+
+	if(err == KErrNone) 
+		{
+        TRAP(err,
+	    		dbView.InsertL();
+		    	dbView.SetColL(ENotepadUpdateTime, aNote.LastModified());
+			    dbView.SetColL(ENotepadMemo, aNote.Content()->Des());
+			    dbView.PutL();
+                );
+	    if (err == KErrNone)
+		    {
+            aKey = dbView.ColInt32(ENotepadKey);
+	        } 
+        else 
+            {
+			dbView.Close();
+			Rollback();
+            }
+		}
+
+    CleanupStack::PopAndDestroy(); // dbView
+    iDatabase.Compact();
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::AddNoteL(): end");
+    User::Leave(err);
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::DeleteNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::DeleteNoteL(const TInt aKey)
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): begin");
+    
+	if(!iOpened)
+		{
+			User::Leave(KErrNotReady);
+		}
+
+    TInt err(KErrNone);
+    TBuf<KNpdSqlDeleteHeadSize> sql;
+    sql.Append(KNpdSqlDeleteHead);
+    sql.AppendNum(aKey);
+
+    TInt rowCount( iDatabase.Execute(sql) );
+
+    if(rowCount > 0)
+		{
+			err = KErrNone;
+		}
+	else
+		{
+			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): item not found");
+			err = KErrNotFound;
+		}
+
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::DeleteNoteL(): end");
+	User::Leave(err);
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::Close
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::Close()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Close(): begin");
+	
+	if(iOpened)
+		{
+		iDatabase.Compact();
+	    iDatabase.Close();
+	    iOpened = EFalse;
+        }
+        
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Close(): end");        
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::GetNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::GetNoteL(const TInt aKey, CNpdItem& aItem)
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): begin");
+    
+	TInt err(KErrNone);
+
+	if(!iOpened)
+		{
+		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): not opened");
+		User::Leave(KErrNotReady);
+		}
+
+    TBuf<KNpdSqlStringMaxLength> sql;
+    sql.Format(KNpdSqlFormatSeek, aKey);
+
+    RDbView dbView;
+    CleanupClosePushL(dbView);
+  
+	User::LeaveIfError(dbView.Prepare(
+        iDatabase, TDbQuery(sql), RDbView::EReadOnly ) );
+
+    User::LeaveIfError(dbView.EvaluateAll());
+ 
+	TInt isAtRow(dbView.FirstL());
+    if ( isAtRow )
+        {
+        _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): if entered");
+        HBufC* content = NULL;
+        dbView.GetL();
+
+		TInt key = dbView.ColInt32(ENotepadKey);
+		TTime modified = dbView.ColTime(ENotepadUpdateTime);
+
+        RDbColReadStream blob;
+        blob.OpenLC(dbView, ENotepadMemo);
+        TInt colLength( dbView.ColLength(ENotepadMemo) );
+        content = HBufC::NewLC(colLength);
+        TPtr ptr = content->Des();
+
+        blob.ReadL(ptr, colLength);
+		
+		aItem.Set(key,modified, content);
+        CleanupStack::Pop(content); // content
+        CleanupStack::PopAndDestroy(); // blob
+        }
+	else 
+		{
+		err = KErrNotFound;
+		}
+
+    CleanupStack::PopAndDestroy(); // dbView/
+    
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetNoteL(): end");
+    User::Leave(err);
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::UpdateNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::UpdateNoteL(const TInt aKey, CNpdItem& aItem)
+	{
+	TInt err(KErrNone);
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): begin");
+
+	if(!iOpened)
+		{
+		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): not ready");
+		User::Leave(KErrNotReady);
+		}
+
+    TBuf<KNpdSqlStringMaxLength> sql;
+    sql.Format(KNpdSqlFormatSeek, aKey);
+
+    RDbView dbView;
+    CleanupClosePushL(dbView);
+  
+	User::LeaveIfError(dbView.Prepare(
+        iDatabase, TDbQuery(sql), RDbView::EUpdatable ) );
+
+    User::LeaveIfError(dbView.EvaluateAll());
+ 
+	TInt isAtRow(dbView.FirstL());
+    if ( isAtRow )
+		{
+		
+		TRAP(err,
+			dbView.UpdateL();
+			dbView.SetColL(ENotepadUpdateTime, aItem.LastModified());
+			dbView.SetColL(ENotepadMemo, aItem.Content()->Des());
+			dbView.PutL();
+		);
+	    if (err != KErrNone)
+		    {
+			dbView.Close();
+			Rollback();
+	        } 
+		}
+	else 
+		{
+		err = KErrNotFound;
+		}
+
+    CleanupStack::PopAndDestroy(); // dbView
+    iDatabase.Compact();
+
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::UpdateNoteL(): end");
+	User::Leave(err);
+	}
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::Reset
+// -----------------------------------------------------------------------------
+//
+TInt CNSmlNotepadDatabase::Reset()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Reset(): begin");
+	
+    TInt err(KErrNone);
+
+	if(!iOpened)
+		{
+		return KErrNotReady;
+		}
+
+    TBuf<KNpdSqlDeleteHeadSize> sql;
+    sql.Append(KNpdSqlDeleteAll);
+ 
+	TInt rowCount( iDatabase.Execute(sql) );
+
+    if(rowCount < 0)
+        {
+        err = rowCount;
+        }
+    
+   	if (err == KErrNone && iDatabase.InTransaction())
+    	{
+	    err = iDatabase.Commit();
+	    }
+   
+    if (err == KErrNone && rowCount > 0) 
+        {
+        err = iDatabase.Compact();
+        }
+
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Reset(): begin");
+    return err;
+	}
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::IsOpen
+// -----------------------------------------------------------------------------
+//
+TBool CNSmlNotepadDatabase::IsOpen()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::IsOpen(): begin");
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::IsOpen(): end");
+    return iOpened;
+    }
+// -----------------------------------------------------------------------------
+// void CNSmlNotepadDatabase::GetDefaultDatastoreName(TDes& aStoreName)
+// -----------------------------------------------------------------------------
+//    
+void CNSmlNotepadDatabase::GetDefaultDatastoreName(TDes& aStoreName)
+{
+	_NOTEPAD_DBG_FILE("CCNSmlNotepadDatabase::GetDefaultDatastoreName(): begin");
+	
+	aStoreName.Copy(*iDataFile);
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::GetDefaultDatastoreName(): end");
+} 
+// -----------------------------------------------------------------------------
+// CDesCArray* CNSmlNotepadDatabase::ListDatabasesL()
+// -----------------------------------------------------------------------------
+//
+CDesCArray* CNSmlNotepadDatabase::ListDatabasesL()
+{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ListDatabasesL(): begin");
+	
+	CDesCArrayFlat *arr = new (ELeave)CDesCArrayFlat(1);
+	CleanupStack::PushL(arr);
+	arr->AppendL(*iDataFile);
+	CleanupStack::Pop(arr);
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::ListDatabasesL(): end");
+	return arr;	
+} 
+// -----------------------------------------------------------------------------
+// TInt CNSmlNotepadDatabase::FirstL()
+// -----------------------------------------------------------------------------
+//
+TInt CNSmlNotepadDatabase::FirstL()
+{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): begin");
+	TInt ret = -1;
+	if(!iOpened) OpenL();
+    iTable.Close();
+	TInt err = iTable.Open(iDatabase,KNpdTableName,RDbRowSet::EReadOnly);
+	if(err == KErrNone)
+	{
+		iTable.BeginningL();	
+		if(iTable.FirstL())
+		{
+			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): if firstL");		
+			iTable.GetL();
+			_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): after GetL");		
+			ret = iTable.ColInt(1);	
+		}
+		_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::FirstL(): end");
+	}
+  	return ret;
+}
+// -----------------------------------------------------------------------------
+// TInt CNSmlNotepadDatabase::NextL()
+// -----------------------------------------------------------------------------
+//
+TInt CNSmlNotepadDatabase::NextL()
+{
+	_NOTEPAD_DBG_FILE("NSmlNotepadDatabase::NextL(): begin");
+	
+	TInt ret = -1;
+	if(iTable.AtRow())
+	{
+		if(iTable.NextL())
+		{
+			iTable.GetL();
+			ret = iTable.ColInt(1);	
+		}
+	}
+	
+	_NOTEPAD_DBG_FILE("NSmlNotepadDatabase::NextL(): end");
+	return ret;
+}
+// -----------------------------------------------------------------------------
+// TInt CNSmlNotepadDatabase::LastL()
+// -----------------------------------------------------------------------------
+//
+TInt CNSmlNotepadDatabase::LastL()
+{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::LastL(): begin");
+	
+	TInt ret = -1;
+	if(iTable.LastL())
+	{
+		iTable.GetL();
+		ret = iTable.ColInt(1);	
+	}
+	
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::LastL(): end");
+	return ret;	
+}
+  	
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::CreateColSetLC
+// -----------------------------------------------------------------------------
+//
+CDbColSet* CNSmlNotepadDatabase::CreateColSetLC()
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateColSetLC: begin");
+    
+    CDbColSet* columns = CDbColSet::NewLC(); 
+    TDbCol col(KNpdKey, EDbColInt32);
+    col.iAttributes = TDbCol::ENotNull | TDbCol::EAutoIncrement;
+    columns->AddL(col);
+
+    col.iName = KNpdUpdateTime;
+    col.iType = EDbColDateTime;
+    col.iAttributes = TDbCol::ENotNull;
+    columns->AddL(col);
+
+    col.iName = KNpdMemo;
+    col.iType = EDbColLongText;
+    col.iAttributes = TDbCol::ENotNull;
+    columns->AddL(col);
+
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateColSetLC: end");
+    return columns; // columns stays on CleanupStack
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::CreateDBL
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::CreateDBL()
+	{
+	_NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateDBL(): begin");
+	
+    iDatabase.Close();
+	TBuf<32> format;
+    format.Copy(KSecure);
+    format.Append(KSecureUid.Name());
+	User::LeaveIfError(iDatabase.Create(iDbs, *iDataFile,format));
+	CDbColSet* columns = CreateColSetLC();
+	User::LeaveIfError(iDatabase.CreateTable(KNpdTableName, *columns));
+	CleanupStack::PopAndDestroy(columns); // columns
+    User::Leave(KErrNone);
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::CreateDBL(): end");
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlNotepadDatabase::Rollback
+// -----------------------------------------------------------------------------
+//
+void CNSmlNotepadDatabase::Rollback()
+    {
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Rollback(): begin");
+    
+    iDatabase.Rollback();
+    if ( iDatabase.IsDamaged() )
+        {
+        iDatabase.Recover();
+        }
+        
+    _NOTEPAD_DBG_FILE("CNSmlNotepadDatabase::Rollback(): end");
+    }
+
+
+
+
+
+
+// -----------------------------------------------------------------------------
+// CNpdItem implementations
+// -----------------------------------------------------------------------------
+//
+
+// -----------------------------------------------------------------------------
+// CNpdItem::~CNpdItem
+// -----------------------------------------------------------------------------
+//
+CNpdItem::~CNpdItem()
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::~CNpdItem: begin");
+	delete iContent;
+	_NOTEPAD_DBG_FILE("CNpdItem::~CNpdItem: end");
+	}
+// -----------------------------------------------------------------------------
+// CNpdItem::NewL
+// -----------------------------------------------------------------------------
+//
+CNpdItem* CNpdItem::NewLC()
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::NewLC: begin");
+	CNpdItem* tmp = new (ELeave) CNpdItem();
+	CleanupStack::PushL(tmp);
+	//tmp->ConstructL(0, TTime(), NULL);
+	_NOTEPAD_DBG_FILE("CNpdItem::NewLC: end");
+	return tmp;
+	}
+
+// -----------------------------------------------------------------------------
+// CNpdItem::NewL
+// -----------------------------------------------------------------------------
+//
+CNpdItem* CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent)
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent): begin");
+	CNpdItem* tmp = new (ELeave) CNpdItem(aKey,aLastModified,aContent);
+	CleanupStack::PushL(tmp);
+	//tmp->ConstructL(aKey, aLastModified, aContent);
+	_NOTEPAD_DBG_FILE("CNpdItem::NewLC(TInt aKey, const TTime& aLastModified, HBufC *aContent): end");
+	return tmp;
+	}
+
+// -----------------------------------------------------------------------------
+// CNpdItem::CNpdItem()
+// -----------------------------------------------------------------------------
+//
+CNpdItem::CNpdItem() : iKey(0), iLastModified(Time::MinTTime()), iContent(NULL)
+	{
+	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): begin");
+	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): end");
+	}
+
+// -----------------------------------------------------------------------------
+// CNpdItem::CNpdItem(TInt aKey,const TTime& aLastModified, HBufC *aContent)
+// -----------------------------------------------------------------------------
+//
+CNpdItem::CNpdItem(TInt aKey, 
+					const TTime& aLastModified, 
+					HBufC *aContent) : iKey(aKey), 
+										iLastModified(aLastModified), 
+										iContent(aContent)
+	{
+	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): begin");
+	_NOTEPAD_DBG_FILE("NpdItem::CNpdItem(): end");
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CNpdItem::Key
+// -----------------------------------------------------------------------------
+//
+TInt CNpdItem::Key() const
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::Key(): begin");
+	_NOTEPAD_DBG_FILE("CNpdItem::Key(): end");
+	return iKey;
+	}
+// -----------------------------------------------------------------------------
+// CNpdItem::LastModified
+// -----------------------------------------------------------------------------
+//
+TTime CNpdItem::LastModified() const
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::LastModified(): begin");
+	_NOTEPAD_DBG_FILE("CNpdItem::LastModified(): end");
+	return iLastModified;
+	}
+// -----------------------------------------------------------------------------
+// CNpdItem::Content
+// -----------------------------------------------------------------------------
+//
+HBufC* CNpdItem::Content()
+	{
+	_NOTEPAD_DBG_FILE("NpdItem::Content(): begin");
+	_NOTEPAD_DBG_FILE("NpdItem::Content(): end");
+	return iContent;
+	}
+// -----------------------------------------------------------------------------
+// CNpdItem::Set
+// -----------------------------------------------------------------------------
+//
+void CNpdItem::Set(TInt aKey, const TTime& aLastModified, HBufC *aContent)
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::Set(): begin");
+	iKey = aKey;
+	iLastModified = aLastModified;
+    SetContent(aContent);
+    _NOTEPAD_DBG_FILE("CNpdItem::Set(): end");
+	}
+
+// -----------------------------------------------------------------------------
+// CNpdItem::SetContent
+// -----------------------------------------------------------------------------
+//
+void CNpdItem::SetContent(HBufC *aContent)
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::SetContent(): begin");
+    iContent = aContent;
+    _NOTEPAD_DBG_FILE("CNpdItem::SetContent(): end");
+	}
+
+// -----------------------------------------------------------------------------
+// CNpdItem::SetModified
+// -----------------------------------------------------------------------------
+//
+void CNpdItem::SetModified(const TTime& aLastModified)
+	{
+	_NOTEPAD_DBG_FILE("CNpdItem::SetModified(): begin");
+	iLastModified = aLastModified;
+	_NOTEPAD_DBG_FILE("CNpdItem::SetModified(): end");
+	}
+
+// End of File