saveAction_ = addAction(std::make_unique<Action>("saveAction",
"IDS_ACCS_UNIVERSAL_SWITCH_SAVE",
[this](auto action) {
- if (!entryItem_->entryText_.value().empty()) {
- model_.updateSwitch(SwitchConfigurationItem{switchId_, entryItem_->entryText_.value(), activityId_});
- Singleton<AppContext>::instance().pop();
- }
+ model_.updateSwitch(SwitchConfigurationItem{switchId_, entryItem_->entryText_.value(), activityId_});
+ Singleton<AppContext>::instance().pop();
}));
groups_.emplace_back("");
auto &items = groups_.back().items_;
"IDS_ACCS_UNIVERSAL_SWITCH_NAME",
std::string{},
std::function<void(ListItem *)>{},
- ListItem::WidgetType::entry));
+ ListItem::WidgetType::entry,
+ std::function<void(ListItem *)>{},
+ [this](auto item) {
+ if (item->entryText_.value().empty())
+ saveAction_->enabled_ = false;
+ else
+ saveAction_->enabled_ = true;
+ }));
entryItem_ = items.back().get();
auto switchInfo = model_.getDetailsForSwitchConfigurationItem(switchId_);
#include "AccessibilitySettingLog.hpp"
+void ToolbarItem::disable(bool disable)
+{
+ elm_object_item_disabled_set(item_, disable ? EINA_TRUE : EINA_FALSE);
+}
+
+ToolbarItem::ToolbarItem(Elm_Object_Item *item)
+ : item_(item)
+{}
+
void Toolbar::createEflObject()
{
uniqueObj_.reset(elm_toolbar_add(parent_->getObject()));
elm_toolbar_transverse_expanded_set(uniqueObj_.get(), expand ? EINA_TRUE : EINA_FALSE);
}
-void Toolbar::addItem(const TranslatedString &label, std::function<void()> onClick)
+ToolbarItem Toolbar::addItem(const TranslatedString &label, std::function<void()> onClick)
{
auto cbData = std::make_unique<WidgetCallback::Data<Toolbar, int>>(this, callbacks_.size());
auto dataPtr = cbData.get();
auto val = WidgetCallback::Value<Toolbar, int>{std::move(onClick), std::move(cbData)};
callbacks_.push_back(std::move(val));
- elm_toolbar_item_append(uniqueObj_.get(), NULL, label.c_str(), callbackMethod, dataPtr);
+ auto item = elm_toolbar_item_append(uniqueObj_.get(), NULL, label.c_str(), callbackMethod, dataPtr);
+ return ToolbarItem{static_cast<Elm_Object_Item *>(item)};
}
void Toolbar::callbackMethod(void *data, Evas_Object *obj, void *event_info)
#include "Widget.hpp"
+class ToolbarItem
+{
+ friend class Toolbar;
+
+ public:
+ ToolbarItem() = default;
+ void disable(bool disable);
+
+ operator bool() const
+ {
+ return (item_ != nullptr);
+ }
+ bool operator!() const
+ {
+ return (item_ == nullptr);
+ }
+
+ private:
+ ToolbarItem(Elm_Object_Item *item);
+ Elm_Object_Item *item_ = nullptr;
+};
+
class Toolbar : public Widget
{
template <typename T, typename... Args>
void setSelectMode(Elm_Object_Select_Mode mode);
void setShrinkMode(Elm_Toolbar_Shrink_Mode mode);
void expandTransverseLength(bool expand);
- void addItem(const TranslatedString &label, std::function<void()> onClick);
+ ToolbarItem addItem(const TranslatedString &label, std::function<void()> onClick);
protected:
static void callbackMethod(void *data, Evas_Object *obj, void *event_info);
});
}
if (saveAction) {
- toolbar_->addItem(saveAction->title_.value(), [=]() {
+ auto saveItem = toolbar_->addItem(saveAction->title_.value(), [=]() {
saveAction->onInvoke_(saveAction);
});
+ saveItem.disable(!saveAction->enabled_.value());
+ saveAction->enabled_.attach([=](auto val) mutable {
+ saveItem.disable(!val);
+ });
}
if (naviframeItem_)
naviframeItem_.setPartContent("tabbar", toolbar_);