| 648 | } |
| 649 | |
| 650 | void setLedEffectSpeedConfig() { |
| 651 | options.clear(); |
| 652 | |
| 653 | static auto hoverFunction = [](void *pointer, bool shouldRender) -> bool { |
| 654 | int speedToSet = *static_cast<int *>(pointer); |
| 655 | previewLedEffectSpeed = speedToSet + 1; |
| 656 | return false; |
| 657 | }; |
| 658 | |
| 659 | #ifdef HAS_ENCODER_LED |
| 660 | static int speedStorage[11]; |
| 661 | #else |
| 662 | static int speedStorage[10]; |
| 663 | #endif |
| 664 | int i = 0; |
| 665 | while (i < 10) { |
| 666 | speedStorage[i] = i; |
| 667 | |
| 668 | String label = String(i + 1); |
| 669 | bool isSelected = (bruceConfig.ledEffectSpeed == i + 1); |
| 670 | |
| 671 | options.emplace_back( |
| 672 | label, |
| 673 | [i]() { bruceConfig.setLedEffectSpeed(i + 1); }, |
| 674 | (bruceConfig.ledEffectSpeed == i + 1), |
| 675 | hoverFunction, |
| 676 | &speedStorage[i] |
| 677 | ); |
| 678 | ++i; |
| 679 | } |
| 680 | |
| 681 | #ifdef HAS_ENCODER_LED |
| 682 | speedStorage[10] = 11; |
| 683 | options.emplace_back( |
| 684 | "Sync To Encoder", |
| 685 | []() { bruceConfig.setLedEffectSpeed(11); }, |
| 686 | (bruceConfig.ledEffectSpeed == 11), |
| 687 | hoverFunction, |
| 688 | &speedStorage[10] |
| 689 | ); |
| 690 | #endif |
| 691 | |
| 692 | addOptionToMainMenu(); |
| 693 | |
| 694 | int selectedOption = loopOptions(options, bruceConfig.ledEffectSpeed - 1); |
| 695 | if (selectedOption == -1 || selectedOption == options.size() - 1) { |
| 696 | previewLedEffectSpeed = bruceConfig.ledEffectSpeed; |
| 697 | return; |
| 698 | } |
| 699 | } |
| 700 | |
| 701 | void setLedEffectDirectionConfig() { |
| 702 | options = { |
nothing calls this directly
no test coverage detected