calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2focusdata.cpp
changeset 0 f979ecb2b13e
child 16 55d60436f00b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2focusdata.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2005-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:  
+ *
+*/
+
+#include "aicalendarplugin2focusdata.h"
+#include <eikenv.h> // For CEikonEnv
+#include <apgtask.h>
+#include <apgcli.h>
+
+void TAiCalendarFocusData::LaunchCalendarApplicationL()
+    {
+    CEikonEnv* eikenv = CEikonEnv::Static();
+    if( !eikenv )
+        {
+        return;
+        }
+    TApaTaskList taskList( eikenv->WsSession() );
+    TApaTask task = taskList.FindApp( KCalendarAppUID );
+
+    HBufC16* tail = NULL;
+    CommandTailL( tail );
+    CleanupStack::PushL( tail );
+
+    // copy the 16-bit data into 8-bit buffer
+    HBufC8* paramBuf = HBufC8::NewLC( tail->Size() );
+    TPtr8 tailBuf = paramBuf->Des();
+    tailBuf.Copy( reinterpret_cast<const TUint8*>( tail->Ptr() ),
+                  tail->Size() );
+
+    if( task.Exists() )  // Calendar already open
+        {
+        const TUid dummyUID = { 0x0 };
+        task.SendMessage( dummyUID, tailBuf );
+        task.BringToForeground();
+        }
+    else  // Launch Calendar into day view
+        {
+        TApaAppInfo appInfo;
+        RApaLsSession lsSession;
+        if( lsSession.Connect() == KErrNone )
+            {
+            CleanupClosePushL( lsSession );
+
+            if( lsSession.GetAppInfo( appInfo, KCalendarAppUID ) == KErrNone )
+                {
+                CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+                cmdLine->SetExecutableNameL( appInfo.iFullName );
+                cmdLine->SetCommandL( EApaCommandRun );
+                cmdLine->SetTailEndL( tailBuf );
+
+                lsSession.StartApp( *cmdLine );
+                CleanupStack::PopAndDestroy( cmdLine );
+                }
+            CleanupStack::PopAndDestroy();  // lsSession, cannot use pop parameter here!
+            }
+        }
+    CleanupStack::PopAndDestroy( 2, tail );
+    }
+
+void TAiCalendarFocusData::CommandTailL( HBufC16*& aTailBuffer )
+    {
+    /*
+    Command line parameters:
+
+    Opening calendar views:
+    --------------
+    (opens on today if omitted)
+        "DAY"
+        "WEEK"
+        "MONTH"
+        "TODO"
+
+    Opening on today:
+    ---------------------------------
+        "TODAY"
+
+    Opening on specific day - focused by time:
+    ----------------------------------------------------------------------
+    ---
+        "DATE YYYY MM DD HH MM SS MMMMMM"
+        (Getting TTime to provide above string: TTime::FormatL: "%F%Y %M %D %H %T %S %C")
+
+    Opening editor:
+    --------------
+        (using entries local UID)
+        "LUID 1234567890"
+        
+    Opening viewer:
+    --------------
+        (using entries local UID)
+        "LUIDVIEWER 1234567890"
+
+    */
+    switch( iType )
+        {
+        case EAI2CalOpenEvent:
+            {
+            aTailBuffer = HBufC::NewLC( KAICal2DefaultBufferLen ); // "DATE YYYY MM DD HH MM SS MMMMMM"
+            if( !iOpenInViewer )
+                {
+                aTailBuffer->Des().Append( KAICal2CmdLUID );
+                }
+            else
+                {
+                aTailBuffer->Des().Append( KAICal2CmdLUIDViewer );
+                }
+            aTailBuffer->Des().AppendNum( iLocalUid );
+            CleanupStack::Pop( aTailBuffer );
+            break;
+            }
+        case EAI2CalOpenOnEventDay:
+            {
+            aTailBuffer = HBufC::NewLC( KAICal2DefaultBufferLen ); // "DATE YYYY MM DD HH MM SS MMMMMM"
+            TPtr ptr( aTailBuffer->Des() );
+            TTime todayStart;
+            todayStart.HomeTime();
+            const TDateTime x( todayStart.DateTime().Year(),
+                               todayStart.DateTime().Month(),
+                               todayStart.DateTime().Day(), 0, 0, 0, 0 );
+            if( iEntryTime < x )
+                {
+                todayStart.FormatL( ptr, KAICal2CmdTimeFormat );
+                }
+            else
+                {
+                iEntryTime.FormatL( ptr, KAICal2CmdTimeFormat );
+                }
+            aTailBuffer->Des().Insert( 0, KAICal2CmdDAY );
+            CleanupStack::Pop( aTailBuffer );
+            break;
+            }
+        default:
+            {
+            aTailBuffer = KAICal2CmdTODAY().AllocL();
+            break;
+            }
+        }
+
+    }
+