Skip to content

Commit

Permalink
added preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
cyb3rko committed Oct 25, 2020
1 parent 3db14d3 commit f47d08a
Show file tree
Hide file tree
Showing 8 changed files with 141 additions and 18 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
22 changes: 7 additions & 15 deletions app/src/main/java/com/cyb3rko/logviewerforopenhab/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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()
Expand All @@ -165,7 +157,7 @@ class MainActivity : AppCompatActivity() {
true
}

restoreConnections()
if (mySPR.getBoolean("connectionOverviewEnabled", true)) { restoreConnections() }
}

private fun restoreConnections() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
}
}
}
6 changes: 6 additions & 0 deletions app/src/main/java/com/cyb3rko/logviewerforopenhab/Utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ internal fun showConnections(mySPR: SharedPreferences, connections: MutableList<
}
}

internal fun hideConnections(activity: Activity) {
val navView = activity.findViewById<NavigationView>(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")
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/navigation/mobile_navigation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
tools:layout="@layout/fragment_web_view" >
</fragment>

<fragment
android:id="@+id/nav_settings"
android:name="com.cyb3rko.logviewerforopenhab.PreferenceFragment"
android:label="Preferences">
</fragment>

<fragment
android:id="@+id/nav_about"
android:name="com.cyb3rko.logviewerforopenhab.AboutFragment"
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/navigation/mobile_navigation2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
tools:layout="@layout/fragment_web_view" >
</fragment>

<fragment
android:id="@+id/nav_settings"
android:name="com.cyb3rko.logviewerforopenhab.PreferenceFragment"
android:label="Preferences">
</fragment>

<fragment
android:id="@+id/nav_about"
android:name="com.cyb3rko.logviewerforopenhab.AboutFragment"
Expand Down
48 changes: 48 additions & 0 deletions app/src/main/res/xml/preferences.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<PreferenceCategory
android:title="User Experience"
app:iconSpaceReserved="false">

<SwitchPreferenceCompat
android:title="Connection Overview"
android:summary="En-/Disable the overview of recent connections in the Navigation Drawer"
app:iconSpaceReserved="false"
android:defaultValue="true"
android:key="connectionOverviewEnabled" />

<SwitchPreferenceCompat
android:title="Auto Update"
android:summary="En-/Disable checking for updates and optionally downloading the newewst version"
android:key="autoUpdate"
app:iconSpaceReserved="false" />

</PreferenceCategory>

<PreferenceCategory
android:title="Data Collection"
app:iconSpaceReserved="false">

<SwitchPreferenceCompat
android:title="Analytics Data Collection"
android:summary="En-/Disable data collection via Firebase Analytics"
android:key="analyticsCollection"
app:iconSpaceReserved="false" />

<SwitchPreferenceCompat
android:title="Crashlytics Data Collection"
android:summary="En-/Disable data collection via Firebase Crashlytics"
android:key="crashlyticsCollection"
app:iconSpaceReserved="false" />

<Preference
android:title="Reset Data Collection"
android:summary="Reset your collected data for Analytics and Crashlytics"
android:key="dataDeletion"
app:iconSpaceReserved="false" />

</PreferenceCategory>

</PreferenceScreen>

0 comments on commit f47d08a

Please sign in to comment.