Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configurable UI appearance and corresponding options page #6363

Closed
zeule opened this issue Feb 8, 2017 · 19 comments
Closed

Configurable UI appearance and corresponding options page #6363

zeule opened this issue Feb 8, 2017 · 19 comments
Labels
Discussion GUI GUI-related issues/changes

Comments

@zeule
Copy link
Contributor

zeule commented Feb 8, 2017

Dear @qbittorrent/qbittorrent-frequent-contributors, @magao, @Zalewa,
and everyone interested, of course.

Let's discuss possible implementations for the appearance settings here. It turns out (#6196) various appearance settings may not only be required to satisfy user taste or preferences, but also be a
requirement for a specific environment. Therefore let's try to summaries requirements and desires for those settings.

I quote @magao comment from PR #6196 here:

I'd be willing to implement a new Appearance tab which simply aggregated all the existing appearance options and could then be used as the basis for other PRs to build on. I'll see if I can get to it this weekend.

These are the options I think should be moved to Appearance:

Behaviour/Language (which means Appearance should be the first tab so it's the first thing that shows up when the options opens).

Behaviour/Transfer List/Use alternating row colors

Behaviour/Transfer List/Hide zero and infinity values

Behaviour/Desktop/Show splash screen on start up (not sure about this one - could fit in either category)

Behaviour/Desktop/Start qBittorrent minimized + all sub-options (not sure about this one - could fit in either category)

Behaviour/Desktop/Show qBittorrent in notification area (not sure about this one - could fit in either category)

Advanced/Display notifications

Advanced/Display notifications for added torrents (should this only be available if Display notifications is checked?)

Advanced/Download tracker's favicon (rename to Show tracker's favicon?)

Advanced/Use system icon theme (on linux this only seems to affect the notification area icon - should this only be #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))?)

I think a user additionally might want to change:

  1. Fonts for the torrents list, torrent contents tab, log window, RSS reader.
  2. Colours for the torrent list, log window, RSS reader, speed plot, download progress bar.
  3. A user might want to colourise everything in the main window, status icons only, or nothing.

We can provide defaults for colours that depends on an environment (Plasma and Gnome (not really sure) have enough colours in their colour schemes to cover all torrent states).

Referencing related PRs: #3936 #4057 #6156 #6186 #6196


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@sledgehammer999
Copy link
Member

Copying my #6196 (comment):
IMO, these belong to Behavior:

  1. Behaviour/Transfer List/Hide zero and infinity values
  2. Behaviour/Desktop/Show splash screen on start up
  3. Behaviour/Desktop/Start qBittorrent minimized + all sub-options
  4. Behaviour/Desktop/Show qBittorrent in notification area
  5. Advanced/Display notifications
  6. Advanced/Display notifications for added torrents
  7. Advanced/Download tracker's favicon (although this might be considered truly an advanced option)

Advanced/Use system icon theme (on linux this only seems to affect the notification area icon - should this only be #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))?)

Talking from memory here, but I think this also controls the icons for the toolbar and any other icon that follows the icon theme naming spec.

@zeule zeule changed the title Options page to configure UI appearance Configurable UI appearance and corresponding options page Feb 8, 2017
@zeule
Copy link
Contributor Author

zeule commented Feb 8, 2017

Talking from memory here, but I think this also controls the icons for the toolbar and any other icon that follows the icon theme naming spec.

Confirm.

@sledgehammer999
Copy link
Member

A user might want to colourise everything in the main window, status icons only, or nothing.

What do you mean by this? Complete skinning support? -I think we'll open a can of worms implementing it-

@zeule
Copy link
Contributor Author

zeule commented Feb 8, 2017

What do you mean by this? Complete skinning support?

Torrent state colours may be applied to the whole lines in the transfers list (text and icon), to the icon only or not applied at all, leaving icons monochrome too.

@magao
Copy link
Contributor

magao commented Feb 8, 2017

Torrent state colours may be applied to the whole lines in the transfers list (text and icon), to the icon only or not applied at all, leaving icons monochrome too.

Yes - I was thinking that as well. We'd need most of the changes from PR #6186 to do this.

@sledgehammer999
Copy link
Member

Torrent state colours may be applied to the whole lines in the transfers list (text and icon), to the icon only or not applied at all, leaving icons monochrome too.

Ok, I understand now.

@zeule
Copy link
Contributor Author

zeule commented Feb 8, 2017

To synchronise our thoughts:

I'm thinking about a couple of singletons that implement respective interfaces (e.g. ColorTheme and FontTheme). Those singletons implement the Bridge pattern using a number of implementations: DefaultColorThemeProvider, CustomColorThemeProvider, PlasmaColorThemeProvider, etc. The same for fonts. The providers returns set of colours/fonts, either predefined or loaded from the config file or obtained from environment. The Theme objects handle enabling/disabling colour/font for a particular UI element returning either specific or default colour/font. The options page allows user to select a theme provider (predefined qBt theme, system, custom) and enable/disable theming of UI element.

@magao, @sledgehammer999: would you agree?

@magao
Copy link
Contributor

magao commented Feb 8, 2017

Sounds reasonable. Think it needs to be done in several steps (PRs):

  1. Consolidate all the existing appearance-related options into a single tab.

  2. Create the new code structure, with just the default providers.

  3. Hook in theme change detection and set up signals.

  4. Start adding new customisation features (colours, fonts, etc).

I'm happy to work on step 1 this weekend. This should be purely a UI task, step 2 could be done in parallel. Do you want to start on step 2 @evsh?

@zeule
Copy link
Contributor Author

zeule commented Feb 9, 2017

@magao: yes, this makes sense. Would be happy to implement the second task, but will be busy this weekend and not sure yet about the next one.

@zeule
Copy link
Contributor Author

zeule commented Feb 9, 2017

Another little idea: perhaps we should save colour schemes in a separate file. This would allow us to unify default and custom themes (just by distributing a file with the default theme), move colours specification out of the code and allow users to save and exchange the themes. I can think of a few default ones, like Light, Dark, Solarized...

@magao
Copy link
Contributor

magao commented Feb 9, 2017

Sounds good. I could do that as part of step 1. Note sure what I was replying to here - not about saving colour schemes in separate file ...

Step 3 would use bits from my PR #6174. I'd probably change it so the themeChanged() signal was on Preferences, and it would only be sent if one or more of the appearance options changed. We also will need to be careful to make sure that all the providers have been notified before any users of the providers are (currently I'm doing that by directly calling into GuiIconProvider).

@magao
Copy link
Contributor

magao commented Feb 9, 2017

Did a quick implementation of step 1 after work - main issue was moving options around the tabs. QtCreator wasn't much help.

Use system icon theme is hidden except on non-MacOS UNIX. If the Desktop section is empty then it is hidden (implemented that way so if we add other desktop things here it will show automatically)..

All three prefs are migrated to Preferences/Appearance/...

I'm no artist, so I just moved the icon from Behaviour to Appearance, and gave Behaviour the gear. I also changed the WebUI icon to qbt-theme/webui.png which I think it was probably intended to be.

I also want to set up the them change detection and signals before submitting a PR, but does this look like how you want it?

appearance_prefs

@birdie-github
Copy link
Contributor

Let me chime in:

  • No other existing application implements this (except maybe firefox in about:config) but it would be nice if user modified options were highlighted
  • While we're at it, it would be nice to have "Reset to default" for each Tab (to the left of Apply/Cancel/OK), which when clicked asked whether the options in the current tab would be reset or all QBitTorrent options to be reset
  • IMO, the menu structure/organization in QBitTorrent is a tad awkward

I'd have:

File -> Create Torrent
File -> Open Torrent File (instead of "Add")
File -> Open Torrent URL (instead of "Add")

Rename "Edit" to "Torrent" (Edit traditionally means Cut/Copy/Paste)

View is OK.

No "Torrent Create" under Tools (already in "File")

"Lock QBitTorrent" belongs to "Tools" or even "File".

@glassez
Copy link
Member

glassez commented Feb 9, 2017

File -> Open Torrent File (instead of "Add")
File -> Open Torrent URL (instead of "Add")

IMO, more correct is "Add Torrent from File" (and "Add Torrent from URL").
Described action: ADDING torrent to session from some source (file or URL).

@magao
Copy link
Contributor

magao commented Feb 9, 2017

From PR #6186 ...

You may return QPalette::color(QPalette::Active, QPalette::WindowText) (or use QPalette::Inactive for stalled torrents, although inactive colours are the same as active on Windows, AFAIK).

Thinking about this - maybe the monochrome text theme should be:

Actively uploading/downloading - > QPalette::Active
Paused/stalled/complete -> QPalette::Inactive

I'll prototype it and see how it looks.

@thalieht
Copy link
Contributor

thalieht commented Feb 9, 2017

Rename "Edit" to "Torrent" (Edit traditionally means Cut/Copy/Paste)

👍

@zeule
Copy link
Contributor Author

zeule commented Feb 11, 2017

I also want to set up the them change detection and signals before submitting a PR, but does this look like how you want it?

@magao Excuse me, but since you do not show any code and the illustration is obvious, what feedback do you expect?

@magao
Copy link
Contributor

magao commented Feb 11, 2017

@ech @sledgehammer999 Sorry - whether the right options had been moved to the Appearance tab, and if the icon selection was reasonable.

@allanlaal
Copy link
Contributor

Advanced/Display notifications for added torrents (should this only be available if Display notifications is checked?)

this is discussed in #7360

@thalieht thalieht added the GUI GUI-related issues/changes label Sep 5, 2019
@qbittorrent qbittorrent locked and limited conversation to collaborators Aug 9, 2022
@ghost ghost converted this issue into discussion #17524 Aug 9, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
Discussion GUI GUI-related issues/changes
Projects
None yet
Development

No branches or pull requests

8 participants