From 1f362cd77a2b39eae2abca6da28efa5118d2c347 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Mon, 23 Feb 2004 13:37:46 +0000 Subject: start with the long awaited wireless applet overhaul --- (limited to 'noncore/applets/wirelessapplet') diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp index 763aab8..cbaf5d6 100644 --- a/noncore/applets/wirelessapplet/wireless.cpp +++ b/noncore/applets/wirelessapplet/wireless.cpp @@ -1,7 +1,5 @@ /********************************************************************** -** Copyright (C) 2002 Michael 'Mickey' Lauer -** -** http://www.Vanille.de +** Copyright (C) 2002-2004 Michael 'Mickey' Lauer ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software @@ -14,11 +12,23 @@ **********************************************************************/ #include "wireless.h" +#include "networkinfo.h" +#include "mgraph.h" +#include "advancedconfig.h" +#include "connect0.xpm" +#include "connect1.xpm" +#include "connect2.xpm" +#include "connect3.xpm" +#include "connect4.xpm" +#include "connect5.xpm" +#include "nowireless.xpm" -#include +/* OPIE */ +#include #include #include +/* QT */ #include #include #include @@ -33,22 +43,10 @@ #include #include +/* STD */ #include #include -#include "networkinfo.h" -#include "mgraph.h" - -#include "advancedconfig.h" - -#include "connect0.xpm" -#include "connect1.xpm" -#include "connect2.xpm" -#include "connect3.xpm" -#include "connect4.xpm" -#include "connect5.xpm" -#include "nowireless.xpm" - #define STYLE_BARS 0 #define STYLE_ANTENNA 1 @@ -56,7 +54,7 @@ #undef MDEBUG WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) - : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) + : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) { readConfig(); @@ -70,15 +68,15 @@ WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const statusLabel = new QLabel( this, "statuslabel" ); QString text( "Wireless Status:
" - "*** Unknown ***
" - "Card not inserted ?
" - "Or Sharp ROM ?
" - "CELL: 00:00:00:00:00:00" ); -/* QString text( "Station: Unknown
" - "ESSID: Unknown
" - "MODE: Unknown
" - "FREQ: Unknown
" - "CELL: AA:BB:CC:DD:EE:FF" ); */ + "*** Unknown ***
" + "Card not inserted ?
" + "Or Sharp ROM ?
" + "CELL: 00:00:00:00:00:00" ); + /* QString text( "Station: Unknown
" + "ESSID: Unknown
" + "MODE: Unknown
" + "FREQ: Unknown
" + "CELL: AA:BB:CC:DD:EE:FF" ); */ statusLabel->setText( text ); statusLabel->setFixedSize( statusLabel->sizeHint() ); grid->addWidget( statusLabel, 0, 0 ); @@ -136,16 +134,16 @@ WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const applet->displayStyleChange( displayStyle ); applet->updateDelayChange( updateFrequency ); - + connect( group, SIGNAL( clicked( int ) ), this, SLOT( displayStyleChange( int ) ) ); - + applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); } void WirelessControl::advancedConfigClicked() { - AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE ); + AdvancedConfig * a = new AdvancedConfig( this, "dialog", TRUE ); int result = a->exec(); a->hide(); delete a; @@ -173,23 +171,23 @@ void WirelessControl::displayStyleChange( int style ) void WirelessControl::show ( bool ) { - QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) ); + QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) ); - int w = sizeHint().width(); - int x = curPos.x() - ( w / 2 ); + int w = sizeHint().width(); + int x = curPos.x() - ( w / 2 ); - if ( ( x + w ) > QPEApplication::desktop()->width() ) - x = QPEApplication::desktop ( )-> width ( ) - w; + if ( ( x + w ) > QPEApplication::desktop() ->width() ) + x = QPEApplication::desktop ( ) -> width ( ) - w; - move( x, curPos.y () - sizeHint().height () ); - QFrame::show(); + move( x, curPos.y () - sizeHint().height () ); + QFrame::show(); } void WirelessControl::readConfig() { Config cfg( "qpe" ); cfg.setGroup( "Wireless" ); - + updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 ); displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA ); rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); @@ -204,13 +202,13 @@ void WirelessControl::writeConfigEntry( const char *entry, int val ) cfg.setGroup( "Wireless" ); cfg.writeEntry( entry, val ); } - + //=========================================================================== WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) - : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), - timer( 0 ), interface( 0 ), - rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) + : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), + timer( 0 ), interface( 0 ), + rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) { setFixedHeight( 18 ); setFixedWidth( 14 ); @@ -224,8 +222,9 @@ void WirelessApplet::checkInterface() if ( interface ) { #ifdef MDEBUG - qDebug( "WIFIAPPLET: using interface '%s'", (const char*) interface->getName() ); + qDebug( "WIFIAPPLET: using interface '%s'", ( const char* ) interface->getName() ); #endif + } else { @@ -244,14 +243,14 @@ void WirelessApplet::renewDHCP() QString pidfile; if ( !interface ) - return; + return ; QString ifacename( interface->getName() ); // At first we are trying dhcpcd - pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename ); + pidfile.sprintf( "/var/run/dhcpcd-%s.pid", ( const char* ) ifacename ); #ifdef MDEBUG - qDebug( "WIFIAPPLET: dhcpcd pidfile is '%s'", (const char*) pidfile ); + qDebug( "WIFIAPPLET: dhcpcd pidfile is '%s'", ( const char* ) pidfile ); #endif int pid; QFile pfile( pidfile ); @@ -264,16 +263,16 @@ void WirelessApplet::renewDHCP() qDebug( "WIFIAPPLET: sent SIGALARM to pid %d", pid ); #endif kill( pid, SIGALRM ); - return; + return ; } // No dhcpcd, so we are trying udhcpc #ifdef MDEBUG qDebug( "WIFIAPPLET: dhcpcd not available." ); #endif - pidfile.sprintf( "/var/run/udhcpc.%s.pid", (const char*) ifacename ); + pidfile.sprintf( "/var/run/udhcpc.%s.pid", ( const char* ) ifacename ); #ifdef MDEBUG - qDebug( "WIFIAPPLET: udhcpc pidfile is '%s'", (const char*) pidfile ); + qDebug( "WIFIAPPLET: udhcpc pidfile is '%s'", ( const char* ) pidfile ); #endif QFile pfile2( pidfile ); hasFile = pfile2.open( IO_ReadOnly ); @@ -285,7 +284,7 @@ void WirelessApplet::renewDHCP() qDebug( "WIFIAPPLET: sent SIGUSR1 to pid %d", pid ); #endif kill( pid, SIGUSR1 ); - return; + return ; } } @@ -314,13 +313,12 @@ void WirelessApplet::displayStyleChange( int style ) } WirelessApplet::~WirelessApplet() -{ -} +{} void WirelessApplet::timerEvent( QTimerEvent* ) { - MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; - + MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface; + if ( iface ) { bool statResult = iface->updateStatistics(); @@ -328,35 +326,37 @@ void WirelessApplet::timerEvent( QTimerEvent* ) { interface = 0; mustRepaint(); - return; - } else - if ( mustRepaint() ) - { - //qDebug( "WIFIAPPLET: A value has changed -> repainting." ); - repaint(); + return ; } - + else + if ( mustRepaint() ) + { + //qDebug( "WIFIAPPLET: A value has changed -> repainting." ); + repaint(); + } + if ( status->isVisible() ) updatePopupWindow(); - } else checkInterface(); + } + else checkInterface(); } -void WirelessApplet::mousePressEvent( QMouseEvent *) -{ +void WirelessApplet::mousePressEvent( QMouseEvent * ) +{ if ( status->isVisible() ) - status->hide(); + status->hide(); else status->show( true ); } bool WirelessApplet::mustRepaint() { - MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; - + MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface; + // check if there are enough changes to justify a (flickering) repaint - + // has the interface changed? - + if ( iface != oldiface ) { oldiface = iface; @@ -376,22 +376,22 @@ bool WirelessApplet::mustRepaint() return true; } } - + const char** pixmap = getQualityPixmap(); - + if ( pixmap && ( pixmap != oldpixmap ) ) { oldpixmap = pixmap; return true; } - + int noiseH = iface->noisePercent() * ( height() - 3 ) / 100; int signalH = iface->signalPercent() * ( height() - 3 ) / 100; int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100; - + if ( ( noiseH != oldnoiseH ) - || ( signalH != oldsignalH ) - || ( qualityH != oldqualityH ) ) + || ( signalH != oldsignalH ) + || ( qualityH != oldqualityH ) ) { oldnoiseH = noiseH; oldsignalH = signalH; @@ -402,48 +402,48 @@ bool WirelessApplet::mustRepaint() if ( rocESSID && ( oldESSID != iface->essid ) ) { #ifdef MDEBUG - qDebug( "WIFIAPPLET: ESSID has changed."); + qDebug( "WIFIAPPLET: ESSID has changed." ); #endif renewDHCP(); } else if ( rocFREQ && ( oldFREQ != iface->freq ) ) { #ifdef MDEBUG - qDebug( "WIFIAPPLET: FREQ has changed."); + qDebug( "WIFIAPPLET: FREQ has changed." ); #endif renewDHCP(); } else if ( rocAP && ( oldAP != iface->APAddr ) ) { #ifdef MDEBUG - qDebug( "WIFIAPPLET: AP has changed."); + qDebug( "WIFIAPPLET: AP has changed." ); #endif renewDHCP(); } else if ( rocMODE && ( oldMODE != iface->mode ) ) { #ifdef MDEBUG - qDebug( "WIFIAPPLET: MODE has changed."); + qDebug( "WIFIAPPLET: MODE has changed." ); #endif renewDHCP(); } - + oldESSID = iface->essid; oldMODE = iface->mode; oldFREQ = iface->freq; oldAP = iface->APAddr; - + return false; } void WirelessApplet::updatePopupWindow() { - MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; + MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface; int qualityH = iface->qualityPercent(); if ( status->mgraph ) status->mgraph->addValue( qualityH, false ); - + QString freqString; QString cell = ( iface->mode == "Managed" ) ? "AP: " : "Cell: "; freqString.sprintf( "%.3f GHz", iface->freq ); @@ -452,34 +452,34 @@ void WirelessApplet::updatePopupWindow() "MODE: " + iface->mode + "
" + "FREQ: " + freqString + "
" + cell + " " + iface->APAddr ); -} +} const char** WirelessApplet::getQualityPixmap() -{ - MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; - +{ + MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface; + if ( !iface ) return ( const char** ) nowireless_xpm; int qualityH = iface->qualityPercent(); if ( qualityH < 0 ) return ( const char** ) nowireless_xpm; - + if ( visualStyle == STYLE_ANTENNA ) { if ( qualityH < 1 ) return ( const char** ) connect0_xpm; - if ( qualityH < 17 ) return ( const char** ) connect1_xpm; + if ( qualityH < 17 ) return ( const char** ) connect1_xpm; if ( qualityH < 34 ) return ( const char** ) connect2_xpm; if ( qualityH < 50 ) return ( const char** ) connect3_xpm; if ( qualityH < 65 ) return ( const char** ) connect4_xpm; return ( const char** ) connect5_xpm; } - + return 0; // please draw your bars } void WirelessApplet::paintEvent( QPaintEvent* ) { - MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; + MWirelessNetworkInterface * iface = ( MWirelessNetworkInterface* ) interface; - QPainter p(this); + QPainter p( this ); QColor color; const char** pixmap = getQualityPixmap(); @@ -506,10 +506,10 @@ void WirelessApplet::paintEvent( QPaintEvent* ) Hue = 50; for ( int i = 0; i < pixelHeight; ++i ) { - intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; + intensity = 50 + ( ( double ) i / ( double ) pixelHeight ) * 205; color.setHsv( Hue, 255, intensity ); p.setPen ( color ); - p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); + p.drawLine( leftoffset, height() - bottomoffset - i, pixelWidth + leftoffset, height() - bottomoffset - i ); } // draw signal indicator @@ -518,10 +518,10 @@ void WirelessApplet::paintEvent( QPaintEvent* ) leftoffset += pixelWidth + barSpace; for ( int i = 0; i < pixelHeight; ++i ) { - intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; + intensity = 50 + ( ( double ) i / ( double ) pixelHeight ) * 205; color.setHsv( Hue, 255, intensity ); p.setPen ( color ); - p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); + p.drawLine( leftoffset, height() - bottomoffset - i, pixelWidth + leftoffset, height() - bottomoffset - i ); } // draw quality indicator @@ -530,10 +530,23 @@ void WirelessApplet::paintEvent( QPaintEvent* ) leftoffset += pixelWidth + barSpace; for ( int i = 0; i < pixelHeight; ++i ) { - intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; + intensity = 50 + ( ( double ) i / ( double ) pixelHeight ) * 205; color.setHsv( Hue, 255, intensity ); p.setPen ( color ); - p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); + p.drawLine( leftoffset, height() - bottomoffset - i, pixelWidth + leftoffset, height() - bottomoffset - i ); } - } + } } + + +int WirelessApplet::position() +{ + return 6; +} + + +Q_EXPORT_INTERFACE() +{ + Q_CREATE_INSTANCE( OTaskbarAppletWrapper ); +} + diff --git a/noncore/applets/wirelessapplet/wireless.h b/noncore/applets/wirelessapplet/wireless.h index 51a3fab..644be26 100644 --- a/noncore/applets/wirelessapplet/wireless.h +++ b/noncore/applets/wirelessapplet/wireless.h @@ -31,10 +31,10 @@ class MGraph; class WirelessControl : public QFrame { Q_OBJECT -public: + public: WirelessControl( WirelessApplet* icon, QWidget *parent=0, const char *name=0 ); void show( bool ); - + void readConfig(); void writeConfigEntry( const char* entry, int val ); @@ -42,12 +42,12 @@ public: QLabel* statusLabel; QLabel* updateLabel; -public slots: + public slots: void updateDelayChange( int ); void displayStyleChange( int ); void advancedConfigClicked(); - -private: + + private: WirelessApplet* applet; int displayStyle; @@ -62,47 +62,48 @@ private: class WirelessApplet : public QWidget { Q_OBJECT -public: + public: WirelessApplet( QWidget *parent = 0, const char *name=0 ); ~WirelessApplet(); + static int position(); WirelessControl* status; - + virtual void timerEvent( QTimerEvent* ); void updateDelayChange( int delay ); void displayStyleChange( int style ); - + void updateDHCPConfig( bool, bool, bool, bool ); -private: + private: void mousePressEvent( QMouseEvent * ); void paintEvent( QPaintEvent* ); void checkInterface(); void renewDHCP(); - + bool mustRepaint(); void updatePopupWindow(); const char** getQualityPixmap(); -private: + private: QPixmap snapshotPixmap; int visualStyle; int timer; - + MWirelessNetwork* network; MNetworkInterface* interface; - -private: + + private: const char** oldpixmap; MWirelessNetworkInterface* oldiface; int oldqualityH; int oldsignalH; - int oldnoiseH; + int oldnoiseH; QString oldESSID; QString oldAP; QString oldMODE; double oldFREQ; - + bool rocESSID; bool rocFREQ; bool rocAP; diff --git a/noncore/applets/wirelessapplet/wirelessapplet.pro b/noncore/applets/wirelessapplet/wirelessapplet.pro index 411a039..38cb475 100644 --- a/noncore/applets/wirelessapplet/wirelessapplet.pro +++ b/noncore/applets/wirelessapplet/wirelessapplet.pro @@ -1,13 +1,13 @@ TEMPLATE = lib CONFIG += qt plugin warn_on release -HEADERS = wireless.h wirelessappletimpl.h networkinfo.h mgraph.h advancedconfig.h -SOURCES = wireless.cpp wirelessappletimpl.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp +HEADERS = wireless.h networkinfo.h mgraph.h advancedconfig.h +SOURCES = wireless.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp INTERFACES = advancedconfigbase.ui TARGET = wirelessapplet DESTDIR = $(OPIEDIR)/plugins/applets INCLUDEPATH += $(OPIEDIR)/include -DEPENDPATH += ../$(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -VERSION = 0.1.0 +VERSION = 0.1.1 include ( $(OPIEDIR)/include.pro ) diff --git a/noncore/applets/wirelessapplet/wirelessappletimpl.cpp b/noncore/applets/wirelessapplet/wirelessappletimpl.cpp deleted file mode 100644 index de70714..0000000 --- a/noncore/applets/wirelessapplet/wirelessappletimpl.cpp +++ b/dev/null @@ -1,66 +0,0 @@ -/********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#include "wireless.h" -#include "wirelessappletimpl.h" - - -WirelessAppletImpl::WirelessAppletImpl() - : wireless(0) -{ -} - -WirelessAppletImpl::~WirelessAppletImpl() -{ - delete wireless; -} - -QWidget *WirelessAppletImpl::applet( QWidget *parent ) -{ - if ( !wireless ) - wireless = new WirelessApplet( parent ); - return wireless; -} - -int WirelessAppletImpl::position() const -{ - return 6; -} - -QRESULT WirelessAppletImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) -{ - *iface = 0; - if ( uuid == IID_QUnknown ) - *iface = this; - else if ( uuid == IID_TaskbarApplet ) - *iface = this; - else - return QS_FALSE; - - if ( *iface ) - (*iface)->addRef(); - return QS_OK; -} - -Q_EXPORT_INTERFACE() -{ - Q_CREATE_INSTANCE( WirelessAppletImpl ) -} - - diff --git a/noncore/applets/wirelessapplet/wirelessappletimpl.h b/noncore/applets/wirelessapplet/wirelessappletimpl.h deleted file mode 100644 index 1bf4507..0000000 --- a/noncore/applets/wirelessapplet/wirelessappletimpl.h +++ b/dev/null @@ -1,43 +0,0 @@ -/********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ -#ifndef WIRELESSAPPLETIMPL_H -#define WIRELESSAPPLETIMPL_H - -#include - -class WirelessApplet; - -class WirelessAppletImpl : public TaskbarAppletInterface -{ -public: - WirelessAppletImpl(); - virtual ~WirelessAppletImpl(); - - QRESULT queryInterface( const QUuid&, QUnknownInterface** ); - Q_REFCOUNT - - virtual QWidget *applet( QWidget *parent ); - virtual int position() const; - -private: - WirelessApplet *wireless; -}; - -#endif -- cgit v0.9.0.2