Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/windowing/StarStackWidget.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/windowing/StarStackWidget.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/windowing/StarStackWidget.cpp')
-rw-r--r--source/windowing/StarStackWidget.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/source/windowing/StarStackWidget.cpp b/source/windowing/StarStackWidget.cpp
new file mode 100644
index 0000000..9ece57e
--- /dev/null
+++ b/source/windowing/StarStackWidget.cpp
@@ -0,0 +1,35 @@
+#include "StarStackWidget.hpp"
+
+namespace Star {
+
+void StackWidget::showPage(size_t page) {
+ if (m_shownPage)
+ m_shownPage->hide();
+ m_shownPage = m_members[page];
+ m_page = makeLeft(page);
+ if (m_shownPage)
+ m_shownPage->show();
+}
+
+void StackWidget::showPage(String const& name) {
+ if (m_shownPage)
+ m_shownPage->hide();
+ m_shownPage = m_memberHash.get(name);
+ m_page = makeRight(name);
+ if (m_shownPage)
+ m_shownPage->show();
+}
+
+Either<size_t, String> StackWidget::currentPage() const {
+ return m_page;
+}
+
+void StackWidget::addChild(String const& name, WidgetPtr member) {
+ Widget::addChild(name, member);
+ if (m_members.size() != 1)
+ member->hide();
+ else
+ showPage(0);
+}
+
+}