--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tzservices/tzserver/test/Integration/src/DstIntUtils.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,170 @@
+// Copyright (c) 2004-2009 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 "DstIntUtils.h"
+#include <tz.h>
+
+#include <caldataexchange.h>
+#include <caldataformat.h>
+#include <s32file.h>
+
+TInt CDstIntUtils::SetHomeTimeZoneL(const TDesC8& aLocation, const RTz &aServer)
+ {
+ CTzId *timezoneid = CTzId::NewL(aLocation);
+ CleanupStack::PushL(timezoneid);
+ TInt err;
+ TRAP(err, aServer.SetTimeZoneL(*timezoneid));
+ CleanupStack::PopAndDestroy(timezoneid);
+
+ return err;
+ }
+
+TInt CDstIntUtils::CheckHomeTimeZoneL(const RTz &aServer, const TDesC8& aLocation)
+ {
+ TInt err = KErrBadName;
+ CTzId *timezoneid = aServer.GetTimeZoneIdL();
+ if(timezoneid->TimeZoneNameID() == aLocation)
+ {
+ err = KErrNone;
+ }
+ delete timezoneid;
+ return err;
+ }
+
+
+void CDstIntUtils::AppendTimeParamStringL(TTime aTime, TDes& aParamString)
+ {
+ // This writes TTime according to a format specification, and this takes produces proper
+ // month and day values (ie they start with 1)
+ TBuf<15> dateString;
+ _LIT(KDateFormat, "%F%Y%M%D:%H%T%S");
+ aTime.FormatL(dateString, KDateFormat);
+ aParamString.Append(dateString);
+ }
+
+void ResetAndDestroyArrayOfEntries(TAny* aObject)
+ {
+ RPointerArray<CCalEntry>* array=static_cast<RPointerArray<CCalEntry>*>(aObject);
+ if (array)
+ {
+ array->ResetAndDestroy();
+ }
+ }
+
+void CDstIntUtils::OpenAgendaFileL(CCalSession& aSession, const TDesC& aFilename)
+ {
+ // Create the agenda file if does not exist
+ TRAPD(err, aSession.CreateCalFileL(aFilename));
+ if (err != KErrAlreadyExists)
+ {
+ User::LeaveIfError(err);
+ }
+
+ // Now open it
+ aSession.OpenL(aFilename);
+ }
+
+
+TCalLocalUid CDstIntUtils::ImportVCalL(RFs& aFs, CCalSession& aSession, CCalEntryView& aEntryView, const TDesC& aFileName)
+ {
+ RFileReadStream readStream;
+ User::LeaveIfError(readStream.Open(aFs, aFileName, EFileRead));
+ CleanupClosePushL(readStream);
+
+ // Create ptr array for new entries
+ RPointerArray<CCalEntry> entryArray;
+ CleanupStack::PushL(TCleanupItem(ResetAndDestroyArrayOfEntries, &entryArray));
+
+ CCalDataExchange* dataExchange = CCalDataExchange::NewL(aSession);
+ CleanupStack::PushL(dataExchange);
+ dataExchange->ImportL(KUidVCalendar, readStream, entryArray);
+
+ TInt elements = entryArray.Count();
+ TCalLocalUid id = 0;
+
+ if(elements > 0)
+ {
+ CCalEntry* entry = entryArray[0];
+ // add the first entry only
+ while (entryArray.Count() > 1)
+ {
+ delete entryArray[1];
+ entryArray.Remove(1);
+ }
+ TInt success = 0;
+ aEntryView.StoreL(entryArray, success);
+ id = entryArray[0]->LocalUidL();
+ }
+
+ CleanupStack::PopAndDestroy(dataExchange);
+ CleanupStack::PopAndDestroy(); // ResetAndDestroyArrayOfEntries(entryArray)
+ CleanupStack::PopAndDestroy(); // readStream.Close()
+
+ return id;
+ }
+
+
+TInt CDstIntUtils::CheckAgendaEntryL(CCalEntryView& aEntryView, const TCalLocalUid& aId, const TTime& aStart, const TTime& aEnd)
+ {
+ TInt err = KErrArgument;
+ CCalEntry* entry = aEntryView.FetchL(aId);
+ CleanupStack::PushL(entry);
+
+ TTime start = entry->StartTimeL().TimeLocalL();
+ TTime end = entry->EndTimeL().TimeLocalL();
+
+#ifdef _DEBUG
+ TDateTime startDateTime = start.DateTime();
+ TDateTime aStartDateTime = aStart.DateTime();
+ TDateTime endDateTime = end.DateTime();
+ TDateTime aEndDateTime = aEnd.DateTime();
+#endif
+
+ if((aStart == start) && (aEnd == end))
+ {
+ err = KErrNone;
+ }
+
+ CleanupStack::PopAndDestroy(entry);
+ return err;
+ }
+
+void CDstIntUtils::GenerateVCalL(RFs& aFs, const TDesC& aFileName, const TDesC& aStartTime, const TDesC& aEndTime)
+ {
+ RFile file;
+ file.Replace(aFs, aFileName, EFileWrite);
+
+ TBuf8<64> buf;
+
+ file.Write(_L8("BEGIN:VCALENDAR\r\n"));
+ file.Write(_L8("VERSION:1.0\r\n"));
+ file.Write(_L8("BEGIN:VEVENT\r\n"));
+ file.Write(_L8("CATEGORIES:MEETING\r\n"));
+ file.Write(_L8("DTSTART:"));
+ buf.Copy(aStartTime);
+ file.Write(buf);
+ file.Write(_L8("\r\n"));
+ file.Write(_L8("DTEND:"));
+ buf.Copy(aEndTime);
+ file.Write(buf);
+ file.Write(_L8("\r\n"));
+ file.Write(_L8("SUMMARY:TestMeeting\r\n"));
+ file.Write(_L8("DESCRIPTION:Test\r\n"));
+ file.Write(_L8("END:VEVENT\r\n"));
+ file.Write(_L8("END:VCALENDAR\r\n"));
+
+ file.Flush();
+ file.Close();
+ }