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);
}
}