diff -r 2e1adbfc62af -r ee64f059b8e1 qtinternetradio/irqstatisticsreport/src/irqstatisticsreporter.cpp --- a/qtinternetradio/irqstatisticsreport/src/irqstatisticsreporter.cpp Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,463 +0,0 @@ -/* -* Copyright (c) 2009-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: Qt wrapper class implementation for CIRReportGenerator -* -*/ - -#include "irsessionlogger.h" // CIRReportGenerator - -#include "irqstatisticsreporter.h" -#include "irqnetworkcontroller.h" -#include "irqreportsender.h" - -//Network Indicator -_LIT(KGPRS,"gprs"); -_LIT(KWCDMA,"wcdma"); -_LIT(KWLAN,"wlan"); -_LIT(KCDMA2000,"cdma2000"); -_LIT(KEDGE,"edge"); - -//Music Shop Type -_LIT(KFind,"find"); -_LIT(KLaunch,"launch"); - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::openInstance() -// Static function to get a singleton instance of IRQStatisticsReporter -// --------------------------------------------------------------------------- -// -EXPORT_C IRQStatisticsReporter* IRQStatisticsReporter::openInstance(IRQIsdsClient *aIsdsClient) -{ - // Get singleton instance - IRQStatisticsReporter* reportGenerator = - reinterpret_cast(Dll::Tls()); - - if (NULL == reportGenerator) - { - TRAPD(error, reportGenerator = createInstanceL(aIsdsClient)); - if (KErrNone != error) - { - delete reportGenerator; - reportGenerator = NULL; - Dll::SetTls(NULL); - } - } - else - { - reportGenerator->iSingletonInstances++; - } - - return reportGenerator; -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::closeInstance() -// Close a singleton instance of IRQStatisticsReporter -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::closeInstance() -{ - iSingletonInstances--; - - if (0 == iSingletonInstances) - { - Dll::SetTls(NULL); - delete this; - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::IRQStatisticsReporter() -// Creates IRQStatisticsReporter instance -// --------------------------------------------------------------------------- -// -IRQStatisticsReporter* IRQStatisticsReporter::createInstanceL(IRQIsdsClient *aIsdsClient) -{ - IRQStatisticsReporter* reportGenerator = new (ELeave) IRQStatisticsReporter(); - reportGenerator->constructL(aIsdsClient); - User::LeaveIfError(Dll::SetTls(reportGenerator)); - reportGenerator->iSingletonInstances = 1; - - return reportGenerator; -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::IRQStatisticsReporter() -// Constructor. -// --------------------------------------------------------------------------- -// -IRQStatisticsReporter::IRQStatisticsReporter():iBody(NULL), - iSender(NULL), - iNetworkController(NULL), - iCurrentNetwork(0), - iHomeOperator(0), - iSingletonInstances(0) -{ - -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::constructL() -// Two-Phase Constructor. -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::constructL(IRQIsdsClient *aIsdsClient) -{ - iBody = CIRReportGenerator::OpenL(); - - iNetworkController = IRQNetworkController::openInstance(); - - iSender = new IRQReportSender(aIsdsClient); - - if(iBody && iSender) - { - iBody->SetDbStatusObserser(iSender); - } - - connect(iSender, SIGNAL(reportSent()), this, SLOT(reportSent())); -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::~IRQStatisticsReporter() -// Destructor. -// --------------------------------------------------------------------------- -// -IRQStatisticsReporter::~IRQStatisticsReporter() -{ - if(iBody) - { - iBody->SetDbStatusObserser(NULL); - iBody->Close(); - } - - if(iNetworkController) - { - iNetworkController->closeInstance(); - } - - delete iSender; - iSender = NULL; -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::sessionStarted() -// starts a new session -// --------------------------------------------------------------------------- -// -EXPORT_C bool IRQStatisticsReporter::sessionStarted(const int aChanneldId, const IRQConnectedFrom aConnectedFrom) -{ - if(iBody) - { - updateConnectedFrom(aConnectedFrom); - iBody->UpdateChannelID(aChanneldId); - updateConnectionType(); - - TRAPD(error,iBody->SessionStartedL()); - if(error) - { - return false; - } - else - { - return true; - } - } - return false; -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::markSessionStart() -// marks the start of a session -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::markSessionStart() -{ - if(iBody) - { - iBody->MarkSessionStart(); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::suspendSession() -// function handle session suspend -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::suspendSession() -{ - if(iBody) - { - iBody->HandleStopEvents(EFalse); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::restartSession() -// function handle session restart -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::restartSession() -{ - if(iBody) - { - iBody->HandleStopEvents(ETrue); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::sessionEnded() -// ends the session -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::sessionEnded(const IRQTerminatedType aTerminatedBy) -{ - if(iBody) - { - updateTerminatedBy(aTerminatedBy); - TRAP_IGNORE(iBody->SessionEndL(EFalse)); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::logServerResult() -// logs server connection result -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::logServerResult(const QString& aUrl, const IRQError aServerResult) -{ - if(iBody) - { - TPtrC url(reinterpret_cast(aUrl.utf16())); - switch(aServerResult) - { - case EIRQErrorNone: - iBody->LogServerResult(url,EIRConnected); - break; - case EIRQPlayerErrorServerFull: - iBody->LogServerResult(url,EIRFull); - break; - case EIRQPlayerErrorTimeOut: - iBody->LogServerResult(url,EIRConnTimeOut); - break; - case EIRQPlayerErrorConnectingFailed: - iBody->LogServerResult(url,EIRConnFailed); - break; - default: - break; - } - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::logNmsEvents() -// logs nmsEvents to Xml file -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::logNmsEvent(const IRQNmsType aNmsType, const int aChanneldId) -{ - TRAP_IGNORE(doLogNmsEventL(aNmsType,aChanneldId)); -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::doLogNmsEventsL() -// logs nmsEvents to Xml file -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::doLogNmsEventL(const IRQNmsType aNmsType, const int aChanneldId) -{ - if(iBody) - { - updateNmsType(aNmsType); - iBody->UpdateNmsChannelID(aChanneldId); - iBody->NmsLogStartedL(); - iBody->WriteNmsLogtoXmlL(); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::logSongRecogEvent() -// logs songRecog event to Xml file -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::logSongRecogEvent() -{ - if(iBody) - { - iBody->LogSongRecog(); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateCurrentNetwork() -// updates the current network -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::updateCurrentNetwork(const QString &aCurrentNwkMCC, const QString &aCurrentNwkMNC) -{ - QString nwkCode = aCurrentNwkMCC + aCurrentNwkMNC; - iCurrentNetwork = nwkCode.toInt(); - iBody->UpdateCurrentNetwork(iCurrentNetwork); - iBody->UpdateCurrentBrowseNetwork(iCurrentNetwork); - iBody->UpdateNmsCurrentNetwork(iCurrentNetwork); -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateHomeOperator() -// updates the home network -// --------------------------------------------------------------------------- -// -EXPORT_C void IRQStatisticsReporter::updateHomeOperator(const QString &aHomeNetworkMCC, const QString &aHomeNetworkMNC) -{ - QString nwkCode = aHomeNetworkMCC + aHomeNetworkMNC; - iHomeOperator = nwkCode.toInt(); - iBody->UpdateHomeOperator(iHomeOperator); - iBody->UpdateNmsHomeOperator(iHomeOperator); -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::reportSent() -// should be called after report is sent to isds server -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::reportSent() -{ - if(iBody) - { - iBody->ReportSent(); - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateTerminatedBy() -// updates the termination status -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::updateTerminatedBy(const IRQTerminatedType aTerminatedBy) -{ - if(iBody) - { - switch(aTerminatedBy) - { - case EIRQUserTerminated: - iBody->UpdateTerminatedBy(EUserTerminated); - break; - case EIRQNoConnectionToServer: - iBody->UpdateTerminatedBy(ENoConnectionToServer); - break; - case EIRQNoConnectionToNetwork: - iBody->UpdateTerminatedBy(ENoConnectionToNetwork); - break; - default: - // do NOT cover all cases - iBody->UpdateTerminatedBy(EUserTerminated); - break; - } - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateConnectedFrom() -// updateds connected information -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::updateConnectedFrom(const IRQConnectedFrom aConnectedFrom) -{ - if(iBody) - { - switch(aConnectedFrom) - { - case EIRQIsds: - iBody->UpdateConnectedFrom(EIRIsds); - break; - case EIRQPresetAdhoc: - iBody->UpdateConnectedFrom(EIRPresetAdhoc); - break; - case EIRQPresetIsds: - iBody->UpdateConnectedFrom(EIRPresetIsds); - break; - case EIRQHistoryAdhoc: - iBody->UpdateConnectedFrom(EIRHistoryAdhoc); - break; - case EIRQHistoryIsds: - iBody->UpdateConnectedFrom(EIRHistoryIsds); - break; - case EIRQAdhocManual: - iBody->UpdateConnectedFrom(EIRAdhocManual); - break; - case EIRQAdhocExternal: - iBody->UpdateConnectedFrom(EIRAdhocExternal); - break; - default: - break; - } - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateConnectionType() -// updates the connection type -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::updateConnectionType() -{ - if(iBody && iNetworkController) - { - IRQConnectionType connectionType = iNetworkController->identifyConnectionType(); - switch(connectionType) - { - case EIRQGprs: - iBody->UpdateConnectionType(KGPRS); - break; - case EIRQWcdma: - iBody->UpdateConnectionType(KWCDMA); - break; - case EIRQCdma2000: - iBody->UpdateConnectionType(KCDMA2000); - break; - case EIRQWiFi: - iBody->UpdateConnectionType(KWLAN); - break; - case EIRQEdge: - iBody->UpdateConnectionType(KEDGE); - break; - default: - // do NOT cover all cases - iBody->UpdateConnectionType(KNullDesC); - break; - } - } -} - -// --------------------------------------------------------------------------- -// IRQStatisticsReporter::updateNmsType() -// updates the nokia music shop access type -// --------------------------------------------------------------------------- -// -void IRQStatisticsReporter::updateNmsType(const IRQNmsType aNmsType) -{ - if(iBody) - { - switch(aNmsType) - { - case EIRQFind: - iBody->UpdateNmsType(KFind); - break; - case EIRQLaunch: - iBody->UpdateNmsType(KLaunch); - break; - default: - break; - } - } -}