OMOTE/Platformio/OmoteUI/UIs/BasicRefactored/widget/BrightnessSlider.cpp
Matthew Colvin 04fd9781ed Working on making a brightness slider that can be reused easily
piping around IDS to correct places
2023-10-12 15:25:23 -05:00

33 lines
No EOL
1 KiB
C++

#include "BrightnessSlider.hpp"
#include "Label.hpp"
#include "Slider.hpp"
using namespace UI::Widget;
BrightnessSlider::BrightnessSlider(std::shared_ptr<DisplayAbstract> aDisplay): Base(ID::Widgets::BrightnessSlider),
mDisplay(aDisplay),
mSlider(AddElement<Widget::Slider>(std::make_unique<Slider>(
[this](auto aNewBrightness){
mDisplay->setBrightness(aNewBrightness);
},0,255))),
mLabel(AddElement<Widget::Label>(std::make_unique<Label>("Brightness")))
{
mLabel->AlignTo(this,LV_ALIGN_TOP_MID);
mSlider->AlignTo(mLabel,LV_ALIGN_OUT_BOTTOM_MID);
mSlider->SetWidth(GetContentWidth() - 20);
}
void BrightnessSlider::OnShow(){
mSlider->SetValue(mDisplay->getBrightness());
}
void BrightnessSlider::SetHeight(lv_coord_t aHeight){
Base::SetHeight(aHeight);
auto labelHeight = GetContentHeight() * 0.25f;
auto sliderHeight = aHeight - labelHeight;
mLabel->SetHeight(labelHeight);
mSlider->SetHeight(sliderHeight);
mLabel->AlignTo(this,LV_ALIGN_TOP_MID);
mSlider->AlignTo(mLabel,LV_ALIGN_OUT_BOTTOM_MID);
}