New developer introduction

Post Reply
magao

New developer introduction

Post by magao »

I'm a developer by craft and have been professionally for over 20 years. I've contributed haphazardly to open source projects over that time, but I avoid making too large a committment as I find that I prefer to use my non-work time for non-programming tasks these days. So I'm only intending to scratch my own itches, but anything I do implement I will be submitting as pull requests (eventually).

I'm a novice to Qt, and it's been 10+ years since I've used C++, but I've finally got around to implementing a number of changes that have been preventing me from moving from uTorrent. My intention is to find and fix existing issues that I feel give a negative experience (and raise new issues as appropriate).

A quick overview of the changes I've been implementing over the last couple of weekends:

1. UI responsiveness, in particular startup and RSS-related.

There are a lot of issues on GitHub that basically boil down to "qBittorrent becomes unresponsive" or "qBittorrent takes a long time when started until it's usable". I've found a number of cases where lots of processing occurs without allowing the UI to refresh e.g. matching RSS and downloading items.

Whilst I haven't been successful in implementing proper multi-threading (remember - Qt novice), what I have been able to do is improve responsiveness by breaking up large chunks of processing into smaller chunks and allowing the event loop to progress. For example, in the RSS downloader building the tree of matching entries is now done in 250ms chunks and will be interrupted by selecting a different rule or changing the properties of the rule. I also delay a second after changing a property before starting processing (so it doesn't immediately start while typing in the rule properties).

2. Other RSS downloader improvements:

a. Enabling/disabling a rule will take effect even if the rule isn't selected in the list;

b. Fix the tabbing order must contain -> must not contain -> episode (previously went must contain -> episode -> must not contain ...);

c. Use red text + icon to indicate an invalid episode filter, like must/must not contain;

d. Allow leading zeros in episode numbers (and also allow episode zero which is sometimes used for specials);

e. Support both S01E01 and 1x01 episode formats in the torrent title;

f. Allow matching episodes from future seasons when given an episode filter like 2x03- (i.e. will also match anything from season 3 or later);

g. Allow | in must contain (same as in must not contain);

h. Added a menu item + keyboard shortcut (Ctrl+R) to open the RSS downloader while another tab is active;

i. Made the RSS downloader dialog non-modal (so you can have it open, but still be able to do things in the main window - I use this to scroll through the list of loaded torrents and modify the filters).

3. Other UI improvements:

a. Ctrl+F focuses and selects everything in the torrent filter text field;

b. Changed paused downloading torrent list colour to be more readable (IMO) - took the colour from stalled downloading, and change stalled downloading to be Maroon. I found Salmon both inappropriate (red-based but not indicating an error) and also fairly unreadable.

4. Advanced setting to not download favicons (but I've since found a pull request for similar functionality in a different way that I'll evaluate).

I would also like to address:

5. Checkbox to enable/disable RSS feeds.

6. Changing the URL for RSS feeds.

7. Long-term, make paused torrents not create the directory they would be created in - only if the torrent is active. This appears to be fairly difficult (as qBittorrent relies on libtorrent for all of that) so it may be necessary to introduce another state (stopped).
Last edited by magao on Sun Nov 13, 2016 11:23 pm, edited 1 time in total.
KitKat

Re: New developer introduction

Post by KitKat »

Have fun and goodluck o/
magao

Re: New developer introduction

Post by magao »

Fun can be somewhat relative ... I'm a bit old now for realising "What? It's 4am???" as happened this morning ..
User avatar
Peter
Administrator
Administrator
Posts: 2693
Joined: Wed Jul 07, 2010 6:14 pm

Re: New developer introduction

Post by Peter »

[quote="magao"]...[/quote]

Very nice, thank you for your work!
Welcome aboard!
User avatar
Nemo
Administrator
Administrator
Posts: 1730
Joined: Sat Jul 24, 2010 6:24 pm

Re: New developer introduction

Post by Nemo »

Nice, welcome!

Goodluck with the other guys at Github.
Post Reply