/*************************************************************************** * * knetworkmanager-vpnauthenticationdialog.cpp - A NetworkManager frontend for KDE * * Copyright (C) 2006 Novell, Inc. * * Author: Helmut Schaa , * * 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "knetworkmanager-vpnservice.h" #include "knetworkmanager-vpnmanager.h" #include "knetworkmanager-vpnauthenticationdialog.h" #include "knetworkmanager-vpn_connection.h" #include "knetworkmanager-nm_proxy.h" #include "knetworkmanager-connection_setting_vpn.h" #include "knetworkmanager-connection_setting_info.h" extern TQT_DBusObjectPath vpn_attempt_this_conn; using namespace ConnectionSettings; /* * class VPNAuthenticationDialog * */ VPNAuthenticationDialog::VPNAuthenticationDialog(VPNConnection* conn, TQWidget* parent, const char* name, bool modal, WFlags fl) : AuthenticationDialog(parent, name, modal, fl) , _conn(conn) { this->setIcon(SmallIcon("encrypted", TQIconSet::Automatic)); this->setCaption(i18n("VPN Authentication for %1").arg(conn->getInfoSetting()->getName())); labelPixmap->setPixmap(TDEGlobal::instance()->iconLoader()->loadIcon("encrypted", TDEIcon::Small, 32)); // nice icons pushOK->setIconSet(SmallIcon("button_ok", TQIconSet::Automatic)); pushCancel->setIconSet(SmallIcon("button_cancel", TQIconSet::Automatic)); // we need the last widget in the focus queue TQFocusData* foc = focusData(); TQWidget* lastFocusWidget = foc->last(); VPN* vpn = conn->getVPNSetting(); VPNService* vpnservice = VPNManager::getVPNService(vpn->getServiceType()); // get the appropriate plugin and create the authentication widget VPNPlugin* vpnPlugin = vpnservice->getVPNPlugin(); if (vpnPlugin) { _vpnAuthWidget = vpnPlugin->CreateAuthenticationWidget(widgetStack); if (_vpnAuthWidget) { _vpnAuthWidget->setVPNData(conn->getVPNSetting()->getRoutes(), conn->getVPNSetting()->getData()); widgetStack->raiseWidget(_vpnAuthWidget); } } /* the widgets inside the authenticationwidget are now in the focus queue ==> we can now search the first widget inside the authenticationwidget which has to get the focus */ TQWidget* widget = foc->home(); for (int i = 0; i < foc->count(); ++i) { if (widget == lastFocusWidget) { // the next one is the first widget inside the authwidget widget = foc->next(); break; } widget = foc->next(); } if (widget) widget->setFocus(); // resize this->resize(minimumSizeHint()); } VPNAuthenticationDialog::~VPNAuthenticationDialog() { } bool VPNAuthenticationDialog::close(bool alsoDelete) { // no secrets provided, tell NM _conn->slotSecretsError(); return AuthenticationDialog::close(alsoDelete); } void VPNAuthenticationDialog::ok() { // Good, we have new secrets now, update the settings TQMap mypwds; mypwds = _vpnAuthWidget->getPasswords(); ConnectionSetting* propcore = _conn->getVPNSettingConnectionCore(); SettingsMap othersettingsmap = propcore->toMap(); // Pull the username and gateway out of mypwds to stuff in the NM standard settings matrix othersettingsmap.insert("user", TQT_DBusData::fromString(mypwds["user"])); mypwds.erase("user"); othersettingsmap.insert("domain", TQT_DBusData::fromString(mypwds["domain"])); mypwds.erase("domain"); // othersettingsmap.erase("Commit to disk"); // if (chkStorePasswordsPermanent->isChecked() == true) { // othersettingsmap.insert("Commit to disk", TQT_DBusData::fromString("true")); // } // else { // othersettingsmap.insert("Commit to disk", TQT_DBusData::fromString("false")); // } propcore->fromMap(othersettingsmap); VPN* prop = dynamic_cast(propcore); prop->setSecrets(mypwds); _conn->slotSecretsProvided(prop); TQDialog::done(0); } void VPNAuthenticationDialog::setPasswords(TQString name, TQString value) { if (value.length() > 0) { chkStorePasswordsPermanent->setChecked(true); _vpnAuthWidget->setPasswords(name, value); } } void VPNAuthenticationDialog::cancel() { /* TQStringList x; emit done (true, x, false, false); TQDialog::done(1);*/ printf("Attempting to deactivate VPN connection...\n"); // Disconnect the attempted connection _conn->slotSecretsError(); // Quit the dialog TQDialog::done(1); } #include "knetworkmanager-vpnauthenticationdialog.moc"