LCOV - code coverage report
Current view: top level - src/Selectors - IncrementSelector.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 90.5 % 21 19
Test Date: 2026-06-06 17:44:35 Functions: 63.6 % 11 7
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include "Selector.hpp"
       4              : #include <AH/Hardware/IncrementButton.hpp>
       5              : 
       6              : BEGIN_CS_NAMESPACE
       7              : 
       8              : template <setting_t N, class Callback = EmptySelectorCallback>
       9              : class GenericIncrementSelector : public GenericSelector<N, Callback> {
      10              :     using Parent = GenericSelector<N, Callback>;
      11              : 
      12              :   public:
      13            3 :     GenericIncrementSelector(Selectable<N> &selectable,
      14              :                              const Callback &callback,
      15              :                              const AH::IncrementButton &button)
      16            3 :         : GenericSelector<N, Callback> {selectable, callback}, button(button) {}
      17              : 
      18            1 :     void begin() override {
      19            1 :         Parent::begin();
      20            1 :         button.begin();
      21            1 :     }
      22              : 
      23            6 :     void update() override {
      24            6 :         Parent::update();
      25            6 :         switch (button.update()) {
      26            1 :             case AH::IncrementButton::Nothing: break;
      27            3 :             case AH::IncrementButton::IncrementShort: // fallthrough
      28              :             case AH::IncrementButton::IncrementLong:  // fallthrough
      29              :             case AH::IncrementButton::IncrementHold:
      30            3 :                 this->increment(Wrap::Wrap);
      31            3 :                 break;
      32            2 :             case AH::IncrementButton::ReleasedShort: break;
      33            0 :             case AH::IncrementButton::ReleasedLong: break;
      34            0 :             default: break;
      35              :         }
      36            6 :     }
      37              : 
      38              :     AH::IncrementButton::State getButtonState() const {
      39              :         return button.getState();
      40              :     }
      41              : 
      42              :     /// @see @ref AH::Button::invert()
      43              :     void invert() { button.invert(); }
      44              : 
      45              :   private:
      46              :     AH::IncrementButton button;
      47              : };
      48              : 
      49              : // -------------------------------------------------------------------------- //
      50              : 
      51              : /**
      52              :  * @brief   Selector with one button that increments the selection.
      53              :  * 
      54              :  * @htmlonly 
      55              :  * <object type="image/svg+xml" data="../../selector-increment-LED.svg"></object>
      56              :  * @endhtmlonly
      57              :  * 
      58              :  * @ingroup Selectors 
      59              :  * 
      60              :  * @tparam  N 
      61              :  *          The number of settings.
      62              :  */
      63              : template <setting_t N>
      64              : class IncrementSelector : virtual public GenericIncrementSelector<N> {
      65              :   public:
      66            1 :     IncrementSelector(Selectable<N> &selectable,
      67              :                       const AH::IncrementButton &button)
      68            1 :         : GenericIncrementSelector<N> {selectable, {}, button} {}
      69              : 
      70            1 :     IncrementSelector(Selectable<N> &selectable, const AH::Button &button)
      71            1 :         : GenericIncrementSelector<N> {selectable, {}, button} {}
      72              : };
      73              : 
      74              : END_CS_NAMESPACE
        

Generated by: LCOV version 2.4-beta