338
class PhonePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
340
"""Autopilot helper for the Phone page."""
343
def validate_dbus_object(cls, path, state):
344
name = introspection.get_classname_from_path(path)
345
if name == b'PageComponent':
346
if state['objectName'][1] == 'phonePage':
350
@autopilot.logging.log_action(logger.info)
351
def go_to_call_forwarding(self, sim=None):
352
"""Open the Call Forwarding settings page.
354
:param sim: Number of what SIM to use, either 1 or 2.
355
Required parameter in dual SIM setups
356
:returns: The Call Forwarding settings page.
361
find = "callFwdSim%d" % sim
363
return self._go_to_page(find, 'callForwardingPage')
365
def _go_to_page(self, item_object_name, page_object_name):
366
self._click_item(item_object_name)
367
page = self.get_root_instance().wait_select_single(
368
objectName=page_object_name)
369
page.active.wait_for(True)
372
def _click_item(self, object_name):
373
item = self.select_single(objectName=object_name)
374
item.swipe_into_view()
375
self.pointing_device.click_object(item)
377
@autopilot.logging.log_action(logger.info)
378
def go_to_call_waiting(self, sim=None):
379
"""Open the Call Waiting settings page.
381
:param sim: Number of what SIM to use, either 1 or 2.
382
Required parameter in dual SIM setups
383
:returns: The Call Waiting settings page.
388
find = "callWaitSim%d" % sim
389
return self._go_to_page(find, 'callWaitingPage')
391
@autopilot.logging.log_action(logger.info)
392
def go_to_sim_services(self, sim=None):
393
"""Open the SIM Services settings page.
395
:param sim: Number of what SIM to use, either 1 or 2.
396
Required parameter in dual SIM setups
397
:returns: The SIM Services settings page.
402
find = "simServicesSim%d" % sim
404
return self._go_to_page(find, 'servicesPage')
407
class CallWaiting(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
409
"""Autopilot helper for the Call waiting page."""
413
return self.wait_select_single(
414
ubuntuuitoolkit.CheckBox,
415
objectName='callWaitingSwitch')
417
def enable_call_waiting(self):
420
def disable_call_waiting(self):
421
self._switch.uncheck()
424
class CallForwarding(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
426
"""Autopilot helper for the Call forwarding page."""
430
return self.wait_select_single(
431
ubuntuuitoolkit.CheckBox,
432
objectName='callForwardingSwitch')
435
def _number_field(self):
436
return self.wait_select_single(
437
objectName='destNumberField')
439
def _click_set(self):
440
button = self.wait_select_single(
442
self.pointing_device.click_object(button)
444
def _click_cancel(self):
445
button = self.wait_select_single(
447
self.pointing_device.click_object(button)
450
def current_forwarding(self):
451
return self.wait_select_single(
452
objectName='destNumberField').text
454
def enable_call_forwarding(self):
457
def disable_call_forwarding(self):
458
self._switch.uncheck()
460
def set_forward(self, number):
461
input_method = Keyboard.create()
462
self.enable_call_forwarding()
463
self.pointing_device.click_object(self._number_field)
464
input_method.type(number)
468
class Services(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
470
"""Autopilot helper for the Call waiting page."""
472
# TODO: add pages for each relevant sim services page
473
def open_sim_service(self, service):
474
"""Return a sim service page"""
314
478
class ResetPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
316
480
"""Autopilot helper for the Reset page."""
403
567
def confirm_reset(self):
404
568
button = self.select_single('Button', objectName='factoryResetAction')
405
569
self.pointing_device.click_object(button)
572
class LanguagePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
574
"""Autopilot helper for the Language page."""
577
def validate_dbus_object(cls, path, state):
578
name = introspection.get_classname_from_path(path)
579
if name == b'ItemPage':
580
if state['objectName'][1] == 'languagePage':
584
def get_current_language(self):
585
return self.select_single(
586
'Label', objectName='currentLanguage').currentLanguage
588
def _click_change_display_language(self):
589
item = self.select_single(objectName='displayLanguage')
590
self.pointing_device.click_object(item)
591
return self.get_root_instance().select_single(
592
objectName='displayLanguageDialog')
594
@autopilot.logging.log_action(logger.info)
595
def change_display_language(self, langIndex, reboot=True):
596
"""Changes display language.
598
:param langIndex: The language index to change to.
600
:param reboot: Whether to reboot or not
602
:returns: The language page
605
dialog = self._click_change_display_language()
606
dialog.set_language(langIndex, reboot)
607
return self.get_root_instance()
610
class DisplayLanguage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
612
"""Autopilot helper for the Display Language dialog."""
614
@autopilot.logging.log_action(logger.debug)
615
def set_language(self, index, reboot):
616
self._click_language_item(index)
617
reboot_dialog = self._click_confirm()
620
reboot_dialog.reboot()
622
reboot_dialog.revert()
624
@autopilot.logging.log_action(logger.debug)
625
def _click_language_item(self, index):
626
languages_list = self.select_single('QQuickListView',
627
objectName='languagesList')
628
languages_list.click_element('languageName%d' % index)
630
@autopilot.logging.log_action(logger.debug)
631
def _click_confirm(self):
632
button = self.select_single('Button',
633
objectName='confirmChangeLanguage')
634
self.pointing_device.click_object(button)
635
return self.get_root_instance().select_single(
636
objectName='rebootNecessaryDialog')
638
@autopilot.logging.log_action(logger.debug)
639
def _click_cancel(self):
640
button = self.select_single('Button',
641
objectName='cancelChangeLanguage')
642
self.pointing_device.click_object(button)
645
class RebootNecessary(
646
ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
648
"""Autopilot helper for the Reboot Necessary dialog."""
650
@autopilot.logging.log_action(logger.debug)
654
@autopilot.logging.log_action(logger.debug)
658
@autopilot.logging.log_action(logger.debug)
659
def _click_reboot(self):
660
button = self.select_single('Button', objectName='reboot')
661
self.pointing_device.click_object(button)
663
@autopilot.logging.log_action(logger.debug)
664
def _click_revert(self):
665
button = self.select_single('Button', objectName='revert')
666
self.pointing_device.click_object(button)
669
class WifiPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
671
"""Autopilot helper for the Sound page."""
674
def validate_dbus_object(cls, path, state):
675
name = introspection.get_classname_from_path(path)
676
if name == b'ItemPage':
677
if state['objectName'][1] == 'wifiPage':
681
"""Connects to hidden network
683
:param name: Network name string (SSID)
684
:kwarg security: A string that is either "none", "wpa" or "wep
685
:kwarg password: A string/hex secret
686
:kwarg cancel: A boolean deciding whether we press cancel or not
688
:returns: If we are connecting, it returns the dialog,
689
if we cancel, it returns itself
692
@autopilot.logging.log_action(logger.debug)
693
def connect_to_hidden_network(self, name, security="none", password=None,
694
cancel=False, scroll_to_and_click=None):
695
dialog = self._click_connect_to_hidden_network(scroll_to_and_click)
696
dialog.enter_name(name)
698
dialog.set_security(security)
700
dialog.enter_password(password)
709
@autopilot.logging.log_action(logger.debug)
710
def _click_connect_to_hidden_network(self, scroll_to_and_click):
712
# we can't mock the qunitymenu items, so we
713
# have to wait for them to be built
716
button = self.select_single('*',
717
objectName='connectToHiddenNetwork')
718
if (scroll_to_and_click):
719
scroll_to_and_click(button)
721
self.pointing_device.click_object(button)
722
return self.get_root_instance().wait_select_single(
723
objectName='otherNetworkDialog')
725
@autopilot.logging.log_action(logger.debug)
726
def go_to_previous_networks(self, scroll_to_and_click=None):
727
return self._click_previous_network(scroll_to_and_click)
729
"""Removes previous network
731
:param ssid: Network name string (SSID)
733
:returns: PreviousNetwork page
736
@autopilot.logging.log_action(logger.debug)
737
def remove_previous_network(self, ssid, scroll_to_and_click=None):
738
page = self.go_to_previous_networks(scroll_to_and_click)
739
details = page.select_network(ssid)
740
details.forget_network()
743
@autopilot.logging.log_action(logger.debug)
744
def _click_previous_network(self, scroll_to_and_click):
746
# we can't mock the qunitymenu items, so we
747
# have to wait for them to be built
750
button = self.select_single('*',
751
objectName='previousNetwork')
752
if (scroll_to_and_click):
753
scroll_to_and_click(button)
755
self.pointing_device.click_object(button)
756
return self.get_root_instance().wait_select_single(
757
objectName='previousNetworksPage')
761
ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
763
"""Autopilot helper for the Connect to Hidden Network dialog."""
766
def validate_dbus_object(cls, path, state):
767
name = introspection.get_classname_from_path(path)
768
if name == b'Dialog':
769
if state['objectName'][1] == 'otherNetworkDialog':
773
@autopilot.logging.log_action(logger.debug)
774
def enter_name(self, name):
775
self._enter_name(name)
777
@autopilot.logging.log_action(logger.debug)
778
def _enter_name(self, name):
779
namefield = self.select_single('TextField',
780
objectName='networkname')
781
namefield.write(name)
783
@autopilot.logging.log_action(logger.debug)
784
def set_security(self, security):
785
"""Sets the hidden network's security
787
:param security: Either "none", "wpa" or "wep
792
self._set_security(security)
794
@autopilot.logging.log_action(logger.debug)
795
def _expand_security_list(self):
796
sec_list = self.select_single(
797
'*', objectName='securityList')
798
active_child = sec_list.select_single(
799
'*', objectName='listContainer')
800
self.pointing_device.click_object(active_child)
801
# wait for it to expand
805
@autopilot.logging.log_action(logger.debug)
806
def _set_security(self, security):
807
if security == 'none':
808
sec_list = self._expand_security_list()
809
item = sec_list.wait_select_single('*',
811
self.pointing_device.click_object(item)
812
elif security == 'wpa':
813
sec_list = self._expand_security_list()
814
item = sec_list.wait_select_single('*',
815
text=_('WPA & WPA2 Personal'))
816
self.pointing_device.click_object(item)
817
elif security == 'wep':
818
sec_list = self._expand_security_list()
819
item = sec_list.wait_select_single('*',
821
self.pointing_device.click_object(item)
822
elif security is not None:
823
raise ValueError('security type %s is not valid' % security)
824
# wait for ui to change
827
@autopilot.logging.log_action(logger.debug)
828
def enter_password(self, password):
829
self._enter_password(password)
831
@autopilot.logging.log_action(logger.debug)
832
def _enter_password(self, password):
833
pwdfield = self.select_single('TextField',
834
objectName='password')
835
pwdfield.write(password)
837
@autopilot.logging.log_action(logger.debug)
841
@autopilot.logging.log_action(logger.debug)
842
def _click_cancel(self):
843
button = self.select_single('Button', objectName='cancel')
844
self.pointing_device.click_object(button)
846
@autopilot.logging.log_action(logger.debug)
848
self._click_connect()
850
@autopilot.logging.log_action(logger.debug)
851
def _click_connect(self):
852
button = self.select_single('Button', objectName='connect')
853
self.pointing_device.click_object(button)
856
class PreviousNetworks(
857
ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
859
"""Autopilot helper for the Previous Networks page."""
862
def validate_dbus_object(cls, path, state):
863
name = introspection.get_classname_from_path(path)
864
if name == b'ItemPage':
865
if state['objectName'][1] == 'previousNetworksPage':
869
@autopilot.logging.log_action(logger.debug)
870
def select_network(self, name):
871
self._select_network(name)
872
return self.get_root_instance().wait_select_single(
873
objectName='networkDetailsPage')
875
@autopilot.logging.log_action(logger.debug)
876
def _select_network(self, name):
877
net = self.select_single('Standard', text=name)
878
self.pointing_device.click_object(net)
881
class NetworkDetails(
882
ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
884
"""Autopilot helper for the Networks Details page."""
886
@autopilot.logging.log_action(logger.debug)
887
def forget_network(self):
890
@autopilot.logging.log_action(logger.debug)
891
def _click_forget(self):
892
button = self.select_single('Button', objectName='forgetNetwork')
893
self.pointing_device.click_object(button)