Sha256: dddae0bbdb18811a7a0c0b09b231d8ae6ae0d3a9086646031a8aa0d90502a14b

Contents?: true

Size: 1.35 KB

Versions: 17

Compression:

Stored size: 1.35 KB

Contents

class Preferences
  
  def initialize(preferences)
    @preferences = preferences
  end
  
  def has_key?(key)
    @preferences.contains(key.to_s)
  end
  
  def contains?(key)
    has_key? key
  end
  
  def get(key, default = nil)
    prefs = (safe_get(key, nil) { |k, d| @preferences.getBoolean(k, nil) }) ||
    (safe_get(key, nil) { |k, d| @preferences.getFloat(k, nil) }) ||
    (safe_get(key, nil) { |k, d| @preferences.getInt(k, nil) }) ||
    (safe_get(key, nil) { |k, d| @preferences.getLong(k, nil) }) ||
    (safe_get(key, nil) { |k, d| @preferences.getString(k, nil) })
    prefs.nil? ? default : prefs
  end
  
  def update_attributes(attributes = {})
    editor = @preferences.edit
    attributes.each { |k,v|
      k = k.to_s
      if v.kind_of? String
        editor.putString(k,v)
      elsif v.kind_of? Integer
        editor.putInt(k,v)
      elsif v.kind_of? Long
        editor.putLong(k,v)
      elsif v.kind_of? Float
        editor.putFloat(k,v)
      elsif v.boolean?
        editor.putBoolean(k,v)
      elsif v == :remove
        editor.remove(k)
      end
    }
    editor
  end
  
  def update_attributes!(attributes = {})
    update_attributes(attributes).commit
  end
  
  private
   
  def safe_get(key, default, &block)
    begin
      block.call key.to_s, default
    rescue Java::java.lang.ClassCastException=>e
      nil
    end
  end
  
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
droiuby-0.3.6 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.5 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.4 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.3 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.2 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.1 lib/droiuby/wrappers/preferences.rb
droiuby-0.3.0 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.9 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.8 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.7 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.6 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.5 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.4 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.3 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.2 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.1 lib/droiuby/wrappers/preferences.rb
droiuby-0.2.0 lib/droiuby/wrappers/preferences.rb