package com.qliktrialreactnativestraighttable;

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.graphics.Typeface;

import com.facebook.react.bridge.ReadableMap;

public class TableTheme {
  static final int DEFAULT_HEADER_BACKGROUND_COLOR = Color.parseColor("#F0F0F0");
  static final int DEFAULT_TEXT_COLOR = Color.parseColor("#404040");
  static final int DEFAULT_BORDER_BACKGROUND_COLOR = Color.argb(0.1f, 0, 0, 0);
  static final int DEFAULT_SELECTED_BACKGROUND = Color.parseColor("#009845");
  static final int DEFAULT_BACKGROUND_COLOR = Color.WHITE;

  static int headerBackgroundColor = DEFAULT_HEADER_BACKGROUND_COLOR;
  static int defaultTextColor = DEFAULT_TEXT_COLOR;
  @SuppressLint("NewApi")
  static int borderBackgroundColor = DEFAULT_BORDER_BACKGROUND_COLOR;
  static int selectedBackground = DEFAULT_SELECTED_BACKGROUND;
  static Typeface iconFonts = null;
  static int CellPadding = (int)PixelUtils.dpToPx(8);
  static int DefaultRowHeight = (int)PixelUtils.dpToPx(40);

  static int backgroundColor = DEFAULT_BACKGROUND_COLOR;
  static Integer evenBackgroundColor = null;

  static int HorizontalScrollViewPadding = (int)PixelUtils.dpToPx(50);


  static void resetToDefaults() {
    headerBackgroundColor = DEFAULT_HEADER_BACKGROUND_COLOR;
    defaultTextColor = DEFAULT_TEXT_COLOR;
    borderBackgroundColor = DEFAULT_BORDER_BACKGROUND_COLOR;
    selectedBackground = DEFAULT_SELECTED_BACKGROUND;
    backgroundColor = DEFAULT_BACKGROUND_COLOR;
    evenBackgroundColor = null;
  }

  static void updateFrom(ReadableMap theme) {
    resetToDefaults();
    if (theme == null) {
      return;
    }
    try {
      String headerBackgroundColorString = JsonUtils.getString(theme, "headerBackgroundColor");
      String defaultTextColorString = JsonUtils.getString(theme, "defaultTextColor");
      String borderBackgroundColorString = JsonUtils.getString(theme, "borderBackgroundColor");
      String selectedBackgroundString = JsonUtils.getString(theme, "selectedBackground");
      String backgroundColorString = JsonUtils.getString(theme, "backgroundColor");
      String evenBackgroundColorString = JsonUtils.getString(theme, "even");

      if (headerBackgroundColorString != null) {
        headerBackgroundColor = Color.parseColor(headerBackgroundColorString);
      }
      if (defaultTextColorString != null) {
        defaultTextColor = Color.parseColor(defaultTextColorString);
      }
      if (selectedBackgroundString != null) {
        selectedBackground = Color.parseColor(selectedBackgroundString);
      }
      if (borderBackgroundColorString != null) {
        borderBackgroundColor = Color.parseColor(borderBackgroundColorString);
      }
      if (backgroundColorString != null) {
        backgroundColor = Color.parseColor(backgroundColorString);
      }
      evenBackgroundColor = evenBackgroundColorString == null ? null : Color.parseColor(evenBackgroundColorString);
    } catch (Exception ignored) {}
  }

  static int getRowBackgroundColor(int position) {
    if (position % 2 == 1 && evenBackgroundColor != null) {
      return evenBackgroundColor;
    }
    return backgroundColor;
  }
}
