18 import ubuntuuitoolkit
19 from autopilot
import introspection
26 """Autopilot helper for the IndicatorPage component."""
33 def validate_dbus_object(cls, path, state):
37 class DisplayIndicator():
39 def __init__(self, main_window):
40 self._main_window = main_window
42 def is_indicator_icon_visible(self):
43 panel_item = self._main_window.wait_select_single(
44 objectName=
'indicator-rotation-lock-panelItem')
45 return panel_item.indicatorVisible
48 """Open the display indicator page.
50 :return: The custom proxy object for the display indicator page.
53 if self.is_indicator_icon_visible():
54 return self._main_window.open_indicator_page(
55 'indicator-rotation-lock')
57 return self._open_indicator_with_icon_not_visible()
59 def _open_indicator_with_icon_not_visible(self):
61 self._main_window.open_indicator_page(
'indicator-datetime')
62 self._make_indicator_icon_visible()
63 indicator_rotation_icon = self._main_window.select_single(
64 objectName=
'indicator-rotation-lock-panelItem')
65 self._main_window.pointing_device.click_object(indicator_rotation_icon)
66 return self._main_window.wait_select_single(
67 objectName=
'indicator-rotation-lock-page')
69 def _make_indicator_icon_visible(self):
70 indicators_bar_flickable = self._main_window.select_single(
71 'IndicatorsBar').select_single(
72 ubuntuuitoolkit.QQuickFlickable, objectName=
'flickable')
73 self._swipe_flickable_to_x_end(indicators_bar_flickable)
75 def _swipe_flickable_to_x_end(self, flickable):
78 if not flickable.atXEnd:
79 while not flickable.atXEnd:
81 flickable.globalRect.y +
82 (flickable.globalRect.height // 2))
85 start_x = flickable.globalRect.x + 45
87 flickable.globalRect.x + flickable.globalRect.width - 5)
88 flickable.pointing_device.drag(
89 start_x, start_y, stop_x, stop_y)
90 flickable.dragging.wait_for(
False)
91 flickable.moving.wait_for(
False)
94 """Close the indicator page."""
95 self._main_window.close_indicator_page()
100 """Autopilot helper for the display indicator page."""
103 def validate_dbus_object(cls, path, state):
104 name = introspection.get_classname_from_path(path)
105 if name == b
'IndicatorPage':
106 if state[
'objectName'][1] ==
'indicator-rotation-lock-page':
111 """Toggle the rotation lock indicator to locked."""
114 switcher.checked.wait_for(
True)
116 def _get_switcher(self):
117 return self.select_single(
118 ubuntuuitoolkit.CheckBox, objectName=
'switcher')
121 """Toggle the rotation lock indicator to unlocked."""
124 switcher.checked.wait_for(
False)
def unlock_rotation(self)