Commit graph

4697 commits

Author SHA1 Message Date
Ivanov Juriy
a7ad34418f add host address parameter to helo smtp request 2014-08-25 14:26:30 +04:00
sledgehammer999
58ad90fa9c Set 'Cancel' as the default button in the shutdown confirmation dialog. 2014-08-23 23:22:47 +03:00
sledgehammer999
7c80277c04 Sync translations from Transifex and run lupdate. 2014-08-23 22:31:49 +03:00
sledgehammer999
f6156217d0 Added 'Shutdown now' button in shutdown confirmation dialog. Closes #969. 2014-08-23 22:22:03 +03:00
sledgehammer999
634000e7a9 Split ShutdownConfirmDlg into .h/.cpp files. 2014-08-23 21:55:38 +03:00
sledgehammer999
66b375de07 Don't listen on IPv6 address by default. Prevents network connectivity problems. Closes #1880. 2014-08-23 21:55:36 +03:00
Benjamin Hutchins
89fda12597 Removed essentially useless "Visit website" iframe and changed it to a regular link. Improves fix qbittorrent/qBittorrent#1343 2014-08-15 22:29:50 -04:00
Benjamin Hutchins
9143c440a5 Removed broken "Documentation" iframe from the webui. Improves fix qbittorrent/qBittorrent#1343 2014-08-15 22:29:50 -04:00
Benjamin Hutchins
afc5601697 Removed broken Report a bug iframe from the webui. fixes qbittorrent/qBittorrent#1343 2014-08-15 22:29:50 -04:00
sledgehammer999
2b061dab0a Sync translations from Transifex and run lupdate. 2014-08-15 13:52:14 +03:00
sledgehammer999
3e734ab4f6 Add 'Open' and 'Open Containing Folder' entries in the content's right-click menu. Closes #1143. 2014-08-15 12:53:18 +03:00
sledgehammer999
efb3936ef1 Fix the adding of .torrent files via http links which was broken by 30bc5a1da6. 2014-08-15 11:33:09 +03:00
sledgehammer999
12302ee86f Sort finished torrents by completed date when sorting by queue number. 2014-08-15 02:19:25 +03:00
sledgehammer999
bef61b695f Don't mix finished/unifinished torrents when sorting by ETA. Closes #1688. 2014-08-15 02:19:21 +03:00
sledgehammer999
e294b2f456 Added 'Ratio Limit' column. Closes #936. 2014-08-14 21:05:53 +03:00
sledgehammer999
e0190d5576 Add 'Completed' column. Closes #1241. 2014-08-14 20:22:02 +03:00
sledgehammer999
fe0df04ea8 Sync translations from Transifex and run lupdate. 2014-08-10 01:28:31 +03:00
sledgehammer999
35736b8bb4 Show disk space while retrieving metadata. Closes #1693. 2014-08-09 23:10:20 +03:00
sledgehammer999
36cba3b354 When qBT is launched with a magnet don't show it in the transferlist while the metadata are being loaded in the background. 2014-08-09 22:07:49 +03:00
sledgehammer999
30bc5a1da6 Show the loaded torrents in the transferlist when qBT is launched with a torrent/magnet and the AddNewTorrentDialog is showing. Closes #1564. 2014-08-09 21:15:17 +03:00
sledgehammer999
6cb7de33f6 Don't shrink transferlist rows when scrolling horizontally. Closes #1613. 2014-08-08 23:32:54 +03:00
sledgehammer999
061d4fc721 Revert "Fix WebUI sort by size/speed for some locales (with comma as decimal point)."
This reverts commit 87d118e87c.
2014-08-08 03:03:57 +03:00
sledgehammer999
2729abfd32 Revert "Fix WebUI sort by ratio for some locales (with comma as decimal point)."
This reverts commit c3942fb0b3.
2014-08-08 03:03:40 +03:00
sledgehammer999
d44df4f985 Don't localize double numbers in the webui. Closes #1525. 2014-08-08 02:59:48 +03:00
sledgehammer999
4908ed4e78 Run lupdate. 2014-08-08 00:12:42 +03:00
sledgehammer999
9819353c9d Sync translations from Transifex. 2014-08-08 00:11:26 +03:00
sledgehammer999
80d6a5a73e Allow disabling of OS cache. This will prevent RAM increases on Windows when seeding many files. Closes #1699. 2014-08-07 23:09:58 +03:00
sledgehammer999
7763a6d2d5 Limit max cache to 1800MiB for 32bits compiled binaries and to 4GiB for other. Closes #1698. 2014-08-07 23:09:57 +03:00
sledgehammer999
97cf824c4d Fix checkbox for 'Copy .torrent files to' setting, which was broken by b70621. Closes #1748. 2014-08-06 01:08:13 +03:00
sledgehammer999
6e6d285a02 Fix compilation on MACOS. 2014-08-05 14:54:28 +03:00
sledgehammer999
15d3df380c Migrate everything to use the new Preferences class and not access directly the qbittorrent.ini file.(webui) 2014-08-05 02:34:22 +03:00
sledgehammer999
d8d95d2195 Migrate everything to use the new Preferences class and not access directly the qbittorrent.ini file. 2014-08-05 02:34:21 +03:00
sledgehammer999
da6ce859c0 Cache preferences in memory. Closes #1272, #1523, #1694. 2014-08-05 02:33:50 +03:00
sledgehammer999
d0e0b25c9e Installer correctly associates torrents and magnet links with qBittorrent under non-admin accounts. Closes #291 #527 #579 #614 #964. 2014-07-30 00:09:57 +03:00
sledgehammer999
25c923c69e Merge pull request #1470 from glassez/assoc
Fix Windows file associations creation
2014-07-20 20:23:01 +03:00
sledgehammer999
8f32f86453 Merge pull request #1782 from sorokin/alert-disp-qt5
Fix alertdispatcher.cpp compilability on Qt5.
2014-07-20 20:21:29 +03:00
sledgehammer999
6e76d5cf41 Run lupdate. 2014-07-16 00:48:12 +03:00
sledgehammer999
eb3ca94172 Sync translations from Transifex. 2014-07-16 00:44:48 +03:00
sledgehammer999
e2748ec3ac Remove deprecated feature of separate DHT port. 2014-07-16 00:17:21 +03:00
sledgehammer999
08e14cdc26 Fix possible crashes. Closes #1814. 2014-07-14 22:00:40 +03:00
Bryan Roscoe
f6a324a1bd Scan Folder dialog now remembers last location
Also fix fs_utils spacing
2014-07-13 19:50:57 -05:00
Bryan Roscoe
27afbaf7e7 Fix column resizing issues 2014-07-13 17:03:58 -05:00
sledgehammer999
7419e930ab Indentation fixes. 2014-07-06 23:18:37 +03:00
sledgehammer999
d6d20074be Merge pull request #1447 from BrunoReX/hibernation
Add option to hibernate computer in Auto-Shutdown menu
2014-07-06 23:11:29 +03:00
sledgehammer999
9a18b50751 Some fixes for commit 6dabf50781. 2014-07-06 21:39:27 +03:00
sledgehammer999
3ad1cc8289 Merge pull request #1779 from sorokin/move-storage
Speedup and fix a bug in torrent moving.
2014-07-06 19:19:59 +03:00
Bruno Barbieri
00e09435b2 Add option to hibernate computer in Auto-Shutdown menu 2014-07-06 06:13:36 -03:00
Ivan Sorokin
6dabf50781 Speedup and fix a bug in torrent moving.
This commit implements a map where qbittorrent store a state of
current torrent movings. This commit speed up
torrents moving a bit and also fix a bug when qbittorrent doesn't do
cleanup action when a single torrent is moved several times without
waiting for a previous move to complete.

How it worked before.

Libtorrent has a function torrent_handle::move_storage() that allows to move a
torrent to a specific directory. This function is asynchorous. It means that
this function quits instantaneously and when the actual operation
completes the alert 'storage_moved_alert' or
'storage_moved_failed_alert' will be sent. The storage_moved_alert contains a
torrent_handle and a new path to where the torrent is moved.

During handling of storage_moved_alert, qbittorrent needs not only new path,
but also an old path to perform some of cleanup actions (like removing an old
folder if it is empty). This was achieved by storing a value named
'previous save path' in TorrentPersistentData. A previous save path is
written when move_storage() is issued and is read when
storage_moved_alert is received.

Problems.

This mechanism has two negative aspects:

1. TorrentPersistentData is very slow. As torrent_handle::move_storage() is asynchoronous,
TorrentPersistentData is responsible for more that 99.8% of time
QTorrentHandle::move_storage(). This percent could be higher when there
are lots of torrents and lower when there are few of them.

2. TorrentPersistentData stores only one previous path. But many
move_storage()'s could be issued without waiting for previous to
complete. Subsequent move_storage()'s overwrites previous save path of a
previous move.

A fix.

The fix is simple. Before issueing move_storage() the oldPath is stored in
a special map called 'torrentMoveStates'. When a storage_moved_alert
is received the map is consulted and an alert is handled.

When user moves torrent when previous moving have not yet finished, the
new location is saved in a field 'queuedPath' the same map. When
torrent moving is completed (or failed) qbittorrent attemps to perform
move again to the queued location.

Future direction.

This fix removes one slow read and one slow write to
TorrentPersistentData on torrent moving, but there is still exists
TorrentPersistentData::saveSavePath in handleStorageMovedAlert(), so
overall time for UI hang should be reduced only threefold. A speeding up
TorrentPersistentData should be addressed in a separate commit.

I don't know if I should clean up torrentMoveStates when torrent is
deleted. In any case, torrent could be deleted when corresponding alert
is in alert queue. So if we decide to clean up torrentMoveStates, then
we should not treat receiving alert from unknown torrent as a error.
2014-06-23 11:21:24 +04:00
Ivan Sorokin
ce9da1ba1e Fix alertdispatcher.cpp compilability on Qt5. 2014-06-23 00:14:58 +04:00
Ivan Sorokin
fddd337e34 Suppress warning about signed/unsigned mismatch. 2014-06-22 19:48:21 +04:00
sledgehammer999
273725d9dc Fix file renaming. 2014-06-18 23:41:52 +03:00
sledgehammer999
c673b1a7d7 Bring mainwindow in front when notification is clicked and other windows are in front. 2014-06-18 23:22:25 +03:00
sledgehammer999
7e9b47948b Run lupdate. 2014-06-10 23:22:39 +03:00
sledgehammer999
66c08bcc5d Sync translations from Transifex. 2014-06-10 23:19:43 +03:00
sledgehammer999
03072050fb Update search engines versions.txt file. Closes #1745. 2014-06-08 23:58:30 +03:00
sledgehammer999
d58d87a691 Use completed time from libtorrent directly. Closes #1726. 2014-06-07 14:44:08 +03:00
sledgehammer999
07f76f4939 Merge pull request #1733 from glassez/fix_build
Fix building with Qt5 (missing QObject decl).
2014-06-04 21:55:52 +03:00
sledgehammer999
a361c0ea03 Use the torrent_status for the queue_position too. 2014-06-04 20:26:23 +03:00
Vladimir Golovnev (Glassez)
446a9efe9e Fix building with Qt5 (missing QObject decl). 2014-06-04 17:38:35 +04:00
Vladimir Golovnev (Glassez)
ec092414b5 Fix Windows file associations creation.
Now qBittorrent create global ProgId during installation (using HKLM hive)
and allow to associate .torrent files with it (using HKCU).
2014-06-04 17:37:28 +04:00
Vladimir Golovnev (Glassez)
9f310318c2 Use new JSON parser/generator.
Qt4: Use QJson (http://qjson.sourceforge.net).
Qt5: Use native Qt JSON API.
2014-06-04 17:01:41 +04:00
Vladimir Golovnev (Glassez)
f9c3719d12 Add QJson files. 2014-06-04 17:01:40 +04:00
Vladimir Golovnev (Glassez)
6e59877cee Remove old JSON classes. 2014-06-04 17:01:39 +04:00
Vladimir Golovnev (Glassez)
268562bff3 Fix HTTP request parsing on Qt5. 2014-06-04 17:01:39 +04:00
Ivan Sorokin
510818d631 Replaced dynamic_cast with switch on alert type.
Conflicts:
	src/qtlibtorrent/qbtsession.cpp
2014-06-04 11:08:31 +04:00
Ivan Sorokin
1244a46cbb Extract alert handling to separate functions. 2014-06-04 11:08:31 +04:00
sledgehammer999
27c641ffaa Rework the GUI code for private torrents. 2014-06-04 00:49:03 +03:00
Ivan Sorokin
32c203d2e6 Copyright notices for alert dispatcher. 2014-06-04 01:40:00 +04:00
sledgehammer999
a6fa27467f Fix previous commits. 2014-06-03 21:19:25 +03:00
Ivan Sorokin
c2a23f2265 use stats_alert in TorrentSpeedMonitor
Conflicts:
	src/qtlibtorrent/qbtsession.cpp
2014-06-02 00:35:27 +04:00
Ivan Sorokin
6f38616193 extract torrent statistics from torrent speed monitor to separate file 2014-06-02 00:31:45 +04:00
Ivan Sorokin
b50d7331c7 use post_status_update()
Conflicts:
	src/qtlibtorrent/qbtsession.cpp
2014-06-02 00:31:45 +04:00
Ivan Sorokin
eb46326d23 use set_alert_dispatch instead of timer to get an alerts from libtorrent
libtorrent allows setting a custom dispatch handler that is invoked in
libtorrent thread when new alerts are incoming. QAlertDispatcher is a
class that allows to translate these alerts to UI thread.

The concept is very simple:

1. On initialization QAlertDispatcher constructor calls set_alert_dispatch() passing
 QAlertDispatcher::dispatch as argument.

2. On deinitialization destructor calls set_alert_dispatch() passing a empty
 function. (line 25) libtorrent handles thos and switches back to queuing
 alerts in queue.

3. QAlertDispatcher::dispatch() adds alert to queue and notifies UI thread that new
 alerts are incoming. Enqueuing is done in function enqueueToMainThread().
 The invariant of class is the following:

    if alert queue is not empty, in message loop of UI thread contains a queued
    invocation of deliverSignal().

4. When message loop is pumped UI thread execute deliverSignal() function.
 It emit appropriate signal and if queue is still not empty (for example
 if slot doesn't grab alerts) rewind enqueuing to main thread.

This is a idea. But here is some details.

1. When QAlertDispatcher is destoyed, libtorrent still can call
QAlertDispatcher::dispatch a few times after destruction. This is
handled by passing a "tag". A tag is a object that references QAlertDispatch.
Tag could be invalidated. So on destruction QAlertDispatcher invalidates a tag
and then unsubscribes from alerts. When QAlertDispatcher::dispatch is called
with invalid tag it simply discard an alert.

    Therefore we could drop a few alerts during unsubscription. So we unsubscribe
    only at exit when missing some alerts is not a problem.

2. Another problem is in QBtSession::saveFastResumeData(). It pumps alert
queue synchronously. My first attempt was to destroy QAlertDispatcher
and then pump libtorrent queue. But as I was afraid of losing alerts I
supported synchronous querying of alerts in QAlertDispatcher.
(QAlertDispatcher::getPendingAlerts)

Conflicts:
	src/qtlibtorrent/qbtsession.cpp
2014-06-02 00:31:45 +04:00
Ivan Sorokin
329b754197 cache torrent_status 2014-06-02 00:31:42 +04:00
Ivan Sorokin
5af778bc93 don't make the same request to TorrentModelItem twice 2014-05-25 12:32:09 +04:00
Ivan Sorokin
1c98c11dd0 speed up icon loading 2014-05-25 12:32:09 +04:00
Ivan Sorokin
bbc4080a5d fewer calls to hash() 2014-05-25 12:32:09 +04:00
sledgehammer999
5d2663660d Count magnet links in the 'downloading' filter and make them prevent system inhibition. Closes #1558 2014-05-15 22:01:27 +03:00
sledgehammer999
659e0b7fef Fix tracker announcing problem(hit-and-run) when many torrents are being active. Closes #1571 2014-05-15 21:37:31 +03:00
sledgehammer999
c0b3ad7ee3 Fix crash when the selected torrent disappears from the transfer list. Closes #1661 2014-05-15 20:59:34 +03:00
sledgehammer999
81fa246687 Merge pull request #1685 from sorokin/fix-exception-in-prop-widget
Don't show availability bar for magnet links
2014-05-15 00:26:41 +03:00
Ivan Sorokin
765253234c Don't show availability bar for magnet links
This commit fixes an exception in PropertiesWidget:

"Caught exception in PropertiesWidget::loadDynamicData():  invalid
torrent handle used"

This exception occurs when an user clicks on a torrent that doesn't have
a metadata (when a magnet link is not resolved yet). One should not call
torrent_handle::get_torrent_info when torrent doesn't have a metadata.
2014-05-15 01:21:56 +04:00
sledgehammer999
e0ae505bb9 Fix nox build on MAC OSX. 2014-05-13 19:23:58 +03:00
sledgehammer999
5dea64ca16 Merge pull request #1676 from sorokin/fix-open-file
fix issue #1674: AddNewTorrentDialog is shown again and again even if checkbox "dont ask me again" is set
2014-05-12 14:52:47 +03:00
Ivan Sorokin
93bacc62f1 fix issue #1674: AddNewTorrentDialog is shown again and again even if checkbox "dont ask me again" is set 2014-05-11 19:37:33 +04:00
sledgehammer999
baaf575eee Fix libtorrent 1.0.0 compilation. Closes #1659 2014-05-10 00:13:20 +03:00
sledgehammer999
9714b2ede9 Fix weird ratio values when torrent was imported or downloaded history was lost due to crash. 2014-05-05 21:30:15 +03:00
sledgehammer999
f99f5f5c7e Enable system tray in MACOSX (Nick Korotysh). 2014-05-05 21:23:32 +03:00
sledgehammer999
32becf1fca Fix RSS feed icon. The tmp file gets deleted in the feed destructor. Closes #1639 2014-05-04 15:38:28 +03:00
sledgehammer999
4376e81f78 Fix autoupdater. Send our user-agent to sourceforge.net
Conflicts:
	src/programupdater.cpp
2014-05-04 15:38:12 +03:00
sledgehammer999
71e5c9e17b Fix code style.
(thanks to glassez)
2014-05-04 15:31:27 +03:00
sledgehammer999
e8c14f3507 Use the new Http classes. 2014-05-04 15:28:56 +03:00
sledgehammer999
6096506bd6 Implement alternatives to QHttpRequestHeader and QHttpResponseHeader. 2014-05-04 15:28:55 +03:00
sledgehammer999
ef3f7d18c9 Fix compilation with Qt5. 2014-05-04 15:28:54 +03:00
Vladimir Golovnev (Glassez)
ba1f4a9b7f Update QtSingleApplication. 2014-05-02 00:00:05 +03:00
Nick Tiskov
138c3dc3cb Fix translations bundled with Qt. 2014-05-02 00:00:04 +03:00
Vladimir Golovnev (Glassez)
ce3aac5f9d Fix functions and macros using to support both Qt4 and Qt5. 2014-05-02 00:00:03 +03:00
alfrix
85cfe464f9 Fix queue sorting order fixes #1120 2014-02-09 21:27:42 -03:00
sledgehammer999
33b0a2b55f Fix missing percentage signs. Closes #1392. 2014-02-06 00:49:17 +02:00
sledgehammer999
72ae2cb503 Pretty up last commit. 2014-02-05 21:22:14 +02:00