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:
Saifuddin Adenwala 2024-11-20 19:25:13 +05:30 committed by GitHub
parent cb4ffd8ca8
commit ed18a37577
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 230 additions and 245 deletions

View file

@ -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);
}
}

View 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)
}
}