}
static void on_app_terminate(void *priv)
-{
-}
+{}
static void on_app_pause(void *priv)
{
+ if (Singleton<AppContext>::instance().empty())
+ return;
+
auto p = Singleton<AppContext>::instance().back();
if (p)
p->onAppPause();
static void on_app_resume(void *priv)
{
+ if (Singleton<AppContext>::instance().empty())
+ return;
+
auto p = Singleton<AppContext>::instance().back();
if (p)
p->onAppResume();
{
navContext_.popView();
presentersStack_.pop_back();
+
+ if (presentersStack_.empty())
+ ui_app_exit();
}
Presenter *AppContext::back()
{
return presentersStack_.back().get();
}
+
+bool AppContext::empty()
+{
+ return presentersStack_.empty();
+}
void push(std::unique_ptr<Presenter> presenter);
void pop();
Presenter *back();
+ bool empty();
// TODO: should be private
UniversalSwitchDbusConfig config;
: parent_(parent)
{}
+Widget::~Widget()
+{
+ for (auto &it : smartCallbacks_) {
+ evas_object_smart_callback_del(getObject(), it.first.c_str(), smartCallbackMethod);
+ }
+}
+
void Widget::setText(const TranslatedString &text)
{
elm_object_text_set(uniqueObj_.get(), text.c_str());
{
auto cbData = std::make_unique<WidgetCallback::Data<Widget, std::string>>(this, eventName);
auto dataPtr = cbData.get();
- smartCallbacks_.insert_or_assign(
- eventName, WidgetCallback::Value<Widget, std::string>{std::move(callback), std::move(cbData)});
+ smartCallbacks_.insert_or_assign(eventName, WidgetCallback::Value<Widget, std::string>{std::move(callback), std::move(cbData)});
evas_object_smart_callback_add(getObject(), eventName.c_str(), smartCallbackMethod, dataPtr);
}
public:
Widget(const Widget &) = delete;
Widget(Widget &&) = delete;
- virtual ~Widget() = default;
+ virtual ~Widget();
template <typename T, typename... Args>
static T *make(Widget *parent, Args &&... args)