From 4789147482821b9dfb3c9e32e64c3399ea9950e7 Mon Sep 17 00:00:00 2001 From: Jan Lentfer Date: Wed, 15 Aug 2018 22:19:13 +0200 Subject: LCXL: split track focus button and led code --- libs/surfaces/launch_control_xl/controllers.cc | 19 ++++++++++++++++++- libs/surfaces/launch_control_xl/launch_control_xl.cc | 5 ++--- libs/surfaces/launch_control_xl/launch_control_xl.h | 17 +++++++++-------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/libs/surfaces/launch_control_xl/controllers.cc b/libs/surfaces/launch_control_xl/controllers.cc index 95345a64e0..987d84981a 100644 --- a/libs/surfaces/launch_control_xl/controllers.cc +++ b/libs/surfaces/launch_control_xl/controllers.cc @@ -22,6 +22,7 @@ #include "ardour/mute_control.h" #include "ardour/session.h" #include "ardour/solo_control.h" +#include "ardour/solo_isolate_control.h" #include "launch_control_xl.h" @@ -280,7 +281,7 @@ LaunchControlXL::track_button_by_range(uint8_t n, uint8_t first, uint8_t middle) } void -LaunchControlXL::button_track_focus(uint8_t n) +LaunchControlXL::update_track_focus_led(uint8_t n) { TrackButton* b = focus_button_by_collumn(n); @@ -301,6 +302,22 @@ LaunchControlXL::button_track_focus(uint8_t n) write (b->state_msg()); } +void +LaunchControlXL::button_track_focus(uint8_t n) +{ + if (stripable[n]) { + if ( stripable[n]->is_selected() ) { + ControlProtocol::RemoveStripableFromSelection (stripable[n]); + } else { + ControlProtocol::AddStripableToSelection (stripable[n]); + } + } else { + return; + } +} + + + boost::shared_ptr LaunchControlXL::get_ac_by_state(uint8_t n) { boost::shared_ptr ac; diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.cc b/libs/surfaces/launch_control_xl/launch_control_xl.cc index aeeae77ce8..87a2033c5f 100644 --- a/libs/surfaces/launch_control_xl/launch_control_xl.cc +++ b/libs/surfaces/launch_control_xl/launch_control_xl.cc @@ -811,10 +811,9 @@ LaunchControlXL::stripable_property_change (PropertyChange const& what_changed, return; } if (which < 8) { - button_track_focus((uint8_t)which); + update_track_focus_led ((uint8_t) which); } } - } void @@ -875,7 +874,7 @@ LaunchControlXL::switch_bank (uint32_t base) stripable[n]->rec_enable_control()->Changed.connect (stripable_connections, MISSING_INVALIDATOR, boost::bind (&LaunchControlXL::rec_changed, this, n), lcxl); } } - button_track_focus(n); + update_track_focus_led(n); button_track_mode(track_mode()); } } diff --git a/libs/surfaces/launch_control_xl/launch_control_xl.h b/libs/surfaces/launch_control_xl/launch_control_xl.h index 3b645f2375..dac2739f15 100644 --- a/libs/surfaces/launch_control_xl/launch_control_xl.h +++ b/libs/surfaces/launch_control_xl/launch_control_xl.h @@ -469,16 +469,17 @@ private: void button_track_control(uint8_t n); boost::shared_ptr get_ac_by_state(uint8_t n); + void update_track_focus_led(uint8_t n); void update_track_control_led(uint8_t n); - void button_track_focus_1() { ControlProtocol::ToggleStripableSelection (stripable[0]); } - void button_track_focus_2() { ControlProtocol::ToggleStripableSelection (stripable[1]); } - void button_track_focus_3() { ControlProtocol::ToggleStripableSelection (stripable[2]); } - void button_track_focus_4() { ControlProtocol::ToggleStripableSelection (stripable[3]); } - void button_track_focus_5() { ControlProtocol::ToggleStripableSelection (stripable[4]); } - void button_track_focus_6() { ControlProtocol::ToggleStripableSelection (stripable[5]); } - void button_track_focus_7() { ControlProtocol::ToggleStripableSelection (stripable[6]); } - void button_track_focus_8() { ControlProtocol::ToggleStripableSelection (stripable[7]); } + void button_track_focus_1() { button_track_focus(0); } + void button_track_focus_2() { button_track_focus(1); } + void button_track_focus_3() { button_track_focus(2); } + void button_track_focus_4() { button_track_focus(3); } + void button_track_focus_5() { button_track_focus(4); } + void button_track_focus_6() { button_track_focus(5); } + void button_track_focus_7() { button_track_focus(6); } + void button_track_focus_8() { button_track_focus(7); } void button_track_control_1() { button_track_control(0); } void button_track_control_2() { button_track_control(1); } -- cgit v1.2.3