Class: RunLoop::SimKeyboardSettings

Inherits:
Object
  • Object
show all
Defined in:
lib/run_loop/sim_keyboard_settings.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(device) ⇒ SimKeyboardSettings

Returns a new instance of SimKeyboardSettings.



5
6
7
8
# File 'lib/run_loop/sim_keyboard_settings.rb', line 5

def initialize(device)
  @device = device
  @pbuddy = RunLoop::PlistBuddy.new
end

Instance Attribute Details

#deviceObject (readonly)

Returns the value of attribute device.



3
4
5
# File 'lib/run_loop/sim_keyboard_settings.rb', line 3

def device
  @device
end

#pbuddyObject (readonly)

Returns the value of attribute pbuddy.



3
4
5
# File 'lib/run_loop/sim_keyboard_settings.rb', line 3

def pbuddy
  @pbuddy
end

#plistString (readonly)

Get plist path or use existing one

Returns:

  • (String)

    plist path



79
80
81
# File 'lib/run_loop/sim_keyboard_settings.rb', line 79

def plist
  @plist
end

Instance Method Details

#autocapitalization_enabled?Boolean

Checks if plist value that responds for autocapitalization is set to true

Returns:

  • (Boolean)


72
73
74
# File 'lib/run_loop/sim_keyboard_settings.rb', line 72

def autocapitalization_enabled?
  pbuddy.plist_read('KeyboardAutocapitalization', plist) == 'true'
end

#autocorrection_enabled?Boolean

Checks if plist value that responds for autocorrection is set to true

Returns:

  • (Boolean)


58
59
60
# File 'lib/run_loop/sim_keyboard_settings.rb', line 58

def autocorrection_enabled?
  pbuddy.plist_read('KeyboardAutocorrection', plist) == 'true'
end

#caps_lock_enabled?Boolean

Checks if plist value that responds for caps lock is set to true

Returns:

  • (Boolean)


65
66
67
# File 'lib/run_loop/sim_keyboard_settings.rb', line 65

def caps_lock_enabled?
  pbuddy.plist_read('KeyboardCapsLock', plist) == 'true'
end

#enable_autocapitalization(condition) ⇒ Object

Enable/disable keyboard autocapitalization

default: nil(false)

Parameters:

  • condition, (Boolean)

    option passed by the user in launch arguments



51
52
53
# File 'lib/run_loop/sim_keyboard_settings.rb', line 51

def enable_autocapitalization(condition)
  pbuddy.plist_set('KeyboardAutocapitalization', 'bool', condition, plist)
end

#enable_autocorrection(condition) ⇒ Object

Enable/disable keyboard autocorrection

default: nil(false)

Parameters:

  • condition, (Boolean)

    option passed by the user in launch arguments



35
36
37
# File 'lib/run_loop/sim_keyboard_settings.rb', line 35

def enable_autocorrection(condition)
  pbuddy.plist_set('KeyboardAutocorrection', 'bool', condition, plist)
end

#enable_caps_lock(condition) ⇒ Object

Enable/disable keyboard caps lock

default: nil(false)

Parameters:

  • condition, (Boolean)

    option passed by the user in launch arguments



43
44
45
# File 'lib/run_loop/sim_keyboard_settings.rb', line 43

def enable_caps_lock(condition)
  pbuddy.plist_set('KeyboardCapsLock', 'bool', condition, plist)
end

#ensure_soft_keyboard_will_showObject

Add properties needed for soft keyboard to show into preferences plist



25
26
27
28
29
# File 'lib/run_loop/sim_keyboard_settings.rb', line 25

def ensure_soft_keyboard_will_show
  pbuddy.plist_set('HardwareKeyboardLastSeen', 'bool', false, plist)
  pbuddy.plist_set('SoftwareKeyboardShownByTouch', 'bool', true, plist)
  pbuddy.plist_set('AutomaticMinimizationEnabled', 'bool', false, plist)
end

#preferences_plist_pathObject

Get preferences plist path

Returns:

  • nil if doesn’t run against simulator

  • (String)

    with path to the plist



87
88
89
90
91
92
# File 'lib/run_loop/sim_keyboard_settings.rb', line 87

def preferences_plist_path
  return nil if device.physical_device?

  directory = File.join(device.simulator_root_dir, 'data', 'Library', 'Preferences')
  pbuddy.ensure_plist(directory, 'com.apple.Preferences.plist')
end

#soft_keyboard_will_show?Bool

Check if all the properties needed for the soft keyboard to appear are set Approach to negate ‘true’ and ‘false’ was chosen in order to do not reboot sim too often, as this will cover the cases when the properties are not set which means that keyboard will be shown anyways

Returns:

  • (Bool)


16
17
18
19
20
21
22
# File 'lib/run_loop/sim_keyboard_settings.rb', line 16

def soft_keyboard_will_show?
  hw_keyboard_disabled = pbuddy.plist_read('HardwareKeyboardLastSeen', plist) != 'true'
  soft_keyboard_enabled = pbuddy.plist_read('SoftwareKeyboardShownByTouch', plist) != 'false'
  minimization_disabled = pbuddy.plist_read('AutomaticMinimizationEnabled', plist) != 'true'

  hw_keyboard_disabled && minimization_disabled && soft_keyboard_enabled
end