mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-29 22:03:55 +01:00
Migrated ui and theme modules from Java to Kotlin (#5942)
* Rename .java to .kt * Migrated ui and theme module to Kotlin
This commit is contained in:
parent
cb4ffd8ca8
commit
ed18a37577
13 changed files with 230 additions and 245 deletions
|
|
@ -1,66 +0,0 @@
|
|||
package fr.free.nrw.commons.theme;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.WindowManager;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.di.CommonsDaggerAppCompatActivity;
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||
import fr.free.nrw.commons.utils.SystemThemeUtils;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
||||
public abstract class BaseActivity extends CommonsDaggerAppCompatActivity {
|
||||
@Inject
|
||||
@Named("default_preferences")
|
||||
public JsonKvStore defaultKvStore;
|
||||
|
||||
@Inject
|
||||
SystemThemeUtils systemThemeUtils;
|
||||
|
||||
protected CompositeDisposable compositeDisposable = new CompositeDisposable();
|
||||
protected boolean wasPreviouslyDarkTheme;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
wasPreviouslyDarkTheme = systemThemeUtils.isDeviceInNightMode();
|
||||
setTheme(wasPreviouslyDarkTheme ? R.style.DarkAppTheme : R.style.LightAppTheme);
|
||||
float fontScale = android.provider.Settings.System.getFloat(
|
||||
getBaseContext().getContentResolver(),
|
||||
android.provider.Settings.System.FONT_SCALE,
|
||||
1f);
|
||||
adjustFontScale(getResources().getConfiguration(), fontScale);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
// Restart activity if theme is changed
|
||||
if (wasPreviouslyDarkTheme != systemThemeUtils.isDeviceInNightMode()) {
|
||||
recreate();
|
||||
}
|
||||
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
compositeDisposable.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply fontScale on device
|
||||
*/
|
||||
public void adjustFontScale(Configuration configuration, float scale) {
|
||||
configuration.fontScale = scale;
|
||||
final DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||
final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
|
||||
wm.getDefaultDisplay().getMetrics(metrics);
|
||||
metrics.scaledDensity = configuration.fontScale * metrics.density;
|
||||
getBaseContext().getResources().updateConfiguration(configuration, metrics);
|
||||
}
|
||||
|
||||
}
|
||||
65
app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.kt
Normal file
65
app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.kt
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
package fr.free.nrw.commons.theme
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.WindowManager
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.di.CommonsDaggerAppCompatActivity
|
||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||
import fr.free.nrw.commons.utils.SystemThemeUtils
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
|
||||
|
||||
abstract class BaseActivity : CommonsDaggerAppCompatActivity() {
|
||||
|
||||
@Inject
|
||||
@field:Named("default_preferences")
|
||||
lateinit var defaultKvStore: JsonKvStore
|
||||
|
||||
@Inject
|
||||
lateinit var systemThemeUtils: SystemThemeUtils
|
||||
|
||||
protected val compositeDisposable = CompositeDisposable()
|
||||
protected var wasPreviouslyDarkTheme: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
wasPreviouslyDarkTheme = systemThemeUtils.isDeviceInNightMode()
|
||||
setTheme(if (wasPreviouslyDarkTheme) R.style.DarkAppTheme else R.style.LightAppTheme)
|
||||
|
||||
val fontScale = android.provider.Settings.System.getFloat(
|
||||
baseContext.contentResolver,
|
||||
android.provider.Settings.System.FONT_SCALE,
|
||||
1f
|
||||
)
|
||||
adjustFontScale(resources.configuration, fontScale)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
// Restart activity if theme is changed
|
||||
if (wasPreviouslyDarkTheme != systemThemeUtils.isDeviceInNightMode()) {
|
||||
recreate()
|
||||
}
|
||||
super.onResume()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
compositeDisposable.clear()
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply fontScale on device
|
||||
*/
|
||||
fun adjustFontScale(configuration: Configuration, scale: Float) {
|
||||
configuration.fontScale = scale
|
||||
val metrics = resources.displayMetrics
|
||||
val wm = getSystemService(WINDOW_SERVICE) as WindowManager
|
||||
wm.defaultDisplay.getMetrics(metrics)
|
||||
metrics.scaledDensity = configuration.fontScale * metrics.density
|
||||
baseContext.resources.updateConfiguration(configuration, metrics)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue