diff -r 30a5f517c615 -r b3d8f88532b7 wlanutilities/wlansniffer/src/wlansnifferlistview.cpp --- a/wlanutilities/wlansniffer/src/wlansnifferlistview.cpp Fri Jun 11 16:27:29 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,330 +0,0 @@ -/* - * 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 - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "wlanqtutils.h" -#include "wlanqtutilswlanap.h" -#include "wlanqtutilswlaniap.h" -#include "wlanqtutilscommon.h" - -#include "wlansniffer.h" -#include "wlansnifferlistview.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "wlansnifferlistviewTraces.h" -#endif - -WlanSnifferListView::WlanSnifferListView(WlanSniffer *appRef) : - mWlanList(NULL), - mStatusLabel(NULL), - mAppRef(appRef), - mConnectingIapId(0), - mContextMenu(NULL) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_WLANSNIFFERLISTVIEW_ENTRY ); - - bool ok = false; - HbDocumentLoader loader; - loader.load(":/docml/wlansnifferlistview.docml", &ok); - Q_ASSERT_X(ok, "Wlan Sniffer", "Invalid docml file"); - - // Load the view by name from the xml file - QGraphicsWidget *widget = loader.findWidget("occ_list"); - Q_ASSERT_X(widget != 0, "Wlan Sniffer", "View not found"); - // Set the WlanListView view to be the widget that was loaded from the xml - setWidget(widget); - - HbMenu *viewMenu = qobject_cast(loader.findWidget("viewMenu")); - Q_ASSERT_X(viewMenu != 0, "Wlan Sniffer", "Menu not found"); - setMenu(viewMenu); - - mWlanList = qobject_cast(loader.findWidget("listWidget")); - Q_ASSERT_X(mWlanList != 0, "Wlan Sniffer", "List not found"); - - mStatusLabel = qobject_cast(loader.findWidget("statusLabel")); - Q_ASSERT_X(mStatusLabel != 0, "Wlan Sniffer", "Label not found"); - - connect( - mWlanList, - SIGNAL(activated(HbListWidgetItem *)), - this, - SLOT(handleListItemActivated(HbListWidgetItem *))); - connect( - mWlanList, - SIGNAL(longPressed(HbListWidgetItem *, const QPointF &)), - this, - SLOT(handleListItemLongPressed(HbListWidgetItem *, const QPointF &))); - - // Set correct orientation when drawing view first time. Orientation change - // on the fly is not yet implemented - if (HbInstance::instance()->allMainWindows().value(0)->orientation() == Qt::Horizontal) { - bool loaded = false; - loader.load( ":/docml/wlansnifferlistview.docml", "landscape", &loaded ); - } // else: portrait is ok by default - - // We need to create a custom navigation action in case the application was - // launched as embedded via QtHighway - if (XQServiceUtil::isEmbedded()) { - HbAction *completeAction = new HbAction(Hb::BackNaviAction, this); - setNavigationAction(completeAction); - connect( - completeAction, - SIGNAL(triggered(bool)), - this, - SIGNAL(completeServiceTriggered())); - // TODO: What to do when exit action is ran? Should we close whole control panel? - } - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_WLANSNIFFERLISTVIEW_EXIT ); -} - -WlanSnifferListView::~WlanSnifferListView() -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_WLANSNIFFERLISTVIEWDESTR_ENTRY ); - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_WLANSNIFFERLISTVIEWDESTR_EXIT ); -} - -void WlanSnifferListView::update() -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_UPDATE_ENTRY ); - - // Do not update list while the context menu is open - if (mContextMenu == NULL) { - QList aps; - QList iaps; - - mAppRef->wlanQtUtils()->availableWlanAps(iaps, aps); - - mWlanList->clear(); - - // Loop the IAPs and APs and create the list items (lists are ordered already by Wlan Qt Utilities) - foreach (WlanQtUtilsWlanIap *iap, iaps) { - mWlanList->addItem(wlanListItemIapCreate(iap)); - } - // Loop the AP's and create the list items - foreach (WlanQtUtilsWlanAp *ap, aps) { - mWlanList->addItem(wlanListItemApCreate(ap)); - } - } - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_UPDATE_EXIT ); -} - -void WlanSnifferListView::updateConnectionOpened(int iapId) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_UPDATECONNECTIONOPENED_ENTRY ); - - mStatusLabel->setPlainText( - hbTrId("txt_occ_grid_connected_to_1").arg(mAppRef->wlanQtUtils()->iap(iapId)->name())); - // Redraw the list so that the connected network moves on top - update(); - mConnectingIapId = 0; - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_UPDATECONNECTIONOPENED_EXIT ); -} - -void WlanSnifferListView::updateConnectionClosed(int iapId) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_UPDATECONNECTIONCLOSED_ENTRY ); - - (void)iapId; - mStatusLabel->setPlainText(hbTrId("txt_occ_grid_not_connected")); - mConnectingIapId = 0; - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_UPDATECONNECTIONCLOSED_EXIT ); -} - -void WlanSnifferListView::handleContextMenuClosed() -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_HANDLECONTEXTMENUCLOSED_ENTRY ); - - // Menu deletes itself, but we need to cleanup the member variable - // in order to enable list updating again - mContextMenu = NULL; - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_HANDLECONTEXTMENUCLOSED_EXIT ); -} - -void WlanSnifferListView::handleListItemActivated(HbListWidgetItem *item) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_HANDLELISTITEMACTIVATED_ENTRY ); - - QVariant data = item->data(); - if (data.canConvert()) { - // Item was an IAP. Connect the IAP or show details view depending on connection state - WlanQtUtilsIap *iap = mAppRef->wlanQtUtils()->iap(data.toInt()); - if (iap->connectionStatus() == WlanQtUtilsConnectionStatusConnected) { - // Switch to details view - emit detailsTriggered(data.toInt()); - } else { - // Connect the IAP - mConnectingIapId = iap->id(); - mStatusLabel->setPlainText(hbTrId("txt_occ_grid_connecting_to_1").arg(iap->name())); - mAppRef->wlanQtUtils()->connectIap(mConnectingIapId); - } - } else { - // Item has to be a WLAN AP, which can't already be connected. Create an IAP and connect it. - Q_ASSERT(data.canConvert()); - WlanQtUtilsWlanAp ap = data.value(); - mConnectingIapId = mAppRef->wlanQtUtils()->createWlanIap(&ap); - WlanQtUtilsIap *iap = mAppRef->wlanQtUtils()->iap(mConnectingIapId); - Q_ASSERT(iap); - mStatusLabel->setPlainText(hbTrId("txt_occ_grid_connecting_to_1").arg(iap->name())); - mAppRef->wlanQtUtils()->connectIap(mConnectingIapId); - } - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_HANDLELISTITEMACTIVATED_EXIT ); -} - -void WlanSnifferListView::handleListItemLongPressed(HbListWidgetItem *item, const QPointF &coords) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_HANDLELISTITEMLONGPRESSED_ENTRY ); - - Q_ASSERT(mContextMenu == NULL); - - if (item->data().canConvert() && item->data().toInt() == - mAppRef->wlanQtUtils()->connectedWlanId()) { - // Connected IAP, add "Disconnect" action - mContextMenu = new HbMenu(); - // Remember the item that was long pressed - mContextMenuData = item->data(); - mContextMenu->addAction( - hbTrId("txt_common_menu_disconnect"), - this, - SLOT(handleListItemDisconnect())); - // Show the menu and connect closure signal (to re-enable list refreshing) - bool connectStatus = connect( - mContextMenu, - SIGNAL(aboutToClose()), - this, - SLOT(handleContextMenuClosed())); - Q_ASSERT(connectStatus); - mContextMenu->setAttribute(Qt::WA_DeleteOnClose); - mContextMenu->setTimeout(HbPopup::ContextMenuTimeout); - mContextMenu->setPreferredPos(coords); - mContextMenu->show(); - } - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_HANDLELISTITEMLONGPRESSED_EXIT ); -} - -/*! - Handles a "Disconnect" action selected from the context menu for a list item. - */ -void WlanSnifferListView::handleListItemDisconnect() -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_HANDLELISTITEMDISCONNECT_ENTRY ); - - // "Disconnect" was only added, if the item was an IAP and data was - // the IAP ID - Q_ASSERT(mContextMenuData.canConvert()); - mAppRef->wlanQtUtils()->disconnectIap(mContextMenuData.toInt()); - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_HANDLELISTITEMDISCONNECT_EXIT ); -} - -// Todo: This is a temporary solution - real WLAN status indication & listening -// is implemented later on. -void WlanSnifferListView::handleDisconnect() -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_HANDLEDISCONNECT_ENTRY ); - - mStatusLabel->setPlainText(hbTrId("txt_occ_grid_not_connected")); - // Redraw the list so that disconnected network is not shown anymore - update(); - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_HANDLEDISCONNECT_EXIT ); -} - -// Todo: no place for separate secure WLAN icon in the widget -> custom layout needed? -// Todo: check the signal strength values -QString WlanSnifferListView::signalStrengthIconChoose(int signalStrength, WlanQtUtilsWlanSecMode secMode) -{ - (void)secMode; - QString iconName; - if (signalStrength <= WlanQtUtilsWlanSignalStrengthGood) { - iconName = "qtg_small_signal_good"; - } else if (signalStrength <= WlanQtUtilsWlanSignalStrengthLow) { - iconName = "qtg_small_signal_medium"; - } else { - iconName = "qtg_small_signal_low"; - } - - return iconName; -} - -HbListWidgetItem *WlanSnifferListView::wlanListItemIapCreate(const WlanQtUtilsWlanIap *iap) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_WLANLISTITEMIAPCREATE_ENTRY ); - - HbListWidgetItem* item = new HbListWidgetItem(); - item->setText(iap->name()); -#if 1 // TODO: How to show secure/open network info?? - if (iap->securityMode() == WlanQtUtilsWlanSecModeOpen) { - item->setSecondaryText("Open"); - } else { - item->setSecondaryText("Secure"); - } -#endif - - if (iap->connectionStatus() == WlanQtUtilsConnectionStatusConnected) { - item->setIcon(HbIcon("qtg_small_online")); - } else { - item->setIcon(HbIcon("qtg_small_wlan")); - } - item->setSecondaryIcon(HbIcon(signalStrengthIconChoose(iap->signalStrength(), iap->securityMode()))); - QVariant data(iap->id()); - item->setData(data); - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_WLANLISTITEMIAPCREATE_EXIT ); - return item; -} - -HbListWidgetItem *WlanSnifferListView::wlanListItemApCreate(const WlanQtUtilsWlanAp *ap) -{ - OstTraceFunctionEntry0( WLANSNIFFERLISTVIEW_WLANLISTITEMAPCREATE_ENTRY ); - - HbListWidgetItem* item = new HbListWidgetItem(); - item->setText(ap->ssid()); -#if 1 // TODO: How to show secure/open network info?? - if (ap->securityMode() == WlanQtUtilsWlanSecModeOpen) { - item->setSecondaryText("Open"); - } else { - item->setSecondaryText("Secure"); - } -#endif - item->setSecondaryIcon(HbIcon(signalStrengthIconChoose(ap->signalStrength(), ap->securityMode()))); - QVariant data; - data.setValue(*ap); - item->setData(data); - - OstTraceFunctionExit0( WLANSNIFFERLISTVIEW_WLANLISTITEMAPCREATE_EXIT ); - return item; -} - -// End of File