/*
* Copyright (C) 2015 Naman Dwivedi
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*/
package com.wm.remusic.uitl;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.util.Log;
public final class PreferencesUtility {
public static final String ARTIST_SORT_ORDER = "artist_sort_order";
public static final String ARTIST_SONG_SORT_ORDER = "artist_song_sort_order";
public static final String ARTIST_ALBUM_SORT_ORDER = "artist_album_sort_order";
public static final String ALBUM_SORT_ORDER = "album_sort_order";
public static final String ALBUM_SONG_SORT_ORDER = "album_song_sort_order";
public static final String SONG_SORT_ORDER = "song_sort_order";
private static final String NOW_PLAYING_SELECTOR = "now_paying_selector";
private static final String TOGGLE_ANIMATIONS = "toggle_animations";
private static final String TOGGLE_SYSTEM_ANIMATIONS = "toggle_system_animations";
private static final String TOGGLE_ARTIST_GRID = "toggle_artist_grid";
private static final String TOGGLE_ALBUM_GRID = "toggle_album_grid";
private static final String TOGGLE_HEADPHONE_PAUSE = "toggle_headphone_pause";
private static final String THEME_PREFERNCE = "theme_preference";
private static final String START_PAGE_INDEX = "start_page_index";
private static final String START_PAGE_PREFERENCE_LASTOPENED = "start_page_preference_latopened";
private static final String NOW_PLAYNG_THEME_VALUE = "now_playing_theme_value";
private static final String FAVRIATE_MUSIC_PLAYLIST = "favirate_music_playlist";
private static final String DOWNMUSIC_BIT = "down_music_bit";
private static final String CURRENT_DATE = "currentdate";
private static PreferencesUtility sInstance;
private static SharedPreferences mPreferences;
public PreferencesUtility(final Context context) {
mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
}
public static final PreferencesUtility getInstance(final Context context) {
if (sInstance == null) {
sInstance = new PreferencesUtility(context.getApplicationContext());
}
return sInstance;
}
public long lastExit(){
return mPreferences.getLong("last_err_exit", 0);
}
public void setExitTime(){
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putLong("last_err_exit", System.currentTimeMillis());
editor.commit();
}
public boolean isCurrentDayFirst(String str){
return mPreferences.getString(CURRENT_DATE, "").equals(str);
}
public void setCurrentDate(String str){
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putString(CURRENT_DATE, str);
editor.apply();
}
public void setPlayLink(long id, String link) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putString(id + "", link);
editor.apply();
}
public String getPlayLink(long id) {
return mPreferences.getString(id + "", null);
}
public void setItemPostion(String str) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putString("item_relative_position", str);
editor.apply();
}
public String getItemPosition() {
return mPreferences.getString("item_relative_position", "推荐歌单 最新专辑 主播电台");
}
public void setDownMusicBit(int bit) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt(DOWNMUSIC_BIT, bit);
editor.apply();
}
public int getDownMusicBit() {
return mPreferences.getInt(DOWNMUSIC_BIT, 192);
}
public boolean getFavriateMusicPlaylist() {
return mPreferences.getBoolean(FAVRIATE_MUSIC_PLAYLIST, false);
}
public void setFavriateMusicPlaylist(boolean b) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(FAVRIATE_MUSIC_PLAYLIST, b);
editor.apply();
}
public void setOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) {
mPreferences.registerOnSharedPreferenceChangeListener(listener);
}
public boolean getAnimations() {
return mPreferences.getBoolean(TOGGLE_ANIMATIONS, true);
}
public boolean getSystemAnimations() {
return mPreferences.getBoolean(TOGGLE_SYSTEM_ANIMATIONS, true);
}
public boolean isArtistsInGrid() {
return mPreferences.getBoolean(TOGGLE_ARTIST_GRID, true);
}
public void setArtistsInGrid(final boolean b) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void... unused) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(TOGGLE_ARTIST_GRID, b);
editor.apply();
return null;
}
}.execute();
}
public boolean isAlbumsInGrid() {
return mPreferences.getBoolean(TOGGLE_ALBUM_GRID, true);
}
public void setAlbumsInGrid(final boolean b) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void... unused) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(TOGGLE_ALBUM_GRID, b);
editor.apply();
return null;
}
}.execute();
}
public boolean pauseEnabledOnDetach() {
return mPreferences.getBoolean(TOGGLE_HEADPHONE_PAUSE, true);
}
public String getTheme() {
return mPreferences.getString(THEME_PREFERNCE, "light");
}
public int getStartPageIndex() {
return mPreferences.getInt(START_PAGE_INDEX, 0);
}
public void setStartPageIndex(final int index) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void... unused) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt(START_PAGE_INDEX, index);
editor.apply();
return null;
}
}.execute();
}
public void setLastOpenedAsStartPagePreference(boolean preference) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(START_PAGE_PREFERENCE_LASTOPENED, preference);
editor.apply();
}
public boolean lastOpenedIsStartPagePreference() {
return mPreferences.getBoolean(START_PAGE_PREFERENCE_LASTOPENED, true);
}
private void setSortOrder(final String key, final String value) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void... unused) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putString(key, value);
editor.apply();
return null;
}
}.execute();
}
public final String getArtistSortOrder() {
return mPreferences.getString(ARTIST_SORT_ORDER, SortOrder.ArtistSortOrder.ARTIST_A_Z);
}
public void setArtistSortOrder(final String value) {
setSortOrder(ARTIST_SORT_ORDER, value);
}
public final String getArtistSongSortOrder() {
return mPreferences.getString(ARTIST_SONG_SORT_ORDER,
SortOrder.ArtistSongSortOrder.SONG_A_Z);
}
public static String FOLDER_SONG_SORT_ORDER = "folder_sort";
public void setFolerSortOrder(final String value) {
setSortOrder(FOLDER_SONG_SORT_ORDER, value);
}
public final String getFoloerSortOrder() {
return mPreferences.getString(FOLDER_SONG_SORT_ORDER, SortOrder.FolderSortOrder.FOLDER_A_Z);
}
public void setArtistSongSortOrder(final String value) {
setSortOrder(ARTIST_SONG_SORT_ORDER, value);
}
public final String getArtistAlbumSortOrder() {
return mPreferences.getString(ARTIST_ALBUM_SORT_ORDER,
SortOrder.ArtistAlbumSortOrder.ALBUM_A_Z);
}
public void setArtistAlbumSortOrder(final String value) {
setSortOrder(ARTIST_ALBUM_SORT_ORDER, value);
}
public final String getAlbumSortOrder() {
return mPreferences.getString(ALBUM_SORT_ORDER, SortOrder.AlbumSortOrder.ALBUM_A_Z);
}
public void setAlbumSortOrder(final String value) {
setSortOrder(ALBUM_SORT_ORDER, value);
}
public final String getAlbumSongSortOrder() {
return mPreferences.getString(ALBUM_SONG_SORT_ORDER,
SortOrder.AlbumSongSortOrder.SONG_TRACK_LIST);
}
public void setAlbumSongSortOrder(final String value) {
setSortOrder(ALBUM_SONG_SORT_ORDER, value);
}
public final String getSongSortOrder() {
return mPreferences.getString(SONG_SORT_ORDER, SortOrder.SongSortOrder.SONG_A_Z);
}
public void setSongSortOrder(final String value) {
setSortOrder(SONG_SORT_ORDER, value);
}
public final boolean didNowplayingThemeChanged() {
return mPreferences.getBoolean(NOW_PLAYNG_THEME_VALUE, false);
}
public void setNowPlayingThemeChanged(final boolean value) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(NOW_PLAYNG_THEME_VALUE, value);
editor.apply();
}
public void setFilterSize(int size) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt("filtersize", size);
editor.apply();
}
public void setFilterTime(int time) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putInt("filtertime", time);
editor.apply();
}
public int getFilterSize() {
return mPreferences.getInt("filtersize", 1024 * 1024);
}
public int getFilterTime() {
return mPreferences.getInt("filtertime", 60 * 1000);
}
}