package me.piebridge.prevent.ui.util;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Build;
import android.preference.PreferenceManager;

import java.lang.reflect.Method;

import me.piebridge.prevent.R;

/**
 * Created by thom on 15/10/6.
 */
public class ThemeUtils {

    private static final String THEME = "theme";
    private static final String THEME_LIGHT = "light";
    private static final String THEME_DARK = "dark";

    private ThemeUtils() {

    }

    private static boolean hasSmartBar() {
        try {
            Method method = Build.class.getMethod("hasSmartBar");
            return (Boolean) method.invoke(null);
        } catch (Exception e) { // NOSONAR
            // do nothing
        }
        return false;
    }

    public static void setTheme(Activity activity) {
        final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(activity);
        activity.setTheme(THEME_LIGHT.equals(sp.getString(THEME, THEME_LIGHT)) ? R.style.light : R.style.dark);
        if (hasSmartBar()) {
            activity.getWindow().setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
        }
    }

    public static void switchTheme(Context context) {
        final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
        String theme = sp.getString(ThemeUtils.THEME, ThemeUtils.THEME_LIGHT);
        if (ThemeUtils.THEME_LIGHT.equals(theme)) {
            sp.edit().putString(ThemeUtils.THEME, ThemeUtils.THEME_DARK).apply();
        } else {
            sp.edit().putString(ThemeUtils.THEME, ThemeUtils.THEME_LIGHT).apply();
        }
    }

    public static void fixSmartBar(Activity activity) {
        try {
            ActionBar actionBar = activity.getActionBar();
            if (actionBar != null) {
                actionBar.setActionBarViewCollapsable(true);
            }
        } catch (NoSuchMethodError e) { // NOSONAR
            // do nothing
        }
    }

}