calendarui/calenviewerservice/src/calenviewerservice.cpp
author hgs
Mon, 28 Jun 2010 15:22:02 +0530
changeset 45 b6db4fd4947b
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// System includes
hgs
parents:
diff changeset
    19
#include <QFile>
hgs
parents:
diff changeset
    20
#include <QCoreApplication>
hgs
parents:
diff changeset
    21
#include <agendautil.h>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// User includes
hgs
parents:
diff changeset
    24
#include "calenviewerservice.h"
hgs
parents:
diff changeset
    25
#include "agendaeventviewer.h"
hgs
parents:
diff changeset
    26
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    27
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    28
#include "calenviewerserviceTraces.h"
hgs
parents:
diff changeset
    29
#endif
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
// CalenViewerService::CalenViewerService
hgs
parents:
diff changeset
    34
// Rest of the details are commented in the header
hgs
parents:
diff changeset
    35
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    36
//
hgs
parents:
diff changeset
    37
CalenViewerService::CalenViewerService(QObject* parent) : 
hgs
parents:
diff changeset
    38
	XQServiceProvider(QLatin1String("calenviewerservice.com.nokia.symbian.IFileView"), parent),
hgs
parents:
diff changeset
    39
	mFileName(0),
hgs
parents:
diff changeset
    40
	mViewer(NULL),
hgs
parents:
diff changeset
    41
	mEntryViewReady(false),
hgs
parents:
diff changeset
    42
	mWaitingForEntryViewReady(false),
hgs
parents:
diff changeset
    43
	mAsyncReqIndex(0)
hgs
parents:
diff changeset
    44
{
hgs
parents:
diff changeset
    45
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_CALENVIEWERSERVICE_ENTRY );
hgs
parents:
diff changeset
    46
    
hgs
parents:
diff changeset
    47
    // Construct the agenda util object
hgs
parents:
diff changeset
    48
    mAgendaUtil = new AgendaUtil();
hgs
parents:
diff changeset
    49
    connect(mAgendaUtil, SIGNAL(entryViewCreationCompleted(int)), this, SLOT(entryViewReady(int)));
hgs
parents:
diff changeset
    50
    connect(this, SIGNAL(clientDisconnected()), this, SLOT(handleClientDisconnected()));
hgs
parents:
diff changeset
    51
    
hgs
parents:
diff changeset
    52
	publishAll();
hgs
parents:
diff changeset
    53
	
hgs
parents:
diff changeset
    54
	OstTraceFunctionExit0( CALENVIEWERSERVICE_CALENVIEWERSERVICE_EXIT );
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    58
// CalenViewerService::~CalenViewerService
hgs
parents:
diff changeset
    59
// Rest of the details are commented in the header
hgs
parents:
diff changeset
    60
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
//
hgs
parents:
diff changeset
    62
CalenViewerService::~CalenViewerService()
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    OstTraceFunctionEntry0( DUP1_CALENVIEWERSERVICE_CALENVIEWERSERVICE_ENTRY );
hgs
parents:
diff changeset
    65
    
hgs
parents:
diff changeset
    66
    // Cleanup
hgs
parents:
diff changeset
    67
    if (mAgendaUtil) {
hgs
parents:
diff changeset
    68
        delete mAgendaUtil;
hgs
parents:
diff changeset
    69
        mAgendaUtil = NULL;
hgs
parents:
diff changeset
    70
    }
hgs
parents:
diff changeset
    71
    if (mViewer) {
hgs
parents:
diff changeset
    72
        mViewer->deleteLater();
hgs
parents:
diff changeset
    73
        mViewer = NULL;
hgs
parents:
diff changeset
    74
    }
hgs
parents:
diff changeset
    75
    
hgs
parents:
diff changeset
    76
    OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_CALENVIEWERSERVICE_EXIT );
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    80
// CalenViewerService::view
hgs
parents:
diff changeset
    81
// Rest of the details are commented in the header
hgs
parents:
diff changeset
    82
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    83
//
hgs
parents:
diff changeset
    84
bool CalenViewerService::view(QString file)
hgs
parents:
diff changeset
    85
{	
hgs
parents:
diff changeset
    86
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_VIEW_ENTRY );
hgs
parents:
diff changeset
    87
    
hgs
parents:
diff changeset
    88
    // Set the request as asynchronous
hgs
parents:
diff changeset
    89
    mAsyncReqIndex = setCurrentRequestAsync();
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
    // Store the file name
hgs
parents:
diff changeset
    92
	mFileName = file;
hgs
parents:
diff changeset
    93
	
hgs
parents:
diff changeset
    94
	if (mEntryViewReady) {
hgs
parents:
diff changeset
    95
	    // View the entry only after the entry view
hgs
parents:
diff changeset
    96
	    // is completely instantiated
hgs
parents:
diff changeset
    97
	    viewEntry();
hgs
parents:
diff changeset
    98
	} else {
hgs
parents:
diff changeset
    99
	    OstTrace0( TRACE_NORMAL, DUP1_CALENVIEWERSERVICE_VIEW, "Entry view not ready" );
hgs
parents:
diff changeset
   100
	    // Mark the flag to indicate that after the
hgs
parents:
diff changeset
   101
	    // entry view is ready, the file must be opened
hgs
parents:
diff changeset
   102
	    mWaitingForEntryViewReady = true;
hgs
parents:
diff changeset
   103
	}
hgs
parents:
diff changeset
   104
	
hgs
parents:
diff changeset
   105
	OstTraceFunctionExit0( CALENVIEWERSERVICE_VIEW_EXIT );
hgs
parents:
diff changeset
   106
	
hgs
parents:
diff changeset
   107
	return true;
hgs
parents:
diff changeset
   108
}
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   111
// CalenViewerService::view
hgs
parents:
diff changeset
   112
// Rest of the details are commented in the header
hgs
parents:
diff changeset
   113
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   114
//
hgs
parents:
diff changeset
   115
bool CalenViewerService::view(XQSharableFile sf)
hgs
parents:
diff changeset
   116
{	
hgs
parents:
diff changeset
   117
    OstTraceFunctionEntry0( DUP1_CALENVIEWERSERVICE_VIEW_ENTRY );
hgs
parents:
diff changeset
   118
    
hgs
parents:
diff changeset
   119
    Q_UNUSED(sf);
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    OstTrace0( TRACE_NORMAL, DUP2_CALENVIEWERSERVICE_VIEW, "Functionality not yet present" );
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
    // Set the request as asynchronous
hgs
parents:
diff changeset
   124
    mAsyncReqIndex = setCurrentRequestAsync();
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
	// TODO: Convert RFile to QFile handle and view
hgs
parents:
diff changeset
   127
	// Support for this has to come from Qt
hgs
parents:
diff changeset
   128
	complete(false);
hgs
parents:
diff changeset
   129
	
hgs
parents:
diff changeset
   130
	OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_VIEW_EXIT );
hgs
parents:
diff changeset
   131
	
hgs
parents:
diff changeset
   132
	return true;
hgs
parents:
diff changeset
   133
}
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   136
// CalenViewerService::entryViewReady
hgs
parents:
diff changeset
   137
// Rest of the details are commented in the header
hgs
parents:
diff changeset
   138
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   139
//
hgs
parents:
diff changeset
   140
void CalenViewerService::entryViewReady(int error)
hgs
parents:
diff changeset
   141
{
hgs
parents:
diff changeset
   142
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_ENTRYVIEWREADY_ENTRY );
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    Q_UNUSED(error);
hgs
parents:
diff changeset
   145
    
hgs
parents:
diff changeset
   146
    mEntryViewReady = true;
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    // Now open the file for viewing
hgs
parents:
diff changeset
   149
    if (mWaitingForEntryViewReady) {
hgs
parents:
diff changeset
   150
        // If control comes here, it means that
hgs
parents:
diff changeset
   151
        // the request to view the file has come before
hgs
parents:
diff changeset
   152
        // the entry view is ready. So view the entry now
hgs
parents:
diff changeset
   153
        viewEntry();
hgs
parents:
diff changeset
   154
    }
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    OstTraceFunctionExit0( CALENVIEWERSERVICE_ENTRYVIEWREADY_EXIT );
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   160
// CalenViewerService::handleClientDisconnected
hgs
parents:
diff changeset
   161
// Rest of the details are commented in the header
hgs
parents:
diff changeset
   162
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   163
//
hgs
parents:
diff changeset
   164
void CalenViewerService::handleClientDisconnected()
hgs
parents:
diff changeset
   165
{
hgs
parents:
diff changeset
   166
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_HANDLECLIENTDISCONNECTED_ENTRY );
hgs
parents:
diff changeset
   167
    
hgs
parents:
diff changeset
   168
    // Just exit the application
hgs
parents:
diff changeset
   169
    qApp->quit();
hgs
parents:
diff changeset
   170
    
hgs
parents:
diff changeset
   171
    OstTraceFunctionExit0( CALENVIEWERSERVICE_HANDLECLIENTDISCONNECTED_EXIT );
hgs
parents:
diff changeset
   172
}
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   175
// CalenViewerService::viewEntry
hgs
parents:
diff changeset
   176
// Rest of the details are commented in the header
hgs
parents:
diff changeset
   177
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   178
//
hgs
parents:
diff changeset
   179
void CalenViewerService::viewEntry()
hgs
parents:
diff changeset
   180
{
hgs
parents:
diff changeset
   181
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_VIEWENTRY_ENTRY );
hgs
parents:
diff changeset
   182
    
hgs
parents:
diff changeset
   183
    if (mFileName.isEmpty()) {
hgs
parents:
diff changeset
   184
        // Invalid file name or viewer is already being viewed
hgs
parents:
diff changeset
   185
        OstTrace0( TRACE_NORMAL, CALENVIEWERSERVICE_VIEWENTRY, "Filename is empty" );
hgs
parents:
diff changeset
   186
        
hgs
parents:
diff changeset
   187
        // Just exit the application
hgs
parents:
diff changeset
   188
        qApp->quit();
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
        return;
hgs
parents:
diff changeset
   191
    }
hgs
parents:
diff changeset
   192
    QFile fileHandle(mFileName);
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
    if (!mViewer) {
hgs
parents:
diff changeset
   195
        mViewer = new AgendaEventViewer(mAgendaUtil, this);
hgs
parents:
diff changeset
   196
        connect(mViewer, SIGNAL(viewingCompleted()), qApp, SLOT(quit()));
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
    
hgs
parents:
diff changeset
   199
    // TODO : No indication if the parsing of vcal/ical is successful
hgs
parents:
diff changeset
   200
    mViewer->view(fileHandle, AgendaEventViewer::ActionSave);
hgs
parents:
diff changeset
   201
    complete(true);
hgs
parents:
diff changeset
   202
    
hgs
parents:
diff changeset
   203
    OstTraceFunctionExit0( DUP1_CALENVIEWERSERVICE_VIEWENTRY_EXIT );
hgs
parents:
diff changeset
   204
}
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   207
// CalenViewerService::complete
hgs
parents:
diff changeset
   208
// Rest of the details are commented in the header
hgs
parents:
diff changeset
   209
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   210
//
hgs
parents:
diff changeset
   211
void CalenViewerService::complete(bool ok)
hgs
parents:
diff changeset
   212
{
hgs
parents:
diff changeset
   213
    OstTraceFunctionEntry0( CALENVIEWERSERVICE_COMPLETE_ENTRY );
hgs
parents:
diff changeset
   214
    
hgs
parents:
diff changeset
   215
    // TODO : Pass return value based on whether parsing
hgs
parents:
diff changeset
   216
    // of vcal or ical is successful or not
hgs
parents:
diff changeset
   217
    completeRequest(mAsyncReqIndex, ok);
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
    OstTraceFunctionExit0( CALENVIEWERSERVICE_COMPLETE_EXIT );
hgs
parents:
diff changeset
   220
}
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
// End of file	--Don't remove this.
hgs
parents:
diff changeset
   223