|
|
|
/***************************************************************************
|
|
|
|
knetworkconf.h - description
|
|
|
|
-------------------
|
|
|
|
begin : Sun Jan 12 00:54:19 UTC 2003
|
|
|
|
copyright : (C) 2003 by Juan Luis Baptiste
|
|
|
|
email : jbaptiste@merlinux.org
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#ifndef KNETWORKCONF_H
|
|
|
|
#define KNETWORKCONF_H
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include <config.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DEVICE_UP 0
|
|
|
|
#define DEVICE_DOWN 1
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
|
|
|
#include <kapp.h>
|
|
|
|
#include <tqwidget.h>
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
#include <tqprocess.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqcheckbox.h>
|
|
|
|
#include <tqgroupbox.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqradiobutton.h>
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <kdialog.h>
|
|
|
|
#include <kinputdialog.h>
|
|
|
|
#include <tdepopupmenu.h>
|
|
|
|
#include <kpushbutton.h>
|
|
|
|
#include <tdelistview.h>
|
|
|
|
#include <klineedit.h>
|
|
|
|
#include <tdelistbox.h>
|
|
|
|
#include <kcombobox.h>
|
|
|
|
#include <kmessagebox.h>
|
|
|
|
#include <tdeaboutapplication.h>
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <kstandarddirs.h>
|
|
|
|
#include <tdeapplication.h>
|
|
|
|
|
|
|
|
#include <dcopclient.h>
|
|
|
|
|
|
|
|
#include "knetworkconfdlg.h"
|
|
|
|
#include "kadddnsserverdlg.h"
|
|
|
|
#include "kadddevicecontainer.h"
|
|
|
|
#include "kadddevicedlg.h"
|
|
|
|
#include "kadddevicewifiext.h"
|
|
|
|
#include "knetworkinfo.h"
|
|
|
|
#include "kroutinginfo.h"
|
|
|
|
#include "knetworkconfigparser.h"
|
|
|
|
#include "kdnsinfo.h"
|
|
|
|
#include "kaddknownhostdlg.h"
|
|
|
|
#include "kknownhostinfo.h"
|
|
|
|
#include "knetworkinterface.h"
|
|
|
|
#include "kadddevicedlgextension.h"
|
|
|
|
#include "knetworkconfiface.h"
|
|
|
|
#include "kprofileslistviewtooltip.h"
|
|
|
|
|
|
|
|
/** KNetworkConf is the base class of the project */
|
|
|
|
class KNetworkConf : public KNetworkConfDlg, virtual public KNetworkConfIface
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
/** construtor */
|
|
|
|
KNetworkConf(TQWidget* parent=0, const char *name=0);
|
|
|
|
/** destructor */
|
|
|
|
~KNetworkConf();
|
|
|
|
/** Puts the application in read-only mode. This happens when the user runing the application isn't root. */
|
|
|
|
void setReadOnly(bool state);
|
|
|
|
void setVersion(TQString ver);
|
|
|
|
TQString getVersion();
|
|
|
|
/** Disables all buttons a line edit widgets when the user has read only access. */
|
|
|
|
void disableAll();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Fill the Listview with the info of the network interfaces.
|
|
|
|
*/
|
|
|
|
void loadNetworkDevicesInfo();
|
|
|
|
void loadRoutingInfo();
|
|
|
|
void loadDNSInfo();
|
|
|
|
void loadNetworkProfiles();
|
|
|
|
|
|
|
|
private: // Private attributes
|
|
|
|
/** */
|
|
|
|
KNetworkConfigParser *config;
|
|
|
|
KNetworkInterface * getDeviceInfo(TQString device);
|
|
|
|
TQString getDeviceName(TQString ipAddr);
|
|
|
|
/** Creates a TQStringList with the IP addresses contained in the TQListBox of name servers. */
|
|
|
|
TQStringList getNamserversList(TDEListBox * serverList);
|
|
|
|
/** Creates a TQPtrList<KKownHostInfo> with the info contained in the TDEListView of name servers. */
|
|
|
|
TQPtrList<KKnownHostInfo> getKnownHostsList(TDEListView * hostsList);
|
|
|
|
TQString currentDevice;
|
|
|
|
KRoutingInfo *routingInfo;
|
|
|
|
KDNSInfo *dnsInfo;
|
|
|
|
bool reloaded;
|
|
|
|
TQString commandOutput;
|
|
|
|
TQProcess *procUpdateDevice;
|
|
|
|
TQProcess *procDeviceState;
|
|
|
|
TQStringList deviceNamesList;
|
|
|
|
bool devicesModified;
|
|
|
|
bool readOnly;
|
|
|
|
TQPtrList<KKnownHostInfo> knownHostsList;
|
|
|
|
TQPtrList<KNetworkInfo> profilesList;
|
|
|
|
bool nameServersModified;
|
|
|
|
/** The program's version. */
|
|
|
|
TQString version;
|
|
|
|
bool modified;
|
|
|
|
bool devStateChanged;
|
|
|
|
/** */
|
|
|
|
KNetworkInfo * netInfo;
|
|
|
|
/** Has the errors throwed by GST when executed. */
|
|
|
|
TQString commandErrOutput;
|
|
|
|
/** Changes the state of device 'dev' to DEVICE_UP or DEVICE_DOWN.
|
|
|
|
Return true on success, false on failure. */
|
|
|
|
void changeDeviceState(const TQString &dev, int state);
|
|
|
|
KNetworkInfo *getProfile(TQPtrList<KNetworkInfo> profilesList, TQString selectedProfile);
|
|
|
|
void showSelectedProfile(TQString profile);
|
|
|
|
KProfilesListViewToolTip *tooltip;
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
virtual void saveInfoSlot();
|
|
|
|
/** Puts the application in read-only mode. This happens when the user runing the application isn't root. */
|
|
|
|
void setReadOnlySlot(bool state);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
/** Enables the configure and remove buttons. */
|
|
|
|
virtual void enableButtonsSlot();
|
|
|
|
/** opens the add server dialog. */
|
|
|
|
virtual void addServerSlot();
|
|
|
|
/** opens the edit server dialog. */
|
|
|
|
virtual void editServerSlot();
|
|
|
|
/** Terminates the application*/
|
|
|
|
virtual void quitSlot();
|
|
|
|
virtual void readFromStdout();
|
|
|
|
virtual void readFromStdoutUpDown();
|
|
|
|
virtual void enableInterfaceSlot();
|
|
|
|
virtual void disableInterfaceSlot();
|
|
|
|
/** Pops up the window for adding a new interface. */
|
|
|
|
virtual void configureDeviceSlot();
|
|
|
|
void enableApplyButtonSlot();
|
|
|
|
/** Shows the help browser. Hopefully some day it will be one :-). */
|
|
|
|
virtual void helpSlot();
|
|
|
|
virtual void enableApplyButtonSlot(bool);
|
|
|
|
virtual void enableApplyButtonSlot(const TQString &text);
|
|
|
|
/** Saves all the modified info of devices, routes,etc. */
|
|
|
|
virtual void moveDownServerSlot();
|
|
|
|
virtual void moveUpServerSlot();
|
|
|
|
virtual void removeServerSlot();
|
|
|
|
bool valuesChanged(KNetworkInterface *dev,
|
|
|
|
TQString bootProto,
|
|
|
|
TQString netmask,
|
|
|
|
TQString ipAddr,
|
|
|
|
TQString gateway,
|
|
|
|
bool onBoot,
|
|
|
|
TQString desc,
|
|
|
|
TQString broadcast);
|
|
|
|
/** Returns a list of strings of all the configured devices. */
|
|
|
|
TQStringList getDeviceList();
|
|
|
|
/** Sets the TQPushButton::autoResize() in true for all buttons. */
|
|
|
|
void makeButtonsResizeable();
|
|
|
|
|
|
|
|
/** Adds a new host to the TDEListView that has the known hosts. */
|
|
|
|
void addKnownHostSlot();
|
|
|
|
void aboutSlot();
|
|
|
|
/** Edits the info about a known host. */
|
|
|
|
void editKnownHostSlot();
|
|
|
|
/** Removes a known host from the list view */
|
|
|
|
void removeKnownHostSlot();
|
|
|
|
/** No descriptions */
|
|
|
|
void readFromStdErrUpDown();
|
|
|
|
void getNetworkInfoSlot();
|
|
|
|
/** Shows the main window after the network info has been loaded. */
|
|
|
|
void showMainWindow();
|
|
|
|
void verifyDeviceStateChanged();
|
|
|
|
/** Sees if a device is active or not in the ifconfig output. Not very nice, but it works. Inthe future, this has to be managed by gst. */
|
|
|
|
bool isDeviceActive(const TQString &device, const TQString &ifconfigOutput);
|
|
|
|
|
|
|
|
/*Shows a context menu when right-clicking in the interface list*/
|
|
|
|
void showInterfaceContextMenuSlot(TDEListView*, TQListViewItem*, const TQPoint&);
|
|
|
|
|
|
|
|
/** Enable some signals in the GUI that need to be enabled *after* the loading of the network info is done.*/
|
|
|
|
void enableSignals ();
|
|
|
|
virtual void enableProfileSlot();
|
|
|
|
virtual void createProfileSlot();
|
|
|
|
//virtual void updateProfileNameSlot(TQListViewItem *item);
|
|
|
|
virtual void removeProfileSlot();
|
|
|
|
virtual void updateProfileSlot();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
//Signal used to tell kcontrol that the network configuration has been changed.
|
|
|
|
void networkStateChanged(bool);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|