package com.marverenic.music.data.store;
import android.media.audiofx.Equalizer;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Set;
import timber.log.Timber;
public class ImmutablePreferenceStore implements ReadOnlyPreferenceStore, Parcelable {
private final boolean mShowFirstStart;
private final boolean mAllowLogging;
private final boolean mUseMobileNetwork;
private final boolean mOpenNowPlayingOnNewQueue;
private final boolean mEnableNowPlayingGestures;
private final int mDefaultPage;
private final int mPrimaryColor;
private final int mAccentColor;
private final int mBaseColor;
private final int mIconColor;
private final boolean mResumeOnHeadphonesConnect;
private final boolean mShuffled;
private final int mRepeatMode;
private final long mPreviousSleepTimerDurationMillis;
private final int mEqualizerPresetId;
private final boolean mEqualizerEnabled;
private final String mEqualizerSettings;
public ImmutablePreferenceStore(ReadOnlyPreferenceStore preferencesStore) {
mShowFirstStart = preferencesStore.showFirstStart();
mAllowLogging = preferencesStore.allowLogging();
mUseMobileNetwork = preferencesStore.useMobileNetwork();
mOpenNowPlayingOnNewQueue = preferencesStore.openNowPlayingOnNewQueue();
mEnableNowPlayingGestures = preferencesStore.enableNowPlayingGestures();
mDefaultPage = preferencesStore.getDefaultPage();
mPrimaryColor = preferencesStore.getPrimaryColor();
mAccentColor = preferencesStore.getAccentColor();
mBaseColor = preferencesStore.getBaseColor();
mIconColor = preferencesStore.getIconColor();
mResumeOnHeadphonesConnect = preferencesStore.resumeOnHeadphonesConnect();
mShuffled = preferencesStore.isShuffled();
mPreviousSleepTimerDurationMillis = preferencesStore.getLastSleepTimerDuration();
mRepeatMode = preferencesStore.getRepeatMode();
mEqualizerPresetId = preferencesStore.getEqualizerPresetId();
mEqualizerEnabled = preferencesStore.getEqualizerEnabled();
Equalizer.Settings eqSettings = preferencesStore.getEqualizerSettings();
if (eqSettings != null) {
mEqualizerSettings = eqSettings.toString();
} else {
mEqualizerSettings = null;
}
}
protected ImmutablePreferenceStore(Parcel in) {
mShowFirstStart = in.readByte() != 0;
mAllowLogging = in.readByte() != 0;
mUseMobileNetwork = in.readByte() != 0;
mOpenNowPlayingOnNewQueue = in.readByte() != 0;
mEnableNowPlayingGestures = in.readByte() != 0;
mDefaultPage = in.readInt();
mPrimaryColor = in.readInt();
mAccentColor = in.readInt();
mBaseColor = in.readInt();
mIconColor = in.readInt();
mResumeOnHeadphonesConnect = in.readByte() != 0;
mShuffled = in.readByte() != 0;
mPreviousSleepTimerDurationMillis = in.readLong();
mRepeatMode = in.readInt();
mEqualizerPresetId = in.readInt();
mEqualizerEnabled = in.readByte() != 0;
mEqualizerSettings = in.readString();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeByte((byte) (mShowFirstStart ? 1 : 0));
dest.writeByte((byte) (mAllowLogging ? 1 : 0));
dest.writeByte((byte) (mUseMobileNetwork ? 1 : 0));
dest.writeByte((byte) (mOpenNowPlayingOnNewQueue ? 1 : 0));
dest.writeByte((byte) (mEnableNowPlayingGestures ? 1 : 0));
dest.writeInt(mDefaultPage);
dest.writeInt(mPrimaryColor);
dest.writeInt(mAccentColor);
dest.writeInt(mBaseColor);
dest.writeInt(mIconColor);
dest.writeByte((byte) (mResumeOnHeadphonesConnect ? 1 : 0));
dest.writeByte((byte) (mShuffled ? 1 : 0));
dest.writeLong(mPreviousSleepTimerDurationMillis);
dest.writeInt(mRepeatMode);
dest.writeInt(mEqualizerPresetId);
dest.writeByte((byte) (mEqualizerEnabled ? 1 : 0));
dest.writeString(mEqualizerSettings);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<ImmutablePreferenceStore> CREATOR = new Creator<ImmutablePreferenceStore>() {
@Override
public ImmutablePreferenceStore createFromParcel(Parcel in) {
return new ImmutablePreferenceStore(in);
}
@Override
public ImmutablePreferenceStore[] newArray(int size) {
return new ImmutablePreferenceStore[size];
}
};
@Override
public boolean showFirstStart() {
return mShowFirstStart;
}
@Override
public boolean allowLogging() {
return mAllowLogging;
}
@Override
public boolean useMobileNetwork() {
return mUseMobileNetwork;
}
@Override
public boolean openNowPlayingOnNewQueue() {
return mOpenNowPlayingOnNewQueue;
}
@Override
public boolean enableNowPlayingGestures() {
return mEnableNowPlayingGestures;
}
@Override
public int getDefaultPage() {
return mDefaultPage;
}
@Override
public int getPrimaryColor() {
return mPrimaryColor;
}
@Override
public int getAccentColor() {
return mAccentColor;
}
@Override
public int getBaseColor() {
return mBaseColor;
}
@Override
public int getIconColor() {
return mIconColor;
}
@Override
public boolean resumeOnHeadphonesConnect() {
return mResumeOnHeadphonesConnect;
}
@Override
public boolean isShuffled() {
return mShuffled;
}
@Override
public int getRepeatMode() {
return mRepeatMode;
}
@Override
public long getLastSleepTimerDuration() {
return mPreviousSleepTimerDurationMillis;
}
@Override
public int getEqualizerPresetId() {
return mEqualizerPresetId;
}
@Override
public boolean getEqualizerEnabled() {
return mEqualizerEnabled;
}
@Override
public Equalizer.Settings getEqualizerSettings() {
if (mEqualizerSettings != null) {
try {
return new Equalizer.Settings(mEqualizerSettings);
} catch (IllegalArgumentException exception) {
Timber.e(exception, "getEqualizerSettings: failed to parse equalizer settings");
}
}
return null;
}
@Override
public Set<String> getIncludedDirectories() {
throw new UnsupportedOperationException(
"ImmutablePreferenceStore does not save included directories");
}
@Override
public Set<String> getExcludedDirectories() {
throw new UnsupportedOperationException(
"ImmutablePreferenceStore does not save excluded directories");
}
}