Added multiple theme support

This commit is contained in:
luca0N! 2021-03-17 18:38:43 -03:00
parent 5ac835ce0f
commit 3acbd9a4c7
Signed by: luca0N
GPG Key ID: 2E7B4655CF16D7D6
2 changed files with 51 additions and 40 deletions

View File

@ -35,48 +35,49 @@ import com.mikepenz.aboutlibraries.LibsBuilder;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.luca0n.joguitos.pluck.R; import com.luca0n.joguitos.pluck.R;
import com.luca0n.joguitos.pluck.settings.SettingsActivity; import com.luca0n.joguitos.pluck.settings.SettingsActivity;
import com.luca0n.joguitos.pluck.util.UiUtil;
@SuppressLint("Registered") @SuppressLint("Registered")
public class BaseActivity extends AppCompatActivity { public class BaseActivity extends AppCompatActivity {
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater(); MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.app_menu, menu); inflater.inflate(R.menu.app_menu, menu);
return true; return true;
} }
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.settings: case R.id.settings:
onSettings(); onSettings();
return true; return true;
case R.id.about: case R.id.about:
onAbout(); onAbout();
return true; return true;
case android.R.id.home: case android.R.id.home:
onBackPressed(); onBackPressed();
default: default:
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
} }
private void onSettings() { private void onSettings() {
Intent intent = new Intent(this, SettingsActivity.class); Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent); startActivity(intent);
} }
private void onAbout() { private void onAbout() {
String appName = getResources().getString(R.string.app_name); String appName = getResources().getString(R.string.app_name);
String appDescription = getResources().getString(R.string.app_description); String appDescription = getResources().getString(R.string.app_description);
new LibsBuilder() new LibsBuilder()
.withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR) .withActivityStyle(UiUtil.getTheme(this).equals(getString(R.string.pref_ui_theme_entryValues_dark)) ? Libs.ActivityStyle.DARK : Libs.ActivityStyle.LIGHT)
.withAboutIconShown(true) .withAboutIconShown(true)
.withAboutAppName(appName) .withAboutAppName(appName)
.withAboutVersionShownName(true) .withAboutVersionShownName(true)
.withAboutDescription(appDescription) .withAboutDescription(appDescription)
.start(this); .start(this);
} }
} }

View File

@ -38,14 +38,24 @@ public class UiUtil {
public static void setTheme(Context context){ public static void setTheme(Context context){
SharedPreferences s = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()); SharedPreferences s = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
String light = context.getString(R.string.pref_ui_theme_entryValues_light), String dark = context.getString(R.string.pref_ui_theme_entryValues_dark),
dark = context.getString(R.string.pref_ui_theme_entryValues_dark), theme = getTheme(context);
themeKey = context.getString(R.string.pref_ui_theme),
theme = s.getString(themeKey, light);
if (theme.equals(dark)) if (theme.equals(dark))
context.setTheme(R.style.AppTheme_Dark); context.setTheme(R.style.AppTheme_Dark);
else else
context.setTheme(R.style.AppTheme); context.setTheme(R.style.AppTheme);
} }
/**
* @return The app theme selected by the user.
* @param context The activity context.
* @since 2021-03-17
*/
public static String getTheme(Context context){
SharedPreferences s = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
String themeKey = context.getString(R.string.pref_ui_theme),
themeLight = context.getString(R.string.pref_ui_theme_entryValues_light);
return s.getString(themeKey, themeLight);
}
} }