63 lines
No EOL
1.5 KiB
C++
63 lines
No EOL
1.5 KiB
C++
#pragma once
|
|
|
|
#include "SimpleWidgets.hpp"
|
|
#include "FloatingLayout.hpp"
|
|
|
|
namespace tp {
|
|
class FloatingWidget : public Widget {
|
|
public:
|
|
FloatingWidget() : Widget() {
|
|
setDebug("float", { 0.0, 0.9, 0.1, 1 });
|
|
setLayout(new FloatingLayout(this));
|
|
}
|
|
|
|
void process(const EventHandler& events) override;
|
|
|
|
void draw(Canvas& canvas) override;
|
|
|
|
|
|
[[nodiscard]] bool needsNextFrame() const override;
|
|
|
|
[[nodiscard]] bool propagateEventsToChildren() const override;
|
|
[[nodiscard]] bool processesEvents() const override { return true; }
|
|
|
|
[[nodiscard]] bool isFloating() const;
|
|
|
|
private:
|
|
FloatingLayout* layout();
|
|
[[nodiscard]] const FloatingLayout* layout() const;
|
|
};
|
|
|
|
class FloatingMenu : public FloatingWidget {
|
|
public:
|
|
FloatingMenu() : FloatingWidget() {
|
|
setDebug("float menu", { 0.0, 0.9, 0.1, 0.7 });
|
|
|
|
// addChild(&mMenuLayout);
|
|
|
|
addChild(&mHeader);
|
|
addChild(&mBodyLayout);
|
|
|
|
mHeader.setText("Menu");
|
|
|
|
mHeader.setSizePolicy(SizePolicy::Expanding, SizePolicy::Minimal);
|
|
mBodyLayout.setSizePolicy(SizePolicy::Expanding, SizePolicy::Expanding);
|
|
|
|
// getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
|
// mBodyLayout.getLayout()->setLayoutPolicy(LayoutPolicy::Vertical);
|
|
}
|
|
|
|
public:
|
|
void addToMenu(Widget* widget) {
|
|
widget->setSizePolicy(SizePolicy::Expanding, SizePolicy::Minimal);
|
|
mBodyLayout.addChild(widget);
|
|
}
|
|
|
|
private:
|
|
// VerticalLayout mMenuLayout;
|
|
Widget mBodyLayout;
|
|
LabelWidget mHeader;
|
|
|
|
// ButtonWidget mTestButton;
|
|
};
|
|
} |