content: /*
   * Copyright (C) 2014 The Android Open Source Project
   *
   * 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.android.layoutlib.bridge.bars;
  
  import android.os._Original_Build.VERSION_CODES;
  
  import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
  
  import static android.os._Original_Build.VERSION_CODES.*;
  
  /**
   * Various helper methods to simulate older versions of platform.
   */
  public class Config {
  
      // each of these resource dirs must end in '/'
      private static final String GINGERBREAD_DIR      = "/bars/v9/";
      private static final String JELLYBEAN_DIR        = "/bars/v18/";
      private static final String KITKAT_DIR           = "/bars/v19/";
      private static final String LOLLIPOP_DIR         = "/bars/v21/";
      private static final String PI_DIR = "/bars/v28/";
  
  
      private static final List<String> sDefaultResourceDir;
  
      private static final int WHITE = 0xFFFFFFFF;
      private static final int BLACK = 0xFF000000;
  
      static {
          sDefaultResourceDir = new ArrayList<>(6);
          sDefaultResourceDir.add(PI_DIR);
          sDefaultResourceDir.add("/bars/");
          // If something is not found in the default directories, we fall back to search in the
          // old versions
          sDefaultResourceDir.add(LOLLIPOP_DIR);
          sDefaultResourceDir.add(KITKAT_DIR);
          sDefaultResourceDir.add(JELLYBEAN_DIR);
          sDefaultResourceDir.add(GINGERBREAD_DIR);
      }
  
      public static boolean showOnScreenNavBar(int platformVersion) {
          return isGreaterOrEqual(platformVersion, ICE_CREAM_SANDWICH);
      }
  
      public static int getStatusBarColor(int platformVersion) {
          // return white for froyo and earlier; black otherwise.
          return isGreaterOrEqual(platformVersion, GINGERBREAD) ? BLACK : WHITE;
      }
  
      public static List<String> getResourceDirs(int platformVersion) {
          // Special case the most used scenario.
          if (platformVersion == 0) {
              return sDefaultResourceDir;
          }
          List<String> list = new ArrayList<String>(10);
          // Gingerbread - uses custom battery and wifi icons.
          if (platformVersion <= GINGERBREAD) {
              list.add(GINGERBREAD_DIR);
          }
          // ICS - JellyBean uses custom battery, wifi.
          if (platformVersion <= JELLY_BEAN_MR2) {
              list.add(JELLYBEAN_DIR);
          }
          // KitKat - uses custom wifi and nav icons.
          if (platformVersion <= KITKAT) {
              list.add(KITKAT_DIR);
          }
          // Lollipop - Custom for sysbar and battery
          if (platformVersion <= LOLLIPOP) {
              list.add(LOLLIPOP_DIR);
          }
  
          list.addAll(sDefaultResourceDir);
  
          return Collections.unmodifiableList(list);
      }
  
      public static String getTime(int platformVersion) {
          if (isGreaterOrEqual(platformVersion, O)) {
              return "8:00";
          }
          if (platformVersion < GINGERBREAD) {
              return "2:20";
          }
          if (platformVersion < ICE_CREAM_SANDWICH) {
              return "2:30";
          }
          if (platformVersion < JELLY_BEAN) {
              return "4:00";
          }
          if (platformVersion < KITKAT) {
              return "4:30";
          }
          if (platformVersion < LOLLIPOP) {
              return "4:40";
          }
          if (platformVersion < LOLLIPOP_MR1) {
              return "5:00";
          }
          if (platformVersion < M) {
              return "5:10";
          }
          if (platformVersion < N) {
              return "6:00";
          }
          if (platformVersion < O) {
              return "7:00";
          }
          // Should never happen.
          return "4:04";
      }
  
      public static int getTimeColor(int platformVersion) {
          if (isGreaterOrEqual(platformVersion, KITKAT) ||
                  platformVersion > FROYO && platformVersion < HONEYCOMB) {
              // Gingerbread and KitKat onwards.
              return WHITE;
          }
          // Black for froyo.
          if (platformVersion < GINGERBREAD) {
              return BLACK;
          } else if (platformVersion < KITKAT) {
              // Honeycomb to JB-mr2: Holo blue light.
              return 0xff33b5e5;
          }
          // Should never happen.
          return WHITE;
      }
  
      public static String getWifiIconType(int platformVersion) {
          return isGreaterOrEqual(platformVersion, LOLLIPOP) ? "xml" : "png";
      }
  
      /**
       * Compare simulated platform version and code from {@link VERSION_CODES} to check if
       * the simulated platform is greater than or equal to the version code.
       */
      public static boolean isGreaterOrEqual(int platformVersion, int code) {
          // simulated platform version = 0 means that we use the latest.
          return platformVersion == 0 || platformVersion >= code;
      }
  }
  