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.
 
 
 

244 lines
5.3 KiB

/* This file is part of KNemo
Copyright (C) 2004, 2006 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.
*/
#ifndef INTERFACE_H
#define INTERFACE_H
#include <tqobject.h>
#include <tqstring.h>
#include <tqdatetime.h>
#include "data.h"
#include "global.h"
#include "interfaceicon.h"
#include "interfacemonitor.h"
class TQTimer;
class SignalPlotter;
class InterfaceStatistics;
class InterfaceStatusDialog;
class InterfaceStatisticsDialog;
/**
* This class is the central place for all things that belong to an
* interface. It stores some information and knows about the interface
* data, icon, monitor and settings.
*
* @short Central class for every interface
* @author Percy Leonhardt <percy@eris23.de>
*/
class Interface : public TQObject
{
Q_OBJECT
public:
/**
* Default Constructor
*/
Interface(TQString ifname,
const GeneralData& generalData,
const PlotterSettings& plotterSettings );
/**
* Default Destructor
*/
virtual ~Interface();
void setType( int type )
{
mType = type;
}
int getType()
{
return mType;
}
void setState( int state )
{
mState = state;
}
int getState()
{
return mState;
}
const TQDateTime& getStartTime() const
{
return mStartTime;
}
const TQString& getName() const
{
return mName;
}
InterfaceData& getData()
{
return mData;
}
InterfaceSettings& getSettings()
{
return mSettings;
}
WirelessData& getWirelessData()
{
return mWirelessData;
}
const GeneralData& getGeneralData() const
{
return mGeneralData;
}
InterfaceStatistics* getStatistics()
{
return mStatistics;
}
/**
* Called from reparseConfiguration() when the user changed
* the settings.
*/
void configChanged();
/**
* Called from the interface updater class after new data from
* 'ifconfig' has been read. This will trigger the monitor to
* to look for changes in interface data or interface state.
*/
void activateMonitor();
enum InterfaceState
{
UNKNOWN_STATE = -1,
NOT_EXISTING = 0,
NOT_AVAILABLE = 1,
AVAILABLE = 2,
RX_TRAFFIC = 4,
TX_TRAFFIC = 8
};
enum InterfaceType
{
UNKNOWN_TYPE,
ETHERNET,
PPP
};
enum IconSet
{
MONITOR = 0,
MODEM,
NETWORK,
WIRELESS
};
public slots:
/*
* Called when the user left-clicks on the tray icon
* Toggles the status dialog by showing it on the first click and
* hiding it on the second click.
*/
void showStatusDialog();
/*
* Called when the user middle-clicks on the tray icon
* Toggles the signal plotter that displays the incoming and
* outgoing traffic.
*/
void showSignalPlotter( bool wasMiddleButton );
/*
* Called when the user selects the appropriate entry in the context menu.
*/
void showStatisticsDialog();
/*
* Reset data when PPP interface is disconnected
*/
void resetData( int state );
private slots:
/**
* Start the uptimer when the interface is connected
*/
void setStartTime( int );
/**
* Update the signal plotter with new data
*/
void updatePlotter();
/**
* Configure the signal plotter with user settings
*/
void configurePlotter();
private:
/**
* Start the statistics and load previously saved ones
*/
void startStatistics();
/**
* Store the statistics and stop collecting any further data
*/
void stopStatistics();
/**
* The following function is taken from ksystemtray.cpp for
* correct show, raise, focus and hide of status dialog and
* signal plotter.
*/
void activateOrHide( TQWidget* widget, bool onlyActivate = false );
enum VisibleBeams
{
NONE = 0,
INCOMING_TRAFFIC = 1,
OUTGOING_TRAFFIC = 2,
BOTH = 3
};
int mType;
int mState;
int mOutgoingPos;
int mIncomingPos;
TQString mName;
TQTimer* mPlotterTimer;
TQDateTime mStartTime;
InterfaceIcon mIcon;
InterfaceData mData;
InterfaceMonitor mMonitor;
InterfaceSettings mSettings;
InterfaceStatistics* mStatistics;
WirelessData mWirelessData;
InterfaceStatusDialog* mStatusDialog;
InterfaceStatisticsDialog* mStatisticsDialog;
SignalPlotter* mPlotter;
VisibleBeams mVisibleBeams;
const GeneralData& mGeneralData;
const PlotterSettings& mPlotterSettings;
};
#endif // INTERFACE_H