3 #include <mof/widget/NullView.hpp>
4 #include <mof/widget/Message.hpp>
5 #include <mof/widget/AbstractTextCompiler.hpp>
6 #include <mof/widget/Page.hpp>
7 #include <mof/widget/Pager.hpp>
8 #include <mof/widget/WidgetView.hpp>
9 #include <mof/ConsoleIO.hpp>
17 class MessageView : public WidgetView
19 std::shared_ptr<mof::widget::WidgetView> view_;
20 std::shared_ptr<mof::widget::WidgetView> old_view_;
21 mof::Vector2D region_;
22 //const mof::Vector2D& region_; なんでconstやったん?
26 MessageView(const mof::Vector2D& region)
27 : region_(region), visible_(true)
29 view_ = std::make_shared<mof::widget::NullView>();
30 view_->getPositionStream() << getPositionStream();
31 view_->getSizeStream() << getSizeStream();//TODO regionを入れる?
32 view_->getColorStream() << getColorStream();
40 FrameNumber show(bool imidiately)
43 return view_->show(imidiately);
46 FrameNumber hide(bool imidiately)
48 return view_->hide(imidiately);
51 FrameNumber focus(bool imidiately)
53 return show(imidiately);
56 FrameNumber blur(bool imidiately)
58 return hide(imidiately);
61 FrameNumber click(bool)
68 getPositionStream().update();
69 getSizeStream().update();
70 getColorStream().update();
71 if (old_view_.get()) old_view_->update();
77 if (old_view_.get()) old_view_->draw();
81 void setVisible(bool visible)
84 if (old_view_.get()) old_view_->setVisible(visible);
85 if (view_.get()) view_->setVisible(visible);
88 mof::Vector2D getPreferredSize() const
93 FrameNumber swap(std::shared_ptr<mof::widget::WidgetView> view)
97 view_->setVisible(visible_);
98 FrameNumber period = view_->show();
99 period = max(period, old_view_->hide());
101 view_->getPositionStream() << getPositionStream();
102 view_->getSizeStream() << view_->getSizeStream().value() << getSizeStream();
103 view_->getColorStream() << getColorStream();
113 std::shared_ptr<AbstractTextCompiler> pCompiler;
114 std::shared_ptr<Pager> pPager;
115 std::shared_ptr<MessageView> view_;
117 Impl(const mof::Vector2D& region, const std::shared_ptr<AbstractTextCompiler>& pCompiler)
118 : pCompiler(pCompiler), pPager(new Pager), view_(new MessageView(region))
124 Message::Message(const mof::Vector2D& region, const std::shared_ptr<AbstractTextCompiler>& pCompiler)
125 : pImpl_(new Impl(region, pCompiler))
135 mof::FrameNumber Message::show(bool imidiately)
137 //return pImpl_->pPager->show();
142 mof::FrameNumber Message::hide(bool imidiately)
144 //return pImpl_->pPager->hide();
149 const std::shared_ptr<mof::widget::WidgetView> Message::getView() const
151 return pImpl_->view_;
155 std::shared_ptr<mof::widget::WidgetView> Message::getView()
157 return pImpl_->view_;
161 void Message::update()
163 return pImpl_->view_->update();
167 void Message::addPage(const tstring& page)
169 pImpl_->pPager->addPage( *pImpl_->pCompiler->compile(page) );
173 FrameNumber Message::nextPage()
175 pImpl_->pPager->next();
176 return pImpl_->view_->swap(pImpl_->pPager->getPage().view());