mirror of
https://github.com/clangen/musikcube.git
synced 2024-10-02 13:02:35 +00:00
Added 0-5 keyboard shortcuts for rating tracks in the overlay.
This commit is contained in:
parent
46a4c97656
commit
c1320847c5
@ -101,16 +101,32 @@ void TrackOverlays::ShowRateTrackOverlay(
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto dialog = std::make_shared<ListOverlay>();
|
auto dialog = std::make_shared<ListOverlay>();
|
||||||
|
|
||||||
|
auto updateRatingInLibrary = [track, library, callback, dialog](int index) {
|
||||||
|
auto query = std::make_shared<SetTrackRatingQuery>(track->GetId(), (int) index);
|
||||||
|
library->Enqueue(query, ILibrary::QuerySynchronous);
|
||||||
|
dialog->Dismiss();
|
||||||
|
callback(true);
|
||||||
|
};
|
||||||
|
|
||||||
dialog->SetAdapter(adapter)
|
dialog->SetAdapter(adapter)
|
||||||
.SetTitle(_TSTR("track_list_rate_track_overlay_title"))
|
.SetTitle(_TSTR("track_list_rate_track_overlay_title"))
|
||||||
.SetWidth(_DIMEN("track_list_rate_track_width", kDefaultRatingOverlayWidth))
|
.SetWidth(_DIMEN("track_list_rate_track_width", kDefaultRatingOverlayWidth))
|
||||||
.SetSelectedIndex((int) currentRating)
|
.SetSelectedIndex((int) currentRating)
|
||||||
|
.SetKeyInterceptorCallback(
|
||||||
|
[updateRatingInLibrary](ListOverlay* overlay, std::string key) -> bool {
|
||||||
|
if (key == "0") { updateRatingInLibrary(0); return true; }
|
||||||
|
if (key == "1") { updateRatingInLibrary(1); return true; }
|
||||||
|
if (key == "2") { updateRatingInLibrary(2); return true; }
|
||||||
|
if (key == "3") { updateRatingInLibrary(3); return true; }
|
||||||
|
if (key == "4") { updateRatingInLibrary(4); return true; }
|
||||||
|
if (key == "5") { updateRatingInLibrary(5); return true; }
|
||||||
|
return false;
|
||||||
|
})
|
||||||
.SetItemSelectedCallback(
|
.SetItemSelectedCallback(
|
||||||
[track, library, callback]
|
[updateRatingInLibrary]
|
||||||
(ListOverlay* overlay, IScrollAdapterPtr adapter, size_t index) {
|
(ListOverlay* overlay, IScrollAdapterPtr adapter, size_t index) {
|
||||||
auto query = std::make_shared<SetTrackRatingQuery>(track->GetId(), (int) index);
|
updateRatingInLibrary((int) index);
|
||||||
library->Enqueue(query, ILibrary::QuerySynchronous);
|
|
||||||
callback(true);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
cursespp::App::Overlays().Push(dialog);
|
cursespp::App::Overlays().Push(dialog);
|
||||||
|
@ -83,6 +83,13 @@ namespace cursespp {
|
|||||||
return focus;
|
return focus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dismiss() {
|
||||||
|
if (this->stack) {
|
||||||
|
stack->Remove(this);
|
||||||
|
this->OnDismissed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void style(TextLabel& label) {
|
static void style(TextLabel& label) {
|
||||||
label.SetContentColor(Color::OverlayContent);
|
label.SetContentColor(Color::OverlayContent);
|
||||||
@ -119,13 +126,6 @@ namespace cursespp {
|
|||||||
return this->stack;
|
return this->stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dismiss() {
|
|
||||||
if (this->stack) {
|
|
||||||
stack->Remove(this);
|
|
||||||
this->OnDismissed();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void OnDismissed() {
|
virtual void OnDismissed() {
|
||||||
/* for subclass use */
|
/* for subclass use */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user