/*************************************************************************** * Copyright (C) 2004 by Christoph Thielecke * * crissi99@gmx.de * * * * 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. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "profilenetworkrouteoptions.h" #include #include #include #include #include #include #include #include #include #include #include "addnetworkroutedialog.h" #include "widgetnotifyhelper.h" ProfileNetworkRouteOptions::ProfileNetworkRouteOptions(QWidget *parent): ProfileNetworkRouteOptionsBase(parent) { WidgetNotifyHelper h; h.setupChangedAction(this); dialogModified=false; checkList(); } ProfileNetworkRouteOptions::~ProfileNetworkRouteOptions() { } void ProfileNetworkRouteOptions::additionalNetworkRoutesToggled(bool) { if (UseExtraNetworkRoutesCheckbox->isChecked()) { NetworkListView->setEnabled(TRUE); AddRoutePushButton->setEnabled(TRUE); checkList(); } else { NetworkListView->setEnabled(FALSE); DeleteNetworkRoutePushButton->setEnabled(FALSE); AddRoutePushButton->setEnabled(FALSE); } } void ProfileNetworkRouteOptions::delNetworkRouteClicked() { if ( NetworkListView->childCount() > 0 && NetworkListView->currentItem()!= 0 ) { QListViewItem *item = NetworkListView->currentItem(); QString Network = item->text(0); QString Netmask = item->text(1); int result = KMessageBox::questionYesNo ( this, i18n( "Do you really want to delete the network \"%1/%2\"?" ).arg( Network ).arg(Netmask), i18n( "Delete?" ) ); //LogOutput->append( "Result: "+ QString().setNum(result) ) ; if ( result == 3) // Yes { NetworkListView->removeItem(item); } checkList(); } } void ProfileNetworkRouteOptions::addNetworkRouteClicked() { AddNetworkRouteDialog dlg(this, i18n("Add Network Route...")); dlg.main->InterfaceComboBox->insertItem("default"); // interface where default route points //FIXME dlg.main->InterfaceComboBox->insertItem("eth0"); dlg.main->InterfaceComboBox->insertItem("eth1"); dlg.main->InterfaceComboBox->insertItem("eth2"); dlg.main->InterfaceComboBox->insertItem("ipsec0"); dlg.main->InterfaceComboBox->insertItem("tun0"); dlg.main->InterfaceComboBox->insertItem("ppp0"); if (dlg.exec()) { QString gateway = dlg.getGateway(); QString interface = dlg.getInterface(); if (!dlg.getUseGateway()) gateway="-"; if (!dlg.getUseInterface()) interface="-"; NetworkListView->insertItem( new QListViewItem(NetworkListView, dlg.getNetwork(),dlg.getNetmask(), gateway,interface)); if (dlg.dialogModified == true) dialogModified=true; } checkList(); } void ProfileNetworkRouteOptions::editNetworkRouteClicked() { if ( NetworkListView->childCount() > 0 && NetworkListView->currentItem()!= 0 ) { AddNetworkRouteDialog dlg(this, i18n("Edit Network Route...")); QString Network=NetworkListView->currentItem()->text(0); QString Netmask=NetworkListView->currentItem()->text(1); QString Gateway=NetworkListView->currentItem()->text(2); QString Interface=NetworkListView->currentItem()->text(3); dlg.main->InterfaceComboBox->insertItem("default"); // interface where default route points //FIXME dlg.main->InterfaceComboBox->insertItem("eth0"); dlg.main->InterfaceComboBox->insertItem("eth1"); dlg.main->InterfaceComboBox->insertItem("eth2"); dlg.main->InterfaceComboBox->insertItem("ipsec0"); dlg.main->InterfaceComboBox->insertItem("tun0"); dlg.main->InterfaceComboBox->insertItem("tun1"); dlg.main->InterfaceComboBox->insertItem("tun2"); dlg.main->InterfaceComboBox->insertItem("tap0"); dlg.main->InterfaceComboBox->insertItem("tap1"); dlg.main->InterfaceComboBox->insertItem("tap2"); dlg.main->InterfaceComboBox->insertItem("ppp0"); dlg.main->RemoteNetAddrLineEdit->setText(Network); dlg.main->RemoteNetMaskComboBox->setCurrentItem(Netmask); if (!Gateway.isEmpty() && Gateway != "-") { dlg.main->RemoteGatewayAddrLineEdit->setText(Gateway); dlg.main->UseGatewayCheckBox->setChecked(true); } else dlg.main->UseGatewayCheckBox->setChecked(false); if (!Interface.isEmpty() && Interface!="-") { dlg.main->InterfaceComboBox->setCurrentText(Interface); dlg.main->UseInterfaceCheckBox->setChecked(true); } else dlg.main->UseInterfaceCheckBox->setChecked(false); if (dlg.exec()) { QString gateway = dlg.getGateway(); QString interface = dlg.getInterface(); if (!dlg.getUseGateway()) gateway="-"; if (!dlg.getUseInterface()) interface="-"; NetworkListView->takeItem(NetworkListView->currentItem()); NetworkListView->insertItem( new QListViewItem(NetworkListView, dlg.getNetwork(),dlg.getNetmask(), gateway,interface)); // NetworkListView->currentItem()->text(0) = dlg.getNetwork(); // NetworkListView->currentItem()->text(1) = dlg.getNetmask(); // NetworkListView->currentItem()->text(2) = gateway; // NetworkListView->currentItem()->text(3) = interface; } checkList(); } } void ProfileNetworkRouteOptions::checkList() { if (NetworkListView->childCount() > 0 && NetworkListView->currentItem()!= 0 ) { EditRoutePushButton->setEnabled(true); DeleteNetworkRoutePushButton->setEnabled(true); } else { EditRoutePushButton->setEnabled(false); DeleteNetworkRoutePushButton->setEnabled(false); } } void ProfileNetworkRouteOptions::contextMenuRequested ( QListViewItem * item, const QPoint &pos, int ) { ContextMenu = new QPopupMenu ( 0 ); if (item != 0) { ContextMenu->insertItem(i18n("&Edit...")); ContextMenu->insertItem(i18n("&Delete...")); } ContextMenu->insertItem(i18n("&Add...")); connect ( ContextMenu, SIGNAL ( activated ( int ) ), this, SLOT ( doContextMenuAction ( int ) ) ); ContextMenu->show(); ContextMenu->setGeometry(pos.x(),pos.y(), ContextMenu->width(),ContextMenu->height()); } void ProfileNetworkRouteOptions::doContextMenuAction ( int action) { QString itemtext = ContextMenu->text ( action ); // std::cout << "action: " << itemtext << std::endl; if (itemtext == i18n("&Edit...")) editNetworkRouteClicked(); if (itemtext == i18n("&Delete...")) delNetworkRouteClicked(); if (itemtext == i18n("&Add...")) addNetworkRouteClicked(); } void ProfileNetworkRouteOptions::dialogChanged() { // std::cout << "ProfileNetworkRouteOptions::dialogChanged()" << std::endl; dialogModified=true; }