From 9e4dec362dc575e44be99e650cb4c4b1e031644c Mon Sep 17 00:00:00 2001
From: Alex Ning <chineseperson5@gmail.com>
Date: Thu, 19 Mar 2020 22:30:57 +0800
Subject: Still implementing custom theme settings.

---
 .../Activity/CustomThemeListingActivity.java       |  55 +++++
 .../Activity/CustomizeThemeActivity.java           |  80 ++++---
 .../CustomThemeListingRecyclerViewAdapter.java     |  68 ++++++
 .../Adapter/CustomizeThemeRecyclerViewAdapter.java |  16 +-
 .../AsyncTask/GetCustomThemeAsyncTask.java         |  37 ++++
 .../CustomTheme/CustomThemeDao.java                |   8 +-
 .../CustomTheme/CustomThemeSettingsItem.java       |   2 +-
 .../CustomTheme/CustomThemeWrapper.java            | 242 ++++++++++++++++++++-
 8 files changed, 465 insertions(+), 43 deletions(-)
 create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomThemeListingActivity.java
 create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomThemeListingRecyclerViewAdapter.java
 create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/AsyncTask/GetCustomThemeAsyncTask.java

(limited to 'app/src/main/java')

diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomThemeListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomThemeListingActivity.java
new file mode 100644
index 00000000..8ba9a885
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomThemeListingActivity.java
@@ -0,0 +1,55 @@
+package ml.docilealligator.infinityforreddit.Activity;
+
+import android.content.SharedPreferences;
+import android.os.Bundle;
+
+import androidx.appcompat.widget.Toolbar;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.material.appbar.AppBarLayout;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import butterknife.BindView;
+import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
+import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+
+public class CustomThemeListingActivity extends BaseActivity {
+
+    @BindView(R.id.appbar_layout_customize_theme_listing_activity)
+    AppBarLayout appBarLayout;
+    @BindView(R.id.toolbar_customize_theme_listing_activity)
+    Toolbar toolbar;
+    @BindView(R.id.recycler_view_customize_theme_listing_activity)
+    RecyclerView recyclerView;
+    @Inject
+    @Named("default")
+    SharedPreferences sharedPreferences;
+    @Inject
+    RedditDataRoomDatabase redditDataRoomDatabase;
+    @Inject
+    CustomThemeWrapper customThemeWrapper;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_custom_theme_listing);
+    }
+
+    @Override
+    protected SharedPreferences getSharedPreferences() {
+        return sharedPreferences;
+    }
+
+    @Override
+    protected CustomThemeWrapper getCustomThemeWrapper() {
+        return customThemeWrapper;
+    }
+
+    @Override
+    protected void applyCustomTheme() {
+        applyAppBarLayoutAndToolbarTheme(appBarLayout, toolbar);
+    }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java
index 530d947a..b6e45b8a 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/CustomizeThemeActivity.java
@@ -6,8 +6,8 @@ import android.os.Bundle;
 
 import androidx.appcompat.widget.Toolbar;
 import androidx.lifecycle.LiveData;
-import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.google.android.material.appbar.AppBarLayout;
@@ -20,6 +20,7 @@ import javax.inject.Named;
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import ml.docilealligator.infinityforreddit.Adapter.CustomizeThemeRecyclerViewAdapter;
+import ml.docilealligator.infinityforreddit.AsyncTask.GetCustomThemeAsyncTask;
 import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
 import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeSettingsItem;
 import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeViewModel;
@@ -34,6 +35,7 @@ public class CustomizeThemeActivity extends BaseActivity {
     public static final int EXTRA_LIGHT_THEME = 0;
     public static final int EXTRA_DARK_THEME = 1;
     public static final int EXTRA_AMOLED_THEME = 2;
+    public static final String EXTRA_THEME_NAME = "ETN";
 
     @BindView(R.id.appbar_layout_customize_theme_activity)
     AppBarLayout appBarLayout;
@@ -51,7 +53,6 @@ public class CustomizeThemeActivity extends BaseActivity {
 
     public CustomThemeViewModel customThemeViewModel;
     private CustomizeThemeRecyclerViewAdapter adapter;
-    private int themeType;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -64,38 +65,59 @@ public class CustomizeThemeActivity extends BaseActivity {
 
         applyCustomTheme();
 
-        themeType = getIntent().getIntExtra(EXTRA_THEME_TYPE, EXTRA_LIGHT_THEME);
-
+        setTitle(getIntent().getStringExtra(EXTRA_THEME_NAME));
         setSupportActionBar(toolbar);
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
         adapter = new CustomizeThemeRecyclerViewAdapter();
+        recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        recyclerView.setAdapter(adapter);
 
         customThemeViewModel = new ViewModelProvider(this, new CustomThemeViewModel.Factory(redditDataRoomDatabase))
                 .get(CustomThemeViewModel.class);
 
-        LiveData<CustomTheme> customThemeLiveData;
-        switch (themeType) {
-            case EXTRA_DARK_THEME:
-                toolbar.setTitle(getString(R.string.customize_dark_theme_fragment_title));
-                customThemeLiveData = customThemeViewModel.getDarkCustomTheme();
-                break;
-            case EXTRA_AMOLED_THEME:
-                toolbar.setTitle(getString(R.string.customize_amoled_theme_fragment_title));
-                customThemeLiveData = customThemeViewModel.getAmoledCustomTheme();
-                break;
-            default:
-                toolbar.setTitle(getString(R.string.customize_light_theme_fragment_title));
-                customThemeLiveData = customThemeViewModel.getLightCustomTheme();
-                break;
-        }
-
         int androidVersion = Build.VERSION.SDK_INT;
-        customThemeLiveData.observe(this, new Observer<CustomTheme>() {
-            @Override
-            public void onChanged(CustomTheme customTheme) {
-                ArrayList<CustomThemeSettingsItem> customThemeSettingsItems =
-                        CustomThemeSettingsItem.convertCustomTheme(CustomizeThemeActivity.this, customTheme);
+        if (getIntent().hasExtra(EXTRA_THEME_TYPE)) {
+            LiveData<CustomTheme> customThemeLiveData;
+            int themeType = getIntent().getIntExtra(EXTRA_THEME_TYPE, EXTRA_LIGHT_THEME);
+            switch (themeType) {
+                case EXTRA_DARK_THEME:
+                    setTitle(getString(R.string.customize_dark_theme_fragment_title));
+                    customThemeLiveData = customThemeViewModel.getDarkCustomTheme();
+                    break;
+                case EXTRA_AMOLED_THEME:
+                    setTitle(getString(R.string.customize_amoled_theme_fragment_title));
+                    customThemeLiveData = customThemeViewModel.getAmoledCustomTheme();
+                    break;
+                default:
+                    setTitle(getString(R.string.customize_light_theme_fragment_title));
+                    customThemeLiveData = customThemeViewModel.getLightCustomTheme();
+                    break;
+            }
+
+            customThemeLiveData.observe(this, customTheme -> {
+                ArrayList<CustomThemeSettingsItem> customThemeSettingsItems;
+                if (customTheme == null) {
+                    switch (themeType) {
+                        case EXTRA_DARK_THEME:
+                            customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(
+                                    CustomizeThemeActivity.this,
+                                    CustomThemeWrapper.getIndigoDark(CustomizeThemeActivity.this));
+                            break;
+                        case EXTRA_AMOLED_THEME:
+                            customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(
+                                    CustomizeThemeActivity.this,
+                                    CustomThemeWrapper.getIndigoAmoled(CustomizeThemeActivity.this));
+                            break;
+                        default:
+                            customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(
+                                    CustomizeThemeActivity.this,
+                                    CustomThemeWrapper.getIndigo(CustomizeThemeActivity.this));
+                    }
+                } else {
+                    customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(CustomizeThemeActivity.this, customTheme);
+                }
+
                 if (androidVersion < Build.VERSION_CODES.O) {
                     customThemeSettingsItems.get(customThemeSettingsItems.size() - 2).itemDetails = getString(R.string.theme_item_available_on_android_8);
                 }
@@ -104,8 +126,12 @@ public class CustomizeThemeActivity extends BaseActivity {
                 }
 
                 adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
-            }
-        });
+            });
+        } else {
+            new GetCustomThemeAsyncTask(redditDataRoomDatabase, getIntent().getStringExtra(EXTRA_THEME_NAME),
+                    customTheme -> adapter.setCustomThemeSettingsItem(
+                            CustomThemeSettingsItem.convertCustomThemeToSettingsItem(CustomizeThemeActivity.this, customTheme))).execute();
+        }
     }
 
     @Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomThemeListingRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomThemeListingRecyclerViewAdapter.java
new file mode 100644
index 00000000..9504317d
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomThemeListingRecyclerViewAdapter.java
@@ -0,0 +1,68 @@
+package ml.docilealligator.infinityforreddit.Adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.ColorStateList;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import ml.docilealligator.infinityforreddit.Activity.CustomizeThemeActivity;
+import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
+import ml.docilealligator.infinityforreddit.R;
+
+public class CustomThemeListingRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
+    private Context context;
+    private ArrayList<CustomTheme> customThemes;
+
+    public CustomThemeListingRecyclerViewAdapter(Context context) {
+        this.context = context;
+        customThemes = new ArrayList<>();
+    }
+
+    @NonNull
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        return new CustomThemeViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_custom_theme, parent, false));
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+        if (holder instanceof CustomThemeViewHolder) {
+            CustomTheme customTheme = customThemes.get(position);
+            ((CustomThemeViewHolder) holder).colorPrimaryView.setBackgroundTintList(ColorStateList.valueOf(customTheme.colorPrimary));
+            ((CustomThemeViewHolder) holder).nameTextView.setText(customTheme.name);
+            ((CustomThemeViewHolder) holder).itemView.setOnClickListener(view -> {
+                Intent intent = new Intent(context, CustomizeThemeActivity.class);
+                intent.putExtra(CustomizeThemeActivity.EXTRA_THEME_NAME, customTheme.name);
+                context.startActivity(intent);
+            });
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return 0;
+    }
+
+    class CustomThemeViewHolder extends RecyclerView.ViewHolder {
+
+        @BindView(R.id.color_primary_item_custom_theme)
+        View colorPrimaryView;
+        @BindView(R.id.name_text_view_item_custom_theme)
+        TextView nameTextView;
+
+        public CustomThemeViewHolder(@NonNull View itemView) {
+            super(itemView);
+            ButterKnife.bind(this, itemView);
+        }
+    }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomizeThemeRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomizeThemeRecyclerViewAdapter.java
index 5bb55eea..398042de 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomizeThemeRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CustomizeThemeRecyclerViewAdapter.java
@@ -39,10 +39,10 @@ public class CustomizeThemeRecyclerViewAdapter extends RecyclerView.Adapter<Recy
     @Override
     public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
         if (viewType == VIEW_TYPE_SWITCH) {
-            return new ThemeSwitchItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_theme_color_item, parent, false));
+            return new ThemeSwitchItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_custom_theme_switch_item, parent, false));
         }
 
-        return new ThemeColorItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_theme_color_item, parent, false));
+        return new ThemeColorItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_custom_theme_color_item, parent, false));
     }
 
     @Override
@@ -78,11 +78,11 @@ public class CustomizeThemeRecyclerViewAdapter extends RecyclerView.Adapter<Recy
     }
 
     class ThemeColorItemViewHolder extends RecyclerView.ViewHolder {
-        @BindView(R.id.color_image_view_item_theme_color_item)
+        @BindView(R.id.color_image_view_item_custom_theme_color_item)
         View colorImageView;
-        @BindView(R.id.theme_item_name_text_view_item_theme_color_item)
+        @BindView(R.id.theme_item_name_text_view_item_custom_theme_color_item)
         TextView themeItemNameTextView;
-        @BindView(R.id.theme_item_info_text_view_item_theme_color_item)
+        @BindView(R.id.theme_item_info_text_view_item_custom_theme_color_item)
         TextView themeItemInfoTextView;
 
         ThemeColorItemViewHolder(@NonNull View itemView) {
@@ -92,11 +92,11 @@ public class CustomizeThemeRecyclerViewAdapter extends RecyclerView.Adapter<Recy
     }
 
     class ThemeSwitchItemViewHolder extends RecyclerView.ViewHolder {
-        @BindView(R.id.theme_item_name_text_view_item_theme_switch_item)
+        @BindView(R.id.theme_item_name_text_view_item_custom_theme_switch_item)
         TextView themeItemNameTextView;
-        @BindView(R.id.theme_item_info_text_view_item_theme_switch_item)
+        @BindView(R.id.theme_item_info_text_view_item_custom_theme_switch_item)
         TextView themeItemInfoTextView;
-        @BindView(R.id.theme_item_switch_item_theme_switch_item)
+        @BindView(R.id.theme_item_switch_item_custom_theme_switch_item)
         Switch themeItemSwitch;
 
         ThemeSwitchItemViewHolder(@NonNull View itemView) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AsyncTask/GetCustomThemeAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AsyncTask/GetCustomThemeAsyncTask.java
new file mode 100644
index 00000000..9a8469f5
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AsyncTask/GetCustomThemeAsyncTask.java
@@ -0,0 +1,37 @@
+package ml.docilealligator.infinityforreddit.AsyncTask;
+
+import android.os.AsyncTask;
+
+import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+
+public class GetCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
+    private RedditDataRoomDatabase redditDataRoomDatabase;
+    private String customThemeName;
+    private GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener;
+    private CustomTheme customTheme;
+
+    public interface GetCustomThemeAsyncTaskListener {
+        void success(CustomTheme customTheme);
+    }
+
+    public GetCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
+                                   String customThemeName,
+                                   GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener) {
+        this.redditDataRoomDatabase = redditDataRoomDatabase;
+        this.customThemeName = customThemeName;
+        this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
+    }
+
+    @Override
+    protected Void doInBackground(Void... voids) {
+        customTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customThemeName);
+        return null;
+    }
+
+    @Override
+    protected void onPostExecute(Void aVoid) {
+        super.onPostExecute(aVoid);
+        getCustomThemeAsyncTaskListener.success(customTheme);
+    }
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeDao.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeDao.java
index 4525cf81..552cc8a7 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeDao.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeDao.java
@@ -25,9 +25,9 @@ public interface CustomThemeDao {
     @Query("SELECT * FROM custom_themes WHERE is_amoled_theme = 1 LIMIT 1")
     LiveData<CustomTheme> getAmoledCustomTheme();
 
-    @Query("SELECT * FROM custom_themes WHERE name = :name AND username = :username COLLATE NOCASE LIMIT 1")
-    CustomTheme getCustomTheme(String name, String username);
+    @Query("SELECT * FROM custom_themes WHERE name = :name COLLATE NOCASE LIMIT 1")
+    CustomTheme getCustomTheme(String name);
 
-    @Query("DELETE FROM custom_themes WHERE name = :name AND username = :username")
-    void deleteCustomTheme(String name, String username);
+    @Query("DELETE FROM custom_themes WHERE name = :name")
+    void deleteCustomTheme(String name);
 }
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeSettingsItem.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeSettingsItem.java
index 1dfd7f59..5741d1f1 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeSettingsItem.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeSettingsItem.java
@@ -23,7 +23,7 @@ public class CustomThemeSettingsItem {
         this.isEnabled = isEnabled;
     }
 
-    public static ArrayList<CustomThemeSettingsItem> convertCustomTheme(Context context, CustomTheme customTheme) {
+    public static ArrayList<CustomThemeSettingsItem> convertCustomThemeToSettingsItem(Context context, CustomTheme customTheme) {
         ArrayList<CustomThemeSettingsItem> customThemeSettingsItems = new ArrayList<>();
 
         if (customTheme == null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeWrapper.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeWrapper.java
index 2546c9f2..b6416f53 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeWrapper.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CustomTheme/CustomThemeWrapper.java
@@ -1,8 +1,12 @@
 package ml.docilealligator.infinityforreddit.CustomTheme;
 
+import android.content.Context;
 import android.content.SharedPreferences;
 import android.graphics.Color;
 
+import java.util.ArrayList;
+
+import ml.docilealligator.infinityforreddit.R;
 import ml.docilealligator.infinityforreddit.Utils.CustomThemeSharedPreferencesUtils;
 
 import static ml.docilealligator.infinityforreddit.Utils.CustomThemeSharedPreferencesUtils.AMOLED;
@@ -345,7 +349,7 @@ public class CustomThemeWrapper {
 
     public int getFABIconColor() {
         return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.FAB_ICON_COLOR,
-                getDefaultColor("#1565C0", "#1565C0", "#1565C0"));
+                getDefaultColor("#FFFFFF", "#FFFFFF", "#FFFFFF"));
     }
 
     public int getChipTextColor() {
@@ -363,11 +367,243 @@ public class CustomThemeWrapper {
     }
 
     public boolean isLightNavBar() {
-        return getThemeSharedPreferences().getBoolean(CustomThemeSharedPreferencesUtils.LIGHT_NAV_BAR, true);
+        return getThemeSharedPreferences().getBoolean(CustomThemeSharedPreferencesUtils.LIGHT_NAV_BAR,
+                themeType == CustomThemeSharedPreferencesUtils.LIGHT);
     }
 
     public boolean isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface() {
         return getThemeSharedPreferences().getBoolean(
-                CustomThemeSharedPreferencesUtils.CHANGE_STATUS_BAR_ICON_COLOR_AFTER_TOOLBAR_COLLAPSED_IN_IMMERSIVE_INTERFACE, true);
+                CustomThemeSharedPreferencesUtils.CHANGE_STATUS_BAR_ICON_COLOR_AFTER_TOOLBAR_COLLAPSED_IN_IMMERSIVE_INTERFACE,
+                themeType == CustomThemeSharedPreferencesUtils.LIGHT);
+    }
+
+    public static ArrayList<CustomTheme> getPredifinedThemes(Context context) {
+        ArrayList<CustomTheme> customThemes = new ArrayList<>();
+        customThemes.add(getIndigo(context));
+        customThemes.add(getIndigoDark(context));
+        customThemes.add(getIndigoAmoled(context));
+        return customThemes;
+    }
+
+    public static CustomTheme getIndigo(Context context) {
+        CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_indigo));
+        customTheme.isLightTheme = true;
+        customTheme.isDarkTheme = false;
+        customTheme.isAmoledTheme = false;
+        customTheme.colorPrimary = Color.parseColor("#1565C0");
+        customTheme.colorPrimaryDark = Color.parseColor("#0D47A1");
+        customTheme.colorAccent = Color.parseColor("#FF4081");
+        customTheme.colorPrimaryLightTheme = Color.parseColor("#1565C0");
+        customTheme.primaryTextColor = Color.parseColor("#000000");
+        customTheme.secondaryTextColor = Color.parseColor("#8A000000");
+        customTheme.postTitleColor = Color.parseColor("#000000");
+        customTheme.postContentColor = Color.parseColor("#8A000000");
+        customTheme.commentColor = Color.parseColor("#000000");
+        customTheme.buttonTextColor = Color.parseColor("#FFFFFF");
+        customTheme.backgroundColor = Color.parseColor("#FFFFFF");
+        customTheme.cardViewBackgroundColor = Color.parseColor("#FFFFFF");
+        customTheme.commentBackgroundColor = Color.parseColor("#FFFFFF");
+        customTheme.bottomAppBarBackgroundColor = Color.parseColor("#FFFFFF");
+        customTheme.primaryIconColor = Color.parseColor("#000000");
+        customTheme.postIconAndInfoColor = Color.parseColor("#8A000000");
+        customTheme.commentIconAndInfoColor = Color.parseColor("#8A000000");
+        customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#FFFFFF");
+        customTheme.toolbarSecondaryTextColor = Color.parseColor("#FFFFFF");
+        customTheme.circularProgressBarBackground = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#1565C0");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#1565C0");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#1565C0");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#FFFFFF");
+        customTheme.upvoted = Color.parseColor("#E91E63");
+        customTheme.downvoted = Color.parseColor("#007DDE");
+        customTheme.postTypeBackgroundColor = Color.parseColor("#0D47A1");
+        customTheme.postTypeTextColor = Color.parseColor("#FFFFFF");
+        customTheme.spoilerBackgroundColor = Color.parseColor("#EE02EB");
+        customTheme.spoilerTextColor = Color.parseColor("#FFFFFF");
+        customTheme.nsfwBackgroundColor = Color.parseColor("#FF4081");
+        customTheme.nsfwTextColor = Color.parseColor("#FFFFFF");
+        customTheme.flairBackgroundColor = Color.parseColor("#00AA8C");
+        customTheme.flairTextColor = Color.parseColor("#FFFFFF");
+        customTheme.archivedTint = Color.parseColor("#B4009F");
+        customTheme.lockedIconTint = Color.parseColor("#EE7302");
+        customTheme.crosspostIconTint = Color.parseColor("#FF4081");
+        customTheme.stickiedPostIconTint = Color.parseColor("#0D47A1");
+        customTheme.subscribed = Color.parseColor("#FF4081");
+        customTheme.unsubscribed = Color.parseColor("#0D47A1");
+        customTheme.username = Color.parseColor("#0D47A1");
+        customTheme.subreddit = Color.parseColor("#E91E63");
+        customTheme.authorFlairTextColor = Color.parseColor("#EE02C4");
+        customTheme.submitter = Color.parseColor("#EE8A02");
+        customTheme.moderator = Color.parseColor("#00BA81");
+        customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#B3E5F9");
+        customTheme.unreadMessageBackgroundColor = Color.parseColor("#B3E5F9");
+        customTheme.dividerColor = Color.parseColor("#E0E0E0");
+        customTheme.noPreviewLinkBackgroundColor = Color.parseColor("#E0E0E0");
+        customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#F0F0F0");
+        customTheme.commentVerticalBarColor1 = Color.parseColor("#1565C0");
+        customTheme.commentVerticalBarColor2 = Color.parseColor("#EE02BE");
+        customTheme.commentVerticalBarColor3 = Color.parseColor("#02DFEE");
+        customTheme.commentVerticalBarColor4 = Color.parseColor("#EED502");
+        customTheme.commentVerticalBarColor5 = Color.parseColor("#EE0220");
+        customTheme.commentVerticalBarColor6 = Color.parseColor("#02EE6E");
+        customTheme.commentVerticalBarColor7 = Color.parseColor("#EE4602");
+        customTheme.fabIconColor = Color.parseColor("#FFFFFF");
+        customTheme.chipTextColor = Color.parseColor("#FFFFFF");
+        customTheme.navBarColor = Color.parseColor("#FFFFFF");
+        customTheme.isLightStatusBar = false;
+        customTheme.isLightNavBar = true;
+        customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = true;
+
+        return customTheme;
+    }
+
+    public static CustomTheme getIndigoDark(Context context) {
+        CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_indigo_dark));
+        customTheme.isLightTheme = false;
+        customTheme.isDarkTheme = true;
+        customTheme.isAmoledTheme = false;
+        customTheme.colorPrimary = Color.parseColor("#242424");
+        customTheme.colorPrimaryDark = Color.parseColor("#121212");
+        customTheme.colorAccent = Color.parseColor("#FF4081");
+        customTheme.colorPrimaryLightTheme = Color.parseColor("#1565C0");
+        customTheme.primaryTextColor = Color.parseColor("#FFFFFF");
+        customTheme.secondaryTextColor = Color.parseColor("#B3FFFFFF");
+        customTheme.postTitleColor = Color.parseColor("#FFFFFF");
+        customTheme.postContentColor = Color.parseColor("#B3FFFFFF");
+        customTheme.commentColor = Color.parseColor("#FFFFFF");
+        customTheme.buttonTextColor = Color.parseColor("#FFFFFF");
+        customTheme.backgroundColor = Color.parseColor("#121212");
+        customTheme.cardViewBackgroundColor = Color.parseColor("#242424");
+        customTheme.commentBackgroundColor = Color.parseColor("#242424");
+        customTheme.bottomAppBarBackgroundColor = Color.parseColor("#121212");
+        customTheme.primaryIconColor = Color.parseColor("#FFFFFF");
+        customTheme.postIconAndInfoColor = Color.parseColor("#B3FFFFFF");
+        customTheme.commentIconAndInfoColor = Color.parseColor("#B3FFFFFF");
+        customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#FFFFFF");
+        customTheme.toolbarSecondaryTextColor = Color.parseColor("#FFFFFF");
+        customTheme.circularProgressBarBackground = Color.parseColor("#242424");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#242424");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#242424");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#FFFFFF");
+        customTheme.upvoted = Color.parseColor("#E91E63");
+        customTheme.downvoted = Color.parseColor("#007DDE");
+        customTheme.postTypeBackgroundColor = Color.parseColor("#1565C0");
+        customTheme.postTypeTextColor = Color.parseColor("#FFFFFF");
+        customTheme.spoilerBackgroundColor = Color.parseColor("#EE02EB");
+        customTheme.spoilerTextColor = Color.parseColor("#FFFFFF");
+        customTheme.nsfwBackgroundColor = Color.parseColor("#FF4081");
+        customTheme.nsfwTextColor = Color.parseColor("#FFFFFF");
+        customTheme.flairBackgroundColor = Color.parseColor("#00AA8C");
+        customTheme.flairTextColor = Color.parseColor("#FFFFFF");
+        customTheme.archivedTint = Color.parseColor("#B4009F");
+        customTheme.lockedIconTint = Color.parseColor("#EE7302");
+        customTheme.crosspostIconTint = Color.parseColor("#FF4081");
+        customTheme.stickiedPostIconTint = Color.parseColor("#1565C0");
+        customTheme.subscribed = Color.parseColor("#FF4081");
+        customTheme.unsubscribed = Color.parseColor("#1565C0");
+        customTheme.username = Color.parseColor("#1E88E5");
+        customTheme.subreddit = Color.parseColor("#E91E63");
+        customTheme.authorFlairTextColor = Color.parseColor("#EE02C4");
+        customTheme.submitter = Color.parseColor("#EE8A02");
+        customTheme.moderator = Color.parseColor("#00BA81");
+        customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#123E77");
+        customTheme.unreadMessageBackgroundColor = Color.parseColor("#123E77");
+        customTheme.dividerColor = Color.parseColor("#69666C");
+        customTheme.noPreviewLinkBackgroundColor = Color.parseColor("#424242");
+        customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#3C3C3C");
+        customTheme.commentVerticalBarColor1 = Color.parseColor("#1565C0");
+        customTheme.commentVerticalBarColor2 = Color.parseColor("#C300B3");
+        customTheme.commentVerticalBarColor3 = Color.parseColor("#00B8DA");
+        customTheme.commentVerticalBarColor4 = Color.parseColor("#EDCA00");
+        customTheme.commentVerticalBarColor5 = Color.parseColor("#EE0219");
+        customTheme.commentVerticalBarColor6 = Color.parseColor("#00B925");
+        customTheme.commentVerticalBarColor7 = Color.parseColor("#EE4602");
+        customTheme.fabIconColor = Color.parseColor("#FFFFFF");
+        customTheme.chipTextColor = Color.parseColor("#FFFFFF");
+        customTheme.navBarColor = Color.parseColor("#121212");
+        customTheme.isLightStatusBar = false;
+        customTheme.isLightNavBar = false;
+        customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = false;
+
+        return customTheme;
+    }
+
+    public static CustomTheme getIndigoAmoled(Context context) {
+        CustomTheme customTheme = new CustomTheme(context.getString(R.string.theme_name_indigo_dark));
+        customTheme.isLightTheme = false;
+        customTheme.isDarkTheme = true;
+        customTheme.isAmoledTheme = false;
+        customTheme.colorPrimary = Color.parseColor("#000000");
+        customTheme.colorPrimaryDark = Color.parseColor("#000000");
+        customTheme.colorAccent = Color.parseColor("#FF4081");
+        customTheme.colorPrimaryLightTheme = Color.parseColor("#1565C0");
+        customTheme.primaryTextColor = Color.parseColor("#FFFFFF");
+        customTheme.secondaryTextColor = Color.parseColor("#B3FFFFFF");
+        customTheme.postTitleColor = Color.parseColor("#FFFFFF");
+        customTheme.postContentColor = Color.parseColor("#B3FFFFFF");
+        customTheme.commentColor = Color.parseColor("#FFFFFF");
+        customTheme.buttonTextColor = Color.parseColor("#FFFFFF");
+        customTheme.backgroundColor = Color.parseColor("#000000");
+        customTheme.cardViewBackgroundColor = Color.parseColor("#000000");
+        customTheme.commentBackgroundColor = Color.parseColor("#000000");
+        customTheme.bottomAppBarBackgroundColor = Color.parseColor("#000000");
+        customTheme.primaryIconColor = Color.parseColor("#FFFFFF");
+        customTheme.postIconAndInfoColor = Color.parseColor("#B3FFFFFF");
+        customTheme.commentIconAndInfoColor = Color.parseColor("#B3FFFFFF");
+        customTheme.toolbarPrimaryTextAndIconColor = Color.parseColor("#FFFFFF");
+        customTheme.toolbarSecondaryTextColor = Color.parseColor("#FFFFFF");
+        customTheme.circularProgressBarBackground = Color.parseColor("#000000");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground = Color.parseColor("#000000");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground = Color.parseColor("#000000");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor = Color.parseColor("#FFFFFF");
+        customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator = Color.parseColor("#FFFFFF");
+        customTheme.upvoted = Color.parseColor("#E91E63");
+        customTheme.downvoted = Color.parseColor("#007DDE");
+        customTheme.postTypeBackgroundColor = Color.parseColor("#1565C0");
+        customTheme.postTypeTextColor = Color.parseColor("#FFFFFF");
+        customTheme.spoilerBackgroundColor = Color.parseColor("#EE02EB");
+        customTheme.spoilerTextColor = Color.parseColor("#FFFFFF");
+        customTheme.nsfwBackgroundColor = Color.parseColor("#FF4081");
+        customTheme.nsfwTextColor = Color.parseColor("#FFFFFF");
+        customTheme.flairBackgroundColor = Color.parseColor("#00AA8C");
+        customTheme.flairTextColor = Color.parseColor("#FFFFFF");
+        customTheme.archivedTint = Color.parseColor("#B4009F");
+        customTheme.lockedIconTint = Color.parseColor("#EE7302");
+        customTheme.crosspostIconTint = Color.parseColor("#FF4081");
+        customTheme.stickiedPostIconTint = Color.parseColor("#1565C0");
+        customTheme.subscribed = Color.parseColor("#FF4081");
+        customTheme.unsubscribed = Color.parseColor("#1565C0");
+        customTheme.username = Color.parseColor("#1E88E5");
+        customTheme.subreddit = Color.parseColor("#E91E63");
+        customTheme.authorFlairTextColor = Color.parseColor("#EE02C4");
+        customTheme.submitter = Color.parseColor("#EE8A02");
+        customTheme.moderator = Color.parseColor("#00BA81");
+        customTheme.singleCommentThreadBackgroundColor = Color.parseColor("#123E77");
+        customTheme.unreadMessageBackgroundColor = Color.parseColor("#123E77");
+        customTheme.dividerColor = Color.parseColor("#69666C");
+        customTheme.noPreviewLinkBackgroundColor = Color.parseColor("#424242");
+        customTheme.voteAndReplyUnavailableButtonColor = Color.parseColor("#3C3C3C");
+        customTheme.commentVerticalBarColor1 = Color.parseColor("#1565C0");
+        customTheme.commentVerticalBarColor2 = Color.parseColor("#C300B3");
+        customTheme.commentVerticalBarColor3 = Color.parseColor("#00B8DA");
+        customTheme.commentVerticalBarColor4 = Color.parseColor("#EDCA00");
+        customTheme.commentVerticalBarColor5 = Color.parseColor("#EE0219");
+        customTheme.commentVerticalBarColor6 = Color.parseColor("#00B925");
+        customTheme.commentVerticalBarColor7 = Color.parseColor("#EE4602");
+        customTheme.fabIconColor = Color.parseColor("#FFFFFF");
+        customTheme.chipTextColor = Color.parseColor("#FFFFFF");
+        customTheme.navBarColor = Color.parseColor("#000000");
+        customTheme.isLightStatusBar = false;
+        customTheme.isLightNavBar = false;
+        customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface = false;
+
+        return customTheme;
     }
 }
-- 
cgit v1.2.3