mirror of
https://github.com/fwbuilder/fwbuilder
synced 2026-06-09 15:39:27 +02:00
@@ -2,7 +2,7 @@
|
||||
#include "ui_InterfaceEditorWidget.h"
|
||||
#include "fwbuilder/IPv4.h"
|
||||
|
||||
InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, libfwbuilder::Interface *interface) :
|
||||
InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, Interface *interface) :
|
||||
QWidget(parent),
|
||||
m_ui(new Ui::InterfaceEditorWidget)
|
||||
{
|
||||
@@ -18,10 +18,10 @@ InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, libfwbuilder::Inte
|
||||
this->m_ui->type->setCurrentIndex(1);
|
||||
if ( this->interface->isUnnumbered() )
|
||||
this->m_ui->type->setCurrentIndex(2);
|
||||
libfwbuilder::FWObjectTypedChildIterator adriter = interface->findByType(libfwbuilder::IPv4::TYPENAME);
|
||||
FWObjectTypedChildIterator adriter = interface->findByType(IPv4::TYPENAME);
|
||||
for ( ; adriter != adriter.end(); ++adriter )
|
||||
{
|
||||
libfwbuilder::Address *addr = libfwbuilder::Address::cast(*adriter);
|
||||
Address *addr = Address::cast(*adriter);
|
||||
int row = addNewAddress();
|
||||
fwaddrs[row] = addr;
|
||||
rows[row].first->setText(addr->getAddressPtr()->toString().c_str());
|
||||
@@ -29,7 +29,7 @@ InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, libfwbuilder::Inte
|
||||
}
|
||||
}
|
||||
|
||||
InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, libfwbuilder::InterfaceData* data)
|
||||
InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, InterfaceData* data)
|
||||
{
|
||||
tabw = dynamic_cast<QTabWidget*>(parent);
|
||||
this->interface = NULL;
|
||||
@@ -46,7 +46,7 @@ InterfaceEditorWidget::InterfaceEditorWidget(QWidget *parent, libfwbuilder::Inte
|
||||
this->m_ui->type->setCurrentIndex(0);
|
||||
if ( !data->isDyn && !data->isUnnumbered )
|
||||
{
|
||||
foreach( libfwbuilder::InetAddrMask* addr, data->addr_mask )
|
||||
foreach( InetAddrMask* addr, data->addr_mask )
|
||||
{
|
||||
int row = addNewAddress();
|
||||
rows[row].first->setText(addr->getAddressPtr()->toString().c_str());
|
||||
@@ -131,7 +131,7 @@ void InterfaceEditorWidget::nameEdited(QString newname)
|
||||
}
|
||||
|
||||
|
||||
libfwbuilder::Interface* InterfaceEditorWidget::getInterface()
|
||||
Interface* InterfaceEditorWidget::getInterface()
|
||||
{
|
||||
return this->interface;
|
||||
}
|
||||
@@ -216,9 +216,9 @@ bool InterfaceEditorWidget::validateAddress(const QString &addr,
|
||||
}
|
||||
try
|
||||
{
|
||||
libfwbuilder::InetAddr(addr.toLatin1().constData());
|
||||
InetAddr(addr.toLatin1().constData());
|
||||
}
|
||||
catch (libfwbuilder::FWException &ex)
|
||||
catch (FWException &ex)
|
||||
{
|
||||
QMessageBox::warning(
|
||||
this,"Firewall Builder",
|
||||
@@ -243,11 +243,11 @@ bool InterfaceEditorWidget::validateAddress(const QString &addr,
|
||||
}
|
||||
else
|
||||
{
|
||||
libfwbuilder::InetAddr(netm.toLatin1().constData());
|
||||
InetAddr(netm.toLatin1().constData());
|
||||
}
|
||||
|
||||
}
|
||||
catch (libfwbuilder::FWException &ex)
|
||||
catch (FWException &ex)
|
||||
{
|
||||
QMessageBox::warning(
|
||||
this,"Firewall Builder",
|
||||
@@ -268,3 +268,14 @@ void InterfaceEditorWidget::resizeEvent ( QResizeEvent * )
|
||||
this->m_ui->addresses->setColumnWidth(2, controls);
|
||||
this->m_ui->addresses->setColumnWidth(3, controls);
|
||||
}
|
||||
|
||||
void InterfaceEditorWidget::addressChanged(int row, int col)
|
||||
{
|
||||
if ( rows.isEmpty() || row > this->m_ui->addresses->rowCount() || col > 1 ) return;
|
||||
|
||||
QString address = this->rows[row].first->text();
|
||||
QString netmask = this->rows[row].second->text();
|
||||
if ( address.isEmpty() || netmask.isEmpty() ) return;
|
||||
bool regular = this->types[row]->currentIndex() == 0;
|
||||
validateAddress(address, netmask, regular);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "fwbuilder/Interface.h"
|
||||
|
||||
using namespace libfwbuilder;
|
||||
|
||||
namespace Ui {
|
||||
class InterfaceEditorWidget;
|
||||
}
|
||||
@@ -36,11 +38,11 @@ struct AddressInfo
|
||||
class InterfaceEditorWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
InterfaceEditorWidget(QWidget *parent, libfwbuilder::Interface *interface);
|
||||
InterfaceEditorWidget(QWidget *parent, libfwbuilder::InterfaceData* data);
|
||||
InterfaceEditorWidget(QWidget *parent, Interface *interface);
|
||||
InterfaceEditorWidget(QWidget *parent, InterfaceData* data);
|
||||
InterfaceEditorWidget(QWidget *parent);
|
||||
~InterfaceEditorWidget();
|
||||
libfwbuilder::Interface* getInterface();
|
||||
Interface* getInterface();
|
||||
EditedInterfaceData getInterfaceData();
|
||||
bool isValid();
|
||||
|
||||
@@ -50,12 +52,12 @@ protected:
|
||||
private:
|
||||
QTabWidget *tabw;
|
||||
QToolButton *addAddr, *delAddr;
|
||||
libfwbuilder::Interface *interface;
|
||||
Interface *interface;
|
||||
Ui::InterfaceEditorWidget *m_ui;
|
||||
QMap<QPushButton*, QPair<QTableWidgetItem*, QTableWidgetItem*> > buttons;
|
||||
QMap<int, QPair<QTableWidgetItem*, QTableWidgetItem*> > rows;
|
||||
QMap<int, QComboBox*> types;
|
||||
QMap<int, libfwbuilder::Address*> fwaddrs;
|
||||
QMap<int, Address*> fwaddrs;
|
||||
bool validateAddress(const QString &addr, const QString &netm, bool regular);
|
||||
|
||||
public slots:
|
||||
@@ -63,6 +65,7 @@ public slots:
|
||||
void deleteAddress();
|
||||
void nameEdited(QString);
|
||||
void typeChanged(int);
|
||||
void addressChanged(int, int);
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent ( QResizeEvent * );
|
||||
|
||||
@@ -111,9 +111,6 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="addresses">
|
||||
<attribute name="horizontalHeaderDefaultSectionSize">
|
||||
<number>120</number>
|
||||
</attribute>
|
||||
<attribute name="horizontalHeaderDefaultSectionSize">
|
||||
<number>120</number>
|
||||
</attribute>
|
||||
@@ -198,11 +195,28 @@
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>addresses</sender>
|
||||
<signal>cellChanged(int,int)</signal>
|
||||
<receiver>InterfaceEditorWidget</receiver>
|
||||
<slot>addressChanged(int,int)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>41</x>
|
||||
<y>318</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>3</x>
|
||||
<y>314</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>nameEdited(QString)</slot>
|
||||
<slot>closeTab(int)</slot>
|
||||
<slot>addNewAddress()</slot>
|
||||
<slot>typeChanged(int)</slot>
|
||||
<slot>addressChanged(int,int)</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
|
||||
@@ -40,9 +40,9 @@ void InterfacesTabWidget::changeEvent(QEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
QMap<libfwbuilder::Interface*, EditedInterfaceData> InterfacesTabWidget::getData()
|
||||
QMap<Interface*, EditedInterfaceData> InterfacesTabWidget::getData()
|
||||
{
|
||||
QMap<libfwbuilder::Interface*, EditedInterfaceData> res;
|
||||
QMap<Interface*, EditedInterfaceData> res;
|
||||
for ( int i = 0; i < this->count(); i++ )
|
||||
{
|
||||
if ( dynamic_cast<InterfaceEditorWidget*>(this->widget(i))->getInterface() == NULL)
|
||||
@@ -65,12 +65,12 @@ QList<EditedInterfaceData> InterfacesTabWidget::getNewData()
|
||||
return res;
|
||||
}
|
||||
|
||||
QList<libfwbuilder::Interface*> InterfacesTabWidget::getDeletedInterfaces()
|
||||
QList<Interface*> InterfacesTabWidget::getDeletedInterfaces()
|
||||
{
|
||||
return deleted;
|
||||
}
|
||||
|
||||
void InterfacesTabWidget::addInterface(libfwbuilder::Interface *interface)
|
||||
void InterfacesTabWidget::addInterface(Interface *interface)
|
||||
{
|
||||
this->addTab(new InterfaceEditorWidget(this, interface), interface->getName().c_str());
|
||||
}
|
||||
@@ -81,7 +81,7 @@ void InterfacesTabWidget::addNewInterface()
|
||||
setCurrentIndex(count() - 1);
|
||||
}
|
||||
|
||||
void InterfacesTabWidget::setTemplate(libfwbuilder::FWObject* obj)
|
||||
void InterfacesTabWidget::setTemplate(FWObject* obj)
|
||||
{
|
||||
currentTemplate = obj;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ void InterfacesTabWidget::closeTab()
|
||||
if ( this->count() == 1 ) return;
|
||||
int idx = this->currentIndex();
|
||||
QWidget *w = this->widget(idx);
|
||||
libfwbuilder::Interface *interface = dynamic_cast<InterfaceEditorWidget*>(w)->getInterface() ;
|
||||
Interface *interface = dynamic_cast<InterfaceEditorWidget*>(w)->getInterface() ;
|
||||
if ( interface != NULL ) deleted.append( interface );
|
||||
this->removeTab(idx);
|
||||
delete w;
|
||||
@@ -120,7 +120,7 @@ void InterfacesTabWidget::setCornerWidgetsVisible(bool st)
|
||||
this->cornerWidget(Qt::TopLeftCorner)->setVisible(st);
|
||||
}
|
||||
|
||||
void InterfacesTabWidget::addInterface(libfwbuilder::InterfaceData* idata)
|
||||
void InterfacesTabWidget::addInterface(InterfaceData* idata)
|
||||
{
|
||||
addTab(new InterfaceEditorWidget(this, idata), idata->name.c_str());
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "fwbuilder/FWObjectDatabase.h"
|
||||
#include "InterfaceEditorWidget.h"
|
||||
|
||||
using namespace libfwbuilder;
|
||||
|
||||
namespace Ui {
|
||||
class InterfacesTabWidget;
|
||||
}
|
||||
@@ -29,7 +31,7 @@ struct EditedInterfaceData
|
||||
QString comment;
|
||||
QString mac;
|
||||
int type; // 0 - regular, 1 - dynamic, 2 - unnumbered
|
||||
QMultiMap<libfwbuilder::Address*, AddressInfo > addresses;
|
||||
QMultiMap<Address*, AddressInfo > addresses;
|
||||
};
|
||||
|
||||
class InterfacesTabWidget : public QTabWidget {
|
||||
@@ -37,9 +39,9 @@ class InterfacesTabWidget : public QTabWidget {
|
||||
public:
|
||||
InterfacesTabWidget(QWidget *parent = 0);
|
||||
~InterfacesTabWidget();
|
||||
QMap<libfwbuilder::Interface*, EditedInterfaceData> getData();
|
||||
QMap<Interface*, EditedInterfaceData> getData();
|
||||
QList<EditedInterfaceData> getNewData();
|
||||
QList<libfwbuilder::Interface*> getDeletedInterfaces();
|
||||
QList<Interface*> getDeletedInterfaces();
|
||||
bool isValid();
|
||||
void setCornerWidgetsVisible(bool);
|
||||
|
||||
@@ -52,16 +54,16 @@ private:
|
||||
QToolButton *delInterface;
|
||||
QWidget newInterfaceWidget;
|
||||
QHBoxLayout newInterfaceLayout;
|
||||
libfwbuilder::FWObject *currentTemplate;
|
||||
QList<libfwbuilder::Interface*> deleted;
|
||||
FWObject *currentTemplate;
|
||||
QList<Interface*> deleted;
|
||||
|
||||
public slots:
|
||||
void addInterface(libfwbuilder::Interface*);
|
||||
void addInterface(Interface*);
|
||||
void clear();
|
||||
void addNewInterface();
|
||||
void setTemplate(libfwbuilder::FWObject*);
|
||||
void setTemplate(FWObject*);
|
||||
void closeTab();
|
||||
void addInterface(libfwbuilder::InterfaceData*);
|
||||
void addInterface(InterfaceData*);
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user