diff --git a/app/build.gradle b/app/build.gradle index acb8538..d34ae9b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.2' implementation 'androidx.core:core-ktx:1.3.2' + implementation "androidx.preference:preference-ktx:1.1.1" implementation 'com.afollestad.material-dialogs:core:3.3.0' implementation 'com.afollestad.material-dialogs:bottomsheets:3.3.0' implementation 'com.amitshekhar.android:android-networking:1.0.2' diff --git a/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainActivity.kt b/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainActivity.kt index bf11b92..66ebf27 100644 --- a/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainActivity.kt +++ b/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainActivity.kt @@ -46,33 +46,23 @@ import es.dmoral.toasty.Toasty class MainActivity : AppCompatActivity() { private lateinit var appBarConfiguration: AppBarConfiguration - private var crashlytics: FirebaseCrashlytics private lateinit var drawerLayout: DrawerLayout private lateinit var editor: SharedPreferences.Editor - private var firebaseAnalytics: FirebaseAnalytics private lateinit var mySPR: SharedPreferences private lateinit var navController: NavController private lateinit var navView: NavigationView private lateinit var toolbar: Toolbar - init { - firebaseAnalytics = FirebaseAnalytics.getInstance(this) - crashlytics = FirebaseCrashlytics.getInstance() - Toasty.Config.getInstance().allowQueue(false).apply() - } - @SuppressLint("ApplySharedPref") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + Toasty.Config.getInstance().allowQueue(false).apply() mySPR = getSharedPreferences(SHARED_PREFERENCE, 0) editor = mySPR.edit() editor.apply() requestedOrientation = mySPR.getInt("orientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - firebaseAnalytics.setAnalyticsCollectionEnabled(mySPR.getBoolean("analyticsCollection", false)) - crashlytics.setCrashlyticsCollectionEnabled(mySPR.getBoolean("crashlyticsCollection", false)) - setContentView(R.layout.activity_main) toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) @@ -106,7 +96,7 @@ class MainActivity : AppCompatActivity() { toolbar.visibility = View.VISIBLE when (it.itemId) { R.id.nav_menu -> navController.navigate(R.id.nav_menu) -// R.id.nav_settings -> navController.navigate(R.id.open_about) + R.id.nav_settings -> navController.navigate(R.id.nav_settings) R.id.drawer_about -> navController.navigate(R.id.nav_about) R.id.drawer_end_user_consent -> { var dialogMessage = getString(R.string.end_user_consent_2_message_1) @@ -146,8 +136,10 @@ class MainActivity : AppCompatActivity() { drawerMenu.findItem(R.id.drawer_end_user_consent).isChecked = false } negativeButton(R.string.end_user_consent_2_button2) { - firebaseAnalytics.resetAnalyticsData() - firebaseAnalytics.setAnalyticsCollectionEnabled(false) + val analytics = FirebaseAnalytics.getInstance(applicationContext) + analytics.resetAnalyticsData() + analytics.setAnalyticsCollectionEnabled(false) + val crashlytics = FirebaseCrashlytics.getInstance() crashlytics.deleteUnsentReports() crashlytics.setCrashlyticsCollectionEnabled(false) editor.clear().commit() @@ -165,7 +157,7 @@ class MainActivity : AppCompatActivity() { true } - restoreConnections() + if (mySPR.getBoolean("connectionOverviewEnabled", true)) { restoreConnections() } } private fun restoreConnections() { diff --git a/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainFragment.kt b/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainFragment.kt index 9d06fdc..846fac7 100644 --- a/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainFragment.kt +++ b/app/src/main/java/com/cyb3rko/logviewerforopenhab/MainFragment.kt @@ -205,9 +205,11 @@ class MainFragment : Fragment() { Toasty.info(v.context, getString(R.string.connecting), Toasty.LENGTH_SHORT).show() findNavController().navigate(R.id.nav_webview) - val hostnameString = hostnameIPAddressText.text.toString().trim() - val portInt = portText.text.toString().trim().toInt() - storeAndShowConnection(hostnameString, portInt) + if (mySPR.getBoolean("connectionOverviewEnabled", true)) { + val hostnameString = hostnameIPAddressText.text.toString().trim() + val portInt = portText.text.toString().trim().toInt() + storeAndShowConnection(hostnameString, portInt) + } } } else { // show error if one field or both fields are empty diff --git a/app/src/main/java/com/cyb3rko/logviewerforopenhab/PreferenceFragment.kt b/app/src/main/java/com/cyb3rko/logviewerforopenhab/PreferenceFragment.kt new file mode 100644 index 0000000..a2e3735 --- /dev/null +++ b/app/src/main/java/com/cyb3rko/logviewerforopenhab/PreferenceFragment.kt @@ -0,0 +1,62 @@ +package com.cyb3rko.logviewerforopenhab + +import android.content.SharedPreferences +import android.os.Bundle +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SwitchPreferenceCompat +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.crashlytics.FirebaseCrashlytics +import es.dmoral.toasty.Toasty + +class PreferenceFragment : PreferenceFragmentCompat() { + + private lateinit var analyticsCollectionSwitch: SwitchPreferenceCompat + private lateinit var autoUpdateSwitch: SwitchPreferenceCompat + private lateinit var connectionOverviewSwitch: SwitchPreferenceCompat + private lateinit var crashlyticsCollectionSwitch: SwitchPreferenceCompat + private lateinit var mySPR: SharedPreferences + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.preferences) + preferenceManager.sharedPreferencesName = SHARED_PREFERENCE + mySPR = preferenceManager.sharedPreferences + connectionOverviewSwitch = findPreference("connectionOverviewEnabled")!! + autoUpdateSwitch = findPreference("autoUpdate")!! + analyticsCollectionSwitch = findPreference("analyticsCollection")!! + crashlyticsCollectionSwitch = findPreference("crashlyticsCollection")!! + + connectionOverviewSwitch.isChecked = mySPR.getBoolean("connectionOverviewEnabled", true) + autoUpdateSwitch.isChecked = mySPR.getBoolean("autoUpdate", true) + analyticsCollectionSwitch.isChecked = mySPR.getBoolean("analyticsCollection", false) + crashlyticsCollectionSwitch.isChecked = mySPR.getBoolean("crashlyticsCollection", false) + } + + override fun onPreferenceTreeClick(preference: Preference?): Boolean { + return when (preference?.key) { + "connectionOverviewEnabled" -> { + if (connectionOverviewSwitch.isChecked) { + showConnections(mySPR, getListOfConnections(mySPR), activity) + } else { + hideConnections(requireActivity()) + } + true + } + "analyticsCollection" -> { + FirebaseAnalytics.getInstance(requireContext()).setAnalyticsCollectionEnabled(analyticsCollectionSwitch.isChecked) + true + } + "crashlyticsCollection" -> { + FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(crashlyticsCollectionSwitch.isChecked) + true + } + "dataDeletion" -> { + FirebaseAnalytics.getInstance(requireActivity()).resetAnalyticsData() + FirebaseCrashlytics.getInstance().deleteUnsentReports() + Toasty.success(requireContext(), "Deletion done", Toasty.LENGTH_SHORT).show() + true + } + else -> false + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cyb3rko/logviewerforopenhab/Utils.kt b/app/src/main/java/com/cyb3rko/logviewerforopenhab/Utils.kt index 86d4205..2d314ab 100644 --- a/app/src/main/java/com/cyb3rko/logviewerforopenhab/Utils.kt +++ b/app/src/main/java/com/cyb3rko/logviewerforopenhab/Utils.kt @@ -60,6 +60,12 @@ internal fun showConnections(mySPR: SharedPreferences, connections: MutableList< } } +internal fun hideConnections(activity: Activity) { + val navView = activity.findViewById(R.id.nav_view) + val connectionsMenu = navView.menu.findItem(R.id.nav_connections).subMenu + connectionsMenu.clear() +} + internal fun showLicenseDialog(context: Context?, type: String) { MaterialDialog(context!!, BottomSheet()).show { @Suppress("DEPRECATION") diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 4fccc57..4a0a433 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -19,6 +19,12 @@ tools:layout="@layout/fragment_web_view" > + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file