#include "Slider.hpp"
#include "Layout.hpp"
#include "Button.hpp"
+#include "Box.hpp"
+#include "Genlist.hpp"
#include <vconf.h>
#include <vconf-internal-keys.h>
Eina_Bool status = EINA_FALSE;
};
- VConfCheckData vConfCheckData[] = {
+ std::vector<VConfCheckData> vConfCheckData = {
{ "IDS_ST_HEADER_TIME", VCONFKEY_SETAPPL_ACCESSIBILITY_TTS_INDICATOR_INFORMATION_TIME },
{ "IDS_ST_BODY_DATE", VCONFKEY_SETAPPL_ACCESSIBILITY_TTS_INDICATOR_INFORMATION_DATE },
{ "IDS_ST_BODY_BATTERY", VCONFKEY_SETAPPL_ACCESSIBILITY_TTS_INDICATOR_INFORMATION_BATTERY },
Elm_Object_Item *item = (Elm_Object_Item *)event_info;
auto self = static_cast<ScreenReaderSettingsPage *>(data);
- Evas_Object *box;
- Evas_Object *genlist;
- GenGroupItemData *screenreader_checkbox = NULL;
- int i;
- int size = utils::lenOf(vConfCheckData);
-
elm_genlist_item_selected_set(item, EINA_FALSE);
- self->popup_ = Widget::make<Popup>(self->context_->md.getWindow());
- self->popup_->setAlignment(ELM_NOTIFY_ALIGN_FILL, 1.0);
-
- /* eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK,
- * eext_popup_back_cb, NULL); */
+ auto window = self->context_->md.getWindow();
+ self->popup_ = Widget::make<Popup>(window);
+ self->popup_->setAlignment(ELM_NOTIFY_ALIGN_FILL, 1.0);
self->popup_->setPartText("title,text", "IDS_ACCS_TMBODY_STATUS_BAR_INFORMATION");
self->popup_->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- /* box */
- box = elm_box_add(self->popup_->getObject());
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
+ auto removeCb = [p = self->popup_, window]() {
+ window->removeChild(p);
+ };
+ self->popup_->setEextEventCallback(EEXT_CALLBACK_BACK, removeCb);
+
+ auto box = Widget::make<Box>(self->popup_);
+ box->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- /* genlist */
- genlist = elm_genlist_add(box);
- evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL,
- EVAS_HINT_FILL);
+ auto genlist = Widget::make<Genlist>(box);
+ genlist->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ genlist->setAlignHint(EVAS_HINT_FILL, EVAS_HINT_FILL);
- for (i = 0; i < size; ++i) {
+ for (auto i = 0u; i < vConfCheckData.size(); ++i) {
auto status = vconfValueGet(vConfCheckData[i].vconf_key.c_str());
- screenreader_checkbox = createGendialGroupItem(
- genlist, &itc_1text_1icon,
+ auto screenreader_checkbox = createGendialGroupItem(
+ genlist->getObject(), &itc_1text_1icon,
onListItemClicked, self->context_,
SwallowType::ICON_RADIO, status,
vConfCheckData[i].label,
items.push_back(screenreader_checkbox);
}
- elm_scroller_movement_block_set(genlist,
- Elm_Scroller_Movement_Block(ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL | ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL));
- elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF,
- ELM_SCROLLER_POLICY_OFF);
-
- evas_object_show(genlist);
- elm_box_pack_end(box, genlist);
- evas_object_size_hint_min_set(box, -1,
- ELM_SCALE_SIZE(POPUP_CONTENT_BASE_SIZE) * size);
- evas_object_size_hint_max_set(box, -1,
- ELM_SCALE_SIZE(POPUP_CONTENT_BASE_SIZE) * size);
- elm_object_content_set(self->popup_->getObject(), box);
-
- Evas_Object *btnCancel = WidgetFactory::createButton(self->popup_->getObject(), "IDS_MSG_ACBUTTON_CANCEL_ABB", {}, onCancelButtonClicked, self);
- elm_object_style_set(btnCancel, "popup");
- elm_object_part_content_set(self->popup_->getObject(), _("button1"), btnCancel);
- evas_object_data_set(self->popup_->getObject(), "button1", "IDS_MSG_ACBUTTON_CANCEL_ABB");
-
- Evas_Object *btnDone = WidgetFactory::createButton(self->popup_->getObject(), "IDS_MSG_ACBUTTON_DONE_ABB", {}, onDoneButtonClicked, self);
- elm_object_style_set(btnDone, "popup");
- elm_object_part_content_set(self->popup_->getObject(), _("button2"), btnDone);
- evas_object_data_set(self->popup_->getObject(), "button2", "IDS_MSG_ACBUTTON_DONE_ABB");
-
- auto removeCb = [p = self->popup_, window = self->context_->md.getWindow()]() {
- window->removeChild(p);
+ genlist->blockScrolling(Elm_Scroller_Movement_Block(ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL | ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL));
+ genlist->setScrollbarsVisibility(ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ genlist->show();
+
+ box->packEnd(genlist);
+
+ box->setMinSizeHint(-1, ELM_SCALE_SIZE(POPUP_CONTENT_BASE_SIZE) * vConfCheckData.size());
+ box->setMaxSizeHint(-1, ELM_SCALE_SIZE(POPUP_CONTENT_BASE_SIZE) * vConfCheckData.size());
+ self->popup_->setContent(box);
+
+ auto btnCancel = Widget::make<Button>(self->popup_);
+ btnCancel->setStyle("popup");
+ btnCancel->setText("IDS_MSG_ACBUTTON_CANCEL_ABB");
+ btnCancel->setEvasSmartCallback("clicked", removeCb);
+ self->popup_->setPartContent("button1", btnCancel);
+
+ auto onDone = [removeCb]() {
+ removeCb();
+
+ for (auto vConfData : vConfCheckData) {
+ auto status = vConfData.status;
+ auto key = vConfData.vconf_key;
+ if (int ret = vconf_set_bool(key.c_str(), status))
+ LOGE("Failed to set vconf key %s. Error: %d", key.c_str(), ret);
+ }
};
- self->popup_->setEextEventCallback(EEXT_CALLBACK_BACK, removeCb);
+ auto btnDone = Widget::make<Button>(self->popup_);
+ btnDone->setStyle("popup");
+ btnDone->setText("IDS_MSG_ACBUTTON_DONE_ABB");
+ btnDone->setEvasSmartCallback("clicked", onDone);
+ self->popup_->setPartContent("button2", btnDone);
+
self->popup_->show();
}
LOGE("Check changed: %s; status: %d, %p", item_data->keyStr.c_str(), item_data->chk_status, &item_data->chk_status);
}
-void ScreenReaderSettingsPage::onDoneButtonClicked(void *data, Evas_Object *obj, void *event_info)
-{
- auto self = static_cast<ScreenReaderSettingsPage *>(data);
- auto p = self->popup_->getParent();
- p->removeChild(self->popup_);
-
- foreachVconfKeyCheckSet();
-}
-
-void ScreenReaderSettingsPage::onCancelButtonClicked(void *data, Evas_Object *obj, void *event_info)
-{
- auto self = static_cast<ScreenReaderSettingsPage *>(data);
- auto p = self->popup_->getParent();
- p->removeChild(self->popup_);
-}
-
-void ScreenReaderSettingsPage::foreachVconfKeyCheckSet()
-{
- for (auto i = 0u; i < utils::lenOf(vConfCheckData); ++i) {
- auto status = vConfCheckData[i].status;
- vconfKeyValueSet(vConfCheckData[i].vconf_key.c_str(), status);
- }
-}
-
-void ScreenReaderSettingsPage::vconfKeyValueSet(const char *key, int value)
-{
- retm_if(!key, "key == NULL");
-
- int ret = vconf_set_bool(key, value);
-
- if (ret != 0) {
- LOGE("Failed to set vconf key %s. Error: %d", key, ret);
- return;
- }
-}
-
Eina_Bool ScreenReaderSettingsPage::vconfValueGet(const char *key)
{
retvm_if(!key, EINA_FALSE, "Key is NULL");