--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/calenviewerservice/src/calenviewerservice.cpp Wed Jun 23 18:11:28 2010 +0300
@@ -0,0 +1,223 @@
+/*
+* 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:
+*
+*/
+
+// System includes
+#include <QFile>
+#include <QCoreApplication>
+#include <agendautil.h>
+
+// User includes
+#include "calenviewerservice.h"
+#include "agendaeventviewer.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "calenviewerserviceTraces.h"
+#endif
+
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::CalenViewerService
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+CalenViewerService::CalenViewerService(QObject* parent) :
+ XQServiceProvider(QLatin1String("calenviewerservice.com.nokia.symbian.IFileView"), parent),
+ mFileName(0),
+ mViewer(NULL),
+ mEntryViewReady(false),
+ mWaitingForEntryViewReady(false),
+ mAsyncReqIndex(0)
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_CALENVIEWERSERVICE_ENTRY );
+
+ // Construct the agenda util object
+ mAgendaUtil = new AgendaUtil();
+ connect(mAgendaUtil, SIGNAL(entryViewCreationCompleted(int)), this, SLOT(entryViewReady(int)));
+ connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnected()));
+
+ publishAll();
+
+ OstTraceFunctionExit0( CALENVIEWERSERVICE_CALENVIEWERSERVICE_EXIT );
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::~CalenViewerService
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+CalenViewerService::~CalenViewerService()
+{
+ OstTraceFunctionEntry0( DUP1_CALENVIEWERSERVICE_CALENVIEWERSERVICE_ENTRY );
+
+ // Cleanup
+ if (mAgendaUtil) {
+ delete mAgendaUtil;
+ mAgendaUtil = NULL;
+ }
+ if (mViewer) {
+ mViewer->deleteLater();
+ mViewer = NULL;
+ }
+
+ OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_CALENVIEWERSERVICE_EXIT );
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::view
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+bool CalenViewerService::view(QString file)
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_VIEW_ENTRY );
+
+ // Set the request as asynchronous
+ mAsyncReqIndex = setCurrentRequestAsync();
+
+ // Store the file name
+ mFileName = file;
+
+ if (mEntryViewReady) {
+ // View the entry only after the entry view
+ // is completely instantiated
+ viewEntry();
+ } else {
+ OstTrace0( TRACE_NORMAL, DUP1_CALENVIEWERSERVICE_VIEW, "Entry view not ready" );
+ // Mark the flag to indicate that after the
+ // entry view is ready, the file must be opened
+ mWaitingForEntryViewReady = true;
+ }
+
+ OstTraceFunctionExit0( CALENVIEWERSERVICE_VIEW_EXIT );
+
+ return true;
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::view
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+bool CalenViewerService::view(XQSharableFile sf)
+{
+ OstTraceFunctionEntry0( DUP1_CALENVIEWERSERVICE_VIEW_ENTRY );
+
+ Q_UNUSED(sf);
+
+ OstTrace0( TRACE_NORMAL, DUP2_CALENVIEWERSERVICE_VIEW, "Functionality not yet present" );
+
+ // Set the request as asynchronous
+ mAsyncReqIndex = setCurrentRequestAsync();
+
+ // TODO: Convert RFile to QFile handle and view
+ // Support for this has to come from Qt
+ complete(false);
+
+ OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_VIEW_EXIT );
+
+ return true;
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::entryViewReady
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+void CalenViewerService::entryViewReady(int error)
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_ENTRYVIEWREADY_ENTRY );
+
+ Q_UNUSED(error);
+
+ mEntryViewReady = true;
+
+ // Now open the file for viewing
+ if (mWaitingForEntryViewReady) {
+ // If control comes here, it means that
+ // the request to view the file has come before
+ // the entry view is ready. So view the entry now
+ viewEntry();
+ }
+
+ OstTraceFunctionExit0( CALENVIEWERSERVICE_ENTRYVIEWREADY_EXIT );
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::handleClientDisconnected
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+void CalenViewerService::handleClientDisconnected()
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_HANDLECLIENTDISCONNECTED_ENTRY );
+
+ // Just exit the application
+ qApp->quit();
+
+ OstTraceFunctionExit0( CALENVIEWERSERVICE_HANDLECLIENTDISCONNECTED_EXIT );
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::viewEntry
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+void CalenViewerService::viewEntry()
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_VIEWENTRY_ENTRY );
+
+ if (mFileName.isEmpty()) {
+ // Invalid file name or viewer is already being viewed
+ OstTrace0( TRACE_NORMAL, CALENVIEWERSERVICE_VIEWENTRY, "Filename is empty" );
+
+ // Just exit the application
+ qApp->quit();
+
+ return;
+ }
+ QFile fileHandle(mFileName);
+
+ if (!mViewer) {
+ mViewer = new AgendaEventViewer(mAgendaUtil, this);
+ connect(mViewer, SIGNAL(viewingCompleted()), qApp, SLOT(quit()));
+ }
+
+ // TODO : No indication if the parsing of vcal/ical is successful
+ mViewer->view(fileHandle, AgendaEventViewer::ActionSave);
+ complete(true);
+
+ OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_VIEWENTRY_EXIT );
+}
+
+// ----------------------------------------------------------------------------
+// CalenViewerService::complete
+// Rest of the details are commented in the header
+// ----------------------------------------------------------------------------
+//
+void CalenViewerService::complete(bool ok)
+{
+ OstTraceFunctionEntry0( CALENVIEWERSERVICE_COMPLETE_ENTRY );
+
+ // TODO : Pass return value based on whether parsing
+ // of vcal or ical is successful or not
+ completeRequest(mAsyncReqIndex, ok);
+
+ OstTraceFunctionExit0( CALENVIEWERSERVICE_COMPLETE_EXIT );
+}
+
+// End of file --Don't remove this.
+