mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 11:17:25 +01:00
Support orientation change in CustomizeThemeActivity.
This commit is contained in:
parent
c827d6f1cd
commit
9c4889b1b0
@ -9,13 +9,13 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.lifecycle.LiveData;
|
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -30,6 +30,7 @@ import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
|||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeSettingsItem;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeSettingsItem;
|
||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeViewModel;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.RecreateActivityEvent;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
@ -38,10 +39,11 @@ import ml.docilealligator.infinityforreddit.Utils.CustomThemeSharedPreferencesUt
|
|||||||
public class CustomizeThemeActivity extends BaseActivity {
|
public class CustomizeThemeActivity extends BaseActivity {
|
||||||
|
|
||||||
public static final String EXTRA_THEME_TYPE = "ETT";
|
public static final String EXTRA_THEME_TYPE = "ETT";
|
||||||
public static final int EXTRA_LIGHT_THEME = 0;
|
public static final int EXTRA_LIGHT_THEME = CustomThemeSharedPreferencesUtils.LIGHT;
|
||||||
public static final int EXTRA_DARK_THEME = 1;
|
public static final int EXTRA_DARK_THEME = CustomThemeSharedPreferencesUtils.DARK;
|
||||||
public static final int EXTRA_AMOLED_THEME = 2;
|
public static final int EXTRA_AMOLED_THEME = CustomThemeSharedPreferencesUtils.AMOLED;
|
||||||
public static final String EXTRA_THEME_NAME = "ETN";
|
public static final String EXTRA_THEME_NAME = "ETN";
|
||||||
|
private static final String CUSTOM_THEME_SETTINGS_ITEMS_STATE = "CTSIS";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_customize_theme_activity)
|
@BindView(R.id.appbar_layout_customize_theme_activity)
|
||||||
AppBarLayout appBarLayout;
|
AppBarLayout appBarLayout;
|
||||||
@ -53,6 +55,15 @@ public class CustomizeThemeActivity extends BaseActivity {
|
|||||||
@Named("default")
|
@Named("default")
|
||||||
SharedPreferences sharedPreferences;
|
SharedPreferences sharedPreferences;
|
||||||
@Inject
|
@Inject
|
||||||
|
@Named("light_theme")
|
||||||
|
SharedPreferences lightThemeSharedPreferences;
|
||||||
|
@Inject
|
||||||
|
@Named("dark_theme")
|
||||||
|
SharedPreferences darkThemeSharedPreferences;
|
||||||
|
@Inject
|
||||||
|
@Named("amoled_theme")
|
||||||
|
SharedPreferences amoledThemeSharedPreferences;
|
||||||
|
@Inject
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
@Inject
|
@Inject
|
||||||
CustomThemeWrapper customThemeWrapper;
|
CustomThemeWrapper customThemeWrapper;
|
||||||
@ -82,30 +93,17 @@ public class CustomizeThemeActivity extends BaseActivity {
|
|||||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
recyclerView.setAdapter(adapter);
|
recyclerView.setAdapter(adapter);
|
||||||
|
|
||||||
customThemeSettingsItems = new ArrayList<>();
|
if (savedInstanceState != null) {
|
||||||
|
customThemeSettingsItems = savedInstanceState.getParcelableArrayList(CUSTOM_THEME_SETTINGS_ITEMS_STATE);
|
||||||
int androidVersion = Build.VERSION.SDK_INT;
|
|
||||||
if (getIntent().hasExtra(EXTRA_THEME_TYPE)) {
|
|
||||||
customThemeViewModel = new ViewModelProvider(this, new CustomThemeViewModel.Factory(redditDataRoomDatabase))
|
|
||||||
.get(CustomThemeViewModel.class);
|
|
||||||
LiveData<CustomTheme> customThemeLiveData;
|
|
||||||
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 -> {
|
int androidVersion = Build.VERSION.SDK_INT;
|
||||||
|
|
||||||
|
if (customThemeSettingsItems == null) {
|
||||||
|
if (getIntent().hasExtra(EXTRA_THEME_TYPE)) {
|
||||||
|
themeType = getIntent().getIntExtra(EXTRA_THEME_TYPE, EXTRA_LIGHT_THEME);
|
||||||
|
|
||||||
|
new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeType, customTheme -> {
|
||||||
if (customTheme == null) {
|
if (customTheme == null) {
|
||||||
switch (themeType) {
|
switch (themeType) {
|
||||||
case EXTRA_DARK_THEME:
|
case EXTRA_DARK_THEME:
|
||||||
@ -135,16 +133,39 @@ public class CustomizeThemeActivity extends BaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
|
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
|
||||||
});
|
}).execute();
|
||||||
|
|
||||||
|
switch (themeType) {
|
||||||
|
case EXTRA_DARK_THEME:
|
||||||
|
setTitle(getString(R.string.customize_dark_theme_fragment_title));
|
||||||
|
break;
|
||||||
|
case EXTRA_AMOLED_THEME:
|
||||||
|
setTitle(getString(R.string.customize_amoled_theme_fragment_title));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setTitle(getString(R.string.customize_light_theme_fragment_title));
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
themeName = getIntent().getStringExtra(EXTRA_THEME_NAME);
|
themeName = getIntent().getStringExtra(EXTRA_THEME_NAME);
|
||||||
setTitle(themeName);
|
setTitle(themeName);
|
||||||
new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeName,
|
new GetCustomThemeAsyncTask(redditDataRoomDatabase, themeName,
|
||||||
customTheme -> {
|
customTheme -> {
|
||||||
customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(CustomizeThemeActivity.this, customTheme);
|
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);
|
||||||
|
}
|
||||||
|
if (androidVersion < Build.VERSION_CODES.M) {
|
||||||
|
customThemeSettingsItems.get(customThemeSettingsItems.size() - 3).itemDetails = getString(R.string.theme_item_available_on_android_6);
|
||||||
|
}
|
||||||
|
|
||||||
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
|
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
|
||||||
}).execute();
|
}).execute();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -181,22 +202,32 @@ public class CustomizeThemeActivity extends BaseActivity {
|
|||||||
customTheme.isLightTheme = false;
|
customTheme.isLightTheme = false;
|
||||||
customTheme.isDarkTheme = true;
|
customTheme.isDarkTheme = true;
|
||||||
customTheme.isAmoledTheme = false;
|
customTheme.isAmoledTheme = false;
|
||||||
|
new InsertCustomThemeAsyncTask(redditDataRoomDatabase, darkThemeSharedPreferences, customTheme, () -> {
|
||||||
|
Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
|
||||||
|
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||||
|
finish();
|
||||||
|
}).execute();
|
||||||
break;
|
break;
|
||||||
case CustomThemeSharedPreferencesUtils.AMOLED:
|
case CustomThemeSharedPreferencesUtils.AMOLED:
|
||||||
customTheme.isLightTheme = false;
|
customTheme.isLightTheme = false;
|
||||||
customTheme.isDarkTheme = false;
|
customTheme.isDarkTheme = false;
|
||||||
customTheme.isAmoledTheme = true;
|
customTheme.isAmoledTheme = true;
|
||||||
|
new InsertCustomThemeAsyncTask(redditDataRoomDatabase, amoledThemeSharedPreferences, customTheme, () -> {
|
||||||
|
Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
|
||||||
|
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||||
|
finish();
|
||||||
|
}).execute();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
customTheme.isLightTheme = true;
|
customTheme.isLightTheme = true;
|
||||||
customTheme.isDarkTheme = false;
|
customTheme.isDarkTheme = false;
|
||||||
customTheme.isAmoledTheme = false;
|
customTheme.isAmoledTheme = false;
|
||||||
}
|
new InsertCustomThemeAsyncTask(redditDataRoomDatabase, lightThemeSharedPreferences, customTheme, () -> {
|
||||||
|
|
||||||
new InsertCustomThemeAsyncTask(redditDataRoomDatabase, customTheme, () -> {
|
|
||||||
Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
|
Toast.makeText(CustomizeThemeActivity.this, R.string.saved, Toast.LENGTH_SHORT).show();
|
||||||
|
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||||
finish();
|
finish();
|
||||||
}).execute();
|
}).execute();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -204,6 +235,12 @@ public class CustomizeThemeActivity extends BaseActivity {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
outState.putParcelableArrayList(CUSTOM_THEME_SETTINGS_ITEMS_STATE, customThemeSettingsItems);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SharedPreferences getSharedPreferences() {
|
protected SharedPreferences getSharedPreferences() {
|
||||||
return sharedPreferences;
|
return sharedPreferences;
|
||||||
|
@ -13,12 +13,16 @@ import androidx.preference.PreferenceFragmentCompat;
|
|||||||
|
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
|
|
||||||
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.RecreateActivityEvent;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.Settings.AboutPreferenceFragment;
|
import ml.docilealligator.infinityforreddit.Settings.AboutPreferenceFragment;
|
||||||
@ -53,6 +57,8 @@ public class SettingsActivity extends BaseActivity implements
|
|||||||
|
|
||||||
ButterKnife.bind(this);
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
applyCustomTheme();
|
applyCustomTheme();
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
|
||||||
@ -136,4 +142,15 @@ public class SettingsActivity extends BaseActivity implements
|
|||||||
setTitle(pref.getTitle());
|
setTitle(pref.getTitle());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
EventBus.getDefault().unregister(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onRecreateActivityEvent(RecreateActivityEvent recreateActivityEvent) {
|
||||||
|
recreate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,10 +4,12 @@ import android.os.AsyncTask;
|
|||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
import ml.docilealligator.infinityforreddit.Utils.CustomThemeSharedPreferencesUtils;
|
||||||
|
|
||||||
public class GetCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class GetCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private String customThemeName;
|
private String customThemeName;
|
||||||
|
private int themeType;
|
||||||
private GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener;
|
private GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener;
|
||||||
private CustomTheme customTheme;
|
private CustomTheme customTheme;
|
||||||
|
|
||||||
@ -23,9 +25,30 @@ public class GetCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
|
this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GetCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
|
int themeType,
|
||||||
|
GetCustomThemeAsyncTaskListener getCustomThemeAsyncTaskListener) {
|
||||||
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
|
this.themeType = themeType;
|
||||||
|
this.getCustomThemeAsyncTaskListener = getCustomThemeAsyncTaskListener;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
|
if (customThemeName != null) {
|
||||||
customTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customThemeName);
|
customTheme = redditDataRoomDatabase.customThemeDao().getCustomTheme(customThemeName);
|
||||||
|
} else {
|
||||||
|
switch (themeType) {
|
||||||
|
case CustomThemeSharedPreferencesUtils.DARK:
|
||||||
|
customTheme = redditDataRoomDatabase.customThemeDao().getDarkCustomTheme();
|
||||||
|
break;
|
||||||
|
case CustomThemeSharedPreferencesUtils.AMOLED:
|
||||||
|
customTheme = redditDataRoomDatabase.customThemeDao().getAmoledCustomTheme();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
customTheme = redditDataRoomDatabase.customThemeDao().getLightCustomTheme();
|
||||||
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,27 @@
|
|||||||
package ml.docilealligator.infinityforreddit.AsyncTask;
|
package ml.docilealligator.infinityforreddit.AsyncTask;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
import ml.docilealligator.infinityforreddit.Utils.CustomThemeSharedPreferencesUtils;
|
||||||
|
|
||||||
public class InsertCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class InsertCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener;
|
private SharedPreferences themeSharedPreferences;
|
||||||
private CustomTheme customTheme;
|
private CustomTheme customTheme;
|
||||||
|
private InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener;
|
||||||
|
|
||||||
public interface InsertCustomThemeAsyncTaskListener {
|
public interface InsertCustomThemeAsyncTaskListener {
|
||||||
void success();
|
void success();
|
||||||
}
|
}
|
||||||
|
|
||||||
public InsertCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, CustomTheme customTheme,
|
public InsertCustomThemeAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
|
SharedPreferences themeSharedPreferences, CustomTheme customTheme,
|
||||||
InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener) {
|
InsertCustomThemeAsyncTaskListener insertCustomThemeAsyncTaskListener) {
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
|
this.themeSharedPreferences = themeSharedPreferences;
|
||||||
this.customTheme = customTheme;
|
this.customTheme = customTheme;
|
||||||
this.insertCustomThemeAsyncTaskListener = insertCustomThemeAsyncTaskListener;
|
this.insertCustomThemeAsyncTaskListener = insertCustomThemeAsyncTaskListener;
|
||||||
}
|
}
|
||||||
@ -24,6 +29,7 @@ public class InsertCustomThemeAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
redditDataRoomDatabase.customThemeDao().insert(customTheme);
|
redditDataRoomDatabase.customThemeDao().insert(customTheme);
|
||||||
|
CustomThemeSharedPreferencesUtils.insertThemeToSharedPreferences(customTheme, themeSharedPreferences);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,13 +17,13 @@ public interface CustomThemeDao {
|
|||||||
LiveData<List<CustomTheme>> getAllCustomThemes();
|
LiveData<List<CustomTheme>> getAllCustomThemes();
|
||||||
|
|
||||||
@Query("SELECT * FROM custom_themes WHERE is_light_theme = 1 LIMIT 1")
|
@Query("SELECT * FROM custom_themes WHERE is_light_theme = 1 LIMIT 1")
|
||||||
LiveData<CustomTheme> getLightCustomTheme();
|
CustomTheme getLightCustomTheme();
|
||||||
|
|
||||||
@Query("SELECT * FROM custom_themes WHERE is_dark_theme = 1 LIMIT 1")
|
@Query("SELECT * FROM custom_themes WHERE is_dark_theme = 1 LIMIT 1")
|
||||||
LiveData<CustomTheme> getDarkCustomTheme();
|
CustomTheme getDarkCustomTheme();
|
||||||
|
|
||||||
@Query("SELECT * FROM custom_themes WHERE is_amoled_theme = 1 LIMIT 1")
|
@Query("SELECT * FROM custom_themes WHERE is_amoled_theme = 1 LIMIT 1")
|
||||||
LiveData<CustomTheme> getAmoledCustomTheme();
|
CustomTheme getAmoledCustomTheme();
|
||||||
|
|
||||||
@Query("SELECT * FROM custom_themes WHERE name = :name COLLATE NOCASE LIMIT 1")
|
@Query("SELECT * FROM custom_themes WHERE name = :name COLLATE NOCASE LIMIT 1")
|
||||||
CustomTheme getCustomTheme(String name);
|
CustomTheme getCustomTheme(String name);
|
||||||
|
@ -8,30 +8,12 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|||||||
|
|
||||||
public class CustomThemeRepository {
|
public class CustomThemeRepository {
|
||||||
private LiveData<List<CustomTheme>> mAllCustomThemes;
|
private LiveData<List<CustomTheme>> mAllCustomThemes;
|
||||||
private LiveData<CustomTheme> mLightCustomTheme;
|
|
||||||
private LiveData<CustomTheme> mDarkCustomTheme;
|
|
||||||
private LiveData<CustomTheme> mAmoledCustomTheme;
|
|
||||||
|
|
||||||
CustomThemeRepository(RedditDataRoomDatabase redditDataRoomDatabase) {
|
CustomThemeRepository(RedditDataRoomDatabase redditDataRoomDatabase) {
|
||||||
mAllCustomThemes = redditDataRoomDatabase.customThemeDao().getAllCustomThemes();
|
mAllCustomThemes = redditDataRoomDatabase.customThemeDao().getAllCustomThemes();
|
||||||
mLightCustomTheme = redditDataRoomDatabase.customThemeDao().getLightCustomTheme();
|
|
||||||
mDarkCustomTheme = redditDataRoomDatabase.customThemeDao().getDarkCustomTheme();
|
|
||||||
mAmoledCustomTheme = redditDataRoomDatabase.customThemeDao().getAmoledCustomTheme();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LiveData<List<CustomTheme>> getAllCustomThemes() {
|
LiveData<List<CustomTheme>> getAllCustomThemes() {
|
||||||
return mAllCustomThemes;
|
return mAllCustomThemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<CustomTheme> getLightCustomTheme() {
|
|
||||||
return mLightCustomTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LiveData<CustomTheme> getDarkCustomTheme() {
|
|
||||||
return mDarkCustomTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LiveData<CustomTheme> getAmoledCustomTheme() {
|
|
||||||
return mAmoledCustomTheme;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
package ml.docilealligator.infinityforreddit.CustomTheme;
|
package ml.docilealligator.infinityforreddit.CustomTheme;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
|
|
||||||
public class CustomThemeSettingsItem {
|
public class CustomThemeSettingsItem implements Parcelable {
|
||||||
public String itemName;
|
public String itemName;
|
||||||
public String itemDetails;
|
public String itemDetails;
|
||||||
public int colorValue;
|
public int colorValue;
|
||||||
@ -23,6 +25,25 @@ public class CustomThemeSettingsItem {
|
|||||||
this.isEnabled = isEnabled;
|
this.isEnabled = isEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CustomThemeSettingsItem(Parcel in) {
|
||||||
|
itemName = in.readString();
|
||||||
|
itemDetails = in.readString();
|
||||||
|
colorValue = in.readInt();
|
||||||
|
isEnabled = in.readByte() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Creator<CustomThemeSettingsItem> CREATOR = new Creator<CustomThemeSettingsItem>() {
|
||||||
|
@Override
|
||||||
|
public CustomThemeSettingsItem createFromParcel(Parcel in) {
|
||||||
|
return new CustomThemeSettingsItem(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CustomThemeSettingsItem[] newArray(int size) {
|
||||||
|
return new CustomThemeSettingsItem[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public static ArrayList<CustomThemeSettingsItem> convertCustomThemeToSettingsItem(Context context, CustomTheme customTheme) {
|
public static ArrayList<CustomThemeSettingsItem> convertCustomThemeToSettingsItem(Context context, CustomTheme customTheme) {
|
||||||
ArrayList<CustomThemeSettingsItem> customThemeSettingsItems = new ArrayList<>();
|
ArrayList<CustomThemeSettingsItem> customThemeSettingsItems = new ArrayList<>();
|
||||||
|
|
||||||
@ -289,4 +310,17 @@ public class CustomThemeSettingsItem {
|
|||||||
customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface));
|
customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface));
|
||||||
return customThemeSettingsItems;
|
return customThemeSettingsItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel parcel, int i) {
|
||||||
|
parcel.writeString(itemName);
|
||||||
|
parcel.writeString(itemDetails);
|
||||||
|
parcel.writeInt(colorValue);
|
||||||
|
parcel.writeByte((byte) (isEnabled ? 1 : 0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,34 +11,16 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|||||||
|
|
||||||
public class CustomThemeViewModel extends ViewModel {
|
public class CustomThemeViewModel extends ViewModel {
|
||||||
private LiveData<List<CustomTheme>> mAllCustomThemes;
|
private LiveData<List<CustomTheme>> mAllCustomThemes;
|
||||||
private LiveData<CustomTheme> mLightCustomTheme;
|
|
||||||
private LiveData<CustomTheme> mDarkCustomTheme;
|
|
||||||
private LiveData<CustomTheme> mAmoledCustomTheme;
|
|
||||||
|
|
||||||
public CustomThemeViewModel(RedditDataRoomDatabase redditDataRoomDatabase) {
|
public CustomThemeViewModel(RedditDataRoomDatabase redditDataRoomDatabase) {
|
||||||
CustomThemeRepository customThemeRepository = new CustomThemeRepository(redditDataRoomDatabase);
|
CustomThemeRepository customThemeRepository = new CustomThemeRepository(redditDataRoomDatabase);
|
||||||
mAllCustomThemes = customThemeRepository.getAllCustomThemes();
|
mAllCustomThemes = customThemeRepository.getAllCustomThemes();
|
||||||
mLightCustomTheme = customThemeRepository.getLightCustomTheme();
|
|
||||||
mDarkCustomTheme = customThemeRepository.getDarkCustomTheme();
|
|
||||||
mAmoledCustomTheme = customThemeRepository.getAmoledCustomTheme();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<List<CustomTheme>> getAllCustomThemes() {
|
public LiveData<List<CustomTheme>> getAllCustomThemes() {
|
||||||
return mAllCustomThemes;
|
return mAllCustomThemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LiveData<CustomTheme> getLightCustomTheme() {
|
|
||||||
return mLightCustomTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LiveData<CustomTheme> getDarkCustomTheme() {
|
|
||||||
return mDarkCustomTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LiveData<CustomTheme> getAmoledCustomTheme() {
|
|
||||||
return mAmoledCustomTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||||
private RedditDataRoomDatabase mRedditDataRoomDatabase;
|
private RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
|
||||||
|
@ -288,7 +288,7 @@ public class CustomThemeWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getSingleCommentThreadBackgroundColor() {
|
public int getSingleCommentThreadBackgroundColor() {
|
||||||
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SINGLE_COMMENT_THREAD_BACKGROUND,
|
return getThemeSharedPreferences().getInt(CustomThemeSharedPreferencesUtils.SINGLE_COMMENT_THREAD_BACKGROUND_COLOR,
|
||||||
getDefaultColor("#B3E5F9", "#123E77", "#123E77"));
|
getDefaultColor("#B3E5F9", "#123E77", "#123E77"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package ml.docilealligator.infinityforreddit.Utils;
|
package ml.docilealligator.infinityforreddit.Utils;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.CustomTheme.CustomTheme;
|
||||||
|
|
||||||
public class CustomThemeSharedPreferencesUtils {
|
public class CustomThemeSharedPreferencesUtils {
|
||||||
public static final int LIGHT = 0;
|
public static final int LIGHT = 0;
|
||||||
public static final int DARK = 1;
|
public static final int DARK = 1;
|
||||||
@ -58,7 +62,7 @@ public class CustomThemeSharedPreferencesUtils {
|
|||||||
public static final String AUTHOR_FLAIR_TEXT_COLOR = "authorFlairTextColor";
|
public static final String AUTHOR_FLAIR_TEXT_COLOR = "authorFlairTextColor";
|
||||||
public static final String SUBMITTER = "submitter";
|
public static final String SUBMITTER = "submitter";
|
||||||
public static final String MODERATOR = "moderator";
|
public static final String MODERATOR = "moderator";
|
||||||
public static final String SINGLE_COMMENT_THREAD_BACKGROUND = "singleCommentThreadBackgroundColor";
|
public static final String SINGLE_COMMENT_THREAD_BACKGROUND_COLOR = "singleCommentThreadBackgroundColor";
|
||||||
public static final String UNREAD_MESSAGE_BACKGROUND_COLOR = "unreadMessageBackgroundColor";
|
public static final String UNREAD_MESSAGE_BACKGROUND_COLOR = "unreadMessageBackgroundColor";
|
||||||
public static final String DIVIDER_COLOR = "dividerColor";
|
public static final String DIVIDER_COLOR = "dividerColor";
|
||||||
public static final String NO_PREVIEW_LINK_BACKGROUND_COLOR = "noPreviewLinkBackgroundColor";
|
public static final String NO_PREVIEW_LINK_BACKGROUND_COLOR = "noPreviewLinkBackgroundColor";
|
||||||
@ -72,4 +76,74 @@ public class CustomThemeSharedPreferencesUtils {
|
|||||||
public static final String COMMENT_VERTICAL_BAR_COLOR_7 = "commentVerticalBarColor7";
|
public static final String COMMENT_VERTICAL_BAR_COLOR_7 = "commentVerticalBarColor7";
|
||||||
public static final String FAB_ICON_COLOR = "fabIconColor";
|
public static final String FAB_ICON_COLOR = "fabIconColor";
|
||||||
public static final String CHIP_TEXT_COLOR = "chipTextColor";
|
public static final String CHIP_TEXT_COLOR = "chipTextColor";
|
||||||
|
|
||||||
|
public static void insertThemeToSharedPreferences(CustomTheme customTheme, SharedPreferences themeSharedPreferences) {
|
||||||
|
SharedPreferences.Editor editor = themeSharedPreferences.edit();
|
||||||
|
editor.putInt(COLOR_PRIMARY, customTheme.colorPrimary);
|
||||||
|
editor.putInt(COLOR_PRIMARY_DARK, customTheme.colorPrimaryDark);
|
||||||
|
editor.putInt(COLOR_ACCENT, customTheme.colorAccent);
|
||||||
|
editor.putInt(COLOR_PRIMARY_LIGHT_THEME, customTheme.colorPrimaryLightTheme);
|
||||||
|
editor.putInt(PRIMARY_TEXT_COLOR, customTheme.primaryTextColor);
|
||||||
|
editor.putInt(SECONDARY_TEXT_COLOR, customTheme.secondaryTextColor);
|
||||||
|
editor.putInt(POST_TITLE_COLOR, customTheme.postTitleColor);
|
||||||
|
editor.putInt(POST_CONTENT_COLOR, customTheme.postContentColor);
|
||||||
|
editor.putInt(COMMENT_COLOR, customTheme.commentColor);
|
||||||
|
editor.putInt(BUTTON_TEXT_COLOR, customTheme.buttonTextColor);
|
||||||
|
editor.putInt(BACKGROUND_COLOR, customTheme.backgroundColor);
|
||||||
|
editor.putInt(CARD_VIEW_BACKGROUND_COLOR, customTheme.cardViewBackgroundColor);
|
||||||
|
editor.putInt(COMMENT_BACKGROUND_COLOR, customTheme.commentBackgroundColor);
|
||||||
|
editor.putInt(BOTTOM_APP_BAR_BACKGROUND_COLOR, customTheme.bottomAppBarBackgroundColor);
|
||||||
|
editor.putInt(PRIMARY_ICON_COLOR, customTheme.primaryIconColor);
|
||||||
|
editor.putInt(POST_ICON_AND_INFO_COLOR, customTheme.postIconAndInfoColor);
|
||||||
|
editor.putInt(COMMENT_ICON_AND_INFO_COLOR, customTheme.commentIconAndInfoColor);
|
||||||
|
editor.putInt(TOOLBAR_PRIMARY_TEXT_AND_ICON_COLOR, customTheme.toolbarPrimaryTextAndIconColor);
|
||||||
|
editor.putInt(TOOLBAR_SECONDARY_TEXT_COLOR, customTheme.toolbarSecondaryTextColor);
|
||||||
|
editor.putInt(CIRCULAR_PROGRESS_BAR_BACKGROUND, customTheme.circularProgressBarBackground);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TAB_BACKGROUND, customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TEXT_COLOR, customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_EXPANDED_COLLAPSING_TOOLBAR_TAB_INDICATOR, customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TAB_BACKGROUND, customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TEXT_COLOR, customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor);
|
||||||
|
editor.putInt(TAB_LAYOUT_WITH_COLLAPSED_COLLAPSING_TOOLBAR_TAB_INDICATOR, customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator);
|
||||||
|
editor.putInt(NAV_BAR_COLOR, customTheme.navBarColor);
|
||||||
|
editor.putInt(UPVOTED, customTheme.upvoted);
|
||||||
|
editor.putInt(DOWNVOTED, customTheme.downvoted);
|
||||||
|
editor.putInt(POST_TYPE_BACKGROUND_COLOR, customTheme.postTypeBackgroundColor);
|
||||||
|
editor.putInt(POST_TYPE_TEXT_COLOR, customTheme.postTypeTextColor);
|
||||||
|
editor.putInt(SPOILER_BACKGROUND_COLOR, customTheme.spoilerBackgroundColor);
|
||||||
|
editor.putInt(SPOILER_TEXT_COLOR, customTheme.spoilerTextColor);
|
||||||
|
editor.putInt(NSFW_BACKGROUND_COLOR, customTheme.nsfwBackgroundColor);
|
||||||
|
editor.putInt(NSFW_TEXT_COLOR, customTheme.nsfwTextColor);
|
||||||
|
editor.putInt(FLAIR_BACKGROUND_COLOR, customTheme.flairBackgroundColor);
|
||||||
|
editor.putInt(FLAIR_TEXT_COLOR, customTheme.flairTextColor);
|
||||||
|
editor.putInt(ARCHIVED_ICON_TINT, customTheme.archivedTint);
|
||||||
|
editor.putInt(LOCKED_ICON_TINT, customTheme.lockedIconTint);
|
||||||
|
editor.putInt(CROSSPOST_ICON_TINT, customTheme.crosspostIconTint);
|
||||||
|
editor.putInt(STICKIED_POST_ICON_TINT, customTheme.stickiedPostIconTint);
|
||||||
|
editor.putInt(SUBSCRIBED, customTheme.subscribed);
|
||||||
|
editor.putInt(UNSUBSCRIBED, customTheme.unsubscribed);
|
||||||
|
editor.putInt(USERNAME, customTheme.username);
|
||||||
|
editor.putInt(SUBREDDIT, customTheme.subreddit);
|
||||||
|
editor.putInt(AUTHOR_FLAIR_TEXT_COLOR, customTheme.authorFlairTextColor);
|
||||||
|
editor.putInt(SUBMITTER, customTheme.submitter);
|
||||||
|
editor.putInt(MODERATOR, customTheme.moderator);
|
||||||
|
editor.putInt(SINGLE_COMMENT_THREAD_BACKGROUND_COLOR, customTheme.singleCommentThreadBackgroundColor);
|
||||||
|
editor.putInt(UNREAD_MESSAGE_BACKGROUND_COLOR, customTheme.unreadMessageBackgroundColor);
|
||||||
|
editor.putInt(DIVIDER_COLOR, customTheme.dividerColor);
|
||||||
|
editor.putInt(NO_PREVIEW_LINK_BACKGROUND_COLOR, customTheme.noPreviewLinkBackgroundColor);
|
||||||
|
editor.putInt(VOTE_AND_REPLY_UNAVAILABLE_BUTTON_COLOR, customTheme.voteAndReplyUnavailableButtonColor);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_1, customTheme.commentVerticalBarColor1);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_2, customTheme.commentVerticalBarColor2);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_3, customTheme.commentVerticalBarColor3);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_4, customTheme.commentVerticalBarColor4);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_5, customTheme.commentVerticalBarColor5);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_6, customTheme.commentVerticalBarColor6);
|
||||||
|
editor.putInt(COMMENT_VERTICAL_BAR_COLOR_7, customTheme.commentVerticalBarColor7);
|
||||||
|
editor.putInt(FAB_ICON_COLOR, customTheme.fabIconColor);
|
||||||
|
editor.putInt(CHIP_TEXT_COLOR, customTheme.chipTextColor);
|
||||||
|
editor.putBoolean(LIGHT_STATUS_BAR, customTheme.isLightStatusBar);
|
||||||
|
editor.putBoolean(LIGHT_NAV_BAR, customTheme.isLightNavBar);
|
||||||
|
editor.putBoolean(CHANGE_STATUS_BAR_ICON_COLOR_AFTER_TOOLBAR_COLLAPSED_IN_IMMERSIVE_INTERFACE, customTheme.isChangeStatusBarIconColorAfterToolbarCollapsedInImmersiveInterface);
|
||||||
|
editor.apply();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user