javaextensions/pim/agnadapter/src.s60/cpimagnitemadapter.cpp
branchRCL_3
changeset 19 04becd199f91
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/pim/agnadapter/src.s60/cpimagnitemadapter.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,140 @@
+/*
+* 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:  Base class for the Agenda Model event and todo item adapters
+ *
+*/
+
+
+// CLASS HEADER
+#include "cpimagnitemadapter.h"
+#include "logger.h"
+
+// EXTERNAL INCLUDES
+#include <caltime.h>
+#include <CalenInterimUtils2.h>
+#include <tzconverter.h>
+#include <calentry.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// destructor
+CPIMAgnItemAdapter::~CPIMAgnItemAdapter()
+{
+    JELOG2(EPim);
+    CallMethod(this, &CPIMAgnItemAdapter::DoClose, iFuncServer);
+}
+
+void CPIMAgnItemAdapter::DoClose()
+{
+    JELOG2(EPim);
+    delete iCalenInterimUtils;
+    iCalenInterimUtils = NULL;
+    iTzServer.Close();
+}
+
+// -----------------------------------------------------------------------------
+// CPIMAgnItemAdapter::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPIMAgnItemAdapter::ConstructL()
+{
+    JELOG2(EPim);
+    User::LeaveIfError(iTzServer.Connect());
+    iCalenInterimUtils = CCalenInterimUtils2::NewL();
+}
+
+// -----------------------------------------------------------------------------
+// CPIMAgnItemAdapter::IsDateInValidAgendaRange
+// Checks the date is acceptable within the agenda model's valid date range
+// (from 1st January 1980 to 31st December 2100).
+// -----------------------------------------------------------------------------
+//
+TBool CPIMAgnItemAdapter::IsDateInValidAgendaRange(TPIMDate aDate) const
+{
+    JELOG2(EPim);
+    if (aDate < TCalTime::MinTime() || aDate > TCalTime::MaxTime())
+    {
+        return EFalse;
+    }
+    return ETrue;
+}
+
+// -----------------------------------------------------------------------------
+// CPIMAgnItemAdapter::StartOfDay
+// -----------------------------------------------------------------------------
+//
+TPIMDate CPIMAgnItemAdapter::StartOfDay(const TPIMDate& aTime) const
+{
+    JELOG2(EPim);
+    TTime zero(0);
+    return (zero + aTime.DaysFrom(zero));
+}
+
+// -----------------------------------------------------------------------------
+// CPIMAgnItemAdapter::ConvertTimeL
+// -----------------------------------------------------------------------------
+//
+void CPIMAgnItemAdapter::ConvertTimeL(TPIMDate& aTime,
+                                      const TPIMDateFormat aRequestedFormat)
+{
+    JELOG2(EPim);
+    TTime temp(aTime);
+    // Create converter here because some other client  might have changed the
+    // time zone during the run time of PIM API. We do not listen time changes
+    CTzConverter* converter = CTzConverter::NewL(iTzServer);
+    CleanupStack::PushL(converter);
+
+    // Convert time to requested format
+    if (aRequestedFormat == EPIMDateUTC)
+    {
+        User::LeaveIfError(converter->ConvertToUniversalTime(temp));
+    }
+    else if (aRequestedFormat == EPIMDateLocal)
+    {
+        User::LeaveIfError(converter->ConvertToLocalTime(temp));
+    }
+    // Do not modify if some other time format was requested...
+    CleanupStack::PopAndDestroy(converter);
+    aTime = temp;
+}
+
+// -----------------------------------------------------------------------------
+// CPIMAgnItemAdapter::CreateCalendarEntryLC
+// -----------------------------------------------------------------------------
+//
+CCalEntry* CPIMAgnItemAdapter::CreateCalendarEntryLC(const TInt aType)
+{
+    JELOG2(EPim);
+    // Create global unique identifier
+    HBufC8* guid = iCalenInterimUtils->GlobalUidL();
+    CleanupStack::PushL(guid);
+
+    // Create a native calendar entry. aType specifies the type
+    // of the entry (meeting, memo, anniversary or todo)
+    CCalEntry* entry = CCalEntry::NewL(static_cast<CCalEntry::TType>(aType),
+                                       guid, CCalEntry::EMethodNone, 0); // sequence number
+
+    CleanupStack::Pop(guid);
+    CleanupStack::PushL(entry);
+    return entry;
+}
+
+CPIMAgnItemAdapter::CPIMAgnItemAdapter(java::util::FunctionServer* aFuncServer) :
+        iFuncServer(aFuncServer)
+{
+    JELOG2(EPim);
+}
+
+// End of file