diff --git a/app/build.gradle b/app/build.gradle
index 6b56ffa..91a2cd4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -56,6 +56,9 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.github.doyaaaaaken:kotlin-csv-jvm:0.7.3'
implementation "androidx.cardview:cardview:1.0.0"
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.0.0'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.0.0'
+ implementation 'androidx.preference:preference:1.1.0-rc01'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2f3f481..7df836f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,9 +20,10 @@
-
-
+
AppCompatDelegate.MODE_NIGHT_NO
+ 1 -> AppCompatDelegate.MODE_NIGHT_YES
+ 2 -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
+ else -> AppCompatDelegate.MODE_NIGHT_UNSPECIFIED
+ })
+
+ return super.callChangeListener(newValue)
+ }
+
+ override fun setValue(value: String?) {
+ super.setValue(value)
+ summary = value
+ }
+
+ override fun setSummary(summary: CharSequence?) {
+ super.setSummary(entry)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt b/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt
index 2c48c2e..37c0718 100644
--- a/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt
+++ b/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt
@@ -4,7 +4,6 @@ import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
-import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.illusionware.npsbrowser.AppData
@@ -12,7 +11,7 @@ import com.illusionware.npsbrowser.RecyclerTouchListener
import com.illusionware.npsbrowser.adapters.AppAdapter
import com.illusionware.npsbrowser.databinding.ActivityAppsListBinding
-class AppsListActivity : AppCompatActivity() {
+class AppsListActivity : BaseActivity() {
companion object {
lateinit var apps : ArrayList
}
diff --git a/app/src/main/java/com/illusionware/npsbrowser/activities/BaseActivity.kt b/app/src/main/java/com/illusionware/npsbrowser/activities/BaseActivity.kt
new file mode 100644
index 0000000..e31284f
--- /dev/null
+++ b/app/src/main/java/com/illusionware/npsbrowser/activities/BaseActivity.kt
@@ -0,0 +1,40 @@
+package com.illusionware.npsbrowser.activities
+
+import android.content.SharedPreferences
+import android.content.res.Configuration
+import android.os.Bundle
+import android.view.View
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatDelegate
+import androidx.preference.PreferenceManager
+import com.illusionware.npsbrowser.R
+
+open class BaseActivity : AppCompatActivity() {
+
+ private lateinit var sharedPreferences : SharedPreferences
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ PreferenceManager.setDefaultValues(this, R.xml.root_preferences, false)
+ sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)
+ val decor: View = window.decorView
+
+ AppCompatDelegate.setDefaultNightMode(when ((sharedPreferences.getString("app_theme", "2")?.toInt())) {
+ 0 -> {
+ decor.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
+ AppCompatDelegate.MODE_NIGHT_NO
+ }
+ 1 -> {
+ decor.systemUiVisibility = 0;
+ AppCompatDelegate.MODE_NIGHT_YES
+ }
+ 2 -> {
+ decor.systemUiVisibility = if (resources.configuration.uiMode and
+ Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES) 0 else View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+ AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
+ }
+ else -> AppCompatDelegate.MODE_NIGHT_UNSPECIFIED
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt b/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
index 69be772..430ebb3 100644
--- a/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
+++ b/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
@@ -16,7 +16,7 @@ import com.illusionware.npsbrowser.databinding.ActivityMainBinding
import kotlinx.android.synthetic.main.appbar.*
import java.io.InputStream
-class MainActivity : AppCompatActivity() {
+class MainActivity : BaseActivity() {
private val tsvReader = csvReader {
charset = "UTF-8"
@@ -52,6 +52,8 @@ class MainActivity : AppCompatActivity() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_settings -> {
+ val settingsIntent = Intent(this, SettingsActivity::class.java)
+ startActivity(settingsIntent)
true
}
else -> return super.onOptionsItemSelected(item)
@@ -65,7 +67,7 @@ class MainActivity : AppCompatActivity() {
val inputStream: InputStream? = contentResolver.openInputStream(uri)
val entries : List