-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Cover art UX improvements #1207
Conversation
This will allow skins to make the DlgCoverArtFullSize feature available without needing space for both WCoverArt and WSpinny
src/widget/wspinny.cpp
Outdated
// Trigger a mouse move to immediately line up the vinyl with the cursor | ||
mouseMoveEvent(e); | ||
} | ||
} else if (m_bShowCover) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that this will also work for middle clicks.
Ah Ok. The first two commits are Ok. I am unsure with the last. In case of a dedicated cover, the big cover is shown on the left click and a context menu appears on the right click. This is more natural to me but does not fit for the shinny. |
I agree that right clicking the spinny is not an intuitive way to show the big cover art. However, this is not an important feature, so I don't think it's a big deal if it's not very easy to discover.
What do you mean? |
Something like a hamburger button, that appears when hovering on the cover art spinny. Clicks on it can be handled like other clicks on a cover. |
I think that would feel cluttered and get annoying for users who want to left click the spinny. |
Can we come to a conclusion here? Merge as it is? |
I'm in favor of merging as-is, but it would be good for someone else to test. |
IIRC this was a design decision to avoid some issues, can´t remember the details, see pull #278 Tested your PR on OSX 10.11.1 with latest master:
I find it odd that we have left click for FullSize display on WCoverArt for library and decks, and right-click for spinnies. Although the and left-/ and right- click behavior of WCoverArt is not that obvious though.
Removing WCoverArt in the decks as redundant, cuts out the users who wish not to use spinnies for whatever reasons. |
I didn't find any discussion about it when briefly looking through that PR, but maybe I didn't look hard enough.
I hadn't thought anyone would try that. I'm not sure why you'd want to see another cover without closing the previous one first. Is this really an issue? Even if a user does this, they can just click on each cover to hide it.
LateNight does not have both and I haven't seen a single user ask or complain about it. On the other hand, the multitude of options related to cover art in Deere 2.0 is confusing. Furthermore, screen space is precious; we should not have redundant widgets using more than they need. I'll look into the other issues. |
Just acting like a potential user. This is a minor issue, otoh your PR aims to fix an minor issue as well.
We introduced Coverart in 2.0. There are no metrics how many of our users change from the default skin ( Users of Deere/Shade currently have coverart in the decks enabled/spinnies disabled per default. Taking away features in a minor revision we introduced just a major revision earlier - without need, why? |
My primary goal with this PR is to make it possible to show the cover art in only one place (the spinny) and keep the ability to show the big cover without having a redundant cover art widget taking up space. Come to think of it, that does not necessitate removing an option for the cover art widget though. |
From my point of view it would make most sense to always show only one fullsize cover. Stacking multiple of them feels odd. Can we close the old when opening the next? Currently clicking on the same small cover-art twice opens and closes the fullsize one again. That makes sense. But I would expect, that every small cover-art click would close any existing, and if the clicked-on is different from the one that was open, the new one should be opened in full size. So always only one big cover-art visible. |
* let DlgCoverArtFullSize have a border * set DlgCoverArtFullSize window title to "Album Artist - Album (Year)" (or Album instead of Album Artist if there is no Album Artist) * let DlgCoverArtFullSize be resized either by dragging the window border or using a mouse scroll wheel * update DlgCoverArtFullSize when cover art is changed * update DlgCoverArtFullSize when track is reloaded * show WCoverArtMenu on right click of DlgCoverArtFullSize * show WCoverArtMenu on right click of WSpinny when the track does not have cover art set * update WSpinny tooltip * don't hide DlgCoverArtFullSize when moving mouse off of WCoverArtLabel
I made DlgCoverArtFullSize a normal window with a border. I think this obviates making only one DlgCoverArtFullSize show at a time, which would be quite complicated to implement. It can now be resized by dragging the window border or by using a mouse scroll wheel. Unfortunately Qt does not make it easy to preserve the aspect ratio of a widget, so the graphic is scaled proportional to its aspect ratio, but there can be blank space on the sides of the window if it is stretched outside of the cover's aspect ratio. Also, right clicking on DlgCoverArtFullSize brings up the cover art context menu. Right clicking on a WSpinny with a track loaded that does not have cover art set also brings up the cover art context menu. DlgCoverArtFullSize responds to changing the cover art and loading new tracks too. |
@esbrandt, could you test again? |
Giving those windows the decorator makes closing them much more obvious, the resize on scroll is also nice. Before merge the qDebugs should be removed, as the resize event is spamming the log atm. Other than that, 👍 |
Looks pretty good now.
|
How are you changing the cover? From the popup window, the spinny, or the library? |
I'm thinking of removing the click to close action now that there is a normal window border. Thoughts? |
+1 , and we have still |
Library |
Joining this conversation a bit late, I'm afraid I'm the party pooper when I say I don't like this new UX. Sure, that Cover would close when leaving CoverArt icon with mouse, was a bit unexpected but I got used to it. Furthermore, this saves a click when you'd want to quickly get back to skin.
Those aspects I consider a UX and aesthetic regression, there's much more interaction necessary to just view the whole Cover. Wouldn't your
and just removing closing the Cover on mouse-out be enough? |
I'll look into scaling down covers that are larger than the screen. Previously it checked whether the cover was bigger than the largest window of Mixxx, but I don't think that's a great approach, especially with the cover being a normal window with a border. I'll look into how to detect the size of the screen rather than the size of the main Mixxx window.
IMO yes, that was enough, but @esbrandt was not satisfied because of the aforementioned issues. |
nice! If cover art is scaled to fit (plus a little space around?) when opened, can be zoomed with scroll wheel and closes on click, there's no need for window decoration anymore, right? Or is this an unavoidable consequence of the new implementation? |
Good idea. I implemented that. @esbrandt, could you test this again? |
I would instead prefer zoom from mouse position, that's imho a more natural approach (like in google maps for example). |
I agree, this would be consistent with most graphics applications. |
Good idea @sblaisot. I'll work on that. |
with the mouse scroll wheel
Using the mouse wheel now zooms in to/out from the cursor position. Ready for merge? |
The scroll resizing should stop at maximum image size. Else you get white border, which will persist after shrinking again. |
The same happens if you shrink to minimum, using a non square cover. |
Admittedly this branch isn't perfect with the issue of whitespace appearing when resizing to extremes, but I think it's a good step forward and good enough for merge as is. |
Mostly agree. Resizing the My only regret with this PR is that we loose the ability to display the Spinnies WITHOUT covers. |
This PR does not remove that ability. That was removed from the Deere skin in #940. Adding it back requires changing the skin. |
@esbrandt ready for merge then? |
LGTM 👍 I like it. It really improves the usability of the full size cover art window. I can deal with the remaining open issues. After upgrading to Qt5 we need to revisit all UI elements again, so I would not spend more time on polishing every detail. Some final thoughts from the other reviewers? Unfortunately I'm using the same OS and skin as @Be-ing so my opinion might be biased ;) |
src/library/dlgcoverartfullsize.cpp
Outdated
// Scale down dialog to screen size if the pixmap is larger than the screen | ||
QSize dialogSize = m_pixmap.size(); | ||
const QSize availableScreenSpace = | ||
QApplication::desktop()->availableGeometry().size(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is too large in full screen mode. The cover art window extends below the bottom of the screen, because it will always be placed underneath the menu bar of the main window and is not able to move above it. This restriction does not apply if the application uses a regular window. @Be-ing Any ideas for an easy fix?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What window manager do you use? With KWin (X11), I have a different issue with full screen mode. In that case, the cover art window behaves as if my bottom menu bar is still showing as if I was not in full screen mode.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We seem to have different issues with different software setups and these very well could change with Qt5, so I am doubtful it is worthwhile to perfect all the edge cases right now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using availableGeometry().size() * 0.9 instead of the desktop size keeps the main window visible around the cover art popup in all directions and works much better for me. Simple but effective.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clever workaround!
The general behaviour is OK. |
I don't know why the resizeEvent triggered by setGeometry does not take care of this, but hey, this works.
Fixed. The window is centered when loading a new cover art image now. I think this PR is ready for merge. |
LGTM. Thanks for your patience, Be ;) |
Just found a bug: |
Rework the UX for showing DlgCoverArtFullSize: