calendarui/agendaeventviewer/src/agendaeventviewer_p.cpp
branchRCL_3
changeset 65 12af337248b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/agendaeventviewer/src/agendaeventviewer_p.cpp	Tue Aug 31 15:13:43 2010 +0300
@@ -0,0 +1,299 @@
+/*
+* Copyright (c) 2010 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: Definition of AgendaEventViewerPrivate class
+*
+*/
+
+// System includes.
+#include <QFile>
+#include <QDir>
+
+// User includes.
+#include <agendautil.h>
+#include <agendaentry.h>
+#include "agendaeventviewer_p.h"
+#include "agendaeventviewer.h"
+#include "agendaeventview.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "agendaeventviewer_pTraces.h"
+#endif
+
+
+/*!
+	\class AgendaEventViewerPrivate
+
+	Private class implementation of AgendaEventViewer.It is responsible for
+	launching the agenda event viewer.
+ */
+
+
+/*!
+	Constructor
+
+	\param agendaUtil Pointer to AgendaUtil.
+	\param parent Pointer to QObject.
+ */
+AgendaEventViewerPrivate::AgendaEventViewerPrivate(
+		AgendaUtil *agendaUtil, QObject *parent)
+: QObject(parent),mAction(AgendaEventViewer::ActionNothing),mShowEventViewById(false),mShowEventViewByFileHandle(false),mFileName(NULL)
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_AGENDAEVENTVIEWERPRIVATE_ENTRY );
+
+	// Get the q-pointer.from parent
+	q_ptr = static_cast<AgendaEventViewer *> (parent);
+
+	// Check for agendaUtil sent by client. If null agendaUtil will be
+	// created and owned by AgendaEventViewerPrivate
+	if (!agendaUtil) {
+		mAgendaUtil = new AgendaUtil(parent);
+		mViewerOwnsAgendaUtil = true;
+	} else {
+		mAgendaUtil = agendaUtil;
+		mViewerOwnsAgendaUtil = false;
+	}
+
+	// Register for the entry change signal when the same entry is updated
+	// by other application.This is to handle the db conflict changes.
+	connect(
+			mAgendaUtil, SIGNAL(entriesChanged(QList<ulong> )),
+			this, SLOT(handleEntriesChanged(QList<ulong> )));
+	
+	// Register for the calenInstance view creation sucessfully
+	connect(
+	        mAgendaUtil, SIGNAL(entryViewCreationCompleted(int)),
+	        this, SLOT(viewCreationCompleted(int)));
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_AGENDAEVENTVIEWERPRIVATE_EXIT );
+}
+
+/*!
+	Destructor.
+ */
+AgendaEventViewerPrivate::~AgendaEventViewerPrivate()
+{
+    OstTraceFunctionEntry0( DUP1_AGENDAEVENTVIEWERPRIVATE_AGENDAEVENTVIEWERPRIVATE_ENTRY );
+
+	if (mViewerOwnsAgendaUtil) {
+		delete mAgendaUtil;
+		mAgendaUtil = 0;
+	}
+
+	OstTraceFunctionExit0( DUP1_AGENDAEVENTVIEWERPRIVATE_AGENDAEVENTVIEWERPRIVATE_EXIT );
+}
+
+/*!
+	Launches the event viewer.Id is used for fetching
+	the calendar entry information.
+
+	\param id Local Uid of the calendar entry to be viewed
+ */
+void AgendaEventViewerPrivate::view(const ulong id, 
+                                    AgendaEventViewer::Actions action)
+{
+	OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_VIEW_ENTRY );
+	
+	AgendaEntry entry = mAgendaUtil->fetchById(id);
+	
+	if (entry.isNull()) {
+        // save the entries , to show the entry once instances are created
+        // if entry is null exit ,later  call back comes in viewCreationCompleted 
+	    mAction = action;
+        mId =id;
+        //to avoid view creation multiple times
+        mShowEventViewById = true;
+		OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_VIEW_EXIT );
+		return;
+	}
+	// Construct the agenda event view
+	mAgendaEventView = new AgendaEventView(this);
+	mAgendaEventView->execute(entry, action);
+
+	OstTraceFunctionExit0( DUP1_AGENDAEVENTVIEWERPRIVATE_VIEW_EXIT );
+}
+
+/*!
+	Launches the event viewer.File handle of any vcs/ics
+	file can be given as input to view the calendar entry information.
+
+	\param fileHandle reference to the file handle of vcs/ics file
+ */
+void AgendaEventViewerPrivate::view(const QFile &fileHandle, 
+                                    AgendaEventViewer::Actions action)
+{
+    OstTraceFunctionEntry0( DUP1_AGENDAEVENTVIEWERPRIVATE_VIEW_ENTRY );
+
+	// Using calendar importer read the filehandle and generate agenda entry
+	QString filePath = fileHandle.fileName();
+	QString nativeFilePath = QDir::toNativeSeparators(filePath);
+	AgendaEntry entry;
+	mAgendaUtil->importvCalendar(nativeFilePath, entry);
+	if (!entry.isNull()) {
+		mAgendaEventView = new AgendaEventView(this);
+		mAgendaEventView->execute(entry, action);
+	} else {
+        //store the file name
+        mFileName = filePath ;
+        mAction = action ;
+        mShowEventViewByFileHandle = true;
+        q_ptr->viewingCompleted(QDateTime::currentDateTime().date());
+	}
+	OstTraceFunctionExit0( DUP2_AGENDAEVENTVIEWERPRIVATE_VIEW_EXIT );
+}
+
+/*!
+	Launches the event viewer.AgendaEntry can be given as input to view the
+	calendar entry information
+ */
+void AgendaEventViewerPrivate::view(AgendaEntry entry, 
+                                    AgendaEventViewer::Actions action)
+{
+    OstTraceFunctionEntry0( DUP2_AGENDAEVENTVIEWERPRIVATE_VIEW_ENTRY );
+
+	if (entry.isNull()) {
+			OstTraceFunctionExit0( DUP3_AGENDAEVENTVIEWERPRIVATE_VIEW_EXIT );
+			return;
+		}
+	// Construct the agenda event view
+	mAgendaEventView = new AgendaEventView(this);
+	mAgendaEventView->execute(entry, action);
+
+	OstTraceFunctionExit0( DUP4_AGENDAEVENTVIEWERPRIVATE_VIEW_EXIT );
+}
+
+/*!
+	Emits the signal viewing completed to the clients
+
+	\param status true if viewing completed otherwise false.
+ */
+void AgendaEventViewerPrivate::viewingCompleted(const QDate date)
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_VIEWINGCOMPLETED_ENTRY );
+
+	emit q_ptr->viewingCompleted(date);
+
+	// Cleanup viewer.
+	if (mAgendaEventView) {
+		mAgendaEventView->deleteLater();
+	}
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_VIEWINGCOMPLETED_EXIT );
+}
+
+/*!
+	Emits the signal editing started to the clients
+ */
+void AgendaEventViewerPrivate::editingStarted()
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_EDITINGSTARTED_ENTRY );
+
+	emit q_ptr->editingStarted();
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_EDITINGSTARTED_EXIT );
+}
+
+/*!
+	Emits the signal editing completed to the clients
+ */
+void AgendaEventViewerPrivate::editingCompleted()
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_EDITINGCOMPLETED_ENTRY );
+
+	emit q_ptr->editingCompleted();
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_EDITINGCOMPLETED_EXIT );
+}
+
+/*!
+	Emits the signal deleting started to the clients
+ */
+void AgendaEventViewerPrivate::deletingStarted()
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_DELETINGSTARTED_ENTRY );
+
+	emit q_ptr->deletingStarted();
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_DELETINGSTARTED_EXIT );
+}
+
+/*!
+	Emits the signal deleting completed to the clients
+ */
+void AgendaEventViewerPrivate::deletingCompleted()
+{
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_DELETINGCOMPLETED_ENTRY );
+
+	emit q_ptr->deletingCompleted();
+
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_DELETINGCOMPLETED_EXIT );
+}
+
+
+/*!
+     calls when instances of calenInstanceview and 
+     entryInstanceview is created successfully
+ */
+void AgendaEventViewerPrivate::viewCreationCompleted(int error)
+    {
+    OstTraceFunctionEntry0( AGENDAEVENTVIEWERPRIVATE_VIEWCREATIONCOMPLETED_ENTRY );
+    
+    if((KErrNone == error))
+        {
+        AgendaEntry entry;
+        if (mShowEventViewById)
+            {
+            entry = mAgendaUtil->fetchById(mId);
+            }
+        else if(mShowEventViewByFileHandle)
+            {
+            QString nativeFilePath = QDir::toNativeSeparators(mFileName);
+            mAgendaUtil->importvCalendar(nativeFilePath, entry);
+            }
+        //if entry is there , then show the view
+        if (!entry.isNull()) 
+            {
+            mAgendaEventView = new AgendaEventView(this);
+            mAgendaEventView->execute(entry, mAction);
+            }
+        }      
+    //reset the variables
+    mId = 0;
+    mFileName.clear();
+    mShowEventViewById = false;
+    mShowEventViewByFileHandle = false;
+    mAction = AgendaEventViewer::ActionNothing;
+	OstTraceFunctionExit0( AGENDAEVENTVIEWERPRIVATE_VIEWCREATIONCOMPLETED_EXIT );
+	}
+
+// ----------------------------------------------------------------------------
+// AgendaEventViewerPrivate::saveAndCloseEditor
+// save the entry and close the editor
+// ----------------------------------------------------------------------------
+//
+void AgendaEventViewerPrivate::saveAndCloseEditor()
+{
+    mAgendaEventView->saveAndCloseEditor();
+}
+
+
+// ----------------------------------------------------------------------------
+// AgendaEventViewerPrivate::closeAgendaEventView
+// close the agenda event view 
+// ----------------------------------------------------------------------------
+//
+void AgendaEventViewerPrivate::closeAgendaEventView()
+{
+    mAgendaEventView->closeAgendaEventView(); 
+}
+// End of file