A different DPI setting might make the elements in the dialogue big
enough to make the scrollbars appear, but not big enough to make them
useful. So, never show them.
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)
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.
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.
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.
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.