[kcm] Expose interface to control output property retention
ClosedPublic

Authored by romangg on Nov 18 2018, 11:45 PM.

Details

Summary

This adds two radio buttons to the kcm, that allow to change the output
property retention of the output currently being modified.

The default value is global property retention.

Closes T10028

Test Plan

Autotest passes.

Diff Detail

Repository
R104 KScreen
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
romangg created this revision.Nov 18 2018, 11:45 PM
Restricted Application added a project: Plasma. · View Herald TranscriptNov 18 2018, 11:45 PM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
romangg requested review of this revision.Nov 18 2018, 11:45 PM
romangg planned changes to this revision.EditedNov 18 2018, 11:49 PM
romangg edited the summary of this revision. (Show Details)

This diff contains some fixes, that need to go into earlier diffs in this patch series.

Visually, let's follow the existing formlayout style in the KCM and put the label to the left of the radio buttons rather than using a group box. Also, the two radio button labels shouldn't end with periods.

I'll admit just looking at the new UI, it's not entirely clear what either of the options do. Can you help me understand? Thanks Roman!

I'll admit just looking at the new UI, it's not entirely clear what either of the options do. Can you help me understand? Thanks Roman!

I replied to your mail to the plasma-devel thread. We can continue the discussion there. Maybe we find an alternative solution for the radio buttons better suited for what we want to communicate to the user.

@romangg and I talked and now I understand the feature and think it's a good idea. It needs to be exposed to the user in a way that's immediately apparent though. Here's my recommendation

  1. Default to global settings
  2. When there is only configuration data for one screen arrangement (i.e. because the user has never plugged in another display), don't show the global/per-arrangement configuration UI
  3. When there are multiple display arrangements because the user has plugged in another display at some point, display the following UI at the bottom of the FormLayout which allows the user to choose between global and per-arrangement settings:
Save settings: (o) For all display arrangements that use this screen
               ( ) Only for the current display arrangement
ngraham edited the summary of this revision. (Show Details)May 2 2019, 5:34 PM
romangg updated this revision to Diff 57671.May 6 2019, 5:20 PM

Rebase on series changes.

romangg planned changes to this revision.May 6 2019, 5:23 PM

Changes still need to go back in other diffs in the series.

romangg updated this revision to Diff 57720.May 7 2019, 2:00 PM

Rebase on series changes.

@romangg and I talked and now I understand the feature and think it's a good idea. It needs to be exposed to the user in a way that's immediately apparent though. Here's my recommendation

  1. Default to global settings
  2. When there is only configuration data for one screen arrangement (i.e. because the user has never plugged in another display), don't show the global/per-arrangement configuration UI
  3. When there are multiple display arrangements because the user has plugged in another display at some point, display the following UI at the bottom of the FormLayout which allows the user to choose between global and per-arrangement settings:
Save settings: (o) For all display arrangements that use this screen
               ( ) Only for the current display arrangement

That's good wording. The only issue I see is that a display arrangement, which has the display saved in the past with the second option selected will keep this display's values even if later in a different display arrangement the display values get changed with the first option selected. But the first option suggests that all display arrangements will be set to the configured values.

Save screen: (o) For all display arrangements with non-unique screen values
             ( ) Uniquely for the current display arrangement

That's more complicated though.

@romangg and I talked and now I understand the feature and think it's a good idea. It needs to be exposed to the user in a way that's immediately apparent though. Here's my recommendation

  1. Default to global settings
  2. When there is only configuration data for one screen arrangement (i.e. because the user has never plugged in another display), don't show the global/per-arrangement configuration UI
  3. When there are multiple display arrangements because the user has plugged in another display at some point, display the following UI at the bottom of the FormLayout which allows the user to choose between global and per-arrangement settings:
Save settings: (o) For all display arrangements that use this screen
               ( ) Only for the current display arrangement

That's good wording. The only issue I see is that a display arrangement, which has the display saved in the past with the second option selected will keep this display's values even if later in a different display arrangement the display values get changed with the first option selected.

Hmm, that seems like buggy behavior then. Can we fix this? Global/per-display-arrangement configurations shouldn't stomp on each other under any circumstance.

[...]
That's good wording. The only issue I see is that a display arrangement, which has the display saved in the past with the second option selected will keep this display's values even if later in a different display arrangement the display values get changed with the first option selected.

Hmm, that seems like buggy behavior then. Can we fix this? Global/per-display-arrangement configurations shouldn't stomp on each other under any circumstance.

Not sure if I explained it correctly, but this way the global and per-display-arrangements will stay out of their way. Imagine you cycle between three different display arrangements A1,A2,A3 with following screens:

A1: S1
A2: S1, S2
A3: S1 (90°-rotated), S2, S3

In the beginning A1 is active, which sets the global value for S1. Then you change to A3 and change the rotated value of S1 to 90° as arrangement-unique on A3. Now switching to A1 or A2 will load the global 0°-rotation value of S1 previously defined on A1 and not take the (arrangement-unique) value of S1 on A3.

Another detail is that currently in a display arrangement with multiple screens one of the screens could use arrangement-unique values while another screen could use global ones. This is imo too complicated. Either the user wants to write/read to global values for every screen in the arrangement, or only save this unique arrangement overall. Otherwise one would need to make sure all screens have the correct option selected before saving, which is error prone since not all values are displayed at the same time in the KCM.

romangg updated this revision to Diff 57835.May 9 2019, 11:50 PM

Rebase on series changes.

romangg updated this revision to Diff 59670.Wed, Jun 12, 5:06 PM

Rebase on master.

I leave the text as is for now. Let's discuss next week at Plasma Sprint.

I would like to see that the last bits of QWidgets get removed in the KCM as well. This could be done together then.

Also as I said earlier having retention control per output is too complicated imo. But I leave it as is for now as well, since doing it per config simplifies stuff and should be easy. This way we then have a comparison.

romangg updated this revision to Diff 59722.Thu, Jun 13, 11:47 AM

Rebase on series changes.

This revision was not accepted when it landed; it landed in state Needs Review.Thu, Jun 13, 9:34 PM
This revision was automatically updated to reflect the committed changes.