#include <QFtp> #include <QStatusBar> #include <QTemporaryFile> #include "FtpBrowser.h" FtpBrowser::FtpBrowser(QStatusBar *status){ ftp=0; file=0; this->status=status; } FtpBrowser::~FtpBrowser(){ delete ftp; } void FtpBrowser::open(QString server, QString user, QString passwd, QString dir){ status->showMessage(tr("Avan ühendust serverisse %1").arg(server)); ftp = new QFtp(this); ftp->connectToHost(server); ftp->login(user, passwd); ftp->cd(dir); ftp->list(); connect(ftp, SIGNAL(commandFinished(int, bool)),this, SLOT(command(int, bool))); } void FtpBrowser::command(int command, bool error){ QFtp::Command c=ftp->currentCommand(); if (c==QFtp::ConnectToHost) { if (error) { status->showMessage(tr("Serverisse ei saa ühenduda. Kontrolli serveri aadressi õigsust")); return; } status->showMessage(tr("Ühendatud serverisse")); return; } if (c==QFtp::Login){ if (error){ status->showMessage(tr("Serverisse logimine ebaõnnestus. Kontrolli kasutajanime ja salasõna õigsust")); return; } emit connected(); } if (c==QFtp::Cd){ if (error){ status->showMessage(tr("Kataloogi vahetamine ebaõnnestus. Kontrolli kataloogi õigsust")); return; } } if (c==QFtp::Get) { if (error) { status->showMessage(tr("Faili tõmbamine katkestati: %1").arg(ftp->errorString())); file->close(); file->remove(); } else { status->showMessage(tr("Fail tõmmati töökataloogi")); file->close(); emit(downloaded(file->fileName())); } } if (c==QFtp::Put) { if (error) { status->showMessage(tr("Faili saatmine katkestati")); } else { status->showMessage(tr("Fail saadeti serverisse")); } } if (c==QFtp::Remove) { if (error) { status->showMessage(tr("Faili eemaldamine katkestati: %1").arg(ftp->errorString())); emit removeStatus(false); } else { status->showMessage(tr("Fail eemaldati")); emit removeStatus(true); } } } void FtpBrowser::download(QString fileName){ delete file; file = new QTemporaryFile(); ((QTemporaryFile*)file)->setAutoRemove(false); if (!file->open(QIODevice::WriteOnly)) { status->showMessage(tr("Ei saa salvestada faili %1: %2.").arg(fileName).arg(file->errorString())); delete file; return; } ftp->get(fileName, file); status->showMessage(tr("Tõmban faili %1").arg(fileName)); } void FtpBrowser::upload(QString data, QString remoteFileName){ ftp->put(data.toAscii(), remoteFileName); status->showMessage(tr("Saadan faili %1").arg(remoteFileName)); ftp->list(); } void FtpBrowser::remove(QString fileName){ ftp->remove(fileName); status->showMessage(tr("Eemaldan faili %1...").arg(fileName)); ftp->list(); }