content: package com.alium.orin.util;
  
  import android.annotation.TargetApi;
  import android.app.Activity;
  import android.content.Context;
  import android.content.res.Configuration;
  import android.content.res.Resources;
  import android.content.res.TypedArray;
  import android.graphics.Point;
  import android.graphics.drawable.Drawable;
  import android.net.ConnectivityManager;
  import android.net.NetworkInfo;
  import android.os.Build;
  import android.support.annotation.AttrRes;
  import android.support.annotation.ColorInt;
  import android.support.annotation.DrawableRes;
  import android.support.annotation.NonNull;
  import android.support.annotation.Nullable;
  import android.support.graphics.drawable.VectorDrawableCompat;
  import android.util.TypedValue;
  import android.view.Display;
  import android.view.View;
  import android.view.Window;
  import android.view.WindowManager;
  import android.view.inputmethod.InputMethodManager;
  
  import com.alium.orin.model.Album;
  import com.kabouzeid.appthemehelper.util.TintHelper;
  import com.alium.orin.R;
  
  /**
   * @author Karim Abou Zeid (kabouzeid)
   */
  public class Util {
  
      public static int getActionBarSize(@NonNull Context context) {
          TypedValue typedValue = new TypedValue();
          int[] textSizeAttr = new int[]{R.attr.actionBarSize};
          int indexOfAttrTextSize = 0;
          TypedArray a = context.obtainStyledAttributes(typedValue.data, textSizeAttr);
          int actionBarSize = a.getDimensionPixelSize(indexOfAttrTextSize, -1);
          a.recycle();
          return actionBarSize;
      }
  
      public static Point getScreenSize(@NonNull Context c) {
          Display display = ((WindowManager) c.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
          Point size = new Point();
          display.getSize(size);
          return size;
      }
  
      @TargetApi(Build.VERSION_CODES.KITKAT)
      public static void setStatusBarTranslucent(@NonNull Window window) {
          window.setFlags(
                  WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
                  WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      }
  
      public static void setAllowDrawUnderStatusBar(@NonNull Window window) {
          window.getDecorView().setSystemUiVisibility(
                  View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
      }
  
      public static String getExtraDetailsWithDot(Activity activity, Album album) {
          return MusicUtil.getAlbumInfoString(activity, album);
      }
  
      public static String getExtraDetailsLineSpace(Activity activity, Album album) {
          return MusicUtil.getAlbumInfoStringLineSpace(activity, album);
      }
  
      public static void hideSoftKeyboard(@Nullable Activity activity) {
          if (activity != null) {
              View currentFocus = activity.getCurrentFocus();
              if (currentFocus != null) {
                  InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
                  inputMethodManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), 0);
              }
          }
      }
  
      public static boolean isTablet(@NonNull final Resources resources) {
          return resources.getConfiguration().smallestScreenWidthDp >= 600;
      }
  
      public static boolean isLandscape(@NonNull final Resources resources) {
          return resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
      }
  
      public static Drawable resolveDrawable(@NonNull Context context, @AttrRes int drawableAttr) {
          TypedArray a = context.obtainStyledAttributes(new int[]{drawableAttr});
          Drawable drawable = a.getDrawable(0);
          a.recycle();
          return drawable;
      }
  
      public static int resolveDimensionPixelSize(@NonNull Context context, @AttrRes int dimenAttr) {
          TypedArray a = context.obtainStyledAttributes(new int[]{dimenAttr});
          int dimensionPixelSize = a.getDimensionPixelSize(0, 0);
          a.recycle();
          return dimensionPixelSize;
      }
  
      public static Drawable getVectorDrawable(@NonNull Context context, @DrawableRes int id) {
          return getVectorDrawable(context.getResources(), id, context.getTheme());
      }
  
      public static Drawable getVectorDrawable(@NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme) {
          if (Build.VERSION.SDK_INT >= 21) {
              return res.getDrawable(resId, theme);
          }
          return VectorDrawableCompat.create(res, resId, theme);
      }
  
      public static Drawable getTintedVectorDrawable(@NonNull Context context, @DrawableRes int id, @ColorInt int color) {
          return TintHelper.createTintedDrawable(getVectorDrawable(context.getResources(), id, context.getTheme()), color);
      }
  
      public static Drawable getTintedVectorDrawable(@NonNull Resources res, @DrawableRes int resId, @Nullable Resources.Theme theme, @ColorInt int color) {
          return TintHelper.createTintedDrawable(getVectorDrawable(res, resId, theme), color);
      }
  
      @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
      public static boolean isRTL(@NonNull Context context) {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
              Configuration config = context.getResources().getConfiguration();
              return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
          } else return false;
      }
  
      public static boolean isAllowedToDownloadMetadata(final Context context) {
          switch (PreferenceUtil.getInstance(context).autoDownloadImagesPolicy()) {
              case "always":
                  return true;
              case "only_wifi":
                  final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                  NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
                  return netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI && netInfo.isConnectedOrConnecting();
              case "never":
              default:
                  return false;
          }
      }
  
  }