Unique play/pause button for multiple sources

This commit is contained in:
Bruno
2021-06-18 00:22:07 +02:00
parent c83a946cbd
commit edf0f8074a

View File

@@ -3134,11 +3134,12 @@ void SourceController::DrawButtonBar(ImVec2 bottom, float width)
// play bar is enabled if only one source selected is enabled // play bar is enabled if only one source selected is enabled
bool enabled = false; bool enabled = false;
size_t n_play = 0;
for (auto source = selection_.begin(); source != selection_.end(); ++source){ for (auto source = selection_.begin(); source != selection_.end(); ++source){
if ( (*source)->active() ) { if ( (*source)->active() )
enabled = true; enabled = true;
break; if ( (*source)->playing() )
} n_play++;
} }
// buttons style for disabled / enabled bar // buttons style for disabled / enabled bar
@@ -3160,18 +3161,22 @@ void SourceController::DrawButtonBar(ImVec2 bottom, float width)
} }
ImGui::SameLine(0, h_space_); ImGui::SameLine(0, h_space_);
// unique play / pause button for single source // unique play / pause button
if (selection_.size() == 1) { if (n_play < 1 || selection_.size() == n_play) {
Source *s = selection_.front(); if (n_play) {
if (s->playing()) { if (ImGui::Button(ICON_FA_PAUSE) && enabled) {
if (ImGui::Button(ICON_FA_PAUSE) && enabled) for (auto source = selection_.begin(); source != selection_.end(); ++source)
(s)->play(false); (*source)->play(false);
} else { }
if (ImGui::Button(ICON_FA_PLAY) && enabled) }
(s)->play(true); else {
if (ImGui::Button(ICON_FA_PLAY) && enabled){
for (auto source = selection_.begin(); source != selection_.end(); ++source)
(*source)->play(true);
}
} }
} }
// separate play & pause buttons for multiple sources (or none) // separate play & pause buttons for disagreeing sources
else { else {
if (ImGui::Button(ICON_FA_PLAY) && enabled) { if (ImGui::Button(ICON_FA_PLAY) && enabled) {
for (auto source = selection_.begin(); source != selection_.end(); ++source) for (auto source = selection_.begin(); source != selection_.end(); ++source)