creator/src/creator_note.cpp
changeset 0 d6fe6244b863
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/creator/src/creator_note.cpp	Tue Feb 02 00:17:27 2010 +0200
@@ -0,0 +1,179 @@
+/*
+* Copyright (c) 2008 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:  
+*
+*/
+
+
+#include "creator_note.h" 
+#include "creator_traces.h"
+
+const TInt KCreatorDiskSpaceNeededForSingleDeletion( 8192 );
+_LIT( KCreatorNotepadFile, "c:Notepad.dat" );
+
+// @see \s60\app\organizer\notepad\notepad1\LibSrc\NpdCoreModel.cpp KSecureUid.Name()
+_LIT( KCreatorNotepadFormat, "SECURE[101F8878]" ); 
+_LIT( KCreatorNotepadDeleteAllSQL, "DELETE FROM Table1");
+
+//----------------------------------------------------------------------------
+
+CNotepadParameters::CNotepadParameters()
+    {
+    LOGSTRING("Creator: CNotepadParameters::CNotepadParameters");
+
+    iNoteText = HBufC::New(KNotepadFieldLength);
+    }
+
+CNotepadParameters::~CNotepadParameters()
+    {
+    LOGSTRING("Creator: CNotepadParameters::~CNotepadParameters");
+
+    delete iNoteText;
+    }
+
+//----------------------------------------------------------------------------
+
+CCreatorNotepad* CCreatorNotepad::NewL(CCreatorEngine* aEngine)
+    {
+    CCreatorNotepad* self = CCreatorNotepad::NewLC(aEngine);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CCreatorNotepad* CCreatorNotepad::NewLC(CCreatorEngine* aEngine)
+    {
+    CCreatorNotepad* self = new (ELeave) CCreatorNotepad;
+    CleanupStack::PushL(self);
+    self->ConstructL(aEngine);
+    return self;
+    }
+
+CCreatorNotepad::CCreatorNotepad() : iFs ( CEikonEnv::Static()->FsSession() )
+    {
+    }
+
+void CCreatorNotepad::ConstructL(CCreatorEngine* aEngine)
+    {
+    LOGSTRING("Creator: CCreatorNotepad::ConstructL");
+
+    iEngine = aEngine;
+
+    iNotepadApi = CNotepadApi::NewL();
+    }
+
+CCreatorNotepad::~CCreatorNotepad()
+    {
+    LOGSTRING("Creator: CCreatorNotepad::~CCreatorNotepad");
+    
+    delete iNotepadApi;
+    
+    if (iParameters)
+        delete iParameters;
+    }
+
+//----------------------------------------------------------------------------
+
+TBool CCreatorNotepad::AskDataFromUserL(TInt aCommand, TInt& aNumberOfEntries)
+    {
+    LOGSTRING("Creator: CCreatorNotepad::AskDataFromUserL");
+
+    if ( aCommand == ECmdDeleteNotes )
+        {
+        return iEngine->YesNoQueryDialogL( _L("Delete all Notes?") );
+        }
+    
+    // By Creator not supported because 
+    // note id is not available via Notepad API
+
+    return iEngine->EntriesQueryDialogL(aNumberOfEntries, _L("How many entries to create?"));
+    }
+
+
+//----------------------------------------------------------------------------
+
+TInt CCreatorNotepad::CreateNoteEntryL(CNotepadParameters *aParameters)
+    {
+    LOGSTRING("Creator: CCreatorNotepad::CreateNoteEntryL");
+
+    // clear any existing parameter definations
+    delete iParameters;
+    iParameters = NULL;
+    
+    CNotepadParameters* parameters = aParameters;
+    
+    // random data needed if no predefined data available
+    if (!parameters)
+        {
+        iParameters = new(ELeave) CNotepadParameters;
+        parameters = iParameters;
+        parameters->iNoteText->Des() = iEngine->RandomString(CCreatorEngine::EMessageText);
+        }
+    
+    TInt err = KErrNone;
+
+    iNotepadApi->AddContentL(parameters->iNoteText->Des());
+    
+    return err;
+    }
+
+//----------------------------------------------------------------------------
+void CCreatorNotepad::DeleteAllL()
+    {
+    LOGSTRING("Creator: CCreatorNotepad::DeleteAllL");
+    // Open Notes db
+    RDbs dbs;
+    User::LeaveIfError( dbs.Connect() );
+    CleanupClosePushL( dbs );
+    RDbNamedDatabase db;
+    TInt openErr( db.Open( dbs, KCreatorNotepadFile, KCreatorNotepadFormat ) );
+    CleanupClosePushL( db );
+    
+    if ( openErr && openErr !=  KErrNotFound )
+        {
+        User::Leave( openErr );
+        }
+    
+    // do not leave if openErr == KErrNotFound, 
+    // it means there is no notes (file) created -> no need to delete
+    
+    if ( openErr !=  KErrNotFound )
+        {
+        TInt retval = iFs.ReserveDriveSpace( KDefaultDrive, KCreatorDiskSpaceNeededForSingleDeletion );
+        if ( retval == KErrNone )
+            {
+            retval = iFs.GetReserveAccess( KDefaultDrive );
+            }
+
+        // Delete all Notes. Ignore rowCount returnvalue
+        db.Execute( KCreatorNotepadDeleteAllSQL );            
+        
+        User::LeaveIfError( db.Compact() );
+        
+        if ( retval == KErrNone )
+            {
+            retval = iFs.ReleaseReserveAccess( KDefaultDrive );
+            }
+        }
+    
+    CleanupStack::PopAndDestroy( &db );
+    CleanupStack::PopAndDestroy( &dbs );
+    }
+
+//----------------------------------------------------------------------------
+void CCreatorNotepad::DeleteAllCreatedByCreatorL()
+    {
+    LOGSTRING("Creator: CCreatorNotepad::DeleteAllCreatedByCreatorL");
+    // Not supported because note id is not available via Notepad API
+    User::Leave( KErrNotSupported );
+    }