Class: Rockbox::Api::Settings
- Inherits:
-
Object
- Object
- Rockbox::Api::Settings
- Defined in:
- lib/rockbox/api/settings.rb
Defined Under Namespace
Classes: SaveBuilder
Constant Summary collapse
- QUERY =
<<~GQL query GlobalSettings { globalSettings { musicDir volume balance bass treble channelConfig stereoWidth eqEnabled eqPrecut eqBandSettings { cutoff q gain } replaygainSettings { noclip type preamp } compressorSettings { threshold makeupGain ratio knee releaseTime attackTime } crossfadeEnabled crossfadeFadeInDelay crossfadeFadeInDuration crossfadeFadeOutDelay crossfadeFadeOutDuration crossfadeFadeOutMixmode crossfeedEnabled crossfeedDirectGain crossfeedCrossGain crossfeedHfAttenuation crossfeedHfCutoff repeatMode singleMode partyMode shuffle playerName } } GQL
Instance Method Summary collapse
- #get ⇒ Rockbox::UserSettings
-
#initialize(http) ⇒ Settings
constructor
A new instance of Settings.
-
#save(settings = nil, &block) ⇒ Object
Save a partial settings update.
Constructor Details
#initialize(http) ⇒ Settings
Returns a new instance of Settings.
25 26 27 |
# File 'lib/rockbox/api/settings.rb', line 25 def initialize(http) @http = http end |
Instance Method Details
#get ⇒ Rockbox::UserSettings
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rockbox/api/settings.rb', line 30 def get s = @http.execute(QUERY)[:global_settings] || {} UserSettings.new( music_dir: s[:music_dir], volume: s[:volume], balance: s[:balance], bass: s[:bass], treble: s[:treble], channel_config: s[:channel_config], stereo_width: s[:stereo_width], eq_enabled: s[:eq_enabled], eq_precut: s[:eq_precut], eq_band_settings: Array(s[:eq_band_settings]).map { |b| EqBandSetting.from_hash(b) }, replaygain_settings: ReplaygainSettings.from_hash(s[:replaygain_settings]), compressor_settings: CompressorSettings.from_hash(s[:compressor_settings]), crossfade_enabled: s[:crossfade_enabled], crossfade_fade_in_delay: s[:crossfade_fade_in_delay], crossfade_fade_in_duration: s[:crossfade_fade_in_duration], crossfade_fade_out_delay: s[:crossfade_fade_out_delay], crossfade_fade_out_duration: s[:crossfade_fade_out_duration], crossfade_fade_out_mixmode: s[:crossfade_fade_out_mixmode], crossfeed_enabled: s[:crossfeed_enabled], crossfeed_direct_gain: s[:crossfeed_direct_gain], crossfeed_cross_gain: s[:crossfeed_cross_gain], crossfeed_hf_attenuation: s[:crossfeed_hf_attenuation], crossfeed_hf_cutoff: s[:crossfeed_hf_cutoff], repeat_mode: s[:repeat_mode], single_mode: s[:single_mode], party_mode: s[:party_mode], shuffle: s[:shuffle], player_name: s[:player_name] ) end |
#save(settings = nil, &block) ⇒ Object
Save a partial settings update. Pass any subset of keys; everything else is left as-is by the firmware.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/rockbox/api/settings.rb', line 77 def save(settings = nil, &block) if block builder = SaveBuilder.new yield builder settings = builder.to_h.merge(settings || {}) end raise ArgumentError, "settings hash or block required" if settings.nil? || settings.empty? @http.execute( "mutation SaveSettings($settings: NewGlobalSettings!) { saveSettings(settings: $settings) }", { settings: settings } ) nil end |