Browse Source

- Fix crash in torrent addition dialog when save path does not exist (closes #425227)

- Fix downloading from URL (broken in v1.5.0)
adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
37158a32ad
  1. 6
      src/bittorrent.cpp
  2. 1
      src/bittorrent.h
  3. 10
      src/misc.h
  4. 7
      src/torrentAddition.h

6
src/bittorrent.cpp

@ -1435,6 +1435,12 @@ void bittorrent::downloadFromUrl(QString url) { @@ -1435,6 +1435,12 @@ void bittorrent::downloadFromUrl(QString url) {
downloader->downloadUrl(url);
}
void bittorrent::downloadFromURLList(const QStringList& urls) {
foreach(const QString &url, urls) {
downloadFromUrl(url);
}
}
void bittorrent::addMagnetSkipAddDlg(QString uri) {
addMagnetUri(uri, false);
}

1
src/bittorrent.h

@ -170,6 +170,7 @@ class bittorrent : public QObject { @@ -170,6 +170,7 @@ class bittorrent : public QObject {
void processDownloadedFile(QString, QString);
void saveTrackerFile(QString hash);
void addMagnetSkipAddDlg(QString uri);
void downloadFromURLList(const QStringList& urls);
protected slots:
void scanDirectory(QString);

10
src/misc.h

@ -99,11 +99,17 @@ public: @@ -99,11 +99,17 @@ public:
}
static unsigned long long freeDiskSpaceOnPath(QString path) {
static long long freeDiskSpaceOnPath(QString path) {
if(path.isEmpty()) return -1;
QDir dir_path(path);
if(!dir_path.exists()) {
if(!dir_path.cdUp()) return -1;
}
Q_ASSERT(dir_path.exists());
#ifndef Q_WS_WIN
unsigned long long available;
struct statfs stats;
int ret = statfs ((path+"/.").toLocal8Bit().data(), &stats) ;
int ret = statfs ((dir_path.path()+"/.").toLocal8Bit().data(), &stats) ;
if(ret == 0) {
available = ((unsigned long long)stats.f_bavail) *
((unsigned long long)stats.f_bsize) ;

7
src/torrentAddition.h

@ -90,6 +90,7 @@ public: @@ -90,6 +90,7 @@ public:
connect(actionMaximum, SIGNAL(triggered()), this, SLOT(maximumSelection()));
connect(collapseAllButton, SIGNAL(clicked()), torrentContentList, SLOT(collapseAll()));
connect(expandAllButton, SIGNAL(clicked()), torrentContentList, SLOT(expandAll()));
torrentContentList->header()->resizeSection(0, 200);
//torrentContentList->header()->setResizeMode(0, QHeaderView::Stretch);
QString home = QDir::homePath();
@ -148,6 +149,7 @@ public: @@ -148,6 +149,7 @@ public:
delete arb;
connect(PropListModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(updatePriorities(QStandardItem*)));
//torrentContentList->expandAll();
connect(savePathTxt, SIGNAL(textChanged(QString)), this, SLOT(updateDiskSpaceLabels()));
updateDiskSpaceLabels();
show();
}
@ -278,7 +280,7 @@ public slots: @@ -278,7 +280,7 @@ public slots:
}
void updateDiskSpaceLabels() {
unsigned long long available = misc::freeDiskSpaceOnPath(savePathTxt->text());
long long available = misc::freeDiskSpaceOnPath(savePathTxt->text());
lbl_disk_space->setText(misc::friendlyUnit(available));
// Determine torrent size
@ -293,7 +295,7 @@ public slots: @@ -293,7 +295,7 @@ public slots:
lbl_torrent_size->setText(misc::friendlyUnit(torrent_size));
// Check if free space is sufficient
if(available > 0) {
if(available > torrent_size) {
if((unsigned long long)available > torrent_size) {
// Space is sufficient
label_space_msg->setText(tr("(%1 left after torrent download)", "e.g. (100MiB left after torrent download)").arg(misc::friendlyUnit(available-torrent_size)));
} else {
@ -316,7 +318,6 @@ public slots: @@ -316,7 +318,6 @@ public slots:
}
if(!dir.isNull()){
savePathTxt->setText(dir);
updateDiskSpaceLabels();
}
}

Loading…
Cancel
Save