Gabriele
1332ca318b
WebUI: Adjust size of columns in property panels
2014-12-11 00:02:11 +01:00
Gabriele
b46ecb4351
WebUI: Decrease frequency of updates of property panel
...
Now that the properties are loaded immediately when the selected torrent
or the property tab is changed, the frequency of the updates can be
reduced without affecting the user experience.
New update intervals:
* General: 5 seconds (10 if qBT is not reachable)
* Tracker list: 10 seconds (20 if qBT is not reachable)
* File list: 5 seconds (10 if qBT is not reachable)
2014-12-11 00:02:11 +01:00
Gabriele
ac507261f8
WebUI: Remove extra parethesis
2014-12-11 00:02:11 +01:00
Gabriele
408cc7101e
WebUI: Update torrent properties immediately
...
Don't wait for new data to be fetched, request them as soon as
they are required, i.e. when a property tab is loaded or when a
different torrent is selected.
2014-12-11 00:02:09 +01:00
Gabriele
c54271638b
WebUI: Load properties tabs once
...
Don't reload HTML on tab change. Load the entire structure once and
keep the unused bits hidden.
Keep also the JS code separately, one file per tab.
NOTE: tabs content is not loaded. This will be fixed in the next commit.
2014-12-11 00:00:35 +01:00
Gabriele
cb9ed13d69
WebUI: Fix minor error
...
No timer is set when the functions are directly called.
2014-12-11 00:00:35 +01:00
Gabriele
d06d7b1f6d
WebUI: MochaUI: Show entire error message
2014-12-11 00:00:35 +01:00
Gabriele
aded5422d8
WebUI: MochaUI: Check for undefined functions
2014-12-11 00:00:35 +01:00
sledgehammer999
6884845446
Ensure that the priority column has enough width when queueing is enabled. Closes #2263 .
2014-12-11 00:04:33 +02:00
Gabriele
d055613125
WebUI: Make column width less variable in transferlist
...
Each column has a fixed width that allows to read its content.
The column for the name of the torrents has a variable width with an
upper and a lower constraint.
If the width of the page is not sufficient to fit the table, a scrollbar
will appear.
2014-12-10 21:56:37 +01:00
Gabriele
5fb32da49f
WebUI: Center progressbars in trasferlist
2014-12-10 21:56:33 +01:00
Gabriele
0a512e41c9
WebUI: Select username on login page load
...
On logout, the input field is not empty. Select its content.
2014-12-10 21:56:27 +01:00
Gabriele
57e9165bb4
WebUI: Translate page title everywhere
2014-12-10 21:56:06 +01:00
sledgehammer999
1820a03f1d
Merge pull request #2254 from buinsky/master
...
WebUI: Some changes
2014-12-10 22:50:35 +02:00
buinsky
2c93330ce9
Add space before priority menu item
2014-12-10 06:45:24 +03:00
buinsky
76e30ecf78
Dynamically show 'Start' and 'Pause' menu items
2014-12-10 06:44:41 +03:00
buinsky
2a712a81ea
Add sequential downloading menu items
2014-12-10 04:50:39 +03:00
buinsky
6644791458
Follow project coding style. Issue #2192 .
2014-12-10 04:50:21 +03:00
buinsky
44992056cf
Restore selected filter on page load
2014-12-09 23:49:11 +03:00
buinsky
5b604ac251
Save torrent list sort order in local storage
2014-12-09 23:49:09 +03:00
buinsky
b4f39add08
Update torrent list after operations with torrents.
...
Immediately update torrent list after some operations with torrents.
Such as changing priority, adding torrent, pause/resume, etc.
2014-12-09 23:49:07 +03:00
buinsky
e8ad465c5f
Follow project coding style. Issue #2192 .
2014-12-09 23:49:05 +03:00
buinsky
57a4f3ed19
Hide priority menu items when queueing is disabled
2014-12-09 23:48:45 +03:00
Gabriele
2389495d96
Ignore .!qB when extracting file extensions
2014-12-09 21:32:26 +01:00
buinsky
28fad54cc4
Add higest and lowest priority icons into toolbar
2014-12-08 00:33:38 +03:00
buinsky
69506ec505
Follow project coding style. Issue #2192 .
2014-12-08 00:14:55 +03:00
buinsky
ba40408c8d
Images cache control code edit
2014-12-07 23:50:06 +03:00
buinsky
dbc5ffee75
Follow project coding style. Issue #2192 .
2014-12-07 23:33:36 +03:00
sledgehammer999
513f71e000
Sync translations from Transifex and run lupdate.
2014-12-07 22:01:37 +02:00
Gabriele
0b6d5c662a
WebUI: Use CSS to alternate row colors in transferlist
...
Keep the old code for IE < 9, the majority of the browsers
shouldn't need it.
Also, keep the CSS code in one place.
2014-12-07 15:53:33 +01:00
Gabriele
8a4028fc84
WebUI: Remove unused variable
2014-12-07 15:53:33 +01:00
Gabriele
d7071a81bd
WebUI: Keep current preference for the title style in a variable
...
Read persistent value only when required.
2014-12-07 15:53:33 +01:00
Gabriele
6ee1c8851f
WebUI: Update title immediately when showing/hiding rates
2014-12-07 15:53:33 +01:00
Gabriele
2226f166ac
WebUI: Fix increasing frequency of XHR requests
...
ajaxfn() is called every time the torrent list is filtered. This function
calls itself after a predefined amount of time by setting a timer. If
the function is called manually without destroying the timer, the
frequency of the XHR requests will increase.
Fix this by saving a reference to each timer that is created so that
they can be later destroyed.
Add also two helper functions to request updated data safely.
2014-12-07 15:53:33 +01:00
Gabriele
aab2c34257
Follow project coding style. Issue #2192 .
2014-12-07 15:53:28 +01:00
sledgehammer999
3672363207
Merge pull request #2191 from glassez/webui
...
WebUI: Implement server-side filtering, sorting and limit/offset.
2014-12-07 15:42:01 +02:00
sledgehammer999
14d27d982d
Fix compilation with libtorrent 0.16.x.
2014-12-07 15:28:55 +02:00
Vladimir Golovnev (Glassez)
0e87b96beb
WebUI: Drop client-side sorting.
2014-12-07 16:28:03 +03:00
Vladimir Golovnev (Glassez)
e279dcf904
WebUI: Implement limit/offset.
2014-12-07 16:28:01 +03:00
Vladimir Golovnev (Glassez)
59ff08c107
WebUI: Implement server-side sorting.
2014-12-07 16:27:59 +03:00
Vladimir Golovnev (Glassez)
8ff03d162d
WebUI: Fix transferlist.html indentation.
2014-12-07 16:27:56 +03:00
Vladimir Golovnev (Glassez)
d938643c38
WebUI: Drop client-side filtering.
2014-12-07 16:27:54 +03:00
Vladimir Golovnev (Glassez)
0488ddafa5
WebUI: Fix indentation.
...
Fix indentation in client.js and dynamicTable.js.
2014-12-07 16:25:52 +03:00
Vladimir Golovnev (Glassez)
1a1db877bf
Use QTorrentHandle::torrentState() in btjson.
2014-12-07 16:13:39 +03:00
Vladimir Golovnev (Glassez)
5edf0e251f
WebUI: Implement server-side torrent filtering.
2014-12-07 16:13:37 +03:00
Vladimir Golovnev (Glassez)
e887f574d7
Implement QTorrentHandle torrentState() and eta().
2014-12-07 16:13:33 +03:00
Vladimir Golovnev (Glassez)
c24610ec80
WebUI: Improve btjson.* indentation.
2014-12-07 16:13:32 +03:00
sledgehammer999
78d4258dac
Remove unused variable.
2014-12-07 15:09:56 +02:00
sledgehammer999
cd52d1820d
Show reason why a peer was blocked. Needs libtorrent 1.0.x.
2014-12-07 15:09:16 +02:00
sledgehammer999
96ec6777e6
Follow project coding style. Issue #2192 .
2014-12-07 12:11:18 +02:00
sledgehammer999
08f96ae7d7
Save RSS cache in folder called rss.
2014-12-07 11:54:09 +02:00
sledgehammer999
e331850b70
Merge pull request #1147 from maxrd2/rss_text
...
RSS Feed plain text description is not formatted.
2014-12-07 11:47:26 +02:00
sledgehammer999
7736415945
Merge pull request #1122 from maxrd2/rss_html
...
RSS Feed was not displaying remote images in html description.
2014-12-07 11:46:41 +02:00
Mladen Milinkovic
2c6df559e8
RSS Feed was not displaying remote images in html description. Closes #1119
2014-12-07 01:36:44 +01:00
Mladen Milinkovic
195b46673a
RSS Feed will format plain text descriptions
2014-12-07 01:31:18 +01:00
sledgehammer999
f8e25984ae
Fix for commit 35e964f66
.
2014-12-07 01:39:49 +02:00
sledgehammer999
8449203b27
Add info about the proxy password being saved unencrypted. Closes #1490 .
2014-12-06 21:05:34 +02:00
sledgehammer999
734301326b
Rearreange header includes in Peerlist widget.
2014-12-06 19:24:07 +02:00
sledgehammer999
35e964f66d
Implement peer relevance column. Closes #1630 .
2014-12-06 19:07:26 +02:00
sledgehammer999
dc04ff511f
Merge pull request #1546 from Gelmir/add_paused
...
Partially revert 14310f9b05
2014-12-06 17:04:13 +02:00
Gabriele
ef0b4c6ee2
Don't overwrite WebUI password when changing preferences
...
The input field to change password does not contain the actual
password, but its hash. When the preferences are saved, the hashed
password is considered as a new password.
Prevent this by comparing the new password with the hash of the
previous password.
Closes #2241 .
2014-12-04 19:09:28 +01:00
sledgehammer999
da9396ca94
Fix compilation on ARM. Closes #2204 .
2014-12-02 14:32:47 +02:00
sledgehammer999
8882895f5e
Merge pull request #2230 from pmzqla/searchengine-kat
...
searchengine: Update KickassTorrents url
2014-12-02 11:28:39 +02:00
Gabriele
ad949c69b5
searchengine: Update KickassTorrents url
...
Closes #2228 .
2014-12-02 00:17:07 +01:00
Gabriele
d19b7a777f
Vertical align right-aligned header text
...
Since e907306b41
("Right align header text that also has right-aligned
row text"), right-aligned elements are no longer centered vertically.
This can be noticed with some Qt styles (e.g. Breeze).
2014-12-01 23:04:24 +01:00
Nick Tiskov
9a87afb562
Use TorrentTempData for overriding "add torrents paused" functionality
2014-11-30 20:20:38 +03:00
sledgehammer999
f5048a4586
Merge pull request #2201 from buinsky/master
...
WebUI: Some changes
2014-11-30 15:11:29 +02:00
sledgehammer999
e5e22eb925
Fix the language selection in the combobox when the system locale only has a lang equivalent and not a lang_COUNTRY one. Closes #1786 .
2014-11-30 15:07:43 +02:00
buinsky
740617e5ce
Use localStorage instead of cookies
2014-11-30 12:44:33 +03:00
buinsky
5e8c62e539
Add "Speed in title bar" item to menu
...
* file: src/Icons/oxygen/checked.png
copyright: Victor Buinsky <allok.victor@gmail.com>
2014-11-30 10:39:27 +03:00
buinsky
b0e138d669
Set images cache expiry time to 300000 seconds
2014-11-30 10:30:20 +03:00
buinsky
632fd84e54
Fix context menu width
2014-11-30 10:30:02 +03:00
buinsky
39e135e40a
Fix menu width
2014-11-30 10:27:33 +03:00
sledgehammer999
5d79fcdafd
WINDOWS: Fix automatic python download. Commit 0799dc2
broke this. Closes #2076 .
2014-11-30 00:34:25 +02:00
sledgehammer999
f88ceed2b6
Let Qt decide the size of the statusbar.
2014-11-29 23:13:33 +02:00
sledgehammer999
9d548814a3
Resize and crop the icons used in the status bar.
2014-11-29 23:13:21 +02:00
sledgehammer999
12cd143f75
Merge pull request #2061 from pmzqla/speed-indicators
...
Show current speed limits in the status bar
2014-11-29 23:11:49 +02:00
sledgehammer999
6c0b74b94b
Merge pull request #2214 from Gelmir/trace
...
Fix backtrace functionality under MinGW
2014-11-29 16:50:06 +02:00
Nick Tiskov
6bab65e5b4
Produce demangled backtraces under MinGW
2014-11-29 16:40:18 +03:00
sledgehammer999
9e6a4da542
Merge pull request #2210 from alfrix/gui_fix
...
GUI: Streamline Properties Widget. Closes #2159
2014-11-29 15:35:21 +02:00
Nick Tiskov
2dd3d1fb22
Fix indentation for long addresses and filenames
2014-11-29 16:17:37 +03:00
Nick Tiskov
ba9f6a3531
Follow project coding style. Issue #2192 .
2014-11-29 16:17:32 +03:00
sledgehammer999
0689a1735d
Merge pull request #2206 from alfrix/prio_buttons
...
Add top and bottom priority hotkeys and buttons to menu and toolbar
2014-11-29 15:16:26 +02:00
sledgehammer999
b9ce4d48a0
Merge pull request #802 from Gelmir/rss_match_time_limit
...
Add setting to ignore RSS rule matches for X days
2014-11-29 12:56:25 +02:00
Alfredo Monclus
d28ca2eddc
Add hotkeys and buttons for Top and Bottom priorities
2014-11-26 19:41:29 -03:00
Alfredo Monclus
7314c57852
GUI: Streamline Properties Widget. Closes #2159
...
Merge select buttons and filtering into one line
2014-11-26 18:48:12 -03:00
sledgehammer999
ecf3dd123e
Don't display weird text in the 'Last Activity' column when the time is invalid.
2014-11-26 14:51:52 +02:00
sledgehammer999
e907306b41
Right align header text that also has right-aligned row text. Closes #2188 .
2014-11-26 14:40:15 +02:00
sledgehammer999
f61675d98a
Merge pull request #2207 from pmzqla/rss-rules
...
Fix RSS "OR" condition in "must not contain" rules.
2014-11-26 13:37:16 +02:00
sledgehammer999
89726d4566
Remove useless includes.
2014-11-26 02:19:48 +02:00
sledgehammer999
a8766058f3
Use parse_magnet_uri() where possible.
2014-11-26 02:19:47 +02:00
sledgehammer999
f413e8b121
Stop using internal libtorrent API. Closes #2202 .
2014-11-26 02:19:46 +02:00
sledgehammer999
cbbf14b0f8
Follow project coding style. Issue #2192 .
2014-11-26 02:19:44 +02:00
Nick Tiskov
806a4a2e6a
Add setting to ignore RSS rule matches for X days
2014-11-26 01:55:25 +03:00
Gabriele
c6dbe8ea60
Don't use white spaces as separator in RSS "must not contain" rules
...
This RegExp uses both white spaces and | as separator.
Use only the latter and drop the RegExp as it is no longer required.
2014-11-25 19:38:18 +01:00
Gabriele
5dede9e433
Use correct separator for "OR" condition in RSS rules
...
Although RSS rules were correctly parsed, the wrong separator for the
"OR" condition was used to re-generate the string of the rule displayed
in the preferences.
Closes #2205 .
2014-11-25 19:19:20 +01:00
sledgehammer999
060d3fc5b9
Merge pull request #2153 from pmzqla/webui-versioninfo
...
WebUI: Allow to retrieve web API version and qBT version
2014-11-23 22:07:59 +02:00
sledgehammer999
8ce91e153d
Merge pull request #2125 from buinsky/master
...
WEBUI: Some fixes
2014-11-23 21:54:42 +02:00
sledgehammer999
202e816d08
Use VERSION_BUILD where possible. Revert a change from previous commit.
2014-11-23 20:59:30 +02:00
buinsky
2275735b81
Change of number of decimal places to 1
...
Change of number of decimal places to 1 in speed and size values.
2014-11-23 16:53:41 +03:00
buinsky
b2876b7f66
Show speed in title
2014-11-23 16:38:52 +03:00
Gabriele
d6169b14dd
WebUI: Allow to retrieve qBittorrent version
...
New GET method:
* version/qbittorrent: qBittorrent version
Closes #1872 .
2014-11-22 20:47:32 +01:00
Gabriele
8b5512c244
WebUI: Assign a version to the Web API and allow to get it
...
New GET methods:
* version/api: current API version
* version/api_min: min API version supported
The API version is an integer and it's returned as plain text.
Whenever the API is changed, the api version is increased.
Whenever the API is changed in a way that is not backward compatible,
api_min is increased.
2014-11-22 20:47:32 +01:00
Gabriele
1154ea3873
Change indentation to 4 spaces. Issue #2192 .
2014-11-22 20:47:32 +01:00
buinsky
f44f676729
Update priority icons
...
Update priority icons
2014-11-20 17:26:38 +03:00
buinsky
5cc90844a5
Fixing setting speed limit of torrent in WEBUI
...
Fixing setting speed limit of torrent in WEBUI when global speed limit
is not set.
2014-11-20 17:26:36 +03:00
sledgehammer999
d6f309b7a6
Merge pull request #2177 from pmzqla/open-select
...
Implement open and select file in file manager [Linux]
2014-11-16 23:19:12 +02:00
Gabriele
0b14860e40
Implement open and select file in file manager [Linux]
...
Only few file managers are able to select files when started from the
command line.
xdg-mime is required to retrieve the default file manager. If it's not
available or the file manager is not able to automatically select files,
the containing directory will be opened as usual.
2014-11-16 21:28:30 +01:00
sledgehammer999
8f9c7b79ed
Fix nox compilation.
2014-11-16 22:28:28 +02:00
sledgehammer999
f35e06540e
Load torrents that have big metadata file. Closes #1889 .
2014-11-16 21:25:53 +02:00
sledgehammer999
0adb9fcbce
Escape backslashes. Issue #800 .
2014-11-16 20:58:43 +02:00
sledgehammer999
bba8e18812
Merge pull request #744 from Gelmir/open_select
...
[Windows] Implement open & select file in file manager
2014-11-16 20:44:22 +02:00
Nick Tiskov
be99c45944
Fix opening of samba shares
2014-11-16 21:03:56 +03:00
Nick Tiskov
997b16a24a
Implement open & select file in file manager [Windows only]
2014-11-16 21:03:51 +03:00
sledgehammer999
7dd4e4aca8
Merge pull request #2174 from sorokin/fix-empty-combobox
...
Fix emptying of 'piece size' combobox when user enable 'auto' checkbox and no files are selected
2014-11-16 18:15:06 +02:00
sledgehammer999
f12dc7ca36
Merge pull request #2173 from sorokin/placeholder-text-torrent-list
...
Set placeholder text to torrent content filter.
2014-11-16 18:02:55 +02:00
Ivan Sorokin
98a900e67d
Fix emptying of piece size combobox when user checks "auto" checkbox.
...
The function computePathSize returns -1 if file isn't found, not 0.
2014-11-16 18:33:31 +03:00
Ivan Sorokin
376df3218d
Set piece size to (max) 4Mb instead of empty string when created torrent
...
is very large.
2014-11-16 18:33:31 +03:00
Ivan Sorokin
6780791d60
Set placeholder text to torrent content filter.
...
In commit afb03725ad
it was implemented
for torrent list filter. Now it is here for files filter.
2014-11-16 18:09:38 +03:00
Ivan Sorokin
97d08a5b2f
Implement sane behavior of space key in torrent content list. Closes #140 .
...
Definitions:
Selection in QTreeView consist of two things:
currentIndex -- is a (dotted) cell where user clicked last time. Note
that it is a cell
selectedIndexes -- is a set of cells (blue) of current selection.
Checkboxes in torrent content lists are belong to COL_NAME column.
Problem:
The problem is that spacebar toggled checkbox only in currentIndex
index. This has two consequences:
1. It is impossible to toggle checkboxes on multiple rows
simultaneously.
2. If currentIndex is not in COL_NAME column a space key doesn't work
at all. This problem is amplifyed by the fact that SelectionBehavior
is set to SelectRows. So visually it is impossible to tell which
column does it belong to. For end user it looks like "space doesn't
work sometimes".
This patch addresses the problem by implementing TorrentContentTreeView
derived from QTreeView and overridding keyPressEvent(QKeyEvent*).
The code of TorrentContentTreeView::keyPressEvent is written under
inspiration from QAbstractItemView::keyPressEvent and
QItemDelegate::editorEvent.
2014-11-16 17:19:04 +03:00
sledgehammer999
9088b1af84
Merge pull request #800 from Gelmir/smart_ep
...
Implement episode filter for rss downloader
2014-11-16 14:48:56 +02:00
sledgehammer999
ae1cecca2f
Merge pull request #2163 from sorokin/optimize-prioritize-files
...
Reduce the number of torrent_handle::torrent_file() calls in QTorrentHandle::prioritize_files()
2014-11-16 13:39:36 +02:00
Ivan Sorokin
404c8972af
Reduce the number of torrent_handle::torrent_file() calls in QTorrentHandle::prioritize_files(). Closes #2161 .
...
It was reported (#2161 ) that enabling/disabling a downloading of a file
is considerably slow on libtorrent 1.0.3, but not on 0.16.x. The problem
is that a function torrent_file() in libttorrent 1.0.3 does a deep copy
of torrent_info, while get_torrent_info() in libtorrent 0.16.x only
returns a reference.
2014-11-16 03:37:51 +03:00
Nick Tiskov
60c4306502
Fix missing icon for open action in file list
2014-11-12 11:51:09 +03:00
Nick Tiskov
18e0d122fb
Add tooltip to episode filter text edit
2014-11-12 11:50:43 +03:00
Nick Tiskov
0564ceea9f
Implement episode filter for rss downloader
2014-11-12 11:50:42 +03:00
sledgehammer999
e8bec885cb
Merge pull request #2145 from pmzqla/webui
...
Make Web API locale independent
2014-11-12 00:32:00 +02:00
Gabriele
b4acb2ef52
Use localeCompare to sort torrent list by name
2014-11-10 13:57:01 +01:00
Gabriele
ed83070517
Use raw data to sort columns
...
Store the raw data retrieved in a new data-raw attribute and use
these to sort the columns.
In addition, make the ETA column sortable.
2014-11-10 13:57:01 +01:00
Gabriele
ec592f8175
Remove unneeded parameters from helper functions for WebUI
2014-11-10 13:57:01 +01:00
Gabriele
aedf579d77
WebUI: make API locale independet
...
Sizes are now given in bytes.
Dates are Unix timestamps and converted to ISO 8601 in the web UI.
Numbers are not converted to strings.
-1 is returned for undefined values.
Some keys have been splitted:
Torrent list (json/torrents)
* num_seeds: Torrent seeds connected to
* num_complete: Torrent seeds in the swarm
* num_leechs: Torrent leechers connected to
* num_incomplete: Torrent leechers in the swarm
Torrent generic properties (propertiesGeneral/hash)
* total_uploaded: Total data uploaded
* total_uploaded_session: Total data uploaded this session
* total_downloaded: Total data dowloaded
* total_downloaded_session: Total data downloaded this session
* time_elapsed: Torrent elapsed time
* seeding_time: Torrent elapsed time while complete
* nb_connections: Torrent connection count
* nb_connections_limit: Torrent connection count limit
Global transfer info (json/transferInfo)
* dl_info_speed: Global downalod rate
* dl_info_data: Data downloaded this session
* up_info_speed: Global upload rate
* up_info_data: Data uploaded this session
Closes #1524 .
2014-11-10 13:57:01 +01:00
Gabriele
8cc7a3573e
Show current speed limits in the status bar
...
Closes #1316 .
2014-11-09 23:00:45 +01:00
Gabriele
f46e660679
Adjust the size of the elements in the statusbar
...
Use the same height for all the elements and try to prevent
variations of the speed labels.
2014-11-09 23:00:45 +01:00
sledgehammer999
d642ddc795
Merge pull request #2150 from pmzqla/webui-fix
...
WebUI: Don't empty transfer list before updating it
2014-11-09 23:02:32 +02:00
Gabriele
09fde676ae
WebUI: Don't empty transfer list before updating it
...
This causes the list from disappearing in IE 10.
No longer needed table rows are deleted anyway.
2014-11-09 21:19:38 +01:00
sledgehammer999
4dbc235c70
Use rgb values to match colors before commit ad116e. Taken from qcolor_p.cpp.
2014-11-09 13:59:36 +02:00
sledgehammer999
6d64f2430c
Merge pull request #2140 from sorokin/fix-torrent-removal
...
Fix torrent removal. Closes #2132
2014-11-09 13:09:38 +02:00
sledgehammer999
9d770ea48b
Merge pull request #2144 from sorokin/up-down-scrolling
...
Speed up scrolling with up/down keys
2014-11-09 13:07:00 +02:00
sledgehammer999
21139f9d29
Merge pull request #2142 from sorokin/repaint
...
Misc changes in TorrentModel and TransferListWidget
2014-11-09 13:06:39 +02:00
Ivan Sorokin
5986c1dbc9
Cache QRegExp in misc::parseHtmlLinks()
...
This commit should improve performance when user navigating through
torrent list using up/down keys. A scrolling through all the list
(276 torrents) took:
Total wall time: 18.813s
Total CPU time: 3.210s
misc::parseHtmlLinks(): 0.096s
misc::parseHtmlLinks() is 8th most hottest function on
this use case.
2014-11-09 12:57:14 +03:00
Ivan Sorokin
9023232653
Cache icons in TorrentContentModel
...
This commit caches icons in TorrentContentModel in the same way they are
cached in TorrentModel.
This commit should improve performance when user navigating through
torrent list using up/down keys. A scrolling through all the list
(276 torrents) took:
Total wall time: 18.813s
Total CPU time: 3.210s
IconProvider::generateDifferentSizes(): 0.170s
IconProvider::generateDifferentSizes is 5th most hottest function on
this use case.
2014-11-09 12:57:14 +03:00
Ivan Sorokin
976982ba09
Now user-created labels "all" and "none" works as regular labels
2014-11-09 03:59:49 +03:00
Ivan Sorokin
f235c0ae6c
Merge label filter into TransferListSortModel
...
This also fixes a bug that when label filter contains special symbols
from regex, the label filter may match torrents with multiple different
labels.
2014-11-09 03:58:50 +03:00
Ivan Sorokin
8bafc5e216
Merge StatusSortFilterProxyModel into TransferListSortModel
...
I thought merging all 3 sort-filter proxy models into one should
speedup dataChanged() signal. As turned out this is not the case. The
time difference is within inaccuracy range, so this doesn't affect
performance.
But I still think it is good to merge them into one proxy model as it
simplifies code.
2014-11-09 03:58:50 +03:00
Ivan Sorokin
cf2cb29826
Split transferlistsortmodel into .h and .cpp
2014-11-09 03:58:50 +03:00
Ivan Sorokin
0976918ca2
Call updateTorrentNumbers() once per every model refresh, not once for every row changed
...
Torrent numbers were recalculated on every dataChanged() signal. The previous commit
greatly increases the number of dataChanged() signals.
HEAD^^:
Total wall clock: 97.069s
updateTorrentNumbers() time: 0.033s
HEAD^:
Total wall clock: 96.132s
updateTorrentNumbers() time: 0.179s
HEAD:
Total wall clock: 95.535s
updateTorrentNumbers() time: 0.047s
After this commit the time of updateTorrentNumbers() is (almost) back to
the level that it was in HEAD^^.
2014-11-09 03:58:50 +03:00
Ivan Sorokin
e5c024967d
Emit TorrentModel::dataChanged() signal only for specific rows, not for the entire table
...
In commit b50d733
TorrentModel moved from a periodic refresh, to using
postStatusUpdate(). In this transition I forgot to remove emition of
dataChanged() signal for the entire table.
According to my measurements this commit reduce CPU usage of qbittorrent
by a factor of 3:
Before:
Total wall clock: 97.07s
CPU time: 21.77s
- Time spent in TransferListDelegate::paint(): 14.60s
- Time spent in TorrentModel::forceModelRefresh(): 1.44s
- Time spent in TorrentModel::stateUpdated(): 0.02s
After:
Total wall clock: 96.13s
CPU time: 6.68s
- Time spent in TransferListDelegate::paint(): 2.63s
- Time spent in TorrentModel::forceModelRefresh(): <0.01s
- Time spent in TorrentModel::stateUpdated(): 1.73s
As it is seen the time spent in painting is reduced by a factor of 6 (14.60->2.63) at
the cost of slightly increased time of notifications that model is
changed (1.44->1.73). The next commits attempt to address this issue.
2014-11-09 03:58:50 +03:00
Ivan Sorokin
2e55c1f307
Optimize torrentRow a bit
...
The problem is that torrentRow() does linear search over the list of all
available torrents. So it doesn't scale well for large number of
torrents. Removing the copying of QString from linear search
inner loop, speed up it considerably.
The proper solution should be using hash table instead of linear search.
This require more radical changes in TorrentModel and may be done in a
separate commit.
2014-11-09 03:48:58 +03:00
Gabriele
97c1b17cf0
Show a spinner while torrents are being uploaded
2014-11-09 00:30:37 +01:00
Gabriele
3d1617b2de
Upload torrents on user command
...
Don't upload the torrents as soon as they are selected.
Also, adjust the HTML code to better place the upload button.
2014-11-09 00:28:41 +01:00
Gabriele
ee3a736787
WebUI: Return error in case uploaded files are not torrents
2014-11-09 00:28:41 +01:00
Gabriele
8b8c9d3573
Rotate expand image to better suit its use in the UI
2014-11-09 00:28:36 +01:00
Gabriele
c255ba675a
Center images in top menu
2014-11-09 00:28:18 +01:00
Gabriele
7b49ab2a48
Add missing images and fix few paths
...
These images are used in CSS rules, but are missing.
Images taken from MochaUI git repo.
2014-11-09 00:28:18 +01:00
Gabriele
465ff473f1
Drop Firefox specific code
...
This change improves the responsiveness while resizing panels.
The code was intended to fix bugs in really old versions of Firefox.
2014-11-09 00:28:18 +01:00
Gabriele
e83e46b08a
Fix panel height calculation in Opera
2014-11-09 00:28:18 +01:00
Gabriele
7b73e96863
Fix errors in width and height calculations
...
border-left/right/top/bottom are not numbers.
2014-11-09 00:28:18 +01:00
Gabriele
dc0591997a
Bump Internet Explorer compatibility
2014-11-09 00:28:18 +01:00
Gabriele
30a25e1de4
Workaround to make invisible buttons clickable on IE
2014-11-09 00:28:18 +01:00
Gabriele
d106c12aa2
Restricts hacks and workarounds to IE < 9
2014-11-09 00:28:18 +01:00
Gabriele
66a91a6e3a
Remove XML encoding declaration from HTML files
2014-11-09 00:27:53 +01:00
Gabriele
0d2e9a9473
Reduce font size of priority combo boxes
...
They were too big in some cases (e.g. Firefox on Linux).
2014-11-09 00:25:40 +01:00
Gabriele
fa706b24be
Use fake tristate checkbox on IE < 9 only
2014-11-09 00:25:40 +01:00
Gabriele
92cc8f7211
Fix disappearing transferlist list when zooming in the browser
...
When the page is zoomed in the browser, the transferlist doesn't fit
in the page and is moved below the left column, disappearing completely.
Allow elements to overlap the handle to prevent this from happening.
The error message is moved in the status bar since it's wrongly placed
because of the overlap.
Closes #603 .
2014-11-09 00:25:40 +01:00
Gabriele
4f28fb5680
Minimize width of first column in transfer list
2014-11-09 00:25:40 +01:00
Gabriele
afde16c252
Change color of table header in bottom panel and add some padding
2014-11-09 00:25:40 +01:00
Gabriele
c516c0ac12
Center vertically "+" image in tracker list
2014-11-09 00:25:40 +01:00
Gabriele
af9e40d83d
Alternate background color for torrent content
...
CSS3 support required.
2014-11-09 00:25:40 +01:00
Gabriele
b01c1f3b9a
Don't show white parts when hovering over the elements of the menu
2014-11-09 00:25:40 +01:00
Gabriele
4ff999d1c5
Change background color of rows of torrent content
2014-11-09 00:25:40 +01:00
Gabriele
c9db08f0f4
Change background color of filterlist on hover
2014-11-09 00:25:40 +01:00
Gabriele
59abcc554d
Remove "Downloaded" from transferlist header and reduce column width
2014-11-09 00:25:40 +01:00
Gabriele
863dc71100
Focus username input on load
2014-11-09 00:25:40 +01:00
Gabriele
0bfad7dce6
Add type attribute to style tag
2014-11-09 00:25:40 +01:00
Gabriele
5e77d99a5e
Add alt attribute to images
2014-11-09 00:25:40 +01:00
Gabriele
b2e86bae7e
Remove extra double quotes
2014-11-09 00:25:34 +01:00
sledgehammer999
f5c93e0b4d
Merge pull request #2129 from glassez/webui
...
WebUI Fixes
2014-11-09 01:21:00 +02:00
Ivan Sorokin
c37e5abeff
Fix torrent removal. Closes #2132
...
It was reported that qbittorrent crashes on Mac OS X when user deletes
torrents from label view when label filter is active.
The callstack of the crash is the following:
1 abort + 129
2 __assert_rtn + 321
3 QTorrentHandle::total_size() const + 124
4 TorrentModelItem::data(int, int) const + 307
5 TorrentModel::data(QModelIndex const&, int) const + 255
6 QSortFilterProxyModel::data(QModelIndex const&, int) const + 109
7 QSortFilterProxyModel::data(QModelIndex const&, int) const + 109
8 QSortFilterProxyModel::data(QModelIndex const&, int) const + 109
9 QItemDelegate::rect(QStyleOptionViewItem const&, QModelIndex const&, int) const + 75
10 QItemDelegate::sizeHint(QStyleOptionViewItem const&, QModelIndex const&) const + 172
11 TransferListDelegate::sizeHint(QStyleOptionViewItem const&, QModelIndex const&) const + 14
12 QTreeView::indexRowSizeHint(QModelIndex const&) const + 887
13 QTreeViewPrivate::layout(int, bool, bool) + 462
14 QTreeView::doItemsLayout() + 356
15 QTreeViewPrivate::updateScrollBars() + 109
16 QTreeView::scrollTo(QModelIndex const&, QAbstractItemView::ScrollHint) + 124
17 TransferListWidget::currentChanged(QModelIndex const&, QModelIndex const&) + 548
18 TransferListWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 641
19 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
20 QItemSelectionModelPrivate::_q_rowsAboutToBeRemoved(QModelIndex const&, int, int) + 3729
21 QItemSelectionModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 398
22 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
23 QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) + 78
24 QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) + 106
25 QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) + 58
26 QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) + 265
27 QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) + 232
28 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
29 QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) + 78
30 QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) + 106
31 QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) + 58
32 QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) + 265
33 QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) + 232
34 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
35 QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) + 78
36 QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) + 106
37 QSortFilterProxyModelPrivate::remove_proxy_interval(QVector<int>&, QVector<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) + 58
38 QSortFilterProxyModelPrivate::remove_source_items(QVector<int>&, QVector<int>&, QVector<int> const&, QModelIndex const&, Qt::Orientation, bool) + 265
39 QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) + 232
40 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
41 QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int) + 78
42 QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) + 106
43 TorrentModel::removeTorrent(QString const&) + 81
44 TorrentModel::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 345
45 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
46 QBtSession::deletedTorrent(QString const&) + 56
47 QBtSession::deleteTorrent(QString const&, bool) + 2855
48 TransferListWidget::deleteSelectedTorrents() + 292
49 TransferListWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 230
50 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
51 QAction::activate(QAction::ActionEvent) + 227
52 QMenuPrivate::activateCausedStack(QList<QPointer<QWidget> > const&, QAction*, QAction::ActionEvent, bool) + 77
53 QMenuPrivate::activateAction(QAction*, QAction::ActionEvent, bool) + 470
54 QWidget::event(QEvent*) + 687
55 QMenu::event(QEvent*) + 617
56 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 194
57 QApplication::notify(QObject*, QEvent*) + 2716
58 SessionApplication::notify(QObject*, QEvent*) + 21
59 QCoreApplication::notifyInternal(QObject*, QEvent*) + 118
60 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) + 448
61 qt_mac_handleMouseEvent(NSEvent*, QEvent::Type, Qt::MouseButton, QWidget*, bool) + 1300
62 -[NSWindow _reallySendEvent:] + 759
63 -[NSWindow sendEvent:] + 368
64 -[QCocoaPanel sendEvent:] + 113
65 -[NSApplication sendEvent:] + 2238
66 -[QNSApplication sendEvent:] + 97
67 -[NSApplication run] + 711
68 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1522
69 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 77
70 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 370
71 QMenu::exec(QPoint const&, QAction*) + 103
72 TransferListWidget::displayListMenu(QPoint const&) + 8741
73 TransferListWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) + 622
74 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) + 2196
75 QWidget::event(QEvent*) + 3082
76 QFrame::event(QEvent*) + 45
77 QAbstractScrollArea::viewportEvent(QEvent*) + 108
78 QAbstractItemView::viewportEvent(QEvent*) + 1390
79 QTreeView::viewportEvent(QEvent*) + 218
80 QAbstractScrollAreaFilter::eventFilter(QObject*, QEvent*) + 37
81 QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 115
82 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 178
83 QApplication::notify(QObject*, QEvent*) + 5742
84 SessionApplication::notify(QObject*, QEvent*) + 21
85 QCoreApplication::notifyInternal(QObject*, QEvent*) + 118
86 qt_sendSpontaneousEvent(QObject*, QEvent*) + 45
87 qt_mac_handleMouseEvent(NSEvent*, QEvent::Type, Qt::MouseButton, QWidget*, bool) + 1378
88 -[NSWindow _reallySendEvent:] + 5682
89 -[NSWindow sendEvent:] + 368
90 -[QCocoaWindow sendEvent:] + 113
91 -[NSApplication sendEvent:] + 2238
92 -[QNSApplication sendEvent:] + 97
93 -[NSApplication run] + 711
94 QEventDispatcherMac::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 1522
95 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 77
96 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 370
97 QCoreApplication::exec() + 199
98 main + 3415
99 start + 52
As we can see the user deleted some torrent (48). QBtSession deleted the torrent
from libtorrent::session (47) and emitted a signal (46), about torrent deletion.
In responce to the signal (43) the TorrentModel notifies (42) its views about a change.
After a long chain of notifications (42-6) the view requested (5) a value of
total_size from TorrentModel. QTorrentHandle is already invalid as the torrent
was removed in (47). So we've got a crash in (3).
The fix is relatively straightforward: do notify TorrentModel about removal not after,
but before torrent is removed from libtorrent::session. This commit does the same
thing to TorrentSpeedMonitor.
This bug reveals a major flaw in a design: currently we have a several components all
subscribed to the torrent removal signal. Signal is delivered to them in arbitrary
order, but they access each other in the handlers of this signal. E.g. TorrentModel
can access TorrentSpeedMonitor. This doesn't lead to a crash because
TorrentSpeedMonitor returns MAX_ETA when ETA is queried for unknown torrent.
2014-11-09 00:25:59 +03:00
Ivan Sorokin
6bbfd0aeb7
Fix a warning
2014-11-08 19:00:04 +03:00
sledgehammer999
c9e13dfe8b
Merge pull request #2120 from sorokin/ip-filter-moc
...
split filterparserthread into .h and .cpp and (probably) fixes #2119
2014-11-08 14:35:23 +02:00
Vladimir Golovnev (Glassez)
cd0bcacd9f
WebUI: Fix upload window closing on old browsers.
2014-11-07 15:53:11 +03:00
Vladimir Golovnev (Glassez)
d85c3170b2
WebUI: Add charset attribute to text content types.
2014-11-05 20:24:17 +03:00
Vladimir Golovnev (Glassez)
7b7f88ae4f
WebUI: Fix WebAPI returned data.
2014-11-05 20:24:02 +03:00
Ivan Sorokin
da867fd022
Split trackerlogin into .h and .cpp
2014-11-05 03:10:39 +03:00
Ivan Sorokin
ed197a193d
Split statusbar into .h and .cpp
2014-11-05 03:10:39 +03:00
Ivan Sorokin
6347700ee3
Move libtorrent includes to .cpp
...
This commit probably fixes #2119 .
The only important change in this commit is moving
session::get_ip_filter() from FilterParserThread::processFilterFile() to
FilterParserThread::run(). Previously we called it in main thread, but
now we calls it in worker thread. I don't now what libtorrent contract
about threads, but I assume that if it is ok to set_ip_filter from
other thread, it is ok to get it.
2014-11-05 03:10:39 +03:00
Ivan Sorokin
17f5ffcaec
Split filterparserthread into .h and .cpp
2014-11-05 03:10:39 +03:00
Vladimir Golovnev (Glassez)
0660398c28
Replace Mascot with qBittorrent logo on WebUI login page.
2014-11-03 16:31:41 +03:00
Vladimir Golovnev (Glassez)
651bf4f9aa
Fix status returned to banned user.
2014-11-03 16:31:40 +03:00
sledgehammer999
6f14b34470
WEBUI: Protect against timing attacks. Closes #2108 .
2014-11-02 21:41:29 +02:00
Gabriele
b63f647c2c
Add "Total Size" column to transfer list
...
This column shows the total size of the related torrent taking into
account also the unwanted data.
Closes #1233 .
2014-11-02 19:56:03 +01:00
Gabriele
b1af99ffba
Add "Last Activity" column to transfer list
...
This column shows the time elapsed since the related torrent has
received or sent a chunk.
Closes #517 .
2014-11-02 19:56:03 +01:00
Gabriele
a501f9d223
Add "Last Seen Complete" column to transfer list
...
This column shows when we or one of our peers last saw a complete
copy of the related torrent.
Closes #483 .
2014-11-02 19:15:10 +01:00
Ivan Sorokin
51c9d358b4
Implement O(1) SpeedSample::average() instead of O(N)
2014-11-02 20:03:49 +03:00
Ivan Sorokin
4ff08ff691
New improved Sample in TorrentSpeedMonitor
2014-11-02 20:03:49 +03:00
Ivan Sorokin
0d311062f3
Unused function
2014-11-02 20:03:49 +03:00
sledgehammer999
d62498b48c
Merge pull request #2106 from sorokin/fix-memleak-in-torrentmodel
...
Fix a memleak in torrentmodel.
2014-11-02 16:43:04 +02:00
sledgehammer999
37d83cf6a8
Merge pull request #2092 from pmzqla/cleanup
...
Remove unused code
2014-11-02 16:41:40 +02:00
sledgehammer999
4f2b7c2e10
Merge pull request #2081 from sorokin/split
...
Split a few files into .h and .cpp
2014-11-02 16:40:41 +02:00
sledgehammer999
cfa28ec68c
Merge pull request #2080 from sorokin/cleanup-torrent-model
...
Cleanup torrent model item
2014-11-02 16:36:52 +02:00