package com.nf2m.preferences; import android.content.Context; import android.content.SharedPreferences; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.nf2m.fragment.NowPlayingFragment; import com.nf2m.serializer.ObjectSerializer; import java.io.IOException; import java.util.ArrayList; public class Preferences { private static final String SONG_XML_FILE = "com.nf2m.song_xml_file"; private static final String KEY_REPEAT = "repeat"; private static final String KEY_SONG_DURATION = "song_duration"; private static final String KEY_SONG_POSITION = "song_position"; private static final String KEY_VOLUME = "volume"; private static final String KEY_SHUFFLE = "key_shuffle"; private static final String KEY_FAVORITES = "favorites"; private static final String KEY_PREF_TIMER = "timer"; private static final String KEY_QUERY_WHERE = "query_where"; private static final String KEY_QUERY_SELECTION_ARGS = "query_selection_args"; private static final String KEY_QUERY_URI = "query_uri"; private static SharedPreferences sharedPreferences; @NonNull public static Preferences newInstance(@NonNull Context context) { sharedPreferences = context.getSharedPreferences(SONG_XML_FILE, Context.MODE_PRIVATE); return new Preferences(); } //set pref public void setPrefSongPos(int pos) { sharedPreferences.edit().putInt(Preferences.KEY_SONG_POSITION, pos).apply(); } public void setPrefFavorites(ArrayList<String> favorites) { try { sharedPreferences.edit().putString(KEY_FAVORITES, ObjectSerializer.serialize(favorites)).apply(); } catch (IOException e) { e.printStackTrace(); } } public void setPrefDuration(int duration) { sharedPreferences.edit().putInt(KEY_SONG_DURATION, duration).apply(); } public void setPrefVolume(int volume) { sharedPreferences.edit().putInt(KEY_VOLUME, volume).apply(); } public void setPrefShuffle(String shuffle) { sharedPreferences.edit().putString(KEY_SHUFFLE, shuffle).apply(); } public void setPrefRepeat(String repeat) { sharedPreferences.edit().putString(KEY_REPEAT, repeat).apply(); } public void setPrefTimer(int time) { sharedPreferences.edit().putInt(KEY_PREF_TIMER, time).apply(); } public void setPrefQueryWhere(String where) { sharedPreferences.edit().putString(KEY_QUERY_WHERE, where).apply(); } public void setPrefQuerySelectionArgs(ArrayList<String> selectionArgs) { try { sharedPreferences.edit().putString(KEY_QUERY_SELECTION_ARGS, ObjectSerializer.serialize(selectionArgs)).apply(); } catch (IOException e) { e.printStackTrace(); } } public void setPrefQueryUri(String uri) { sharedPreferences.edit().putString(KEY_QUERY_URI, uri).apply(); } //getPref @Nullable public ArrayList<String> getPrefFavorites() { ArrayList<String> favorites; try { favorites = (ArrayList<String>) ObjectSerializer.deserialize( sharedPreferences.getString(KEY_FAVORITES, ObjectSerializer.serialize(new ArrayList<String>()))); } catch (IOException e) { e.printStackTrace(); favorites = new ArrayList<>(); } return favorites; } public int getPrefSongPosition() { return sharedPreferences.getInt(KEY_SONG_POSITION, -1); } public int getPrefSongDuration() { return sharedPreferences.getInt(KEY_SONG_DURATION, 0); } public int getPrefVolume() { return sharedPreferences.getInt(KEY_VOLUME, 10); } @Nullable public String getPrefShuffle() { return sharedPreferences.getString(KEY_SHUFFLE, NowPlayingFragment.SHUFFLE_OFF); } @Nullable public String getPrefRepeat() { return sharedPreferences.getString(KEY_REPEAT, NowPlayingFragment.REPEAT_OFF); } public int getPrefTimer() { return sharedPreferences.getInt(KEY_PREF_TIMER, 0); } @Nullable public String getPrefQueryWhere() { return sharedPreferences.getString(KEY_QUERY_WHERE, null); } @Nullable public ArrayList<String> getPrefQuerySelectionArgs() { ArrayList<String> selectionArgs = null; try { selectionArgs = (ArrayList<String>) ObjectSerializer.deserialize( sharedPreferences.getString(KEY_QUERY_SELECTION_ARGS, null)); } catch (IOException e) { e.printStackTrace(); } return selectionArgs; } @Nullable public String getPrefQueryUri() { return sharedPreferences.getString(KEY_QUERY_URI, null); } }