mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-30 16:34:16 +00:00
- Added download from url handling in GUI (still missing: search plugin update and rss)
This commit is contained in:
parent
2fd0de082c
commit
1fb848e9ed
1
TODO
1
TODO
@ -28,6 +28,7 @@
|
||||
|
||||
// in v1.1.0
|
||||
- Tabs support in search
|
||||
- Have a look at libcommoncpp2 to see if it can be useful for other stuff than url downloading
|
||||
|
||||
// in v1.0.0 (partial) - WIP
|
||||
- Check storage st creation + hasher in torrent creation
|
||||
|
@ -152,6 +152,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){
|
||||
connect(BTSession, SIGNAL(peerBlocked(const QString&)), this, SLOT(addLogPeerBlocked(const QString)));
|
||||
connect(BTSession, SIGNAL(scanDirFoundTorrents(const QStringList&)), this, SLOT(processScannedFiles(const QStringList&)));
|
||||
connect(BTSession, SIGNAL(newDownloadedTorrent(const QString&, const QString&)), this, SLOT(processDownloadedFiles(const QString&, const QString&)));
|
||||
connect(BTSession, SIGNAL(downloadFromUrlFailure(const QString&, const QString&)), this, SLOT(handleDownloadFromUrlFailure(const QString&, const QString&)));
|
||||
connect(BTSession, SIGNAL(aboutToDownloadFromUrl(const QString&)), this, SLOT(displayDownloadingUrlInfos(const QString&)));
|
||||
// creating options
|
||||
options = new options_imp(this);
|
||||
@ -394,6 +395,11 @@ void GUI::on_actionSet_upload_limit_triggered(){
|
||||
new BandwidthAllocationDialog(this, true, BTSession, hashes);
|
||||
}
|
||||
|
||||
void GUI::handleDownloadFromUrlFailure(const QString& url, const QString& reason){
|
||||
// Display a message box
|
||||
QMessageBox::critical(0, tr("Url download error"), tr("Couldn't download url: %1, reason: %2.").arg(url).arg(reason));
|
||||
}
|
||||
|
||||
void GUI::on_actionSet_global_upload_limit_triggered(){
|
||||
qDebug("actionSet_global_upload_limit_triggered");
|
||||
new BandwidthAllocationDialog(this, true, BTSession, QStringList());
|
||||
|
@ -153,6 +153,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
||||
void displayUpTab();
|
||||
void displaySearchTab();
|
||||
void displayRSSTab();
|
||||
void handleDownloadFromUrlFailure(const QString&, const QString&);
|
||||
// Torrent actions
|
||||
void showProperties(const QModelIndex &index);
|
||||
void on_actionTorrent_Properties_triggered();
|
||||
|
@ -51,6 +51,7 @@ bittorrent::bittorrent(){
|
||||
// To download from urls
|
||||
downloader = new downloadThread(this);
|
||||
connect(downloader, SIGNAL(downloadFinished(const QString&, const QString&)), this, SLOT(processDownloadedFile(const QString&, const QString&)));
|
||||
connect(downloader, SIGNAL(downloadFailure(const QString&, const QString&)), this, SLOT(HandleDownloadFailure(const QString&, const QString&)));
|
||||
}
|
||||
|
||||
// Main destructor
|
||||
@ -78,6 +79,10 @@ void bittorrent::setUploadLimit(QString hash, int val){
|
||||
saveTorrentSpeedLimits(hash);
|
||||
}
|
||||
|
||||
void bittorrent::HandleDownloadFailure(const QString& url, const QString& reason){
|
||||
emit downloadFromUrlFailure(url, reason);
|
||||
}
|
||||
|
||||
void bittorrent::updateETAs(){
|
||||
std::vector<torrent_handle> handles = s->get_torrents();
|
||||
for(unsigned int i=0; i<handles.size(); ++i){
|
||||
@ -1014,12 +1019,6 @@ void bittorrent::downloadFromUrl(const QString& url){
|
||||
|
||||
// Add to bittorrent session the downloaded torrent file
|
||||
void bittorrent::processDownloadedFile(const QString& url, const QString& file_path){
|
||||
// if(return_code){
|
||||
// // Download failed
|
||||
// emit downloadFromUrlFailure(url, errorBuffer);
|
||||
// QFile::remove(file_path);
|
||||
// return;
|
||||
// }
|
||||
// Add file to torrent download list
|
||||
emit newDownloadedTorrent(file_path, url);
|
||||
}
|
||||
|
@ -117,6 +117,7 @@ class bittorrent : public QObject{
|
||||
void loadTorrentSpeedLimits(QString hash);
|
||||
void saveDownloadUploadForTorrent(QString hash);
|
||||
void loadDownloadUploadForTorrent(QString hash);
|
||||
void HandleDownloadFailure(const QString& url, const QString& reason);
|
||||
// Session configuration - Setters
|
||||
void setListeningPortsRange(std::pair<unsigned short, unsigned short> ports);
|
||||
void setMaxConnections(int maxConnec);
|
||||
@ -150,13 +151,13 @@ class bittorrent : public QObject{
|
||||
void trackerError(const QString& hash, const QString& time, const QString& msg);
|
||||
void portListeningFailure();
|
||||
void trackerAuthenticationRequired(torrent_handle& h);
|
||||
void downloadFromUrlFailure(const QString& url, const QString& error);
|
||||
void scanDirFoundTorrents(const QStringList& pathList);
|
||||
void newDownloadedTorrent(const QString& path, const QString& url);
|
||||
void aboutToDownloadFromUrl(const QString& url);
|
||||
void updateFileSize(QString hash);
|
||||
void allTorrentsFinishedChecking();
|
||||
void peerBlocked(const QString&);
|
||||
void downloadFromUrlFailure(const QString& url, const QString& reason);
|
||||
|
||||
};
|
||||
|
||||
|
@ -49,6 +49,7 @@ class downloadThread : public QThread {
|
||||
|
||||
signals:
|
||||
void downloadFinished(const QString& url, const QString& file_path);
|
||||
void downloadFailure(const QString& url, const QString& reason);
|
||||
|
||||
public:
|
||||
downloadThread(QObject* parent) : QThread(parent){
|
||||
@ -78,6 +79,33 @@ class downloadThread : public QThread {
|
||||
}
|
||||
}
|
||||
|
||||
QString errorCodeToString(URLStream::Error status){
|
||||
switch(status){
|
||||
case URLStream::errUnreachable:
|
||||
return tr("Host is unreachable");
|
||||
case URLStream::errMissing:
|
||||
return tr("File was not found (404)");
|
||||
case URLStream::errDenied:
|
||||
return tr("Connection was denied");
|
||||
case URLStream::errInvalid:
|
||||
return tr("Url is invalid");
|
||||
case URLStream::errForbidden:
|
||||
return tr("Connection forbidden (403)");
|
||||
case URLStream::errUnauthorized:
|
||||
return tr("Connection was not authorized (401)");
|
||||
case URLStream::errRelocated:
|
||||
return tr("Content has moved (301)");
|
||||
case URLStream::errFailure:
|
||||
return tr("Connection failure");
|
||||
case URLStream::errTimeout:
|
||||
return tr("Connection was timed out");
|
||||
case URLStream::errInterface:
|
||||
return tr("Incorrect network interface");
|
||||
default:
|
||||
return tr("Unknown error");
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
void run(){
|
||||
forever{
|
||||
@ -104,10 +132,10 @@ class downloadThread : public QThread {
|
||||
URLStream::Error status = url_stream.get((const char*)url.toUtf8());
|
||||
if(status){
|
||||
// Failure
|
||||
//TODO: handle this
|
||||
QString error_msg = QString(misc::toString(status).c_str());
|
||||
qDebug("Download failed for %s, reason: %s", (const char*)url.toUtf8(), (const char*)error_msg.toUtf8());
|
||||
url_stream.close();
|
||||
emit downloadFailure(url, errorCodeToString(status));
|
||||
continue;
|
||||
}
|
||||
qDebug("Downloading %s...", (const char*)url.toUtf8());
|
||||
|
Loading…
x
Reference in New Issue
Block a user