LCOV - code coverage report
Current view: top level - src/Selectors - IncrementSelector.hpp (source / functions) Hit Total Coverage
Test: 90a1b9beff85a60dc6ebcea034a947a845e56960 Lines: 25 25 100.0 %
Date: 2019-11-30 15:53:32 Functions: 14 23 60.9 %
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           4 : class GenericIncrementSelector : public GenericSelector<N, Callback> {
      10             :     using Parent = GenericSelector<N, Callback>;
      11             : 
      12             :   public:
      13           4 :     GenericIncrementSelector(Selectable<N> &selectable,
      14             :                              const Callback &callback,
      15             :                              const AH::IncrementButton &button,
      16             :                              Wrap wrap = Wrap::Wrap)
      17           8 :         : GenericSelector<N, Callback>{selectable, callback}, button{button},
      18          12 :           wrap{wrap} {}
      19             : 
      20           2 :     void begin() override {
      21           2 :         Parent::begin();
      22           2 :         button.begin();
      23           2 :     }
      24             : 
      25          12 :     void update() override {
      26          12 :         if (button.update() == AH::IncrementButton::Increment)
      27           6 :             this->increment(wrap);
      28          12 :     }
      29             : 
      30             :     AH::IncrementButton::State getButtonState() const {
      31             :         return button.getState();
      32             :     }
      33             : 
      34             : #ifdef INDIVIDUAL_BUTTON_INVERT
      35             :     void invert() { button.invert(); }
      36             : #endif
      37             : 
      38             :   private:
      39             :     AH::IncrementButton button;
      40             :     Wrap wrap;
      41             : };
      42             : 
      43             : // -------------------------------------------------------------------------- //
      44             : 
      45             : /**
      46             :  * @brief   Selector with one button that increments the selection.
      47             :  * 
      48             :  * @htmlonly 
      49             :  * <object type="image/svg+xml" data="../../selector-increment-LED.svg"></object>
      50             :  * @endhtmlonly
      51             :  * 
      52             :  * @ingroup Selectors 
      53             :  * 
      54             :  * @tparam  N 
      55             :  *          The number of settings.
      56             :  */
      57             : template <setting_t N>
      58           6 : class IncrementSelector : virtual public GenericIncrementSelector<N> {
      59             :   public:
      60           2 :     IncrementSelector(Selectable<N> &selectable,
      61             :                       const AH::IncrementButton &button, Wrap wrap = Wrap::Wrap)
      62           2 :         : GenericIncrementSelector<N>{
      63           2 :               selectable,
      64             :               {},
      65           2 :               button,
      66           2 :               wrap,
      67           4 :           } {}
      68             : 
      69           1 :     IncrementSelector(Selectable<N> &selectable, const AH::Button &button,
      70             :                       Wrap wrap = Wrap::Wrap)
      71           1 :         : GenericIncrementSelector<N>{
      72           1 :               selectable,
      73             :               {},
      74           1 :               button,
      75           1 :               wrap,
      76           2 :           } {}
      77             : };
      78             : 
      79             : END_CS_NAMESPACE

Generated by: LCOV version 1.14-5-g4ff2ed6