Class: QTimetrap::Services::SettingsStore

Inherits:
Object
  • Object
show all
Defined in:
app/services/settings_store.rb

Overview

Persists lightweight UI settings in a YAML file under user config.

Instance Method Summary collapse

Constructor Details

#initialize(path: default_path) ⇒ SettingsStore

Returns a new instance of SettingsStore.



10
11
12
# File 'app/services/settings_store.rb', line 10

def initialize(path: default_path)
  @path = path
end

Instance Method Details

#read_theme_nameObject



14
15
16
# File 'app/services/settings_store.rb', line 14

def read_theme_name
  data['theme']
end

#read_window_geometryObject



27
28
29
30
31
32
33
# File 'app/services/settings_store.rb', line 27

def read_window_geometry
  value = data['window']
  return nil unless value.is_a?(Hash)

  geometry = stringify_keys(value)
  parse_window_geometry(geometry)
end

#write_theme_name(theme_name) ⇒ Object



18
19
20
21
22
23
24
25
# File 'app/services/settings_store.rb', line 18

def write_theme_name(theme_name)
  value = theme_name.to_s.strip
  return if value.empty?

  payload = data.merge('theme' => value)
  FileUtils.mkdir_p(File.dirname(path))
  File.write(path, payload.to_yaml)
end

#write_window_geometry(left:, top:, width:, height:) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/services/settings_store.rb', line 35

def write_window_geometry(left:, top:, width:, height:)
  payload = data.merge(
    'window' => {
      'left' => Integer(left),
      'top' => Integer(top),
      'width' => Integer(width),
      'height' => Integer(height)
    }
  )
  FileUtils.mkdir_p(File.dirname(path))
  File.write(path, payload.to_yaml)
end