wlanutilities/wlanindicatorplugin/src/wlanindicatorplugin.cpp
branchRCL_3
changeset 24 63be7eb3fc78
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wlanutilities/wlanindicatorplugin/src/wlanindicatorplugin.cpp	Tue Aug 31 16:18:40 2010 +0300
@@ -0,0 +1,223 @@
+/*
+ * 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 <HbTranslator>
+#include <QLocale>
+#include <QtCore/qplugin.h>
+#include <QtCore/QString>
+#include <QtCore/QVariant> 
+#include <QtCore/QMetaType>
+
+#include <HbLabel>
+#include <hbglobal.h>
+#include <hbapplication.h>
+#include <hbindicatorplugininterface.h>
+#include <hbindicatorinterface.h>
+#include "wlanindicatorplugin.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "wlanindicatorpluginTraces.h"
+#endif
+
+Q_EXPORT_PLUGIN(WlanIndicatorPlugin)
+
+const static char IndicatorType[] = "com.nokia.hb.indicator.connectivity.wlanindicatorplugin/1.0";
+
+
+/*!
+    WlanIndicatorPlugin constructor.
+*/
+WlanIndicatorPlugin::WlanIndicatorPlugin() :
+    HbIndicatorInterface(IndicatorType, SettingCategory, InteractionActivated),
+    mError(0)
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_WLANINDICATORPLUGIN_ENTRY, this);
+    mIndicatorTypes << "com.nokia.hb.indicator.connectivity.wlanindicatorplugin/1.0";
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_WLANINDICATORPLUGIN_ENTRY_EXIT, this);
+}
+
+/*!
+    WlanIndicatorPlugin destructor.
+*/
+WlanIndicatorPlugin::~WlanIndicatorPlugin()
+{
+    OstTraceFunctionEntry1(DUP1_WLANINDICATORPLUGIN_WLANINDICATORPLUGIN_ENTRY, this);
+    OstTraceFunctionExit1(DUP1_WLANINDICATORPLUGIN_WLANINDICATORPLUGIN_EXIT, this);
+}
+
+/*!
+    The indicatorTypes returns type of indicator. In this case it is wlanindicatorplugin.
+*/
+QStringList WlanIndicatorPlugin::indicatorTypes() const
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_INDICATORTYPES_ENTRY, this);
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_INDICATORTYPES_EXIT, this);
+
+    return mIndicatorTypes;
+}
+
+/*!
+    The handleClientRequest handles client request to change indicators parameters.
+*/
+bool WlanIndicatorPlugin::accessAllowed(const QString &indicatorType,
+    const QVariantMap &securityInfo) const
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_ACCESSALLOWED_ENTRY, this);
+
+    Q_UNUSED(indicatorType)
+    Q_UNUSED(securityInfo)
+
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_ACCESSALLOWED_EXIT, this);
+
+    return true;
+}
+
+/*!
+    The createIndicator creates indicator plugin instance.
+*/
+HbIndicatorInterface* WlanIndicatorPlugin::createIndicator(
+    const QString &indicatorType)
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_CREATEINDICATOR_ENTRY, this);
+    Q_UNUSED(indicatorType)
+    
+    // Install localization
+    mTranslator = QSharedPointer<HbTranslator>(new HbTranslator("wlanindicatorplugin"));
+
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_CREATEINDICATOR_EXIT, this);
+    return this;
+}
+
+/*!
+    The error returns indicator error to HbIndicatorPluginInterface.
+*/
+int WlanIndicatorPlugin::error() const
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_ERROR_ENTRY, this);
+    OstTrace1( WLANINDICATORPLUGIN_ERR,ERROR,"WlanIndicatorPlugin error %u", mError);
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_ERROR_EXIT, this);
+    return mError;
+}
+
+/*!
+    The handleInteraction is used launch WLAN list view.
+*/
+bool WlanIndicatorPlugin::handleInteraction(InteractionType type)
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_HANDLEINTERACTION_ENTRY, this);
+
+    bool handled = false;
+    QVariantMap data;
+    switch (type) {
+    case InteractionActivated: 
+        // Emit a signal that will inform the client to start the wlan list view 
+        emit userActivated(data);
+        handled = true;
+        break;
+    default:
+        break;
+    }
+
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_HANDLEINTERACTION_EXIT, this);
+
+    return handled;
+}
+
+/*!
+    The handleClientRequest handles client request to change indicators paramters.
+*/
+bool WlanIndicatorPlugin::handleClientRequest(RequestType type, const QVariant &parameter)
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_CLIENTREQUEST_ENTRY, this);
+
+    Q_UNUSED(parameter)
+    bool handled(false);
+    switch (type) {
+    case RequestActivate:
+        if (mParameter != parameter) {
+            mParameter = parameter;
+            emit dataChanged();
+        }     
+        handled = true;
+        break;
+    default:
+        mParameter.clear();
+    }
+    
+    OstTraceFunctionExit1(WLANINDICATORPLUGIN_CLIENTREQUEST_EXIT, this);
+    return handled;
+}
+
+/*!
+    The indicatorData takes care of showing indicator's data.
+*/
+QVariant WlanIndicatorPlugin::indicatorData(int role) const
+{
+    OstTraceFunctionEntry1(WLANINDICATORPLUGIN_INDICATORDATA_ENTRY, this);
+
+    QVariant qvariant("");
+    QList<QVariant> indicatorText;
+    bool validParameters = false;
+        
+    switch (role) {
+    case PrimaryTextRole:
+        qvariant = QString(hbTrId("txt_occ_dblist_indi_menu_wireless_lan"));
+        break;
+    case SecondaryTextRole:
+        if (mParameter.isValid() && mParameter.type() == QVariant::List) {
+        
+            indicatorText = mParameter.toList();
+            validParameters = true;
+            }            
+        if (validParameters && (indicatorText.size() > 0)) {
+        	        
+            if (indicatorText[0] == wlanNotConnected){
+                    qvariant = QString(hbTrId("txt_occ_dblist_wireless_lan_val_not_connected"));
+                    }
+
+            else if (indicatorText[0] == wlanConnected){
+                qvariant = indicatorText[1].toString();
+                }
+            }            
+        else 
+           {
+            OstTrace0( WLANINDICATORPLUGIN_ERR,INVALID_PARAMS,"Invalid indicator parameters");
+           }
+        break;
+        // this is the statusbar icon, which is shown only when a connection is active
+    case MonoDecorationNameRole:
+        OstTraceFunctionExit1(DUP1_WLANINDICATORPLUGIN_INDICATORDATA_EXIT, this);
+        
+        if (mParameter.isValid() && mParameter.type() == QVariant::List) {
+            indicatorText = mParameter.toList();
+            if ((indicatorText.size() > 0) && (indicatorText[0] == wlanConnected)) {
+                qvariant = QString("qtg_status_wlan");
+            }
+        }
+        break;
+        // this is the icon in the indicator
+    case DecorationNameRole:
+        OstTraceFunctionExit1(DUP2_WLANINDICATORPLUGIN_INDICATORDATA_EXIT, this);
+        qvariant = QString("qtg_small_wlan");
+        break;
+    default:
+        OstTraceFunctionExit1(DUP3_WLANINDICATORPLUGIN_INDICATORDATA_EXIT, this);
+        break;
+    }
+    return qvariant;
+}
+