package com.marverenic.music.utils.compat;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.audiofx.Equalizer;
import android.preference.PreferenceManager;
import com.marverenic.music.data.annotations.BaseTheme;
import com.marverenic.music.data.annotations.PrimaryTheme;
import com.marverenic.music.data.annotations.StartPage;
import com.marverenic.music.data.store.PreferenceStore;
import com.marverenic.music.data.store.SharedPreferenceStore;
import timber.log.Timber;
import static com.marverenic.music.data.annotations.BaseTheme.LIGHT;
import static com.marverenic.music.data.annotations.PrimaryTheme.CYAN;
import static com.marverenic.music.data.annotations.StartPage.SONGS;
public class JockeyPreferencesCompat {
public static void upgradeSharedPreferences(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (shouldUpgradeFromJockey1_2(prefs)) {
Timber.i("upgradeSharedPreferences: Updating from version 1.2");
updateFromJockey1_2(context, prefs);
Timber.i("upgradeSharedPreferences: Finished updating from version 1.2");
}
if (shouldUpgradeFromJockey2_0(prefs)) {
Timber.i("upgradeSharedPreferences: Updating from version 2.0");
updateFromJockey2_0(context);
Timber.i("upgradeSharedPreferences: Finished updating from version 2.0");
}
}
private static boolean shouldUpgradeFromJockey1_2(SharedPreferences prefs) {
return prefs.contains("prefShowFirstStart");
}
private static boolean shouldUpgradeFromJockey2_0(SharedPreferences prefs) {
return prefs.contains("Theme.presetColorPrimary")
&& !prefs.contains("Theme.presetColorAccent");
}
private static void updateFromJockey1_2(Context context, SharedPreferences prefs) {
boolean showFirstStart = prefs.getBoolean("prefShowFirstStart", true);
boolean allowLogging = prefs.getBoolean("prefAllowLogging", false);
String firstPage = prefs.getString("prefDefaultPage", Integer.toString(SONGS));
String primaryColor = prefs.getString("prefColorPrimary", Integer.toString(CYAN));
String baseTheme = prefs.getString("prefBaseTheme", Integer.toString(LIGHT));
boolean useMobileData = prefs.getBoolean("prefUseMobileData", true);
boolean openNowPlaying = prefs.getBoolean("prefSwitchToNowPlaying", true);
boolean enableGestures = prefs.getBoolean("prefEnableNowPlayingGestures", true);
int eqPreset = prefs.getInt("equalizerPresetId", -1);
boolean eqEnabled = prefs.getBoolean("prefUseEqualizer", false);
String eqSettings = prefs.getString("prefEqualizerSettings", null);
int repeat = prefs.getInt("prefRepeat", 0);
boolean shuffle = prefs.getBoolean("prefShuffle", false);
prefs.edit().clear().apply();
PreferenceStore preferenceStore = new SharedPreferenceStore(context);
preferenceStore.setShowFirstStart(showFirstStart);
preferenceStore.setAllowLogging(allowLogging);
preferenceStore.setDefaultPage(convertStartPage1_2(firstPage));
preferenceStore.setPrimaryColor(convertPrimaryColor1_2(primaryColor));
preferenceStore.setBaseColor(convertBaseTheme1_2(baseTheme));
preferenceStore.setUseMobileNetwork(useMobileData);
preferenceStore.setOpenNowPlayingOnNewQueue(openNowPlaying);
preferenceStore.setEnableNowPlayingGestures(enableGestures);
preferenceStore.setEqualizerPresetId(eqPreset);
preferenceStore.setEqualizerEnabled(eqEnabled);
try {
if (eqSettings != null) {
preferenceStore.setEqualizerSettings(new Equalizer.Settings(eqSettings));
}
} catch (IllegalArgumentException ignored) {}
preferenceStore.setRepeatMode(repeat);
preferenceStore.setShuffle(shuffle);
}
private static void updateFromJockey2_0(Context context) {
PreferenceStore preferenceStore = new SharedPreferenceStore(context);
//noinspection WrongConstant
preferenceStore.setAccentColor(preferenceStore.getPrimaryColor());
}
@StartPage
private static int convertStartPage1_2(String startPage) {
try {
int convertedDefaultPage = Integer.parseInt(startPage);
if (convertedDefaultPage < 0 || convertedDefaultPage > 4) {
return SONGS;
} else {
//noinspection WrongConstant
return convertedDefaultPage;
}
} catch (NumberFormatException ignored) {
return SONGS;
}
}
@PrimaryTheme
private static int convertPrimaryColor1_2(String primaryColor) {
try {
int convertedColor = Integer.parseInt(primaryColor);
if (convertedColor < 0 || convertedColor > 6) {
return CYAN;
} else {
//noinspection WrongConstant
return convertedColor;
}
} catch (NumberFormatException ignored) {
return CYAN;
}
}
@BaseTheme
private static int convertBaseTheme1_2(String baseTheme) {
try {
int convertedBaseTheme = Integer.parseInt(baseTheme);
if (convertedBaseTheme < 0 || convertedBaseTheme > 2) {
return LIGHT;
} else {
//noinspection WrongConstant
return convertedBaseTheme;
}
} catch (NumberFormatException ignored) {
return LIGHT;
}
}
}