123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
- // SPDX-License-Identifier: MIT
- #include <TestFramework.h>
- #include <UI/UIComboBox.h>
- #include <UI/UIManager.h>
- JPH_IMPLEMENT_RTTI_VIRTUAL(UIComboBox)
- {
- JPH_ADD_BASE_CLASS(UIComboBox, UIElement)
- }
- void UIComboBox::CopyTo(UIElement *ioElement) const
- {
- UIElement::CopyTo(ioElement);
- UIComboBox *element = StaticCast<UIComboBox>(ioElement);
- element->mCurrentItem = mCurrentItem;
- element->mItems = mItems;
- element->mPreviousButton = mPreviousButton;
- element->mNextButton = mNextButton;
- element->mStaticText = mStaticText;
- element->mItemChangedAction = mItemChangedAction;
- }
- bool UIComboBox::HandleUIEvent(EUIEvent inEvent, UIElement *inSender)
- {
- if (inEvent == EVENT_BUTTON_DOWN)
- {
- if (inSender == mPreviousButton)
- {
- SetItemInternal(mCurrentItem - 1);
- return true;
- }
- else if (inSender == mNextButton)
- {
- SetItemInternal(mCurrentItem + 1);
- return true;
- }
- }
- return UIElement::HandleUIEvent(inEvent, inSender);
- }
- void UIComboBox::AutoLayout()
- {
- UIElement::AutoLayout();
- // Position previous button
- mPreviousButton->SetRelativeX(0);
- mPreviousButton->SetRelativeY((GetHeight() - mPreviousButton->GetHeight()) / 2);
- // Position static text
- mStaticText->SetRelativeX((GetWidth() - mStaticText->GetWidth()) / 2);
- mStaticText->SetRelativeY((GetHeight() - mStaticText->GetHeight()) / 2);
- // Position next button
- mNextButton->SetRelativeX(GetWidth() - mNextButton->GetWidth());
- mNextButton->SetRelativeY((GetHeight() - mNextButton->GetHeight()) / 2);
- }
- void UIComboBox::SetItemInternal(int inItem)
- {
- int old_item = mCurrentItem;
- if (inItem < 0)
- mCurrentItem = 0;
- else if (inItem > int(mItems.size()) - 1)
- mCurrentItem = int(mItems.size()) - 1;
- else
- mCurrentItem = inItem;
-
- if (mCurrentItem != old_item)
- {
- if (mItemChangedAction)
- mItemChangedAction(mCurrentItem);
- UpdateStaticText();
- }
- }
- void UIComboBox::UpdateStaticText()
- {
- if (mStaticText != nullptr)
- mStaticText->SetText(mItems[mCurrentItem]);
- }
|