#include "content/common/paths_efl.h"
#include "content/public/browser/web_contents.h"
#include "tizen/system_info.h"
+#include "ui/display/device_display_info_efl.h"
#if BUILDFLAG(IS_TIZEN)
#include <vconf/vconf.h>
else
DeleteDatePickerCallbacks();
- evas_object_del(conformant_);
- conformant_ = nullptr;
+ if (window_) {
+ evas_object_del(window_);
+ window_ = nullptr;
+ conformant_ = nullptr;
+ } else if (conformant_) {
+ evas_object_del(conformant_);
+ conformant_ = nullptr;
+ }
}
// static
return picker_layout.release();
}
+Evas_Object* InputPickerBase::Layout::GetElmWindow() {
+ if (!IsTvProfile()) {
+ return parent_->GetElmWindow();
+ }
+
+ if (!window_) {
+ window_ = CreateNewWindow();
+ }
+ return window_;
+}
+
+Evas_Object* InputPickerBase::Layout::CreateNewWindow() {
+ Evas_Object* top_window = parent_->GetElmWindow();
+ if (!top_window) {
+ return nullptr;
+ }
+
+ Evas_Object* window = elm_win_add(top_window, "InputPicker", ELM_WIN_BASIC);
+ if (!window) {
+ return nullptr;
+ }
+
+ elm_win_alpha_set(window, EINA_TRUE);
+
+ if (elm_win_indicator_mode_get(top_window) == ELM_WIN_INDICATOR_SHOW) {
+ elm_win_indicator_mode_set(window, ELM_WIN_INDICATOR_SHOW);
+ }
+
+ if (elm_win_indicator_opacity_get(top_window) ==
+ ELM_WIN_INDICATOR_TRANSPARENT) {
+ elm_win_indicator_opacity_set(window, ELM_WIN_INDICATOR_TRANSPARENT);
+ }
+
+ if (elm_win_wm_rotation_supported_get(top_window)) {
+ int rots[] = {0, 90, 180, 270};
+ elm_win_wm_rotation_available_rotations_set(window, rots, 4);
+ }
+
+ display::DeviceDisplayInfoEfl display_info;
+ evas_object_resize(window, display_info.GetDisplayWidth(),
+ display_info.GetDisplayHeight());
+
+ elm_win_conformant_set(window, EINA_TRUE);
+ evas_object_show(window);
+
+ return window;
+}
+
bool InputPickerBase::Layout::SetDatetimePicker(Evas_Object* picker,
const char* style) {
return false;
bool InputPickerBase::Layout::AddBaseLayout(const char* title,
const char* layout_group) {
- Evas_Object* top_widget = parent_->GetElmWindow();
- conformant_ = elm_conformant_add(top_widget);
+ Evas_Object* window = GetElmWindow();
+ if (!window)
+ return false;
+
+ conformant_ = elm_conformant_add(window);
if (!conformant_)
return false;
evas_object_size_hint_weight_set(conformant_, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
- elm_win_resize_object_add(top_widget, conformant_);
+ elm_win_resize_object_add(window, conformant_);
evas_object_show(conformant_);
Evas_Object* layout = elm_layout_add(conformant_);
Layout(const Layout&) = delete;
Layout& operator=(const Layout&) = delete;
+ Evas_Object* GetElmWindow();
+ Evas_Object* CreateNewWindow();
bool AddBaseLayout(const char* title, const char* layout_group);
bool AddButtons();
bool AddColorSelector(int r, int g, int b);
InputPickerBase* parent_;
+ Evas_Object* window_ = nullptr;
Evas_Object* conformant_ = nullptr;
Evas_Object* popup_ = nullptr;
Evas_Object* layout_ = nullptr;