package net.miz_hi.smileessence;
import android.preference.PreferenceManager;
import com.android.volley.RequestQueue;
import net.miz_hi.smileessence.auth.Account;
import net.miz_hi.smileessence.auth.AuthenticationDB;
import net.miz_hi.smileessence.cache.VolleyUtil;
import net.miz_hi.smileessence.core.MyExecutor;
import net.miz_hi.smileessence.core.Settings;
import net.miz_hi.smileessence.data.DBHelper;
import net.miz_hi.smileessence.permission.IPermission;
import net.miz_hi.smileessence.permission.PermissonChecker;
import net.miz_hi.smileessence.preference.EnumPreferenceKey;
import net.miz_hi.smileessence.preference.PreferenceHelper;
import net.miz_hi.smileessence.theme.impl.DarkColorTheme;
import net.miz_hi.smileessence.theme.impl.LightColorTheme;
import net.miz_hi.smileessence.view.activity.MainActivity;
public class Client
{
private static Client instance;
private MainActivity app;
private Account mainAccount;
private IPermission permission;
private PreferenceHelper prefHelper;
private RequestQueue requestQueue;
private Settings settings;
private Client()
{
}
public static PreferenceHelper getPreferenceHelper()
{
return instance.prefHelper;
}
public static void putPreferenceValue(EnumPreferenceKey key, Object value)
{
instance.prefHelper.putPreferenceValue(key, value);
}
public static <T> T getPreferenceValue(EnumPreferenceKey key)
{
return instance.prefHelper.getPreferenceValue(key);
}
public static boolean hasAuthorizedAccount()
{
return AuthenticationDB.instance().findAll() != null && !AuthenticationDB.instance().findAll().isEmpty();
}
public static MainActivity getMainActivity()
{
return instance.app;
}
public static Account getMainAccount()
{
return instance.mainAccount;
}
public static void setMainAccount(Account account)
{
if(account != null)
{
putPreferenceValue(EnumPreferenceKey.LAST_USED_USER_ID, account.getUserId());
}
else
{
putPreferenceValue(EnumPreferenceKey.LAST_USED_USER_ID, -1L);
}
instance.mainAccount = account;
setPermission(PermissonChecker.checkPermission(account));
}
public static IPermission getPermission()
{
return instance.permission;
}
public static void setPermission(IPermission permission)
{
instance.permission = permission;
}
public static RequestQueue getRequestQueue()
{
return instance.requestQueue;
}
public static Settings getSettings()
{
return instance.settings;
}
public static Settings loadSettings()
{
Settings s = new Settings();
int tSize = getPreferenceValue(EnumPreferenceKey.TEXT_SIZE);
if(tSize < 0)
{
putPreferenceValue(EnumPreferenceKey.TEXT_SIZE, 10);
}
s.setTextSize(Client.<Integer>getPreferenceValue(EnumPreferenceKey.TEXT_SIZE));
boolean isDark = Client.<Boolean>getPreferenceValue(EnumPreferenceKey.THEME_IS_DARK);
if(isDark)
{
s.setTheme(new DarkColorTheme());
instance.app.setTheme(R.style.DarkTheme);
}
else
{
s.setTheme(new LightColorTheme());
instance.app.setTheme(R.style.LightTheme);
}
return s;
}
public static void initialize(MainActivity activity)
{
instance = new Client();
instance.prefHelper = new PreferenceHelper(PreferenceManager.getDefaultSharedPreferences(activity));
instance.app = activity;
instance.mainAccount = null;
instance.requestQueue = VolleyUtil.createRequestQueue(activity, null, 32 * 1024 * 1024); //32MBのディスクキャッシュ
instance.settings = loadSettings();
new DBHelper(activity).initialize();
MyExecutor.init();
}
}