/**************************************************************************** ** ui.h extension file, included from the uic-generated form implementation. ** ** If you want to add, delete, or rename functions or slots, use ** Qt Designer to update this file, preserving your code. ** ** You should not define a constructor or destructor in this file. ** Instead, write your code in functions called init() and destroy(). ** These will automatically be called by the form's constructor and ** destructor. *****************************************************************************/ void KNetAttach::init() { setIcon(SmallIcon("knetattach")); disconnect(finishButton(), TQ_SIGNAL(clicked()), (TQDialog*)this, TQ_SLOT(accept())); connect(finishButton(), TQ_SIGNAL(clicked()), this, TQ_SLOT(finished())); finishButton()->setText(i18n("Save && C&onnect")); //setResizeMode(Fixed); FIXME: make the wizard fixed-geometry setFinishEnabled(_folderParameters, false); TDEConfig recent("tderecentconnections", true, false); recent.setGroup("General"); TQStringList idx = recent.readListEntry("Index"); if (idx.isEmpty()) { _recent->setEnabled(false); if (_recent->isChecked()) { _webfolder->setChecked(true); } } else { _recent->setEnabled(true); _recentConnectionName->insertStringList(idx); } } void KNetAttach::setInformationText( const TQString &type ) { TQString text; if (type=="WebFolder") { text = i18n("Enter a name for this WebFolder as well as a server address, port and folder path to use and press the Save & Connect button."); } else if (type=="Fish"||type=="SFTP") { text = i18n("Enter a name for this Secure shell connection as well as a server address, port and folder path to use and press the Save & Connect button."); } else if (type=="FTP") { text = i18n("Enter a name for this File Transfer Protocol connection as well as a server address and folder path to use and press the Save & Connect button."); } else if (type=="SMB") { text = i18n("Enter a name for this Microsoft Windows network drive as well as a server address and folder path to use and press the Save & Connect button."); } _informationText->setText(text); } void KNetAttach::showPage( TQWidget *page ) { if (page == _folderType) { } else if (page == _folderParameters) { _host->setFocus(); _connectionName->setFocus(); if (_webfolder->isChecked()) { setInformationText("WebFolder"); updateForProtocol("WebFolder"); _port->setValue(80); } else if (_fish->isChecked()) { setInformationText("Fish"); updateForProtocol("Fish"); _port->setValue(22); } else if (_sftp->isChecked()) { setInformationText("SFTP"); updateForProtocol("SFTP"); _port->setValue(22); } else if (_ftp->isChecked()) { setInformationText("FTP"); updateForProtocol("FTP"); _port->setValue(21); if (_path->text().isEmpty()) { _path->setText("/"); } } else if (_smb->isChecked()) { setInformationText("SMB"); updateForProtocol("SMB"); } else { //if (_recent->isChecked()) { TDEConfig recent("tderecentconnections", true, false); if (!recent.hasGroup(_recentConnectionName->currentText())) { recent.setGroup("General"); TQStringList idx = recent.readListEntry("Index"); if (idx.isEmpty()) { _recent->setEnabled(false); if (_recent->isChecked()) { _webfolder->setChecked(true); } } else { _recent->setEnabled(true); _recentConnectionName->insertStringList(idx); } showPage(_folderType); return; } recent.setGroup(_recentConnectionName->currentText()); _type = recent.readEntry("Type"); setInformationText(_type); if (!updateForProtocol(_type)) { // FIXME: handle error } KURL u(recent.readEntry("URL")); _host->setText(u.host()); _user->setText(u.user()); _path->setText(u.path()); if (recent.hasKey("Port")) { _port->setValue(recent.readNumEntry("Port")); } else { _port->setValue(u.port()); } _connectionName->setText(_recentConnectionName->currentText()); _createIcon->setChecked(false); } updateParametersPageStatus(); } TQWizard::showPage(page); } void KNetAttach::updateParametersPageStatus() { setFinishEnabled(_folderParameters, !_host->text().stripWhiteSpace().isEmpty() && !_path->text().stripWhiteSpace().isEmpty() && !_connectionName->text().stripWhiteSpace().isEmpty()); } void KNetAttach::finished() { setBackEnabled(_folderParameters,false); setFinishEnabled(_folderParameters, false); KURL url; if (_type == "WebFolder") { if (_useEncryption->isChecked()) { url.setProtocol("webdavs"); } else { url.setProtocol("webdav"); } url.setPort(_port->value()); } else if (_type == "Fish") { url.setProtocol("fish"); url.setPort(_port->value()); } else if (_type == "SFTP") { url.setProtocol("sftp"); url.setPort(_port->value()); } else if (_type == "FTP") { url.setProtocol("ftp"); url.setPort(_port->value()); } else if (_type == "SMB") { url.setProtocol("smb"); } else { // recent } url.setHost(_host->text().stripWhiteSpace()); url.setUser(_user->text().stripWhiteSpace()); TQString path = _path->text().stripWhiteSpace(); if (!path.startsWith("/")) { path = TQString("/") + path; } url.setPath(path); _folderParameters->setEnabled(false); bool success = doConnectionTest(url); _folderParameters->setEnabled(true); if (!success) { KMessageBox::sorry(this, i18n("Unable to connect to server. Please check your settings and try again.")); showPage(_folderParameters); setBackEnabled(_folderParameters, true); return; } kapp->invokeBrowser(url.url()); TQString name = _connectionName->text().stripWhiteSpace(); if (_createIcon->isChecked()) { TDEGlobal::dirs()->addResourceType("remote_entries", TDEStandardDirs::kde_default("data") + "remoteview"); TQString path = TDEGlobal::dirs()->saveLocation("remote_entries"); path += name + ".desktop"; KSimpleConfig desktopFile(path, false); desktopFile.setGroup("Desktop Entry"); desktopFile.writeEntry("Icon", "applications-internet"); desktopFile.writeEntry("Name", name); desktopFile.writeEntry("Type", "Link"); desktopFile.writeEntry("URL", url.prettyURL()); desktopFile.sync(); KDirNotify_stub notifier("*", "*"); notifier.FilesAdded( "remote:/" ); } if (!name.isEmpty()) { TDEConfig recent("tderecentconnections", false, false); recent.setGroup("General"); TQStringList idx = recent.readListEntry("Index"); recent.deleteGroup(name); // erase anything stale if (idx.contains(name)) { idx.remove(name); idx.prepend(name); recent.writeEntry("Index", idx); recent.setGroup(name); } else { TQString last; if (!idx.isEmpty()) { last = idx.last(); idx.pop_back(); } idx.prepend(name); recent.deleteGroup(last); recent.writeEntry("Index", idx); } recent.setGroup(name); recent.writeEntry("URL", url.prettyURL()); if (_type == "WebFolder" || _type == "Fish" || _type == "SFTP" || _type == "FTP") { recent.writeEntry("Port", _port->value()); } recent.writeEntry("Type", _type); recent.sync(); } TQDialog::accept(); } void KNetAttach::updatePort(bool encryption) { if (_webfolder->isChecked()) { if (encryption) { _port->setValue(443); } else { _port->setValue(80); } } } bool KNetAttach::doConnectionTest(const KURL& url) { TDEIO::UDSEntry entry; if (TDEIO::NetAccess::stat(url, entry, this)) { // Anything to test here? return true; } return false; } bool KNetAttach::updateForProtocol(const TQString& protocol) { _type = protocol; if (protocol == "WebFolder") { _useEncryption->show(); _portText->show(); _port->show(); _userText->show(); _user->show(); } else if (protocol == "Fish" || protocol == "SFTP") { _useEncryption->hide(); _portText->show(); _port->show(); _userText->show(); _user->show(); } else if (protocol == "FTP") { _useEncryption->hide(); _portText->show(); _port->show(); _userText->show(); _user->show(); } else if (protocol == "SMB") { _useEncryption->hide(); _portText->hide(); _port->hide(); _userText->hide(); _user->hide(); } else { _type = ""; return false; } return true; } void KNetAttach::updateFinishButtonText(bool save) { if (save) { finishButton()->setText(i18n("Save && C&onnect")); } else { finishButton()->setText(i18n("C&onnect")); } }