LCXL: split track focus button and led code
authorJan Lentfer <jan.lentfer@web.de>
Wed, 15 Aug 2018 20:19:13 +0000 (22:19 +0200)
committerRobin Gareus <robin@gareus.org>
Sat, 18 Aug 2018 16:12:18 +0000 (18:12 +0200)
libs/surfaces/launch_control_xl/controllers.cc
libs/surfaces/launch_control_xl/launch_control_xl.cc
libs/surfaces/launch_control_xl/launch_control_xl.h

index 95345a64e079ade47f674fbab76ecc5b269a4f31..987d84981a38ae24483cf5ee2d2734cd1b3c7ded 100644 (file)
@@ -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<AutomationControl>
 LaunchControlXL::get_ac_by_state(uint8_t n) {
                boost::shared_ptr<AutomationControl> ac;
index aeeae77ce8c6cb4864ccf4015b020036dc3bd53c..87a2033c5f89db518757236815d9cb28596bbdb8 100644 (file)
@@ -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());
        }
 }
index 3b645f23757333ee2460da0385e255b3f0a7f07e..dac2739f15cba04766a4c65fd287a3efd7011163 100644 (file)
@@ -469,16 +469,17 @@ private:
        void button_track_control(uint8_t n);
 
        boost::shared_ptr<ARDOUR::AutomationControl> 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); }