[GSoC] LateNightQML: Deck Layouts - #17014
Conversation
f9dc9ea to
c47d142
Compare
|
There are some stray changes in Toolbar and Waveforms solving visual regression which were overlooked. Since, the scope of the changes are very small and should not cause a burden to review, I did not open a separate PR for them. |
JoergAtGithub
left a comment
There was a problem hiding this comment.
This PR is far to big to review! Furthermore it contains several unrelated changes.
Please move the commits for:
- Waverform changes
- Toolbar indicators
- Key indicators
each into an seperate PR!
|
Will do so. |
83781ee to
206e643
Compare
| // The derived controls choose the slot size, but the two source toggles | ||
| // remain the authority for whether a slot exists at all. This prevents a | ||
| // stale derived value from leaving an empty layout gap. | ||
| readonly property bool showSpinnyOrCover: (showSpinniesProxy.value > 0 || showCoverArtProxy.value > 0) | ||
| && (!showSpinnyOrCoverProxy.initialized || showSpinnyOrCoverProxy.value > 0) | ||
| readonly property bool showSmallSpinnyOrCover: root.showSpinnyOrCover | ||
| && (!showSmallSpinnyOrCoverProxy.initialized | ||
| ? selectBigSpinnyProxy.value <= 0 | ||
| : showSmallSpinnyOrCoverProxy.value > 0) | ||
| readonly property bool showBigSpinnyOrCover: root.showSpinnyOrCover | ||
| && (!showBigSpinnyOrCoverProxy.initialized | ||
| ? selectBigSpinnyProxy.value > 0 | ||
| : showBigSpinnyOrCoverProxy.value > 0) | ||
| readonly property bool showCover: root.showSpinnyOrCover && showCoverArtProxy.value > 0 | ||
| readonly property bool showSpinny: root.showSpinnyOrCover && showSpinniesProxy.value > 0 |
There was a problem hiding this comment.
// The derived controls choose the slot size, but the two source toggles
// remain the authority for whether a slot exists at all. This prevents a
// stale derived value from leaving an empty layout gap.
readonly property bool showSpinnyOrCover: (showSpinniesProxy.value > 0 || showCoverArtProxy.value > 0)
&& (!showSpinnyOrCoverProxy.initialized || showSpinnyOrCoverProxy.value > 0)
readonly property bool showSmallSpinnyOrCover: root.showSpinnyOrCover
&& (!showSmallSpinnyOrCoverProxy.initialized
? selectBigSpinnyProxy.value <= 0
: showSmallSpinnyOrCoverProxy.value > 0)
readonly property bool showBigSpinnyOrCover: root.showSpinnyOrCover
&& (!showBigSpinnyOrCoverProxy.initialized
? selectBigSpinnyProxy.value > 0
: showBigSpinnyOrCoverProxy.value > 0)
readonly property bool showCover: root.showSpinnyOrCover && showCoverArtProxy.value > 0
readonly property bool showSpinny: root.showSpinnyOrCover && showSpinniesProxy.value > 0
Wouldn't it make sense to move this code into a singleton and reuse it in CompactDeck.qml, and FullDeck.qml.
It's always good to have a single point where the decision is taken.
| function formatTime(seconds) { | ||
| const value = Math.max(0, Math.floor(seconds)); | ||
| return Math.floor(value / 60).toString() + ":" + (value % 60).toString().padStart(2, "0"); | ||
| } |
There was a problem hiding this comment.
Wouldn't it make sense to move this to DurationFormatter.qml and share it?
| @@ -0,0 +1,94 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| import QtQuick | |
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -1 +1 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -0,0 +1,223 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| import QtQuick | |
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -0,0 +1,161 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| import QtQuick | |
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -1 +1 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -0,0 +1,176 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| import QtQuick | |
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| @@ -0,0 +1,52 @@ | |||
| import QtQuick | |||
There was a problem hiding this comment.
| import QtQuick | |
| pragma ComponentBehavior: Bound | |
| import QtQuick |
| visible: false | ||
| readonly property bool ready: true | ||
|
|
||
| // All controls used by the layout are declared here before Toolbar and |
There was a problem hiding this comment.
Didn't we had the Skin controls declared already?
This PR continues the LateNightQML skin work by completing the responsive deck layouts with feature and visual parity for the Classic and PaleMoon color schemes.
Testing the Experimental Skin
Since this is an experimental milestone, first run Mixxx with the developer flag:
Once Mixxx is open, switch to:
You can dynamically toggle between the Classic and PaleMoon color schemes under preferences.
Previews
Classic
PaleMoon
Scope of Changes
New Styling
The menus now get resized with available options according to the selected state:
Implemented in this PR
Tracking
GSoC: LateNightQML PR-14