package treehou.se.habit.core.db.settings; import io.realm.Realm; import io.realm.RealmObject; import io.realm.RealmResults; import io.realm.annotations.PrimaryKey; import rx.Observable; import treehou.se.habit.util.Constants; public class WidgetSettingsDB extends RealmObject { private static final String TAG = "WidgetSettings"; public static final String PREF_GLOBAL = "NotificationSettings"; public static final int NO_COLOR = -1; public static final int MUTED_COLOR = 0; public static final int LIGHT_MUTED_COLOR = 1; public static final int DARK_MUTED_COLOR = 2; public static final int VIBRANT_COLOR = 3; public static final int LIGHT_VIBRANT_COLOR = 4; public static final int DARK_VIBRANT_COLOR = 5; public static final int DEFAULT_TEXT_SIZE = 100; public static final int DEFAULT_ICON_SIZE = 100; @PrimaryKey private long id = -1; private int textSize = DEFAULT_TEXT_SIZE; private int imageBackground; private int iconSize = DEFAULT_ICON_SIZE; private boolean compressedSingleButton = true; private boolean compressedSlider = true; public long getId() { return id; } public void setId(long id) { this.id = id; } public int getTextSize() { return textSize; } public void setTextSize(int textSize) { this.textSize = Math.min(Constants.MAX_TEXT_ADDON,Math.max(Constants.MIN_TEXT_ADDON, textSize)); } public int getIconSize() { return iconSize; } public void setIconSize(int iconSize) { this.iconSize = iconSize; } public int getImageBackground() { return imageBackground; } public void setImageBackground(int imageBackground) { this.imageBackground = imageBackground; } public boolean isCompressedSingleButton() { return compressedSingleButton; } public void setCompressedSingleButton(boolean compressedSingleButton) { this.compressedSingleButton = compressedSingleButton; } public boolean isCompressedSlider() { return compressedSlider; } public void setCompressedSlider(boolean compressedSingleButton) { this.compressedSlider = compressedSingleButton; } public static void save(WidgetSettingsDB item){ Realm realm = Realm.getDefaultInstance(); realm.beginTransaction(); if(item.getId() <= 0) { item.setId(getUniqueId()); } realm.copyToRealmOrUpdate(item); realm.commitTransaction(); } public static long getUniqueId() { Realm realm = Realm.getDefaultInstance(); Number num = realm.where(WidgetSettingsDB.class).max("id"); long newId = 1; if (num != null) newId = num.longValue() + 1; realm.close(); return newId; } public static WidgetSettingsDB loadGlobal(Realm realm){ return loadGlobalRx(realm).toBlocking().first().first(); } public static Observable<RealmResults<WidgetSettingsDB>> loadGlobalRx(Realm realm){ RealmResults<WidgetSettingsDB> result = realm.where(WidgetSettingsDB.class).findAll(); WidgetSettingsDB widgetSettingsDB; if(result.size() <= 0){ realm.beginTransaction(); widgetSettingsDB = realm.createObject(WidgetSettingsDB.class); widgetSettingsDB.setId(WidgetSettingsDB.getUniqueId()); widgetSettingsDB.setTextSize(DEFAULT_TEXT_SIZE); widgetSettingsDB.setIconSize(DEFAULT_ICON_SIZE); realm.commitTransaction(); } result = realm.where(WidgetSettingsDB.class).findAll(); return result.asObservable(); } }