std::string getCompleteLabelOfMenu();
std::string getCompleteLabelOfMainMenu();
Optional<telephony_call_state_e> getPhoneCallState();
- bool isUIElementSlider();
- bool hasUIElementEditableTextIface();
+ bool isRealUIElementSlider();
+ bool hasRealUIElementEditableTextIface();
std::string getCompleteLabelOfButtonsKeysMenu();
int addItemsToMenu(Evas_Object *, const std::string &);
std::stack<VConfInterface::CallbackHandle> callbackHandle;
std::stack<GengridItemSelectedCbData> gengridItemsSelectedCbData;
std::shared_ptr<UIElement> realUiElement;
+ Optional<bool> realUiElementIsSlider;
+ Optional<bool> realUiElementHasEditableText;
std::unique_ptr<Evas_Object, void(*)(Evas_Object *)> popup;
std::unique_ptr<Evas_Object, void(*)(Evas_Object *)> virtualBackButton;
VConfInterface::CallbackHandle autoTapWaitingPeriodCallbackHandle;
void SelectActivity::createMenu()
{
+ ASSERT(realUiElement, "realUiElement is NULL");
popup.reset(elm_popup_add(Singleton<UniversalSwitch>::instance().getMainWindow()->getHandler()));
elm_popup_orient_set(popup.get(), ELM_POPUP_ORIENT_CENTER);
elm_theme_extension_add(NULL, UNIVERSAL_SWITCH_EDJ);
void SelectActivity::sendTapActivityChangeRequest()
{
+ ASSERT(realUiElement, "realUiElement is NULL");
timer = nullptr;
completed = true;
notify(std::make_shared<ActivityChangeRequest>("TAP", realUiElement));
if (phoneCallState && *phoneCallState == TELEPHONY_CALL_STATE_CONNECTING)
return "IDS_MENU_MAIN_INCOMING_CALL";
- if (isUIElementSlider())
+ if (isRealUIElementSlider())
return "IDS_MENU_MAIN_SLIDER";
- if (hasUIElementEditableTextIface())
+ if (hasRealUIElementEditableTextIface())
return "IDS_MENU_MAIN_EDITABLE_TEXT";
return "IDS_MENU_MAIN_NORMAL";
return TELEPHONY_CALL_STATE_IDLE;
}
-bool SelectActivity::isUIElementSlider()
+bool SelectActivity::isRealUIElementSlider() //TODO: Use Atspi wrapper functions when available
{
- return realUiElement && atspi_accessible_get_role(realUiElement->getObject().get(), nullptr) == ATSPI_ROLE_SLIDER;
+ if (!realUiElementIsSlider)
+ realUiElementIsSlider = atspi_accessible_get_role(realUiElement->getObject().get(), nullptr) == ATSPI_ROLE_SLIDER;
+ return *realUiElementIsSlider;
}
-bool SelectActivity::hasUIElementEditableTextIface()
+bool SelectActivity::hasRealUIElementEditableTextIface() //TODO: Use Atspi wrapper functions when available
{
- if (!realUiElement)
- return false;
-
- auto editableTextIface = atspi_accessible_get_editable_text_iface(realUiElement->getObject().get());
- if (editableTextIface) {
- g_object_unref(editableTextIface);
- return true;
+ if (!realUiElementHasEditableText) {
+ auto editableTextIface = std::unique_ptr<AtspiEditableText, void(*)(gpointer)> (atspi_accessible_get_editable_text_iface(realUiElement->getObject().get()), g_object_unref);
+ realUiElementHasEditableText = editableTextIface ? true : false;
}
- return false;
+ return *realUiElementHasEditableText;
}
std::string SelectActivity::getCompleteLabelOfButtonsKeysMenu()