[fwbuilder-commits] r2015 - branches/v3_1/src/gui
Brought to you by:
mikehorn
From: <a2...@in...> - 2009-12-03 20:03:48
|
Author: a2k Date: 2009-12-03 12:02:35 -0800 (Thu, 03 Dec 2009) New Revision: 2015 Modified: branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.cpp branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.h branches/v3_1/src/gui/InterfacesTabWidget.cpp branches/v3_1/src/gui/InterfacesTabWidget.h branches/v3_1/src/gui/newClusterDialog.cpp branches/v3_1/src/gui/newFirewallDialog.cpp Log: Fixed #783 and #779 Modified: branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.cpp =================================================================== --- branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.cpp 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.cpp 2009-12-03 20:02:35 UTC (rev 2015) @@ -43,6 +43,7 @@ this->setCornerWidget(&newInterface, Qt::TopLeftCorner); this->cornerWidget(Qt::TopRightCorner)->show(); this->cornerWidget(Qt::TopLeftCorner)->show(); + noTabs = false; } ClusterInterfacesSelectorWidget::~ClusterInterfacesSelectorWidget() @@ -88,6 +89,11 @@ ClusterInterfaceWidget* ClusterInterfacesSelectorWidget::addNewInterface() { + if (noTabs) + { + this->removeTab(0); + noTabs = false; + } ClusterInterfaceWidget* widget = new ClusterInterfaceWidget(this); widget->setFirewallList(this->fwlist); this->editors.append(widget); @@ -110,6 +116,12 @@ { this->editors.removeAll(dynamic_cast<ClusterInterfaceWidget*>(this->widget(this->currentIndex()))); this->removeTab(this->currentIndex()); + if (this->count()==0) + { + noTabs = true; + QLabel *label = new QLabel(tr("This cluster has no interfaces. Add interface using button <img src=\":/Icons/add.png\" width=15 height=15>."), this); + this->addTab(label, tr("No interfaces")); + } } QList<ClusterInterfaceData> ClusterInterfacesSelectorWidget::getInterfaces() Modified: branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.h =================================================================== --- branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.h 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/ClusterInterfacesSelectorWidget.h 2009-12-03 20:02:35 UTC (rev 2015) @@ -60,6 +60,7 @@ QList<libfwbuilder::Firewall*> fwlist; QToolButton newInterface; QToolButton delInterface; + bool noTabs; public slots: ClusterInterfaceWidget* addNewInterface(); Modified: branches/v3_1/src/gui/InterfacesTabWidget.cpp =================================================================== --- branches/v3_1/src/gui/InterfacesTabWidget.cpp 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/InterfacesTabWidget.cpp 2009-12-03 20:02:35 UTC (rev 2015) @@ -35,25 +35,22 @@ m_ui->setupUi(this); clusterMode = false; clear(); - newInterface = new QToolButton(); - delInterface = new QToolButton(); - connect(newInterface, SIGNAL(clicked()), this, SLOT(addNewInterface())); - connect(delInterface, SIGNAL(clicked()), this, SLOT(closeTab())); - newInterface->setIcon(QIcon(":/Icons/add.png")); - delInterface->setIcon(QIcon(":/Icons/del.png")); - newInterface->setToolTip(tr("Add new interface")); - delInterface->setToolTip(tr("Delete current interface")); - this->setCornerWidget(delInterface, Qt::TopRightCorner); - this->setCornerWidget(newInterface, Qt::TopLeftCorner); + connect(&newInterface, SIGNAL(clicked()), this, SLOT(addNewInterface())); + connect(&delInterface, SIGNAL(clicked()), this, SLOT(closeTab())); + newInterface.setIcon(QIcon(":/Icons/add.png")); + delInterface.setIcon(QIcon(":/Icons/del.png")); + newInterface.setToolTip(tr("Add new interface")); + delInterface.setToolTip(tr("Delete current interface")); + this->setCornerWidget(&delInterface, Qt::TopRightCorner); + this->setCornerWidget(&newInterface, Qt::TopLeftCorner); this->cornerWidget(Qt::TopRightCorner)->show(); this->cornerWidget(Qt::TopLeftCorner)->show(); + noTabs = true; } InterfacesTabWidget::~InterfacesTabWidget() { delete m_ui; - delete newInterface; - delete delInterface; } void InterfacesTabWidget::changeEvent(QEvent *e) @@ -73,10 +70,12 @@ QMap<Interface*, EditedInterfaceData> res; for ( int i = 0; i < this->count(); i++ ) { - if ( dynamic_cast<InterfaceEditorWidget*>(this->widget(i))->getInterface() == NULL) + InterfaceEditorWidget *w = dynamic_cast<InterfaceEditorWidget*>(this->widget(i)); + if (w == NULL || w->getInterface() == NULL) continue; InterfaceEditorWidget *intEditor = dynamic_cast<InterfaceEditorWidget*>(this->widget(i)); - res[intEditor->getInterface()] = intEditor->getInterfaceData(); + if (intEditor != NULL) + res[intEditor->getInterface()] = intEditor->getInterfaceData(); } return res; } @@ -87,7 +86,7 @@ for ( int i = 0; i < this->count(); i++ ) { InterfaceEditorWidget *w = dynamic_cast<InterfaceEditorWidget*>(this->widget(i)); - if ( w->getInterface() == NULL) + if ( w != NULL && w->getInterface() == NULL) res.append(w->getInterfaceData()); } return res; @@ -100,6 +99,12 @@ void InterfacesTabWidget::addInterface(Interface *iface) { + if (noTabs) + { + this->removeTab(0); + noTabs = false; + this->delInterface.setEnabled(true); + } InterfaceEditorWidget *w = new InterfaceEditorWidget(this, iface); w->setClusterMode(clusterMode); this->addTab(w, iface->getName().c_str()); @@ -107,6 +112,12 @@ void InterfacesTabWidget::addNewInterface() { + if (noTabs) + { + this->removeTab(0); + noTabs = false; + this->delInterface.setEnabled(true); + } InterfaceEditorWidget *w = new InterfaceEditorWidget(this); w->setClusterMode(clusterMode); addTab(w, tr("New interface")); @@ -126,20 +137,35 @@ void InterfacesTabWidget::closeTab() { - if ( this->count() == 1 ) return; + if (noTabs) return; int idx = this->currentIndex(); QWidget *w = this->widget(idx); Interface *iface = dynamic_cast<InterfaceEditorWidget*>(w)->getInterface() ; if ( iface != NULL ) deleted.append( iface ); this->removeTab(idx); delete w; + if (this->count() == 0) + { + noTabs = true; + QString text; + if (!this->clusterMode) + text = tr("This firewall has no interfaces. Add interface using button <img src=\":/Icons/add.png\" width=15 height=15>."); + else + text = tr("This cluster has no interfaces. Add interface using button <img src=\":/Icons/add.png\" width=15 height=15>."); + QLabel *label = new QLabel(text, this); + label->setAlignment(Qt::AlignCenter); + this->addTab(label, tr("No interfaces")); + this->delInterface.setEnabled(false); + } } bool InterfacesTabWidget::isValid() { for (int i = 0; i< this->count(); i++) { - if (!dynamic_cast<InterfaceEditorWidget*>(this->widget(i))->isValid()) + InterfaceEditorWidget* w = dynamic_cast<InterfaceEditorWidget*>(this->widget(i)); + if (w == NULL) continue; + if (!w->isValid()) return false; } return true; @@ -160,8 +186,10 @@ void InterfacesTabWidget::addTab(QWidget* widget, const QString& title) { - if ( dynamic_cast<InterfaceEditorWidget*>(widget) != NULL ) + if ( dynamic_cast<InterfaceEditorWidget*>(widget) != NULL || + (noTabs && dynamic_cast<QLabel*>(widget) != NULL)) { + if (!noTabs) dynamic_cast<InterfaceEditorWidget*>(widget)->setExplanation(explanation); QTabWidget::addTab(widget, title); } @@ -189,6 +217,7 @@ explanation = text; for( int i = 0; i < this->count(); i++ ) { - dynamic_cast<InterfaceEditorWidget*>(this->widget(i))->setExplanation(text); + InterfaceEditorWidget* w = dynamic_cast<InterfaceEditorWidget*>(this->widget(i)); + if (w!=NULL) w->setExplanation(text); } } Modified: branches/v3_1/src/gui/InterfacesTabWidget.h =================================================================== --- branches/v3_1/src/gui/InterfacesTabWidget.h 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/InterfacesTabWidget.h 2009-12-03 20:02:35 UTC (rev 2015) @@ -75,14 +75,15 @@ private: Ui::InterfacesTabWidget *m_ui; - QToolButton *newInterface; - QToolButton *delInterface; + QToolButton newInterface; + QToolButton delInterface; QWidget newInterfaceWidget; QHBoxLayout newInterfaceLayout; libfwbuilder::FWObject *currentTemplate; QList<libfwbuilder::Interface*> deleted; bool clusterMode; QString explanation; + bool noTabs; public slots: void addInterface(libfwbuilder::Interface*); Modified: branches/v3_1/src/gui/newClusterDialog.cpp =================================================================== --- branches/v3_1/src/gui/newClusterDialog.cpp 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/newClusterDialog.cpp 2009-12-03 20:02:35 UTC (rev 2015) @@ -148,6 +148,9 @@ } case INTERFACEEDITOR_PAGE: { + if (this->m_dialog->interfaceSelector->getInterfaces().count() == 0) + this->showPage(POLICY_PAGE); + this->m_dialog->interfaceEditor->setClusterMode(true); this->m_dialog->interfaceEditor->clear(); Modified: branches/v3_1/src/gui/newFirewallDialog.cpp =================================================================== --- branches/v3_1/src/gui/newFirewallDialog.cpp 2009-12-03 18:06:00 UTC (rev 2014) +++ branches/v3_1/src/gui/newFirewallDialog.cpp 2009-12-03 20:02:35 UTC (rev 2015) @@ -151,7 +151,7 @@ currentTemplate = NULL; this->m_dialog->interfaceEditor1->clear(); this->m_dialog->interfaceEditor2->clear(); - this->m_dialog->interfaceEditor2->removeTab(0); + this->m_dialog->interfaceEditor2->closeTab();//->removeTab(0); showPage(0); @@ -535,7 +535,7 @@ ); this->m_dialog->interfaceEditor2->clear(); - this->m_dialog->interfaceEditor2->removeTab(0); + this->m_dialog->interfaceEditor2->closeTab();//->removeTab(0); this->m_dialog->interfaceEditor2->setCornerWidgetsVisible(false); QList<Interface*> interfaces; FWObjectTypedChildIterator intiter = nfw->findByType(Interface::TYPENAME); |