- BUGFIX: The torrent size displayed now takes filtered files into consideration

- BUGFIX: Fixed compiling errors with libtorrent svn (adds UPnP support)
This commit is contained in:
Christophe Dumez 2007-04-12 21:42:05 +00:00
commit 06448509fb
11 changed files with 52 additions and 11 deletions

View file

@ -1,5 +1,7 @@
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v0.9.3
- BUGFIX: Fixed pause toggle on double-click in download
- BUGFIX: The torrent size displayed now takes filtered files into consideration
- BUGFIX: Fixed compiling errors with libtorrent svn (future v0.13 with UPnP enabled)
* Tue Apr 10 2007 - Christophe Dumez <chris@qbittorrent.org> - v0.9.2
- BUGFIX: Window can now stay maximized on exit

3
TODO
View file

@ -36,6 +36,3 @@
- Add IPv6 support (at least start working on it)
- UPnP support?
// In v0.9.0
- Update translations (FR, SV, NB, PL, RU, DE, SK, KO, ZH_CN, EL, BG, ES, DA, UK, PT, IT, NL done)
- Wait for libtorrent v0.12 official release

6
configure vendored
View file

@ -308,6 +308,9 @@ public:
qWarning("Libtorrent >= v0.12 was not detected, PeX will be disabled.");
conf->addDefine("NO_PEX");
}
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
conf->addDefine("V_0_13");
}
}else{
QStringList sl;
sl << "/usr/include";
@ -324,6 +327,9 @@ public:
qWarning("Libtorrent >= v0.12 was not detected, PeX will be disabled.");
conf->addDefine("NO_PEX");
}
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
conf->addDefine("V_0_13");
}
}
conf->addIncludePath(s);
conf->addIncludePath(s+QDir::separator()+"libtorrent");

View file

@ -22,6 +22,9 @@ public:
qWarning("Libtorrent >= v0.12 was not detected, PeX will be disabled.");
conf->addDefine("NO_PEX");
}
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
conf->addDefine("V_0_13");
}
}else{
QStringList sl;
sl << "/usr/include";
@ -38,6 +41,9 @@ public:
qWarning("Libtorrent >= v0.12 was not detected, PeX will be disabled.");
conf->addDefine("NO_PEX");
}
if(conf->checkHeader(s, "libtorrent/lsd.hpp")){
conf->addDefine("V_0_13");
}
}
conf->addIncludePath(s);
conf->addIncludePath(s+QDir::separator()+"libtorrent");

View file

@ -132,6 +132,7 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent){
// Configure BT session according to options
configureSession(true);
force_exit = false;
connect(&BTSession, SIGNAL(updateFileSize(QString)), this, SLOT(updateFileSize(QString)));
// Resume unfinished torrents
BTSession.resumeUnfinishedTorrents();
// Add torrent given on command line
@ -1038,6 +1039,18 @@ void GUI::deleteSelection(){
}
}
size_type GUI::torrentEffectiveSize(QString hash) const{
torrent_handle h = BTSession.getTorrentHandle(hash);
torrent_info t = h.get_torrent_info();
unsigned short nbFiles = t.num_files();
size_type effective_size = 0;
for(unsigned int i=0; i<nbFiles; ++i){
if(h.piece_priority(i) != 0)
effective_size += t.file_at(i).size;
}
return effective_size;
}
// Called when a torrent is added
void GUI::torrentAdded(const QString& path, torrent_handle& h, bool fastResume){
int row = DLListModel->rowCount();
@ -1045,7 +1058,7 @@ void GUI::torrentAdded(const QString& path, torrent_handle& h, bool fastResume){
// Adding torrent to download list
DLListModel->insertRow(row);
DLListModel->setData(DLListModel->index(row, NAME), QVariant(h.get_torrent_info().name().c_str()));
DLListModel->setData(DLListModel->index(row, SIZE), QVariant((qlonglong)h.get_torrent_info().total_size()));
DLListModel->setData(DLListModel->index(row, SIZE), QVariant((qlonglong)torrentEffectiveSize(hash)));
DLListModel->setData(DLListModel->index(row, DLSPEED), QVariant((double)0.));
DLListModel->setData(DLListModel->index(row, UPSPEED), QVariant((double)0.));
DLListModel->setData(DLListModel->index(row, SEEDSLEECH), QVariant("0/0"));
@ -1145,6 +1158,11 @@ void GUI::showProperties(const QModelIndex &index){
prop->show();
}
void GUI::updateFileSize(QString hash){
int row = getRowFromHash(hash);
DLListModel->setData(DLListModel->index(row, SIZE), QVariant((qlonglong)torrentEffectiveSize(hash)));
}
// Set BT session configuration
void GUI::configureSession(bool deleteOptions){
qDebug("Configuring session");

View file

@ -136,6 +136,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void readSettings();
void forceExit();
// Torrent actions
size_type torrentEffectiveSize(QString hash) const;
void showProperties(const QModelIndex &index);
void propertiesSelection();
void pauseSelection();
@ -183,6 +184,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
void portListeningFailure();
void trackerError(const QString& hash, const QString& time, const QString& msg);
void trackerAuthenticationRequired(torrent_handle& h);
void updateFileSize(QString hash);
protected:
void closeEvent(QCloseEvent *);
@ -193,7 +195,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
GUI(QWidget *parent=0, QStringList torrentCmdLine=QStringList());
~GUI();
// Methods
int getRowFromHash(const QString& name) const;
int getRowFromHash(const QString& hash) const;
float getNovaVersion(const QString& novaPath) const;
QByteArray getNovaChangelog(const QString& novaPath) const;
void updateNova() const;

View file

@ -656,6 +656,7 @@ void bittorrent::readAlerts(){
}
void bittorrent::reloadTorrent(const torrent_handle &h, bool compact_mode){
qDebug("** Reloading a torrent");
if(!h.is_valid()){
qDebug("/!\\ Error: Invalid handle");
return;
@ -714,6 +715,7 @@ void bittorrent::reloadTorrent(const torrent_handle &h, bool compact_mode){
qDebug("Incremental download enabled for %s", (const char*)fileName.toUtf8());
new_h.set_sequenced_download_threshold(15);
}
emit updateFileSize(fileHash);
}
int bittorrent::getListenPort() const{

View file

@ -144,6 +144,7 @@ class bittorrent : public QObject{
void scanDirFoundTorrents(const QStringList& pathList);
void newDownloadedTorrent(const QString& path, const QString& url);
void aboutToDownloadFromUrl(const QString& url);
void updateFileSize(QString hash);
};
#endif

View file

@ -109,8 +109,13 @@ void createtorrent::on_createButton_clicked(){
add_files(t, full_path.branch_path(), full_path.leaf());
t.set_piece_size(piece_size);
#ifndef NO_PEX
file_pool fp;
file_pool fp;
#ifndef V_0_13
storage st(t, full_path.branch_path(), fp);
#endif
#ifdef V_0_13
boost::scoped_ptr<storage_interface> st(default_storage_constructor(t, full_path.branch_path(), fp));
#endif
#endif
#ifdef NO_PEX
storage st(t, full_path.branch_path());
@ -125,7 +130,12 @@ void createtorrent::on_createButton_clicked(){
std::vector<char> buf(piece_size);
for (int i = 0; i < num; ++i)
{
#ifndef V_0_13
st.read(&buf[0], i, 0, t.piece_size(i));
#endif
#ifdef V_0_13
st->read(&buf[0], i, 0, t.piece_size(i));
#endif
hasher h(&buf[0], t.piece_size(i));
t.set_hash(i, h.final());
}

View file

@ -290,10 +290,6 @@ void properties::saveFilteredFiles(){
}
}
pieces_file.close();
if(!has_filtered_files){
// Don't need to reload torrent
// if already in full allocation mode
emit changedFilteredFiles(h, !hasFilteredFiles);
}
emit changedFilteredFiles(h, !hasFilteredFiles);
has_filtered_files = hasFilteredFiles;
}

View file

@ -56,6 +56,7 @@ class properties : public QDialog, private Ui::properties{
signals:
void changedFilteredFiles(torrent_handle h, bool compact_mode);
void fileSizeChanged(QString fileHash);
public:
// Constructor