#include "setting-accessibility.h"
#include "WidgetFactory.hpp"
+#include "Layout.hpp"
#include <app.h>
AccessoriesSwitchesPage::AccessoriesSwitchesPage(SettingAccessibility *ad)
: context_(ad)
{
- Evas_Object *layout = createLayout(context_->md.getNaviframe()->getObject(), EDJ_ACCESSORY, GRP_ACCESSORY);
-
+ auto layout = createLayout(context_->md.getNaviframe(), EDJ_ACCESSORY, GRP_ACCESSORY);
+ layout->setText(PRT_ACCESSORY_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_DESC");
context_->us_configuration.switch_id = {};
- elm_layout_text_set(layout, PRT_ACCESSORY_LABEL, _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_DESC"));
- Elm_Object_Item *navi_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_TITLE"), NULL, NULL, layout, NULL);
+ Elm_Object_Item *navi_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_TITLE"), NULL, NULL, layout->getObject(), NULL);
elm_naviframe_item_pop_cb_set(navi_it, naviframPopCb, context_);
elm_object_item_domain_text_translatable_set(navi_it, PACKAGE, EINA_TRUE);
return entry;
}
-Evas_Object *AccessoriesSwitchesPage::createLayout(Evas_Object *parent, const char *edj_file, const char *group)
+Layout *AccessoriesSwitchesPage::createLayout(Widget *parent, const std::string &edj_file, const std::string &group)
{
- Evas_Object *layout;
- char *res_path;
- retvm_if(parent == NULL, NULL, "Input parameter is NULL");
-
- res_path = app_get_resource_path();
+ char *res_path = app_get_resource_path();
std::string edj_path;
- if (res_path && edj_file) {
- edj_path = std::string{res_path} + std::string{edj_file};
+ if (res_path) {
+ edj_path = std::string{res_path} + edj_file;
free(res_path);
}
-
- layout = elm_layout_add(parent);
- elm_layout_file_set(layout, edj_path.c_str(), group);
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
+ auto layout = Widget::make<Layout>(parent);
+ layout->setFile(edj_path, group);
+ layout->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ layout->show();
return layout;
popupResponseCb,
std::vector<std::string> {"IDS_ACCS_UNIVERSAL_SWITCH_CANCEL", "IDS_ACCS_UNIVERSAL_SWITCH_SAVE"});
- Evas_Object *layout = createLayout(self->settingPopup_->getObject(), EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
+ auto layout = self->createLayout(self->settingPopup_->getObject(), EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
+
+ self->entry = createEntry(layout->getObject(), PRT_ACCESSORY_POPUP_ENTRY);
- self->entry = createEntry(layout, PRT_ACCESSORY_POPUP_ENTRY);
elm_object_part_text_set(self->entry, "guide", _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH_NAME"));
- elm_object_content_set(self->settingPopup_->getObject(), layout);
+ self->settingPopup_->getObject()->setContent(layout);
}
void AccessoriesSwitchesPage::alreadyMappedSwitchPopup()
okResponseCb,
std::vector<std::string> {"IDS_ACCS_UNIVERSAL_SWITCH_OK"});
- Evas_Object *layout = createLayout(settingPopup_->getObject(), EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
-
- elm_object_part_text_set(layout, PRT_ACCESSORY_POPUP_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_ALREADY_ADDED");
- elm_object_content_set(settingPopup_->getObject(), layout);
+ auto layout = createLayout(settingPopup_->getObject(), EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
+ layout->setPartText(PRT_ACCESSORY_POPUP_LABEL,"IDS_ACCS_UNIVERSAL_SWITCH_ALREADY_ADDED");
+ settingPopup_->getObject()->setContent(layout);
}
void AccessoriesSwitchesPage::okResponseCb(void *data, Evas_Object *obj, void *event_info)
private:
static Evas_Object *createEntry(Evas_Object *parent, const char *part_name);
- static Evas_Object *createLayout(Evas_Object *parent, const char *edj_file, const char *group);
+ Layout *createLayout(Widget *parent, const std::string &edj_file, const std::string &group);
static void captureSwitchCb(void *user_data, const char *switch_id);
void alreadyMappedSwitchPopup(); //TODO rename
static void okResponseCb(void *data, Evas_Object *obj, void *event_info);
#include "Layout.hpp"
+#include "setting-debug.h"
Layout::Layout(Widget *parent)
: Widget(parent)
{
elm_layout_theme_set(uniqueObj_.get(), klass.c_str(), group.c_str(), style.c_str());
}
+
+void Layout::setText(const std::string &part, const TranslatedString &text)
+{
+ if(elm_layout_text_set(uniqueObj_.get(), part.c_str(), text.c_str()) == EINA_FALSE)
+ SETTING_TRACE("Failed to set text: %s", text.c_str());
+}
#include "Widget.hpp"
-class Layout : public Widget, public std::enable_shared_from_this<Layout>
+class Layout : public Widget
{
public:
Layout(Widget *parent);
void setFile(const std::string &edjeFile, const std::string &group);
void setTheme(const std::string &klass, const std::string &group, const std::string &style);
-
+ void setText(const std::string &part, const TranslatedString &text);
};
#endif
if (!genlist)
SETTING_TRACE_ERROR("No genlist");
- elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+ elm_object_part_content_set(layout_->getObject(), "elm.swallow.content", genlist);
evas_object_show(genlist);
}
conformant->emitSignal("elm,state,virtualkeypad,enable");
conformant->emitSignal("elm,state,clipboard,enable");
- /* LAYOUT */
- layout = elm_layout_add(naviframe_->getObject());
- setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
- elm_layout_theme_set(layout, "layout", "application", "default");
+ layout_ = Widget::make<Layout>(naviframe_);
+ layout_->setTheme("layout", "application", "default");
- naviframe_it = elm_naviframe_item_push(naviframe_->getObject(), name.c_str(), NULL, NULL, layout, NULL);
+ naviframe_->pushBack(name, layout_, {}, {});
+ naviframe_it = naviframe_->top();
naviframe_->show();
- evas_object_show(layout);
+ layout_->show();
return SETTING_RETURN_SUCCESS;
}
void MainData::prepareViewList()
{
- auto gl = elm_genlist_add(layout);
+ auto gl = elm_genlist_add(layout_->getObject());
retm_if(gl == NULL, "Cannot set genlist object as content of layout");
/* resolve abnormal height issue */
#include "Window.hpp"
#include "Conformant.hpp"
#include "Naviframe.hpp"
+#include "Layout.hpp"
#include <Elementary.h>
static void onAllGenlistRealizedCb(void *data, Evas_Object *obj, void *event_info);
static void softkeyBackClickCb(void *data, Evas_Object *obj, void *event_inf);
- Evas *evas;
+ Evas *evas = nullptr;
std::unique_ptr<Window> window;
- Naviframe *naviframe_;
- Evas_Object *layout;
- Evas_Object *genlist;
+ Naviframe *naviframe_ = nullptr;
+ Layout *layout_ = nullptr;
+ Evas_Object *genlist = nullptr;
};
#endif
#include "SetValueLayout.hpp"
-Evas_Object *SetValueLayout::getLayout() const
+Layout *SetValueLayout::getLayout() const
{
return layout;
}
-void SetValueLayout::setLayout(Evas_Object *layout)
+void SetValueLayout::setLayout(Layout *layout)
{
this->layout = layout;
}
#define SET_VALUE_LAYOUT_HPP
#include <Elementary.h>
+#include "Layout.hpp"
#include <vector>
#include <string>
{
public:
SetValueLayout() = default;
- Evas_Object *getLayout() const;
- void setLayout(Evas_Object *layout);
+ Layout *getLayout() const;
+ void setLayout(Layout *layout);
Evas_Object *getScroller() const;
void setScroller(Evas_Object *scroller);
Evas_Object *getBox() const;
void *list_item_options_request_cb_data = nullptr;
private:
- Evas_Object *layout = nullptr;
+ Layout *layout = nullptr;
Evas_Object *scroller = nullptr;
Evas_Object *box = nullptr;
Evas_Object *check = nullptr;
layout_grp = GRP_SET_VALUE_NUMERIC;
SETTING_TRACE_DEBUG("Unrecognized layout type!");
}
-
- ad->set_value_layout.setLayout(createLayout(ad->md.getNaviframe()->getObject(), layout_grp));
-
+ ad->set_value_layout.setLayout(createLayout(ad->md.getNaviframe(), layout_grp));
switch (type) {
case ValueEditorType::NUMERIC:
- ad->set_value_layout.setScroller(createScroller(ad->set_value_layout.getLayout()));
+ ad->set_value_layout.setScroller(createScroller(ad->set_value_layout.getLayout()->getObject()));
ad->set_value_layout.setBox(createBox(ad->set_value_layout.getScroller()));
evas_object_smart_callback_add(ad->set_value_layout.getScroller(), "scroll,page,changed", scrollerScrollCb, (void *)ad);
break;
case ValueEditorType::NUMERIC_SWITCH:
- ad->set_value_layout.setScroller(createScroller(ad->set_value_layout.getLayout()));
+ ad->set_value_layout.setScroller(createScroller(ad->set_value_layout.getLayout()->getObject()));
ad->set_value_layout.setBox(createBox(ad->set_value_layout.getScroller()));
- ad->set_value_layout.setCheck(createCheck(ad->set_value_layout.getLayout(), EINA_FALSE, checkStateChangedCb, ad));
+ ad->set_value_layout.setCheck(createCheck(ad->set_value_layout.getLayout()->getObject(), EINA_FALSE, checkStateChangedCb, ad));
evas_object_smart_callback_add(ad->set_value_layout.getScroller(), "scroll,page,changed", scrollerScrollCb, (void *)ad);
break;
case ValueEditorType::RADIOS:
ad->set_value_layout.radio_item_change_cb = NULL;
- ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout(), NULL));
+ ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout()->getObject(), NULL));
break;
case ValueEditorType::SWITCHES:
- ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout(), NULL));
+ ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout()->getObject(), NULL));
break;
case ValueEditorType::LIST_SWITCH:
- ad->set_value_layout.setCheck(createCheck(ad->set_value_layout.getLayout(), EINA_FALSE, checkStateChangedCb, ad));
- ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout(), _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_OPTIONS")));
+ ad->set_value_layout.setCheck(createCheck(ad->set_value_layout.getLayout()->getObject(), EINA_FALSE, checkStateChangedCb, ad));
+ ad->set_value_layout.setGenlist(createGenlist(ad->set_value_layout.getLayout()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_OPTIONS")));
break;
default:
LOGE("Wrong value type");
}
- Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.getNaviframe()->getObject(), title, NULL, NULL, ad->set_value_layout.getLayout(), NULL);
+ Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.getNaviframe()->getObject(), title, NULL, NULL, ad->set_value_layout.getLayout()->getObject(), NULL);
elm_naviframe_item_pop_cb_set(navi_it, naviframePopCb, ad);
elm_object_item_domain_text_translatable_set(navi_it, PACKAGE, EINA_TRUE);
{
retm_if(ad == NULL, "Input parameter is NULL");
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_DESC, description);
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_DESC, description);
}
void SetValuePage::setRange(SettingAccessibility *ad, double min, double max, double step)
out << std::fixed << "Accepted range: " << min << " to " << max; //TODO translation
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_RANGE, out.str().c_str());
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_RANGE, out.str());
}
void SetValuePage::setValue(SettingAccessibility *ad, double value, const char *units)
elm_check_state_set(ad->set_value_layout.getCheck(), (Eina_Bool)state);
if (state)
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_SWITCH_LABEL, _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON"));
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_SWITCH_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON");
else
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_SWITCH_LABEL, _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"));
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_SWITCH_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF");
}
void SetValuePage::addRadioItem(SettingAccessibility *ad, const std::string &caption, int id, bool selected)
return scroller;
}
-Evas_Object *SetValuePage::createLayout(Evas_Object *parent, const char *layout_grp)
+Layout *SetValuePage::createLayout(Widget *parent, const std::string &layout_grp)
{
- Evas_Object *layout;
- retvm_if(parent == NULL || layout_grp == NULL, NULL, "Input parameter is NULL");
-
char *res_path = app_get_resource_path();
std::string edj_path;
if (res_path) {
edj_path = std::string{res_path} + std::string{EDJ_SET_VALUE};
free(res_path);
}
-
- layout = elm_layout_add(parent);
- elm_layout_file_set(layout, edj_path.c_str(), layout_grp);
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
-
+ auto layout = Widget::make<Layout>(parent);
+ layout->setFile(edj_path, layout_grp);
+ layout->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ layout->show();
return layout;
}
out << std::fixed << value << " " << ad->set_value_layout.getUnits(); //TODO translation
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_VALUE, out.str().c_str());
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_VALUE, out.str());
}
void SetValuePage::listItemClickCb(void *data, Evas_Object *obj, void *event_info)
state = elm_check_state_get(obj);
if (state)
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_SWITCH_LABEL, _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON"));
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_SWITCH_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_ON");
else
- elm_object_part_text_set(ad->set_value_layout.getLayout(), PRT_SET_VALUE_SWITCH_LABEL, _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF"));
+ ad->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_SWITCH_LABEL, "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_OFF");
if (ad->set_value_layout.getGenlist()) {
Elm_Object_Item *item = elm_genlist_first_item_get(ad->set_value_layout.getGenlist());
static Evas_Object *createLabel(Evas_Object *parent, const char *caption);
static Evas_Object *createBox(Evas_Object *parent);
static Evas_Object *createScroller(Evas_Object *parent);
- static Evas_Object *createLayout(Evas_Object *parent, const char *layout_grp);
+ Layout *createLayout(Widget *parent, const std::string &layout_grp);
static void displayValue(SettingAccessibility *ad, double value);
static void listItemClickCb(void *data, Evas_Object *obj, void *event_info);
static void scrollerScrollCb(void *data, Evas_Object *obj, void *event_info);
popup_->show();
}
-Evas_Object *SettingPopup::getObject() const
+Popup *SettingPopup::getObject() const
{
- return popup_->getObject();
+ return popup_;
}
SettingPopup::~SettingPopup()
const std::string &title, const std::string &text,
SettingCallback response_cb,
std::vector<std::string> buttons);
- Evas_Object *getObject() const;
+ Popup *getObject() const;
~SettingPopup();
private:
elm_toolbar_item_append(tb, NULL, _("IDS_ACCS_UNIVERSAL_SWITCH_CANCEL"), NULL, NULL);
save_object_item = elm_toolbar_item_append(tb, NULL, _("IDS_ACCS_UNIVERSAL_SWITCH_SAVE"), NULL, NULL);
- context_->set_value_layout.setLayout(createLayout(context_->md.getNaviframe()->getObject(), GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH));
- entry_ = elm_entry_add(context_->set_value_layout.getLayout());
+ context_->set_value_layout.setLayout(createLayout(context_->md.getNaviframe(), GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH));
+
+ entry_ = elm_entry_add(context_->set_value_layout.getLayout()->getObject());
elm_entry_entry_set(entry_, config_item_to_update_.user_name.c_str());
elm_entry_cursor_end_set(entry_);
evas_object_show(entry_);
- elm_object_part_content_set(context_->set_value_layout.getLayout(), PRT_SET_VALUE_ENTRY, entry_);
+ elm_object_part_content_set(context_->set_value_layout.getLayout()->getObject(), PRT_SET_VALUE_ENTRY, entry_);
- elm_object_part_text_set(context_->set_value_layout.getLayout(), PRT_SET_VALUE_DESC, _("IDS_ACCS_UNIVERSAL_SWITCH_NAME"));
+ context_->set_value_layout.getLayout()->setPartText(PRT_SET_VALUE_DESC, "IDS_ACCS_UNIVERSAL_SWITCH_NAME");
- update_accessories_action_genlist_ = createGenlist(context_->set_value_layout.getLayout(), NULL);
+ update_accessories_action_genlist_ = createGenlist(context_->set_value_layout.getLayout()->getObject(), NULL);
createGendialGroupItem(update_accessories_action_genlist_, &itc_1text,
updateSwitchAction, this,
SwallowType::INVALID, 0,
setting_accessibility_universal_switch_dbus_config_get_activity_name(&context_->config, config_item_to_update_.activity_type),
NULL);
- nf_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), "", NULL, NULL, context_->set_value_layout.getLayout(), "tabbar/notitle");
+ nf_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), "", NULL, NULL, context_->set_value_layout.getLayout()->getObject(), "tabbar/notitle");
elm_object_item_domain_text_translatable_set(nf_it, PACKAGE, EINA_TRUE);
elm_object_item_part_content_set(nf_it, "tabbar", tb);
}
elm_naviframe_item_pop(self->context_->md.getNaviframe()->getObject());
}
-Evas_Object *UpdateSwitchPage::createLayout(Evas_Object *parent, const char *layout_grp)
+Layout *UpdateSwitchPage::createLayout(Widget *parent, const std::string &layout_grp)
{
- Evas_Object *layout;
- retvm_if(parent == NULL || layout_grp == NULL, NULL, "Input parameter is NULL");
-
char *res_path = app_get_resource_path();
std::string edj_path;
if (res_path) {
free(res_path);
}
- layout = elm_layout_add(parent);
- elm_layout_file_set(layout, edj_path.c_str(), layout_grp);
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(layout);
-
+ auto layout = Widget::make<Layout>(parent);
+ layout->setFile(edj_path, layout_grp);
+ layout->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ layout->show();
return layout;
}
#include "SettingAccessibility.hpp"
#include "ActionPage.hpp"
+#include "Layout.hpp"
/**
* View allowing to edit existing mapping between switches and activities
static void onActionUpdate(SettingAccessibility *ad, const std::string &action, void *user_data);
void createUpdateAccessoriesSwitchPage();
static void closeUpdateAccessoriesSwitchPage(void *data, Evas_Object *obj, void *event_info);
- Evas_Object *createLayout(Evas_Object *parent, const char *layout_grp);
+ Layout *createLayout(Widget *parent, const std::string &layout_grp);
Evas_Object *createGenlist(Evas_Object *parent, const char *title);
static void updateSwitchAction(void *data, Evas_Object *obj, void *event_info);
static void updateSwitchChooseAction(SettingAccessibility *ad, const std::string &action, void *user_data);