/*
* Copyright (C) 2014 Freddie (Musenkishi) Lust-Hed
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.musenkishi.wally.dataprovider;
import android.content.Context;
import android.content.SharedPreferences;
import com.musenkishi.wally.models.Filter;
import com.musenkishi.wally.models.filters.FilterAspectRatioKeys;
import com.musenkishi.wally.models.filters.FilterBoardsKeys;
import com.musenkishi.wally.models.filters.FilterPurityKeys;
import com.musenkishi.wally.models.filters.FilterResOptKeys;
import com.musenkishi.wally.models.filters.FilterResolutionKeys;
import com.musenkishi.wally.models.filters.FilterTimeSpanKeys;
/**
* A class that handles shared preferences data.
* Created by Musenkishi on 2014-03-13 21:05.
*/
public class SharedPreferencesDataProvider {
public static final String SHARED_PREF_KEY = "com.musenkishi.wally.sharedpreferences";
public static final String FILTER_KEY = ".filterKey";
public static final String FILTER_VALUE = ".filterValue";
private static final String FILTER_CUSTOM = ".filterIsCustom";
public static final String CRASH_LOGGING = ".crashlogging";
public static final String APP_START_COUNT = ".appStartCount";
public static final String LATEST_VERSION_INSTALLED = ".lastVersionInstalled";
public static final int CRASH_LOGGING_NOT_READ = 193784;
public static final int CRASH_LOGGING_NOT_APPROVED = 193785;
public static final int CRASH_LOGGING_APPROVED = 193786;
private SharedPreferences sharedPreferences;
public SharedPreferences getPrefs() {
return sharedPreferences;
}
public SharedPreferencesDataProvider(Context context) {
sharedPreferences = context.getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE);
}
public int getLatestVersion(int defaultVersion) {
return sharedPreferences.getInt(LATEST_VERSION_INSTALLED, defaultVersion);
}
public void setLatestVersion(int version) {
sharedPreferences.edit().putInt(LATEST_VERSION_INSTALLED, version).apply();
}
public int getAppStartCount(){
return sharedPreferences.getInt(APP_START_COUNT, 1);
}
public void incrementAppStartCount(){
int count = getAppStartCount() + 1;
sharedPreferences.edit().putInt(APP_START_COUNT, count).apply();
}
public int hasUserApprovedCrashLogging(){
return sharedPreferences.getInt(CRASH_LOGGING, CRASH_LOGGING_NOT_READ);
}
public void setUserApprovedCrashLogging(int crashLoggingState){
sharedPreferences.edit().putInt(CRASH_LOGGING, crashLoggingState).apply();
}
public Filter<String, String> getTimespan(String tag){
String savedKey = sharedPreferences.getString(tag + FILTER_KEY, FilterTimeSpanKeys.TIMESPAN_3_DAYS.getKey());
String savedValue = sharedPreferences.getString(tag + FILTER_VALUE, FilterTimeSpanKeys.TIMESPAN_3_DAYS.getValue());
return new Filter<String, String>(savedKey, savedValue);
}
public void setTimespan(String tag, Filter<String, String> timespan){
sharedPreferences.edit().putString(tag + FILTER_KEY, timespan.getKey()).apply();
sharedPreferences.edit().putString(tag + FILTER_VALUE, timespan.getValue()).apply();
}
public String getBoards(String tag) {
return sharedPreferences.getString(tag, FilterBoardsKeys.BOARD_GENERAL_KEY + FilterBoardsKeys.BOARD_ANIME_KEY + "0");
}
public void setBoards(String tag, String paramValue) {
sharedPreferences.edit().putString(tag, paramValue).apply();
}
public String getPurity(String tag) {
return sharedPreferences.getString(tag, FilterPurityKeys.SFW_KEY + "00"); //This will default to SFW purity
}
public void setPurity(String tag, String paramValue) {
sharedPreferences.edit().putString(tag, paramValue).apply();
}
public Filter<String, String> getAspectRatio(String tag){
String savedKey = sharedPreferences.getString(tag + FILTER_KEY, FilterAspectRatioKeys.RATIO_ALL.getKey());
String savedValue = sharedPreferences.getString(tag + FILTER_VALUE, FilterAspectRatioKeys.RATIO_ALL.getValue());
return new Filter<String, String>(savedKey, savedValue);
}
public void setAspectRatio(String tag, Filter<String, String> aspectRatio){
sharedPreferences.edit().putString(tag + FILTER_KEY, aspectRatio.getKey()).apply();
sharedPreferences.edit().putString(tag + FILTER_VALUE, aspectRatio.getValue()).apply();
}
public String getResolutionOption(String tag) {
return sharedPreferences.getString(tag, FilterResOptKeys.EXACTLY);
}
public void setResolutionOption(String tag, String paramValue){
sharedPreferences.edit().putString(tag, paramValue).apply();
}
public Filter<String, String> getResolution(String tag){
String savedKey = sharedPreferences.getString(tag + FILTER_KEY, FilterResolutionKeys.RES_ALL.getKey());
String savedValue = sharedPreferences.getString(tag + FILTER_VALUE, FilterResolutionKeys.RES_ALL.getValue());
boolean savedIsCustom = sharedPreferences.getBoolean(tag + FILTER_CUSTOM, FilterResolutionKeys.RES_ALL.isCustom());
return new Filter<String, String>(savedKey, savedValue, savedIsCustom);
}
public void setResolution(String tag, Filter<String, String> resolution) {
sharedPreferences.edit().putString(tag + FILTER_KEY, resolution.getKey()).apply();
sharedPreferences.edit().putString(tag + FILTER_VALUE, resolution.getValue()).apply();
sharedPreferences.edit().putBoolean(tag + FILTER_CUSTOM, resolution.isCustom()).apply();
}
}