calendarui/calenplugins/agendaeventviewerplugin/src/agendaeventviewerplugin.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:57:40 +0300
changeset 18 c198609911f9
child 23 fd30d51f876b
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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 AgendaEventViewerPlugin class
*
*/

// User Includes.
#include "agendaeventviewerplugin.h"
#include "agendaentry.h"

/*!
	\class AgendaEventViewerPlugin

	To view entry in agenda event viewer plugin.
	To delete this class object use deleteLater().
 */

/*!
	\fn void AgendaEventViewerPlugin::viewingCompleted(bool status = true)

	Signal is emitted when viewing of the agenda entry is complete
	After receiving this signal use deleteLater() to detele this class object.

 */

/*!
	\fn void AgendaEventViewerPlugin::editingStarted()

	Signal is emitted when editing of the agenda entry is start

 */

/*!
	\fn void AgendaEventViewerPlugin::editingCompleted()

	Signal is emitted when editing of the agenda entry is complete

 */

/*!
	\fn void AgendaEventViewerPlugin::deletingStarted()

	Signal is emitted when deleting of the agenda entry is start

 */

/*!
	\fn void AgendaEventViewerPlugin::deletingCompleted()

	Signal is emitted when deleting of the agenda entry is complete

 */

/*!
	Constructor.

	\param parent Pointer to QObject.
 */
AgendaEventViewerPlugin::AgendaEventViewerPlugin(QObject *parent)
:mEventViewer(NULL)
{
Q_UNUSED(parent)
}

/*!
	Destructor.
 */
AgendaEventViewerPlugin::~AgendaEventViewerPlugin()
{
}

/*!
	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 AgendaEventViewerPlugin::viewEvent(const ulong id,
                                        Actions action,
                                        AgendaUtil *agendaUtil)
{
	CreateAgendaEventViewer(agendaUtil);

	AgendaEventViewer::Actions eventviewerAction =
	        CreateAgendaEventViewerAction(action);
	if (mEventViewer) {
		mEventViewer->view(id, eventviewerAction);
	}
}

/*!
	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 AgendaEventViewerPlugin::viewEvent(const QFile &fileHandle,
                                        Actions action,
                                        AgendaUtil *agendaUtil)
{
	CreateAgendaEventViewer(agendaUtil);
	AgendaEventViewer::Actions eventviewerAction =
	        CreateAgendaEventViewerAction(action);
	if (mEventViewer) {
		mEventViewer->view(fileHandle, eventviewerAction);
	}
}

/*!
	Launches the event viewer.
	AgendaEntry can be given as input to view the calendar entry information.
	
	\param entry Object of calendar entry to be viewed
 */
void AgendaEventViewerPlugin::viewEvent(AgendaEntry entry,
                                        Actions action,
                                        AgendaUtil *agendaUtil)
{
	CreateAgendaEventViewer(agendaUtil);
	AgendaEventViewer::Actions eventviewerAction =
	        CreateAgendaEventViewerAction(action);
	if (mEventViewer) {
		mEventViewer->view(entry, eventviewerAction);
	}
}

/*!
	Create a Agenda Interface pointer
	\param agendaUtil Pointer of AgendaUtil
	\return Return Pointer of AgendaEventViewer
 */
void AgendaEventViewerPlugin::CreateAgendaEventViewer(
														AgendaUtil *agendaUtil)
{
	if (agendaUtil) {
		mEventViewer = new AgendaEventViewer(agendaUtil, this);
	} else {
		mEventViewer = new AgendaEventViewer(this);
	}

	if (mEventViewer) {
		connect(mEventViewer, SIGNAL(viewingCompleted(bool)), this,
		        SLOT(handleViewingCompleted(bool)));
		connect(mEventViewer, SIGNAL(editingStarted()), this,
		        SLOT(handleEditingStarted()));
		connect(mEventViewer, SIGNAL(editingCompleted()), this,
		        SLOT(handleEditingCompleted()));
		connect(mEventViewer, SIGNAL(deletingStarted()), this,
		        SLOT(handleDeletingStarted()));
		connect(mEventViewer, SIGNAL(deletingCompleted()), this,
		        SLOT(handleDeletingCompleted()));
	}
}

/*!
	Create AgendaEventViewer Action enum from EventViewerPluginInterface Action enum
	\param action EventViewerPluginInterface Action enum
	\return Return AgendaEventViewer Action enum
 */
AgendaEventViewer::Actions AgendaEventViewerPlugin::
								CreateAgendaEventViewerAction(Actions action)
{
	switch (action) {
		case EventViewerPluginInterface::ActionEdit:
			return AgendaEventViewer::ActionEdit;
		case EventViewerPluginInterface::ActionDelete:
			return AgendaEventViewer::ActionDelete;
		case EventViewerPluginInterface::ActionEditDelete:
			return AgendaEventViewer::ActionEditDelete;
		case EventViewerPluginInterface::ActionSave:
			return AgendaEventViewer::ActionSave;
	}
	
	return AgendaEventViewer::ActionEditDelete;
}

/*!
    Emits the signal viewing completed to the clients

    \param status true if viewing completed otherwise false.
 */
void AgendaEventViewerPlugin::handleViewingCompleted(bool status)
{
	Q_UNUSED(status)
	emit viewingCompleted();

	// Cleanup viewer.
	if (mEventViewer) {
		mEventViewer->deleteLater();
	}

}

/*!
    Emits the signal editing started to the clients
 */
void AgendaEventViewerPlugin::handleEditingStarted()
{
	emit editingStarted();
}

/*!
    Emits the signal editing completed to the clients
 */
void AgendaEventViewerPlugin::handleEditingCompleted()
{
	emit editingCompleted();
}

/*!
    Emits the signal deleting started to the clients
 */
void AgendaEventViewerPlugin::handleDeletingStarted()
{
	emit deletingStarted();
}

/*!
    Emits the signal deleting completed to the clients
 */
void AgendaEventViewerPlugin::handleDeletingCompleted()
{
	emit deletingCompleted();
}

Q_EXPORT_PLUGIN2(agendaeventviewerplugin, AgendaEventViewerPlugin)

// End of file