You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
289 lines
8.2 KiB
289 lines
8.2 KiB
/****************************************************************************
|
|
** 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(), TQT_SIGNAL(clicked()), (TQDialog*)this, TQT_SLOT(accept()));
|
|
connect(finishButton(), TQT_SIGNAL(clicked()), this, TQT_SLOT(finished()));
|
|
finishButton()->setText(i18n("Save && C&onnect"));
|
|
//setResizeMode(Fixed); FIXME: make the wizard fixed-geometry
|
|
setFinishEnabled(_folderParameters, false);
|
|
KConfig recent("krecentconnections", 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 <i>WebFolder</i> as well as a server address, port and folder path to use and press the <b>Save & Connect</b> button.");
|
|
} else if (type=="Fish") {
|
|
text = i18n("Enter a name for this <i>Secure shell connection</i> as well as a server address, port and folder path to use and press the <b>Save & Connect</b> button.");
|
|
} else if (type=="FTP") {
|
|
text = i18n("Enter a name for this <i>File Transfer Protocol connection</i> as well as a server address and folder path to use and press the <b>Save & Connect</b> button.");
|
|
} else if (type=="SMB") {
|
|
text = i18n("Enter a name for this <i>Microsoft Windows network drive</i> as well as a server address and folder path to use and press the <b>Save & Connect</b> 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 (_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()) {
|
|
KConfig recent("krecentconnections", 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 == "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()) {
|
|
KGlobal::dirs()->addResourceType("remote_entries",
|
|
KStandardDirs::kde_default("data") + "remoteview");
|
|
|
|
TQString path = KGlobal::dirs()->saveLocation("remote_entries");
|
|
path += name + ".desktop";
|
|
KSimpleConfig desktopFile(path, false);
|
|
desktopFile.setGroup("Desktop Entry");
|
|
desktopFile.writeEntry("Icon", "package_network");
|
|
desktopFile.writeEntry("Name", name);
|
|
desktopFile.writeEntry("Type", "Link");
|
|
desktopFile.writeEntry("URL", url.prettyURL());
|
|
desktopFile.sync();
|
|
KDirNotify_stub notifier("*", "*");
|
|
notifier.FilesAdded( "remote:/" );
|
|
}
|
|
|
|
if (!name.isEmpty()) {
|
|
KConfig recent("krecentconnections", 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 == "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)
|
|
{
|
|
KIO::UDSEntry entry;
|
|
if (KIO::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") {
|
|
_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"));
|
|
}
|
|
}
|
|
|
|
// vim: ts=8 sw=4 noet
|