Skip to content

Commit

Permalink
[settings] move messages settings to another fragment
Browse files Browse the repository at this point in the history
  • Loading branch information
capcom6 committed Oct 8, 2024
1 parent 3a8d901 commit bd7e5b5
Show file tree
Hide file tree
Showing 5 changed files with 136 additions and 85 deletions.
35 changes: 1 addition & 34 deletions app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package me.capcom.smsgateway.ui

import android.content.SharedPreferences
import android.os.Bundle
import android.text.InputType
import androidx.core.content.edit
Expand All @@ -13,26 +12,6 @@ import me.capcom.smsgateway.modules.gateway.GatewaySettings

class SettingsFragment : PreferenceFragmentCompat() {

override fun onResume() {
super.onResume()

onPreferenceChanged.onSharedPreferenceChanged(
preferenceManager.sharedPreferences,
"messages.limit_period"
)
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(
onPreferenceChanged
)
}

override fun onPause() {
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(
onPreferenceChanged
)

super.onPause()
}

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)

Expand Down Expand Up @@ -69,11 +48,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
}

if (preference.key == "messages.limit_value"
|| preference.key == "messages.log_lifetime_days"
|| preference.key == "messages.send_interval_min"
|| preference.key == "messages.send_interval_max"
|| preference.key == "ping.interval_seconds"
if (preference.key == "ping.interval_seconds"
|| preference.key == "logs.lifetime_days"
) {
(preference as EditTextPreference).setOnBindEditTextListener {
Expand All @@ -86,14 +61,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
super.onDisplayPreferenceDialog(preference)
}

private val onPreferenceChanged =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
if (key == "messages.limit_period") {
findPreference<EditTextPreference>("messages.limit_value")?.isEnabled =
sharedPreferences?.getString(key, "Disabled") != "Disabled"
}
}

companion object {
fun newInstance() = SettingsFragment()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package me.capcom.smsgateway.ui.settings

import android.content.SharedPreferences
import android.os.Bundle
import android.text.InputType
import android.util.TypedValue
import android.view.View
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import me.capcom.smsgateway.R

class MessagesSettingsFragment : PreferenceFragmentCompat() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val backgroundValue = TypedValue()
requireContext().theme.resolveAttribute(
android.R.attr.colorBackground,
backgroundValue,
true
)

view.setBackgroundColor(backgroundValue.data)
}

override fun onResume() {
super.onResume()

onPreferenceChanged.onSharedPreferenceChanged(
preferenceManager.sharedPreferences,
"messages.limit_period"
)
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(
onPreferenceChanged
)
}

override fun onPause() {
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(
onPreferenceChanged
)

super.onPause()
}

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.messages_preferences, rootKey)
}

override fun onDisplayPreferenceDialog(preference: Preference) {
if (preference.key == "messages.limit_value"
|| preference.key == "messages.log_lifetime_days"
|| preference.key == "messages.send_interval_min"
|| preference.key == "messages.send_interval_max"
) {
(preference as EditTextPreference).setOnBindEditTextListener {
it.inputType = InputType.TYPE_CLASS_NUMBER
it.setSelectAllOnFocus(true)
it.selectAll()
}
}

super.onDisplayPreferenceDialog(preference)
}

private val onPreferenceChanged =
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
if (key == "messages.limit_period") {
findPreference<EditTextPreference>("messages.limit_value")?.isEnabled =
sharedPreferences?.getString(key, "Disabled") != "Disabled"
}
}
}
5 changes: 3 additions & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<string name="set_maximum_value_to_activate">Set maximum value to activate</string>
<string name="information">Information</string>
<string name="app_version_build">App version (build)</string>
<string name="sending_webhook">Sending webhook...</string>
<string name="sending_webhook">Sending webhook</string>
<string name="ping_service_is_active">Ping service is active</string>
<string name="delete_after_days">Delete after, days</string>
<string name="interval_seconds">Interval (seconds)</string>
Expand All @@ -60,6 +60,7 @@
<string name="logs">Logs</string>
<string name="view">View</string>
<string name="list_of_last_50_log_entries">List of last 50 log entries</string>
<string name="webhooks">WebHooks</string>
<string name="webhooks">Webhooks</string>
<string name="the_webhook_request_will_wait_for_an_internet_connection">The webhook request will wait for an internet connection</string>
<string name="require_internet_connection">Require Internet connection</string>
</resources>
45 changes: 45 additions & 0 deletions app/src/main/res/xml/messages_preferences.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?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 app:title="@string/messages_header">
<EditTextPreference
app:icon="@drawable/ic_log_lifetime"
app:key="messages.log_lifetime_days"
app:useSimpleSummaryProvider="true"
app:title="@string/delete_after_days" />


</PreferenceCategory>

<PreferenceCategory
app:summary="@string/set_maximum_value_to_activate"
app:title="@string/delays_seconds">
<EditTextPreference
app:key="messages.send_interval_min"
app:title="@string/minimum"
app:icon="@drawable/ic_timer"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:icon="@drawable/ic_timer"
app:key="messages.send_interval_max"
app:title="@string/maximum"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>

<PreferenceCategory app:title="@string/limits">
<DropDownPreference
android:defaultValue="Disabled"
android:entries="@array/limit_periods_titles"
android:entryValues="@array/limit_periods_values"
android:icon="@drawable/ic_period"
android:key="messages.limit_period"
app:title="@string/period"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:defaultValue="0"
android:icon="@drawable/ic_send"
android:key="messages.limit_value"
app:title="@string/messages_count"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
</PreferenceScreen>
61 changes: 12 additions & 49 deletions app/src/main/res/xml/root_preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/cloud_server">
<EditTextPreference
app:enableCopying="true"
app:icon="@drawable/ic_server"
app:key="gateway.cloud_url"
app:title="@string/api_url"
app:enableCopying="true"/>
app:title="@string/api_url" />
<EditTextPreference
app:icon="@drawable/ic_token"
app:key="gateway.private_token"
Expand All @@ -22,53 +22,17 @@
</PreferenceCategory>

<PreferenceCategory app:title="@string/messages_header">
<EditTextPreference
app:icon="@drawable/ic_log_lifetime"
app:key="messages.log_lifetime_days"
app:useSimpleSummaryProvider="true"
app:title="@string/delete_after_days" />


</PreferenceCategory>

<PreferenceCategory
app:summary="@string/set_maximum_value_to_activate"
app:title="@string/delays_seconds">
<EditTextPreference
app:key="messages.send_interval_min"
app:title="@string/minimum"
app:icon="@drawable/ic_timer"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:icon="@drawable/ic_timer"
app:key="messages.send_interval_max"
app:title="@string/maximum"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>

<PreferenceCategory app:title="@string/limits">
<DropDownPreference
android:defaultValue="Disabled"
android:entries="@array/limit_periods_titles"
android:entryValues="@array/limit_periods_values"
android:icon="@drawable/ic_period"
android:key="messages.limit_period"
app:title="@string/period"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
android:defaultValue="0"
android:icon="@drawable/ic_send"
android:key="messages.limit_value"
app:title="@string/messages_count"
app:useSimpleSummaryProvider="true" />
<Preference
app:fragment="me.capcom.smsgateway.ui.settings.MessagesSettingsFragment"
app:title="More settings..." />
</PreferenceCategory>

<PreferenceCategory app:title="@string/webhooks">
<SwitchPreference
android:defaultValue="true"
android:key="webhooks.internet_required"
app:title="Require Internet connection"
app:summary="@string/the_webhook_request_will_wait_for_an_internet_connection"
android:defaultValue="true"/>
app:title="@string/require_internet_connection" />
</PreferenceCategory>

<PreferenceCategory
Expand All @@ -80,17 +44,16 @@
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>

<PreferenceCategory
app:title="@string/logs">
<PreferenceCategory app:title="@string/logs">
<Preference
app:fragment="me.capcom.smsgateway.ui.LogsListFragment"
app:title="@string/view"
app:summary="@string/list_of_last_50_log_entries"/>
app:summary="@string/list_of_last_50_log_entries"
app:title="@string/view" />
<EditTextPreference
app:icon="@drawable/ic_log_lifetime"
app:key="logs.lifetime_days"
app:useSimpleSummaryProvider="true"
app:title="@string/delete_after_days" />
app:title="@string/delete_after_days"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>

<PreferenceCategory app:title="@string/information">
Expand Down

0 comments on commit bd7e5b5

Please sign in to comment.