KNemo – network interfaces monitor for systray
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

204 lines
9.2 KiB

/* This file is part of KNemo
Copyright (C) 2004 Percy Leonhardt <percy@eris23.de>
KNemo is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
KNemo is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tqrect.h>
#include <tqstring.h>
#include <kdebug.h>
#include <tdelocale.h>
#include <tdeio/global.h>
#include "data.h"
#include "interface.h"
#include "interfacetooltip.h"
InterfaceToolTip::InterfaceToolTip( Interface* interface,
TQWidget* parent )
: TQToolTip( parent ),
mInterface( interface )
{
setupToolTipArray();
}
InterfaceToolTip::~InterfaceToolTip()
{
}
void InterfaceToolTip::maybeTip( const TQPoint& )
{
TQRect rect( parentWidget()->rect() );
if ( !rect.isValid() )
return;
TQString tooltip;
setupText( tooltip );
tip( rect, tooltip );
}
void InterfaceToolTip::setupText( TQString& text )
{
int toolTipContent = mInterface->getGeneralData().toolTipContent;
InterfaceData& data = mInterface->getData();
text += "<table cellspacing=0 cellpadding=0 border=0>";
if ( ( toolTipContent & ALIAS ) &&
mInterface->getSettings().alias != TQString() )
text += "<tr><th colspan=2 align=center>" + mInterface->getSettings().alias + "</th></tr>";
if ( toolTipContent & INTERFACE )
text += "<tr><td>" + mToolTips[0].first + "</td><td>" + mInterface->getName() + "</td></tr>";
if ( data.available )
{
if ( toolTipContent & STATUS )
text += "<tr><td>" + mToolTips[2].first + "</td><td>" + i18n( "Connection established." ) + "</td></tr>";
if ( toolTipContent & UPTIME )
{
int upsecs = mInterface->getStartTime().secsTo( TQDateTime::currentDateTime() );
int updays = upsecs / 86400; // don't use TQDateTime::daysTo() because
// we only want complete days
TQString uptime;
if ( updays == 1 )
uptime = "1 day, ";
else if ( updays > 1 )
uptime = TQString( "%1 days, " ).arg( updays );
upsecs -= 86400 * updays; // we only want the seconds of today
int hrs = upsecs / 3600;
int mins = ( upsecs - hrs * 3600 ) / 60;
int secs = upsecs - hrs * 3600 - mins * 60;
TQString time;
time.sprintf( "%02d:%02d:%02d", hrs, mins, secs );
uptime += time;
text += "<tr><td>" + mToolTips[3].first + "</td><td>" + uptime + "</td></tr>";
}
}
else if ( data.existing )
{
if ( toolTipContent & STATUS )
text += "<tr><td>" + mToolTips[2].first + "</td><td>" + i18n( "Not connected." ) + "</td></tr>";
}
else
{
if ( toolTipContent & STATUS )
text += "<tr><td>" + mToolTips[2].first + "</td><td>" + i18n( "Not existing." ) + "</td></tr>";
}
if ( data.available )
{
if ( toolTipContent & IP_ADDRESS )
text += "<tr><td>" + mToolTips[4].first + "</td><td>" + data.ipAddress + "</td></tr>";
if ( toolTipContent & SUBNET_MASK )
text += "<tr><td>" + mToolTips[5].first + "</td><td>" + data.subnetMask + "</td></tr>";
if ( mInterface->getType() == Interface::ETHERNET )
{
if ( toolTipContent & BCAST_ADDRESS )
text += "<tr><td>" + mToolTips[18].first + "</td><td>" + data.broadcastAddress + "</td></tr>";
if ( toolTipContent & GATEWAY )
text += "<tr><td>" + mToolTips[19].first + "</td><td>" + data.defaultGateway + "</td></tr>";
if ( toolTipContent & HW_ADDRESS )
text += "<tr><td>" + mToolTips[6].first + "</td><td>" + data.hwAddress + "</td></tr>";
}
if ( mInterface->getType() == Interface::PPP )
{
if ( toolTipContent & PTP_ADDRESS )
text += "<tr><td>" + mToolTips[7].first + "</td><td>" + data.ptpAddress + "</td></tr>";
}
if ( toolTipContent & RX_PACKETS )
text += "<tr><td>" + mToolTips[8].first + "</td><td>" + TQString::number( data.rxPackets ) + "</td></tr>";
if ( toolTipContent & TX_PACKETS )
text += "<tr><td>" + mToolTips[9].first + "</td><td>" + TQString::number( data.txPackets ) + "</td></tr>";
if ( toolTipContent & RX_BYTES )
text += "<tr><td>" + mToolTips[10].first + "</td><td>" + data.rxString + "</td></tr>";
if ( toolTipContent & TX_BYTES )
text += "<tr><td>" + mToolTips[11].first + "</td><td>" + data.txString + "</td></tr>";
if ( toolTipContent & DOWNLOAD_SPEED )
{
unsigned long bytesPerSecond = data.incomingBytes / mInterface->getGeneralData().pollInterval;
text += "<tr><td>" + mToolTips[20].first + "</td><td>" + TDEIO::convertSize( bytesPerSecond ) + i18n( "/s" ) + "</td></tr>";
}
if ( toolTipContent & UPLOAD_SPEED )
{
unsigned long bytesPerSecond = data.outgoingBytes / mInterface->getGeneralData().pollInterval;
text += "<tr><td>" + mToolTips[21].first + "</td><td>" + TDEIO::convertSize( bytesPerSecond ) + i18n( "/s" ) + "</td></tr>";
}
}
if ( data.available && data.wirelessDevice )
{
WirelessData& wdata = mInterface->getWirelessData();
if ( toolTipContent & ESSID )
text += "<tr><td>" + mToolTips[12].first + "</td><td>" + wdata.essid + "</td></tr>";
if ( toolTipContent & MODE )
text += "<tr><td>" + mToolTips[13].first + "</td><td>" + wdata.mode + "</td></tr>";
if ( toolTipContent & FREQUENCY )
text += "<tr><td>" + mToolTips[14].first + "</td><td>" + wdata.frequency + "</td></tr>";
if ( toolTipContent & BIT_RATE )
text += "<tr><td>" + mToolTips[15].first + "</td><td>" + wdata.bitRate + "</td></tr>";
if ( toolTipContent & ACCESS_POINT )
text += "<tr><td>" + mToolTips[16].first + "</td><td>" + wdata.accessPoint + "</td></tr>";
if ( toolTipContent & LINK_QUALITY )
text += "<tr><td>" + mToolTips[17].first + "</td><td>" + wdata.linkQuality + "</td></tr>";
if ( toolTipContent & NICK_NAME )
text += "<tr><td>" + mToolTips[22].first + "</td><td>" + wdata.nickName + "</td></tr>";
if ( toolTipContent & ENCRYPTION )
{
if ( wdata.encryption == true )
{
text += "<tr><td>" + mToolTips[23].first + "</td><td>" + i18n( "active" ) + "</td></tr>";
}
else
{
text += "<tr><td>" + mToolTips[23].first + "</td><td>" + i18n( "off" ) + "</td></tr>";
}
}
}
text += "</table>";
}
void InterfaceToolTip::setupToolTipArray()
{
// Cannot make this data static as the i18n macro doesn't seem
// to work when called to early i.e. before setting the catalogue.
mToolTips[0] = TQPair<TQString, int>( i18n( "Interface" ), INTERFACE );
mToolTips[1] = TQPair<TQString, int>( i18n( "Alias" ), ALIAS );
mToolTips[2] = TQPair<TQString, int>( i18n( "Status" ), STATUS );
mToolTips[3] = TQPair<TQString, int>( i18n( "Uptime" ), UPTIME );
mToolTips[4] = TQPair<TQString, int>( i18n( "IP-Address" ), IP_ADDRESS );
mToolTips[5] = TQPair<TQString, int>( i18n( "Subnet Mask" ), SUBNET_MASK );
mToolTips[6] = TQPair<TQString, int>( i18n( "HW-Address" ), HW_ADDRESS );
mToolTips[7] = TQPair<TQString, int>( i18n( "PtP-Address" ), PTP_ADDRESS );
mToolTips[8] = TQPair<TQString, int>( i18n( "Packets Received" ), RX_PACKETS );
mToolTips[9] = TQPair<TQString, int>( i18n( "Packets Sent" ), TX_PACKETS );
mToolTips[10] = TQPair<TQString, int>( i18n( "Bytes Received" ), RX_BYTES );
mToolTips[11] = TQPair<TQString, int>( i18n( "Bytes Sent" ), TX_BYTES );
mToolTips[12] = TQPair<TQString, int>( i18n( "ESSID" ), ESSID );
mToolTips[13] = TQPair<TQString, int>( i18n( "Mode" ), MODE );
mToolTips[14] = TQPair<TQString, int>( i18n( "Frequency" ), FREQUENCY );
mToolTips[15] = TQPair<TQString, int>( i18n( "Bit Rate" ), BIT_RATE );
mToolTips[16] = TQPair<TQString, int>( i18n( "Access Point" ), ACCESS_POINT );
mToolTips[17] = TQPair<TQString, int>( i18n( "Link Quality" ), LINK_QUALITY );
mToolTips[18] = TQPair<TQString, int>( i18n( "Broadcast Address" ), BCAST_ADDRESS );
mToolTips[19] = TQPair<TQString, int>( i18n( "Default Gateway" ), LINK_QUALITY );
mToolTips[20] = TQPair<TQString, int>( i18n( "Download Speed" ), DOWNLOAD_SPEED );
mToolTips[21] = TQPair<TQString, int>( i18n( "Upload Speed" ), UPLOAD_SPEED );
mToolTips[22] = TQPair<TQString, int>( i18n( "Nickname" ), NICK_NAME );
mToolTips[23] = TQPair<TQString, int>( i18n( "Encryption" ), ENCRYPTION );
mToolTips[24] = TQPair<TQString, int>();
}