package tk.wasdennnoch.androidn_ify.utils;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewRootImpl;
import android.widget.TextView;
import java.util.Locale;
import tk.wasdennnoch.androidn_ify.R;
@SuppressWarnings("SameParameterValue")
public class ViewUtils {
public static final float LARGE_TEXT_SCALE = 1.3f;
public static int dpToPx(Resources res, int dp) {
return (int) (res.getDisplayMetrics().density * dp);
}
public static void setHeight(View view, int height) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.height = height;
view.setLayoutParams(layoutParams);
}
public static void setWidth(View view, int width) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
layoutParams.width = width;
view.setLayoutParams(layoutParams);
}
public static void setMarginStart(View view, int margin) {
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
lp.setMarginStart(margin);
view.setLayoutParams(lp);
}
public static void setMarginEnd(View view, int margin) {
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
lp.setMarginEnd(margin);
view.setLayoutParams(lp);
}
public static void setMarginBottom(View view, int margin) {
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
lp.bottomMargin = margin;
view.setLayoutParams(lp);
}
public static void updateFontSize(TextView v, int dimensId) {
if (v != null) {
v.setTextSize(TypedValue.COMPLEX_UNIT_PX,
v.getResources().getDimensionPixelSize(dimensId));
}
}
@SuppressWarnings({"ConstantConditions", "deprecation"})
public static void applyTheme(Activity activity, SharedPreferences prefs) {
switch (prefs.getString("app_theme", "light")) {
case "device":
activity.setTheme(R.style.DeviceDefault);
break;
case "dark":
activity.setTheme(R.style.DarkTheme);
case "light":
int colorPrimary = prefs.getInt("theme_colorPrimary", activity.getResources().getColor(R.color.colorPrimary));
float[] hsv = new float[3];
Color.colorToHSV(colorPrimary, hsv);
hsv[2] *= 0.8f;
int colorPrimaryDark = Color.HSVToColor(hsv);
activity.getWindow().setStatusBarColor(colorPrimaryDark);
activity.getActionBar().setBackgroundDrawable(new ColorDrawable(colorPrimary));
}
if (prefs.getBoolean("force_english", false)) {
Configuration config = activity.getResources().getConfiguration();
config.locale = Locale.ENGLISH;
activity.getResources().updateConfiguration(config, null);
}
}
@SuppressWarnings({"ConstantConditions", "deprecation"})
public static void applyTheme(Dialog dialog, Context context, SharedPreferences prefs) {
if (prefs.getString("app_theme", "light").equals("device")) return;
int colorPrimary = prefs.getInt("theme_colorPrimary", context.getResources().getColor(R.color.colorPrimary));
float[] hsv = new float[3];
Color.colorToHSV(colorPrimary, hsv);
hsv[2] *= 0.8f;
int colorPrimaryDark = Color.HSVToColor(hsv);
dialog.getWindow().setStatusBarColor(colorPrimaryDark);
try {
dialog.getActionBar().setBackgroundDrawable(new ColorDrawable(colorPrimary));
} catch (NullPointerException ignore) {
}
}
public static void getRelativePosition(int[] loc1, View view, View parent) {
loc1[0] = view.getWidth() / 2;
loc1[1] = 0;
getRelativePositionInt(loc1, view, parent);
}
private static void getRelativePositionInt(int[] loc1, View view, View parent) {
if (view == parent || view == null) return;
loc1[0] += view.getLeft();
loc1[1] += view.getTop();
if (!(view.getParent() instanceof ViewRootImpl))
getRelativePositionInt(loc1, (View) view.getParent(), parent);
}
}