Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > media > contrib-release-debug > by-pkgid > a682ed06b7e9c8d5c3b6ae729da2d8d5 > files > 121

freego-debug-4.5-1mdv2011.0.i586.rpm

#ifndef UIROOTERWIDGET_H
#define UIROOTERWIDGET_H

#include "ui_UIRooterWidget.h"

#include "AbstractRooterWidget.h"
#include "ui_UIPortsRedirection.h"
#include "ui_UIPlagesRedirection.h"
#include "ui_UIPermanentsDHCP.h"

class QVBoxLayout;

// port redirection widget
class UIPortsRedirection : public AbstractRooterWidget, public Ui::UIPortsRedirection
{
	Q_OBJECT
public:
	UIPortsRedirection( QWidget* parent = 0 )
		: AbstractRooterWidget( parent )
	{
		setupUi( this );
		setRemoveLineVisible( false );
		setAddLineVisible( false );
		connect( fgAdd, SIGNAL( clicked() ), this, SIGNAL( addLineRequested() ) );
		connect( fgRemove, SIGNAL( clicked() ), this, SIGNAL( removeLineRequested() ) );
	}
	
	QStringList datas() const
	{
		QStringList datas;
		datas << QString::number( sbPortLeft->value() );
		datas << QString::number( cbProtocole->currentIndex() +1 );
		datas << leDestination4->text();
		datas << QString::number( sbPortRight->value() );
		return datas;
	}
	
	QString ip( int index )
	{
		switch ( index )
		{
			case 1:
				return leDestination1->text();
				break;
			case 2:
				return leDestination2->text();
				break;
			case 3:
				return leDestination3->text();
				break;
			case 4:
				return leDestination4->text();
				break;
		}
		return QString::null;
	}

public slots:
	void setAddLineVisible( bool visible )
	{ fgAdd->setVisible( visible ); }
	
	void setRemoveLineVisible( bool visible )
	{ fgRemove->setVisible( visible ); }
	
	void setIp( const QString& value, int index )
	{
		switch ( index )
		{
			case 1:
				leDestination1->setText( value );
				break;
			case 2:
				leDestination2->setText( value );
				break;
			case 3:
				leDestination3->setText( value );
				break;
			case 4:
				leDestination4->setText( value );
				break;
		}
	}
	
	void setDatas( const QStringList& datas )
	{
		sbPortLeft->setValue( datas.value( 0 ).toInt() );
		cbProtocole->setCurrentIndex( datas.value( 1 ).toInt() -1 );
		leDestination4->setText( datas.value( 2 ) );
		sbPortRight->setValue( datas.value( 3 ).toInt() );
	}
	
	bool isValid() const
	{ return cbProtocole->currentIndex() != -1 && !leDestination4->text().trimmed().isEmpty(); }
};

// plage redirection widget
class UIPlagesRedirection : public AbstractRooterWidget, public Ui::UIPlagesRedirection
{
	Q_OBJECT
public:
	UIPlagesRedirection( QWidget* parent = 0 )
		: AbstractRooterWidget( parent )
	{
		setupUi( this );
		setRemoveLineVisible( false );
		setAddLineVisible( false );
		connect( fgAdd, SIGNAL( clicked() ), this, SIGNAL( addLineRequested() ) );
		connect( fgRemove, SIGNAL( clicked() ), this, SIGNAL( removeLineRequested() ) );
	}
	
	QStringList datas() const
	{
		QStringList datas;
		datas << QString::number( sbPlagesDebut->value() );
		datas << QString::number( sbPlagesFin->value() );
		datas << QString::number( cbPlagesProtocole->currentIndex() +1 );
		datas << lePlagesDestination4->text();
		return datas;
	}
	
	QString ip( int index )
	{
		switch ( index )
		{
			case 1:
				return lePlagesDestination1->text();
				break;
			case 2:
				return lePlagesDestination2->text();
				break;
			case 3:
				return lePlagesDestination3->text();
				break;
			case 4:
				return lePlagesDestination4->text();
				break;
		}
		return QString::null;
	}

public slots:
	void setAddLineVisible( bool visible )
	{ fgAdd->setVisible( visible ); }
	
	void setRemoveLineVisible( bool visible )
	{ fgRemove->setVisible( visible ); }
	
	void setIp( const QString& value, int index )
	{
		switch ( index )
		{
			case 1:
				lePlagesDestination1->setText( value );
				break;
			case 2:
				lePlagesDestination2->setText( value );
				break;
			case 3:
				lePlagesDestination3->setText( value );
				break;
			case 4:
				lePlagesDestination4->setText( value );
				break;
		}
	}
	
	void setDatas( const QStringList& datas )
	{
		sbPlagesDebut->setValue( datas.value( 0 ).toInt() );
		sbPlagesFin->setValue( datas.value( 1 ).toInt() );
		cbPlagesProtocole->setCurrentIndex( datas.value( 2 ).toInt() -1 );
		lePlagesDestination4->setText( datas.value( 3 ) );
	}
	
	bool isValid() const
	{ return cbPlagesProtocole->currentIndex() != -1 && !lePlagesDestination4->text().trimmed().isEmpty(); }
};

// dhcp widget
class UIPermanentsDHCP : public AbstractRooterWidget, public Ui::UIPermanentsDHCP
{
	Q_OBJECT
public:
	UIPermanentsDHCP( QWidget* parent = 0 )
		: AbstractRooterWidget( parent )
	{
		setupUi( this );
		setRemoveLineVisible( false );
		setAddLineVisible( false );
		connect( fgAdd, SIGNAL( clicked() ), this, SIGNAL( addLineRequested() ) );
		connect( fgRemove, SIGNAL( clicked() ), this, SIGNAL( removeLineRequested() ) );
	}
	
	QStringList datas() const
	{
		QStringList datas;
		datas << leMAC4->text();
		datas << leAddressMAC->text();
		return datas;
	}
	
	QString ip( int index )
	{
		switch ( index )
		{
			case 1:
				return leMAC1->text();
				break;
			case 2:
				return leMAC2->text();
				break;
			case 3:
				return leMAC3->text();
				break;
			case 4:
				return leMAC4->text();
				break;
		}
		return QString::null;
	}

public slots:
	void setAddLineVisible( bool visible )
	{ fgAdd->setVisible( visible ); }
	
	void setRemoveLineVisible( bool visible )
	{ fgRemove->setVisible( visible ); }
	
	void setIp( const QString& value, int index )
	{
		switch ( index )
		{
			case 1:
				leMAC1->setText( value );
				break;
			case 2:
				leMAC2->setText( value );
				break;
			case 3:
				leMAC3->setText( value );
				break;
			case 4:
				leMAC4->setText( value );
				break;
		}
	}
	
	void setDatas( const QStringList& datas )
	{
		leMAC4->setText( datas.value( 0 ) );
		leAddressMAC->setText( datas.value( 1 ) );
	}
	
	bool isValid() const
	{ return !leMAC4->text().trimmed().isEmpty() && !leAddressMAC->text().replace( ":", "" ).trimmed().isEmpty(); }
};

// main line container class
class UIRooterWidget : public QWidget, public Ui::UIRooterWidget
{
	Q_OBJECT
public:
	enum Type { Undefined = -1, Ports, Plages, Macs };
	UIRooterWidget( QWidget* parent = 0 );
	
	void setType( Type type );
	QStringList datas() const;

protected:
	QVBoxLayout* mVLayout;
	Type mType;

public slots:
	void setIp3( const QString& value );
	void setDatas( const QStringList& datas );

protected slots:
	QString ip3();
	void updateButtonsVisibility();
	void addLine();
	void removeLine();
};

#endif // UIROOTERWIDGET_H