phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetnetworkhandler.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetnetworkhandler.cpp Fri Jun 04 10:19:18 2010 +0100
@@ -0,0 +1,364 @@
+/*
+ * Copyright (c) 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:
+ *
+ */
+
+#include <networkhandlingproxy.h>
+#include <cnwsession.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <settingsinternalcrkeys.h>
+#include "infowidgetnetworkhandler.h"
+#include "infowidgetlogging.h"
+
+
+/*!
+ \class InfoWidgetNetworkHandler
+ \brief Handles network specific functionality of
+ Operator info widget
+*/
+
+/*!
+ InfoWidgetNetworkHandler::InfoWidgetNetworkHandler()
+*/
+InfoWidgetNetworkHandler::InfoWidgetNetworkHandler(QObject *parent)
+ :
+ QObject(parent),
+ m_nwSession(0)
+{
+ DPRINT << ": IN";
+
+ // Initialize key
+ // ToDo: need to check if preference is ON initially
+ enableMcn();
+
+ CNWSession *session = 0;
+ QT_TRAP_THROWING(session = CreateL(*this, m_nwInfo));
+ m_nwSession.reset(session);
+
+ DPRINT << ": OUT";
+}
+
+/*!
+ InfoWidgetNetworkHandler::~InfoWidgetNetworkHandler()
+*/
+InfoWidgetNetworkHandler::~InfoWidgetNetworkHandler()
+{
+ DPRINT;
+
+ // Disable MCN setting,
+ // no display client
+ disableMcn();
+}
+
+/*!
+ InfoWidgetNetworkHandler::suspend()
+*/
+void InfoWidgetNetworkHandler::suspend()
+{
+ DPRINT;
+ disableMcn();
+}
+
+/*!
+ InfoWidgetNetworkHandler::suspend()
+*/
+void InfoWidgetNetworkHandler::resume()
+{
+ DPRINT;
+ enableMcn();
+}
+
+/*!
+ InfoWidgetNetworkHandler::serviceProviderName()
+*/
+QString InfoWidgetNetworkHandler::serviceProviderName() const
+{
+ DPRINT;
+ QString qBuf;
+ qBuf = QString((QChar*)m_nwInfo.iSPName.Ptr(),
+ m_nwInfo.iSPName.Length());
+ DPRINT << ": serviceProviderName: " << qBuf;
+
+ return qBuf;
+}
+
+/*!
+ InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired()
+*/
+bool InfoWidgetNetworkHandler::serviceProviderNameDisplayRequired() const
+{
+ DPRINT;
+ bool displayRequired(true);
+
+ if (m_nwInfo.iServiceProviderNameDisplayReq ==
+ RMobilePhone::KDisplaySPNNotRequired) {
+ displayRequired = false;
+ }
+ DPRINT << ": serviceProviderNameDisplayRequired: " <<
+ displayRequired;
+
+ return displayRequired;
+}
+
+/*!
+ InfoWidgetNetworkHandler::homeZoneTextTag()
+*/
+QString InfoWidgetNetworkHandler::homeZoneTextTag() const
+{
+ DPRINT;
+ QString qBuf;
+ qBuf = QString((QChar*)m_nwInfo.iViagTextTag.Ptr(),
+ m_nwInfo.iViagTextTag.Length());
+ DPRINT << ": homeZoneTextTag: " << qBuf;
+
+ return qBuf;
+}
+
+/*!
+ InfoWidgetNetworkHandler::homeZoneIndicatorType()
+*/
+int InfoWidgetNetworkHandler::homeZoneIndicatorType() const
+{
+ DPRINT;
+ int indicatorType = m_nwInfo.iViagIndicatorType;
+ DPRINT << ": homeZoneIndicatorType: " << indicatorType;
+
+ return indicatorType;
+}
+
+/*!
+ InfoWidgetNetworkHandler::enableMcn()
+*/
+void InfoWidgetNetworkHandler::enableMcn()
+{
+ DPRINT;
+ if (!readMcnDisplayState()) {
+ DPRINT << ": enabling mcn display cenrep";
+ writeMcnDisplayState(true);
+ }
+}
+
+/*!
+ InfoWidgetNetworkHandler::disableMcn()
+*/
+void InfoWidgetNetworkHandler::disableMcn()
+{
+ DPRINT;
+ if (readMcnDisplayState()) {
+ DPRINT << ": disabling mcn display cenrep";
+ writeMcnDisplayState(false);
+ }
+}
+
+/*!
+ InfoWidgetNetworkHandler::mcnName()
+*/
+QString InfoWidgetNetworkHandler::mcnName() const
+{
+ DPRINT;
+ QString qBuf;
+ qBuf = QString((QChar*)m_nwInfo.iMCNName.Ptr(),
+ m_nwInfo.iMCNName.Length());
+ DPRINT << ": mcnName: " << qBuf;
+
+ return qBuf;
+}
+
+/*!
+ InfoWidgetNetworkHandler::mcnIndicatorType()
+*/
+int InfoWidgetNetworkHandler::mcnIndicatorType() const
+{
+ DPRINT;
+ int indicatorType = m_nwInfo.iMCNIndicatorType;
+ DPRINT << ": mcnIndicatorType: " << indicatorType;
+
+ return indicatorType;
+}
+
+
+/*!
+ InfoWidgetNetworkHandler::networkRegistrationStatus()
+*/
+int InfoWidgetNetworkHandler::networkRegistrationStatus() const
+{
+ DPRINT << ": registration status: " <<
+ static_cast<int>(m_nwInfo.iRegistrationStatus);
+
+ return static_cast<int>(m_nwInfo.iRegistrationStatus);
+}
+
+/*!
+ InfoWidgetNetworkHandler::isOnline()
+
+ Check if network registration status is registered and
+ return status accordingly
+*/
+bool InfoWidgetNetworkHandler::isOnline() const
+{
+ bool online(false);
+
+ switch (networkRegistrationStatus()) {
+ case ENWRegisteredBusy: // Fall through
+ case ENWRegisteredOnHomeNetwork: // Fall through
+ case ENWRegisteredRoaming:
+ online = true;
+ break;
+ default:
+ break;
+ }
+
+ DPRINT << ": online: " << online;
+ return online;
+}
+
+/*!
+ InfoWidgetNetworkHandler::logCurrentInfo()
+*/
+void InfoWidgetNetworkHandler::logCurrentInfo()
+{
+ DPRINT << ": IN";
+
+ QString qBuf;
+ DPRINT << "iMCNIndicatorType " << m_nwInfo.iMCNIndicatorType;
+ qBuf = QString((QChar*)m_nwInfo.iMCNName.Ptr(),
+ m_nwInfo.iMCNName.Length());
+ DPRINT << "iMCNName " << qBuf;
+
+ qBuf = QString((QChar*)m_nwInfo.iSPName.Ptr(),m_nwInfo.iSPName.Length());
+ DPRINT << "iSPName " << qBuf;
+ DPRINT << "iServiceProviderNameDisplayReq "
+ << m_nwInfo.iServiceProviderNameDisplayReq;
+
+ DPRINT << "iViagIndicatorType " << m_nwInfo.iViagIndicatorType;
+ qBuf = QString((QChar*)m_nwInfo.iViagTextTag.Ptr(),
+ m_nwInfo.iViagTextTag.Length());
+ DPRINT << "iViagTextTag " << qBuf;
+
+ DPRINT << ": OUT";
+}
+
+/*!
+ InfoWidgetNetworkHandler::HandleNetworkMessage()
+*/
+void InfoWidgetNetworkHandler::HandleNetworkMessage(
+ const TNWMessages aMessage )
+{
+ DPRINT << ": message: " << aMessage;
+
+ bool acceptedMessage = false;
+ switch (aMessage) {
+ case ENWMessageCurrentCellInfoMessage: // Fall through
+ case ENWMessageServiceProviderNameChange: // Fall through
+ case ENWMessageNetworkRegistrationStatusChange: // Fall through
+ acceptedMessage = true;
+ break;
+ default:
+ // not interesting message, filter out
+ DPRINT << ": message filtered out";
+ acceptedMessage = false;
+ }
+
+ if (acceptedMessage) {
+ int result = 0;
+ QT_TRYCATCH_ERROR(result, emit networkDataChanged());
+ if (0 != result) {
+ DPRINT << ": Exception occured while emitting signal:" << result;
+ }
+ }
+}
+
+/*!
+ InfoWidgetNetworkHandler::HandleNetworkError()
+*/
+void InfoWidgetNetworkHandler::HandleNetworkError(
+ const TNWOperation aOperation,
+ TInt aErrorCode )
+{
+ DPRINT << ": operation: " << aOperation <<
+ " error code: " << aErrorCode;
+
+ // Reset invalid data
+ switch (aOperation) {
+ case MNWMessageObserver::ENWGetServiceProviderName:
+ m_nwInfo.iServiceProviderNameDisplayReq =
+ RMobilePhone::KDisplaySPNNotRequired;
+ m_nwInfo.iSPName.Zero();
+ break;
+ default:
+ break;
+ }
+
+ // Emit error signal
+ int result = 0;
+ QT_TRYCATCH_ERROR(result, emit networkError(
+ static_cast<int>(aOperation), static_cast<int>(aErrorCode)));
+ if (0 != result) {
+ DPRINT << ": Exception occured while emitting signal:" << result;
+ }
+}
+
+/*!
+ InfoWidgetNetworkHandler::writeMcnDisplayState()
+
+ Handler for cenrep key writing
+*/
+void InfoWidgetNetworkHandler::writeMcnDisplayState(bool enabled)
+{
+ DPRINT << ": IN";
+
+ XQSettingsManager *settingsManager = new XQSettingsManager(0);
+ XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository,
+ KCRUidNetworkSettings.iUid, KSettingsMcnDisplay);
+ int value;
+ if (enabled) {
+ value = 1;
+ } else {
+ value = 0;
+ }
+ bool result = settingsManager->writeItemValue(settingsKey, value );
+ delete settingsManager;
+
+ DPRINT << ": OUT";
+}
+
+/*!
+ InfoWidgetNetworkHandler::readMcnDisplayState()
+*/
+bool InfoWidgetNetworkHandler::readMcnDisplayState()
+{
+ DPRINT << ": IN";
+ bool mcnDisplayKeyOn(false);
+
+ XQSettingsManager *settingsManager = new XQSettingsManager(0);
+ XQSettingsKey settingsKey(XQSettingsKey::TargetCentralRepository,
+ KCRUidNetworkSettings.iUid, KSettingsMcnDisplay);
+ bool conversionOk(false);
+ int value = settingsManager->readItemValue(
+ settingsKey,
+ XQSettingsManager::TypeInt).toInt(&conversionOk);
+
+ if (conversionOk && value == 1) {
+ mcnDisplayKeyOn = true;
+ }
+ delete settingsManager;
+
+ DPRINT << ": OUT";
+ return mcnDisplayKeyOn;
+}
+
+
+// End of File.