1
mirror of https://github.com/qbittorrent/qBittorrent synced 2025-10-07 09:52:18 +02:00

Compare commits

...

36 Commits

Author SHA1 Message Date
Christophe Dumez
f836c40fc4 Bump version to v3.0.2 2012-09-01 14:08:47 +03:00
Christophe Dumez
21fe7f2ca6 Update Changelog 2012-09-01 13:52:59 +03:00
Christophe Dumez
da85a57f83 Fix possible crash due to labels (closes #64) 2012-09-01 13:52:27 +03:00
Christophe Dumez
e35664b188 Correctly escape transfer list filter value typed by user 2012-08-28 18:37:02 +03:00
Christophe Dumez
2fc350b265 Update changelog 2012-08-28 18:29:11 +03:00
Christophe Dumez
83bcd6a2d7 Fix label-based filtering of torrents whose label contains special characters 2012-08-28 18:28:36 +03:00
Christophe Dumez
edcfa4df12 TorrentContentModel code clean up 2012-08-26 21:39:28 +03:00
Christophe Dumez
12a83e1aec Update Changelog 2012-08-26 21:02:26 +03:00
Christophe Dumez
7d50a8b28c Stop updating file priorities regularly in torrent content panel
Performance improvement to address issue #24.
2012-08-26 21:01:07 +03:00
Christophe Dumez
232e112d84 Optimizations to TorrentContentModel
First step to address issue #24.
2012-08-26 15:01:49 +03:00
Christophe Dumez
5b1ee883b4 Update Changelog 2012-08-26 10:14:12 +03:00
Christophe Dumez
b07fceec65 Add "clear" functionality to search field (closes #59) 2012-08-26 10:14:11 +03:00
Christophe Dumez
4c9cf6c773 Update Changelog 2012-08-25 16:54:58 +03:00
Christophe Dumez
164f37e961 Fix encoding problem for detected XDG Download folder (closes #53)
Only affects Linux.
2012-08-25 16:54:37 +03:00
Christophe Dumez
093fb303f3 Minor code clean up 2012-08-25 16:34:35 +03:00
Christophe Dumez
f3d5039e33 Update Changelog. 2012-08-24 19:21:32 +03:00
Christophe Dumez
007c307388 Fix crash when a fastresume file is empty (closes #52) 2012-08-24 19:20:47 +03:00
Christophe Dumez
4079689f32 Update Changelog 2012-08-23 21:21:39 +03:00
Christophe Dumez
2b3d6926c8 Attempt to use qBittorrent icon from theme if available (closes #49) 2012-08-23 21:19:50 +03:00
Christophe Dumez
14b3414e9d Bump version to v3.0.1 2012-08-21 20:22:20 +03:00
Christophe Dumez
73254962f1 Update Changelog 2012-08-21 17:50:47 +03:00
Christophe Dumez
74f042516b Make uTP rate limited by default 2012-08-21 17:50:07 +03:00
Christophe Dumez
8c0853248c Fix wiki link for "Anonymous Mode" feature (#25) 2012-08-14 20:58:36 +03:00
Christophe Dumez
80ea0a67b5 Update Changelog 2012-08-14 20:44:42 +03:00
Christophe Dumez
6d2b51203c Update URL for search plugins updater (closes #25) 2012-08-14 20:44:02 +03:00
Christophe Dumez
8ac82156b3 Update Changelog 2012-08-12 17:59:39 +03:00
Christophe Dumez
c1806b099a Fix crash when using unauthorized characters in label names (closes #19) 2012-08-12 17:59:09 +03:00
Christophe Dumez
1046c816bf Remove unused function 2012-08-12 10:14:05 +03:00
Christophe Dumez
cfbb5ecde5 Update Changelog 2012-08-12 09:58:54 +03:00
Christophe Dumez
afdec02674 Remember queue position for torrents without metadata (closes #17) 2012-08-12 09:58:05 +03:00
Christophe Dumez
927e6bc6cc Fixes to Italian translation 2012-08-10 21:28:40 +03:00
Christophe Dumez
e862d3332c Update language files 2012-08-10 14:23:36 +03:00
Simone
699144a83d Update src/lang/qbittorrent_it.ts 2012-08-10 14:22:40 +03:00
Christophe Dumez
1792f44bfa Update Changelog 2012-08-10 11:23:06 +03:00
Christophe Dumez
64e4095ef1 Fix possible crash when adding a tracker to a magnet torrent without metadata (Closes #1034254) 2012-08-10 11:18:37 +03:00
Christophe Dumez
1d1ffcec7c Handle exceptions in readAlerts() 2012-08-10 10:04:28 +03:00
50 changed files with 1594 additions and 1603 deletions

View File

@@ -1,3 +1,19 @@
* Sat Sep 1 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.2
- FEATURE: Add "clear" functionality to search field (closes #59)
- BUGFIX: Attempt to use qBittorrent icon from theme if available (closes #49)
- BUGFIX: Fix crash when a fastresume file is empty (closes #52)
- BUGFIX: Fix encoding problem for detected XDG Download folder (closes #53)
- BUGFIX: Improve performance when showing torrent content panel (Improves #24)
- BUGFIX: Fix label-based filtering of torrents whose label contains special characters
- BUGFIX: Fix possible crash due to labels (closes #64)
* Tue Aug 21 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.1
- BUGFIX: Fix possible crash when adding a tracker to a magnet torrent without metadata (Closes #1034254)
- BUGFIX: Remember queue position for torrents without metadata (closes #17)
- BUGFIX: Fix crash when using unauthorized characters in label names (closes #19)
- BUGFIX: Fix search plugins updating (closes #25)
- BUGFIX: Make uTP connections rate limited by default
* Thu Aug 09 2012 - Christophe Dumez <chris@qbittorrent.org> - v3.0.0
- FEATURE: Brand new torrent addition dialog
- FEATURE: Add the ability to choose the save path when using magnet links (mutoso)

View File

@@ -45,7 +45,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.0</string>
<string>3.0.2</string>
<key>CFBundleSignature</key>
<string>qBit</string>
<key>CFBundleExecutable</key>

View File

@@ -66,9 +66,6 @@
using namespace libtorrent;
// EXT2/3/4 file systems support a maximum of 255 bytes for filenames.
const int MAX_FILENAME_BYTES = 255;
/**
* Converts a path to a string suitable for display.
* This function makes sure the directory separator used is consistent
@@ -204,54 +201,6 @@ qint64 fsutils::computePathSize(const QString& path)
return size;
}
/**
* Fixes the given file path by shortening the file names if too long.
*/
QString fsutils::fixFileNames(const QString& path)
{
QByteArray raw_path = path.toLocal8Bit();
raw_path.replace("\\", "/");
QList<QByteArray> parts = raw_path.split('/');
if (parts.isEmpty()) return path;
QByteArray last_part = parts.takeLast();
QList<QByteArray>::iterator it = parts.begin();
QList<QByteArray>::iterator itend = parts.end();
for ( ; it != itend; ++it) {
// Make sure the filename is not too long
if (it->size() > MAX_FILENAME_BYTES) {
qWarning() << "Folder" << *it << "was cut because it was too long";
it->resize(MAX_FILENAME_BYTES);
qWarning() << "New folder name is" << *it;
Q_ASSERT(it->length() == MAX_FILENAME_BYTES);
}
}
// Fix the last part (file name)
qDebug() << "Last part length:" << last_part.length();
if (last_part.length() > MAX_FILENAME_BYTES) {
qWarning() << "Filename" << last_part << "was cut because it was too long";
// Shorten the name, keep the file extension
const int point_index = last_part.lastIndexOf(".");
QByteArray extension = "";
if (point_index >= 0) {
extension = last_part.mid(point_index);
last_part = last_part.left(point_index);
}
last_part.resize(MAX_FILENAME_BYTES - extension.length());
last_part += extension;
Q_ASSERT(last_part.length() == MAX_FILENAME_BYTES);
qWarning() << "New file name is" << last_part;
}
QString ret;
foreach(const QByteArray& part, parts) {
ret += QString::fromLocal8Bit(part.constData()) + "/";
}
ret += QString::fromLocal8Bit(last_part.constData());
return ret;
}
/**
* Makes deep comparison of two files to make sure they are identical.
*/
@@ -496,6 +445,9 @@ QString fsutils::QDesktopServicesDownloadLocation() {
QString user_dirs_file = config_path + "/user-dirs.dirs";
if (QFile::exists(user_dirs_file)) {
QSettings settings(user_dirs_file, QSettings::IniFormat);
// We need to force UTF-8 encoding here since this is not
// the default for Ini files.
settings.setIniCodec("UTF-8");
QString xdg_download_dir = settings.value("XDG_DOWNLOAD_DIR").toString();
if (!xdg_download_dir.isEmpty()) {
// Resolve $HOME environment variables

View File

@@ -46,7 +46,6 @@ static QString toDisplayPath(const QString& path);
static QString fileExtension(const QString& filename);
static QString fileName(const QString& file_path);
static qint64 computePathSize(const QString& path);
static QString fixFileNames(const QString& path);
static bool sameFiles(const QString& path1, const QString& path2);
static QString updateLabelInSavePath(QString defaultSavePath, QString save_path, const QString& old_label, const QString& new_label);
static QString toValidFileSystemName(QString filename);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -105,7 +105,13 @@ MainWindow::MainWindow(QWidget *parent, const QStringList& torrentCmdLine) : QMa
// Clean exit on log out
connect(static_cast<SessionApplication*>(qApp), SIGNAL(sessionIsShuttingDown()), this, SLOT(deleteBTSession()));
// Setting icons
this->setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
#if defined(Q_WS_X11)
if (Preferences().useSystemIconTheme())
setWindowIcon(QIcon::fromTheme("qbittorrent", QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png"))));
else
#else
setWindowIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent32.png")));
#endif
actionOpen->setIcon(IconProvider::instance()->getIcon("list-add"));
actionDownload_from_URL->setIcon(IconProvider::instance()->getIcon("insert-link"));
actionSet_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
@@ -706,7 +712,7 @@ void MainWindow::toggleVisibility(QSystemTrayIcon::ActivationReason e) {
return;
}
// Make sure the window is not minimized
setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
setWindowState(windowState() & (~Qt::WindowMinimized | Qt::WindowActive));
// Then show it
show();
raise();
@@ -1399,8 +1405,15 @@ QIcon MainWindow::getSystrayIcon() const
}
#endif
QIcon icon;
icon.addFile(":/Icons/skin/qbittorrent22.png", QSize(22, 22));
icon.addFile(":/Icons/skin/qbittorrent16.png", QSize(16, 16));
icon.addFile(":/Icons/skin/qbittorrent32.png", QSize(32, 32));
#if defined(Q_WS_X11)
if (Preferences().useSystemIconTheme()) {
icon = QIcon::fromTheme("qbittorrent");
}
#endif
if (icon.isNull()) {
icon.addFile(":/Icons/skin/qbittorrent22.png", QSize(22, 22));
icon.addFile(":/Icons/skin/qbittorrent16.png", QSize(16, 16));
icon.addFile(":/Icons/skin/qbittorrent32.png", QSize(32, 32));
}
return icon;
}

View File

@@ -509,7 +509,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>482</width>
<width>486</width>
<height>952</height>
</rect>
</property>
@@ -969,7 +969,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>474</width>
<width>486</width>
<height>577</height>
</rect>
</property>
@@ -1413,7 +1413,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>363</width>
<width>486</width>
<height>480</height>
</rect>
</property>
@@ -1987,7 +1987,7 @@
<item>
<widget class="QLabel" name="label_anonymous">
<property name="text">
<string> (&lt;a href=&quot;http://sourceforge.net/apps/mediawiki/qbittorrent/index.php?title=Anonymous_mode&quot;&gt;More information&lt;/a&gt;)</string>
<string> (&lt;a href=&quot;http://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode&quot;&gt;More information&lt;/a&gt;)</string>
</property>
</widget>
</item>

View File

@@ -559,11 +559,11 @@ public:
}
bool isuTPRateLimited() const {
return value(QString::fromUtf8("Preferences/Bittorrent/uTP_rate_limiting"), false).toBool();
return value(QString::fromUtf8("Preferences/Bittorrent/uTP_rate_limited"), true).toBool();
}
void setuTPRateLimited(bool enabled) {
setValue("Preferences/Bittorrent/uTP_rate_limiting", enabled);
setValue("Preferences/Bittorrent/uTP_rate_limited", enabled);
}
bool isDHTEnabled() const {

View File

@@ -234,13 +234,12 @@ void PropertiesWidget::updateTorrentInfos(const QTorrentHandle& _h) {
}
}
void PropertiesWidget::loadTorrentInfos(const QTorrentHandle &_h) {
void PropertiesWidget::loadTorrentInfos(const QTorrentHandle& _h)
{
clear();
h = _h;
if (!h.is_valid()) {
clear();
if (!h.is_valid())
return;
}
try {
// Save path
@@ -260,10 +259,10 @@ void PropertiesWidget::loadTorrentInfos(const QTorrentHandle &_h) {
// List files in torrent
PropListModel->model()->setupModelData(h.get_torrent_info());
filesList->setExpanded(PropListModel->index(0, 0), true);
// Load file priorities
PropListModel->model()->updateFilesPriorities(h.file_priorities());
}
} catch(invalid_handle& e) {
}
} catch(const invalid_handle& e) { }
// Load dynamic data
loadDynamicData();
}
@@ -391,12 +390,17 @@ void PropertiesWidget::loadDynamicData() {
filesList->setUpdatesEnabled(false);
std::vector<size_type> fp;
h.file_progress(fp);
PropListModel->model()->updateFilesPriorities(h.file_priorities());
PropListModel->model()->updateFilesProgress(fp);
// XXX: We don't update file priorities regularly for performance
// reasons. This means that priorities will not be updated if
// set from the Web UI.
// PropListModel->model()->updateFilesPriorities(h.file_priorities());
filesList->setUpdatesEnabled(true);
}
}
} catch(invalid_handle e) {}
} catch(const invalid_handle& e) {
qWarning() << "Caught exception in PropertiesWidget::loadDynamicData(): " << e.what();
}
}
void PropertiesWidget::loadUrlSeeds() {

View File

@@ -186,6 +186,28 @@ void TrackerList::clear() {
}
void TrackerList::loadStickyItems(const QTorrentHandle &h) {
// load DHT information
if (QBtSession::instance()->isDHTEnabled() && (!h.has_metadata() || !h.priv())) {
dht_item->setText(COL_STATUS, tr("Working"));
} else {
dht_item->setText(COL_STATUS, tr("Disabled"));
}
if (h.has_metadata() && h.priv()) {
dht_item->setText(COL_MSG, tr("This torrent is private"));
}
// Load PeX Information
if (QBtSession::instance()->isPexEnabled())
pex_item->setText(COL_STATUS, tr("Working"));
else
pex_item->setText(COL_STATUS, tr("Disabled"));
// Load LSD Information
if (QBtSession::instance()->isLSDEnabled())
lsd_item->setText(COL_STATUS, tr("Working"));
else
lsd_item->setText(COL_STATUS, tr("Disabled"));
// XXX: libtorrent should provide this info...
// Count peers from DHT, LSD, PeX
uint nb_dht = 0, nb_lsd = 0, nb_pex = 0;
@@ -201,27 +223,8 @@ void TrackerList::loadStickyItems(const QTorrentHandle &h) {
if (it->source & peer_info::pex)
++nb_pex;
}
// load DHT information
if (QBtSession::instance()->isDHTEnabled() && !h.priv()) {
dht_item->setText(COL_STATUS, tr("Working"));
} else {
dht_item->setText(COL_STATUS, tr("Disabled"));
}
dht_item->setText(COL_PEERS, QString::number(nb_dht));
if (h.has_metadata() && h.priv()) {
dht_item->setText(COL_MSG, tr("This torrent is private"));
}
// Load PeX Information
if (QBtSession::instance()->isPexEnabled())
pex_item->setText(COL_STATUS, tr("Working"));
else
pex_item->setText(COL_STATUS, tr("Disabled"));
pex_item->setText(COL_PEERS, QString::number(nb_pex));
// Load LSD Information
if (QBtSession::instance()->isLSDEnabled())
lsd_item->setText(COL_STATUS, tr("Working"));
else
lsd_item->setText(COL_STATUS, tr("Disabled"));
lsd_item->setText(COL_PEERS, QString::number(nb_lsd));
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More