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
|
// in v1.1.0
|
||||||
- Tabs support in search
|
- 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
|
// in v1.0.0 (partial) - WIP
|
||||||
- Check storage st creation + hasher in torrent creation
|
- 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(peerBlocked(const QString&)), this, SLOT(addLogPeerBlocked(const QString)));
|
||||||
connect(BTSession, SIGNAL(scanDirFoundTorrents(const QStringList&)), this, SLOT(processScannedFiles(const QStringList&)));
|
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(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&)));
|
connect(BTSession, SIGNAL(aboutToDownloadFromUrl(const QString&)), this, SLOT(displayDownloadingUrlInfos(const QString&)));
|
||||||
// creating options
|
// creating options
|
||||||
options = new options_imp(this);
|
options = new options_imp(this);
|
||||||
@ -394,6 +395,11 @@ void GUI::on_actionSet_upload_limit_triggered(){
|
|||||||
new BandwidthAllocationDialog(this, true, BTSession, hashes);
|
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(){
|
void GUI::on_actionSet_global_upload_limit_triggered(){
|
||||||
qDebug("actionSet_global_upload_limit_triggered");
|
qDebug("actionSet_global_upload_limit_triggered");
|
||||||
new BandwidthAllocationDialog(this, true, BTSession, QStringList());
|
new BandwidthAllocationDialog(this, true, BTSession, QStringList());
|
||||||
|
@ -153,6 +153,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
|||||||
void displayUpTab();
|
void displayUpTab();
|
||||||
void displaySearchTab();
|
void displaySearchTab();
|
||||||
void displayRSSTab();
|
void displayRSSTab();
|
||||||
|
void handleDownloadFromUrlFailure(const QString&, const QString&);
|
||||||
// Torrent actions
|
// Torrent actions
|
||||||
void showProperties(const QModelIndex &index);
|
void showProperties(const QModelIndex &index);
|
||||||
void on_actionTorrent_Properties_triggered();
|
void on_actionTorrent_Properties_triggered();
|
||||||
|
@ -51,6 +51,7 @@ bittorrent::bittorrent(){
|
|||||||
// To download from urls
|
// To download from urls
|
||||||
downloader = new downloadThread(this);
|
downloader = new downloadThread(this);
|
||||||
connect(downloader, SIGNAL(downloadFinished(const QString&, const QString&)), this, SLOT(processDownloadedFile(const QString&, const QString&)));
|
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
|
// Main destructor
|
||||||
@ -78,6 +79,10 @@ void bittorrent::setUploadLimit(QString hash, int val){
|
|||||||
saveTorrentSpeedLimits(hash);
|
saveTorrentSpeedLimits(hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void bittorrent::HandleDownloadFailure(const QString& url, const QString& reason){
|
||||||
|
emit downloadFromUrlFailure(url, reason);
|
||||||
|
}
|
||||||
|
|
||||||
void bittorrent::updateETAs(){
|
void bittorrent::updateETAs(){
|
||||||
std::vector<torrent_handle> handles = s->get_torrents();
|
std::vector<torrent_handle> handles = s->get_torrents();
|
||||||
for(unsigned int i=0; i<handles.size(); ++i){
|
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
|
// Add to bittorrent session the downloaded torrent file
|
||||||
void bittorrent::processDownloadedFile(const QString& url, const QString& file_path){
|
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
|
// Add file to torrent download list
|
||||||
emit newDownloadedTorrent(file_path, url);
|
emit newDownloadedTorrent(file_path, url);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,7 @@ class bittorrent : public QObject{
|
|||||||
void loadTorrentSpeedLimits(QString hash);
|
void loadTorrentSpeedLimits(QString hash);
|
||||||
void saveDownloadUploadForTorrent(QString hash);
|
void saveDownloadUploadForTorrent(QString hash);
|
||||||
void loadDownloadUploadForTorrent(QString hash);
|
void loadDownloadUploadForTorrent(QString hash);
|
||||||
|
void HandleDownloadFailure(const QString& url, const QString& reason);
|
||||||
// Session configuration - Setters
|
// Session configuration - Setters
|
||||||
void setListeningPortsRange(std::pair<unsigned short, unsigned short> ports);
|
void setListeningPortsRange(std::pair<unsigned short, unsigned short> ports);
|
||||||
void setMaxConnections(int maxConnec);
|
void setMaxConnections(int maxConnec);
|
||||||
@ -150,13 +151,13 @@ class bittorrent : public QObject{
|
|||||||
void trackerError(const QString& hash, const QString& time, const QString& msg);
|
void trackerError(const QString& hash, const QString& time, const QString& msg);
|
||||||
void portListeningFailure();
|
void portListeningFailure();
|
||||||
void trackerAuthenticationRequired(torrent_handle& h);
|
void trackerAuthenticationRequired(torrent_handle& h);
|
||||||
void downloadFromUrlFailure(const QString& url, const QString& error);
|
|
||||||
void scanDirFoundTorrents(const QStringList& pathList);
|
void scanDirFoundTorrents(const QStringList& pathList);
|
||||||
void newDownloadedTorrent(const QString& path, const QString& url);
|
void newDownloadedTorrent(const QString& path, const QString& url);
|
||||||
void aboutToDownloadFromUrl(const QString& url);
|
void aboutToDownloadFromUrl(const QString& url);
|
||||||
void updateFileSize(QString hash);
|
void updateFileSize(QString hash);
|
||||||
void allTorrentsFinishedChecking();
|
void allTorrentsFinishedChecking();
|
||||||
void peerBlocked(const QString&);
|
void peerBlocked(const QString&);
|
||||||
|
void downloadFromUrlFailure(const QString& url, const QString& reason);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ class downloadThread : public QThread {
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void downloadFinished(const QString& url, const QString& file_path);
|
void downloadFinished(const QString& url, const QString& file_path);
|
||||||
|
void downloadFailure(const QString& url, const QString& reason);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
downloadThread(QObject* parent) : QThread(parent){
|
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:
|
protected:
|
||||||
void run(){
|
void run(){
|
||||||
forever{
|
forever{
|
||||||
@ -104,10 +132,10 @@ class downloadThread : public QThread {
|
|||||||
URLStream::Error status = url_stream.get((const char*)url.toUtf8());
|
URLStream::Error status = url_stream.get((const char*)url.toUtf8());
|
||||||
if(status){
|
if(status){
|
||||||
// Failure
|
// Failure
|
||||||
//TODO: handle this
|
|
||||||
QString error_msg = QString(misc::toString(status).c_str());
|
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());
|
qDebug("Download failed for %s, reason: %s", (const char*)url.toUtf8(), (const char*)error_msg.toUtf8());
|
||||||
url_stream.close();
|
url_stream.close();
|
||||||
|
emit downloadFailure(url, errorCodeToString(status));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
qDebug("Downloading %s...", (const char*)url.toUtf8());
|
qDebug("Downloading %s...", (const char*)url.toUtf8());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user