Skip to content

Commit bd7e5b5

Browse files
committed
[settings] move messages settings to another fragment
1 parent 3a8d901 commit bd7e5b5

File tree

5 files changed

+136
-85
lines changed

5 files changed

+136
-85
lines changed

app/src/main/java/me/capcom/smsgateway/ui/SettingsFragment.kt

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package me.capcom.smsgateway.ui
22

3-
import android.content.SharedPreferences
43
import android.os.Bundle
54
import android.text.InputType
65
import androidx.core.content.edit
@@ -13,26 +12,6 @@ import me.capcom.smsgateway.modules.gateway.GatewaySettings
1312

1413
class SettingsFragment : PreferenceFragmentCompat() {
1514

16-
override fun onResume() {
17-
super.onResume()
18-
19-
onPreferenceChanged.onSharedPreferenceChanged(
20-
preferenceManager.sharedPreferences,
21-
"messages.limit_period"
22-
)
23-
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(
24-
onPreferenceChanged
25-
)
26-
}
27-
28-
override fun onPause() {
29-
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(
30-
onPreferenceChanged
31-
)
32-
33-
super.onPause()
34-
}
35-
3615
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
3716
setPreferencesFromResource(R.xml.root_preferences, rootKey)
3817

@@ -69,11 +48,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
6948
}
7049
}
7150

72-
if (preference.key == "messages.limit_value"
73-
|| preference.key == "messages.log_lifetime_days"
74-
|| preference.key == "messages.send_interval_min"
75-
|| preference.key == "messages.send_interval_max"
76-
|| preference.key == "ping.interval_seconds"
51+
if (preference.key == "ping.interval_seconds"
7752
|| preference.key == "logs.lifetime_days"
7853
) {
7954
(preference as EditTextPreference).setOnBindEditTextListener {
@@ -86,14 +61,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
8661
super.onDisplayPreferenceDialog(preference)
8762
}
8863

89-
private val onPreferenceChanged =
90-
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
91-
if (key == "messages.limit_period") {
92-
findPreference<EditTextPreference>("messages.limit_value")?.isEnabled =
93-
sharedPreferences?.getString(key, "Disabled") != "Disabled"
94-
}
95-
}
96-
9764
companion object {
9865
fun newInstance() = SettingsFragment()
9966
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package me.capcom.smsgateway.ui.settings
2+
3+
import android.content.SharedPreferences
4+
import android.os.Bundle
5+
import android.text.InputType
6+
import android.util.TypedValue
7+
import android.view.View
8+
import androidx.preference.EditTextPreference
9+
import androidx.preference.Preference
10+
import androidx.preference.PreferenceFragmentCompat
11+
import me.capcom.smsgateway.R
12+
13+
class MessagesSettingsFragment : PreferenceFragmentCompat() {
14+
15+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
16+
super.onViewCreated(view, savedInstanceState)
17+
18+
val backgroundValue = TypedValue()
19+
requireContext().theme.resolveAttribute(
20+
android.R.attr.colorBackground,
21+
backgroundValue,
22+
true
23+
)
24+
25+
view.setBackgroundColor(backgroundValue.data)
26+
}
27+
28+
override fun onResume() {
29+
super.onResume()
30+
31+
onPreferenceChanged.onSharedPreferenceChanged(
32+
preferenceManager.sharedPreferences,
33+
"messages.limit_period"
34+
)
35+
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(
36+
onPreferenceChanged
37+
)
38+
}
39+
40+
override fun onPause() {
41+
preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(
42+
onPreferenceChanged
43+
)
44+
45+
super.onPause()
46+
}
47+
48+
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
49+
setPreferencesFromResource(R.xml.messages_preferences, rootKey)
50+
}
51+
52+
override fun onDisplayPreferenceDialog(preference: Preference) {
53+
if (preference.key == "messages.limit_value"
54+
|| preference.key == "messages.log_lifetime_days"
55+
|| preference.key == "messages.send_interval_min"
56+
|| preference.key == "messages.send_interval_max"
57+
) {
58+
(preference as EditTextPreference).setOnBindEditTextListener {
59+
it.inputType = InputType.TYPE_CLASS_NUMBER
60+
it.setSelectAllOnFocus(true)
61+
it.selectAll()
62+
}
63+
}
64+
65+
super.onDisplayPreferenceDialog(preference)
66+
}
67+
68+
private val onPreferenceChanged =
69+
SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key ->
70+
if (key == "messages.limit_period") {
71+
findPreference<EditTextPreference>("messages.limit_value")?.isEnabled =
72+
sharedPreferences?.getString(key, "Disabled") != "Disabled"
73+
}
74+
}
75+
}

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<string name="set_maximum_value_to_activate">Set maximum value to activate</string>
5151
<string name="information">Information</string>
5252
<string name="app_version_build">App version (build)</string>
53-
<string name="sending_webhook">Sending webhook...</string>
53+
<string name="sending_webhook">Sending webhook</string>
5454
<string name="ping_service_is_active">Ping service is active</string>
5555
<string name="delete_after_days">Delete after, days</string>
5656
<string name="interval_seconds">Interval (seconds)</string>
@@ -60,6 +60,7 @@
6060
<string name="logs">Logs</string>
6161
<string name="view">View</string>
6262
<string name="list_of_last_50_log_entries">List of last 50 log entries</string>
63-
<string name="webhooks">WebHooks</string>
63+
<string name="webhooks">Webhooks</string>
6464
<string name="the_webhook_request_will_wait_for_an_internet_connection">The webhook request will wait for an internet connection</string>
65+
<string name="require_internet_connection">Require Internet connection</string>
6566
</resources>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<PreferenceCategory app:title="@string/messages_header">
5+
<EditTextPreference
6+
app:icon="@drawable/ic_log_lifetime"
7+
app:key="messages.log_lifetime_days"
8+
app:useSimpleSummaryProvider="true"
9+
app:title="@string/delete_after_days" />
10+
11+
12+
</PreferenceCategory>
13+
14+
<PreferenceCategory
15+
app:summary="@string/set_maximum_value_to_activate"
16+
app:title="@string/delays_seconds">
17+
<EditTextPreference
18+
app:key="messages.send_interval_min"
19+
app:title="@string/minimum"
20+
app:icon="@drawable/ic_timer"
21+
app:useSimpleSummaryProvider="true" />
22+
<EditTextPreference
23+
app:icon="@drawable/ic_timer"
24+
app:key="messages.send_interval_max"
25+
app:title="@string/maximum"
26+
app:useSimpleSummaryProvider="true" />
27+
</PreferenceCategory>
28+
29+
<PreferenceCategory app:title="@string/limits">
30+
<DropDownPreference
31+
android:defaultValue="Disabled"
32+
android:entries="@array/limit_periods_titles"
33+
android:entryValues="@array/limit_periods_values"
34+
android:icon="@drawable/ic_period"
35+
android:key="messages.limit_period"
36+
app:title="@string/period"
37+
app:useSimpleSummaryProvider="true" />
38+
<EditTextPreference
39+
android:defaultValue="0"
40+
android:icon="@drawable/ic_send"
41+
android:key="messages.limit_value"
42+
app:title="@string/messages_count"
43+
app:useSimpleSummaryProvider="true" />
44+
</PreferenceCategory>
45+
</PreferenceScreen>

app/src/main/res/xml/root_preferences.xml

Lines changed: 12 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
xmlns:app="http://schemas.android.com/apk/res-auto">
33
<PreferenceCategory app:title="@string/cloud_server">
44
<EditTextPreference
5+
app:enableCopying="true"
56
app:icon="@drawable/ic_server"
67
app:key="gateway.cloud_url"
7-
app:title="@string/api_url"
8-
app:enableCopying="true"/>
8+
app:title="@string/api_url" />
99
<EditTextPreference
1010
app:icon="@drawable/ic_token"
1111
app:key="gateway.private_token"
@@ -22,53 +22,17 @@
2222
</PreferenceCategory>
2323

2424
<PreferenceCategory app:title="@string/messages_header">
25-
<EditTextPreference
26-
app:icon="@drawable/ic_log_lifetime"
27-
app:key="messages.log_lifetime_days"
28-
app:useSimpleSummaryProvider="true"
29-
app:title="@string/delete_after_days" />
30-
31-
32-
</PreferenceCategory>
33-
34-
<PreferenceCategory
35-
app:summary="@string/set_maximum_value_to_activate"
36-
app:title="@string/delays_seconds">
37-
<EditTextPreference
38-
app:key="messages.send_interval_min"
39-
app:title="@string/minimum"
40-
app:icon="@drawable/ic_timer"
41-
app:useSimpleSummaryProvider="true" />
42-
<EditTextPreference
43-
app:icon="@drawable/ic_timer"
44-
app:key="messages.send_interval_max"
45-
app:title="@string/maximum"
46-
app:useSimpleSummaryProvider="true" />
47-
</PreferenceCategory>
48-
49-
<PreferenceCategory app:title="@string/limits">
50-
<DropDownPreference
51-
android:defaultValue="Disabled"
52-
android:entries="@array/limit_periods_titles"
53-
android:entryValues="@array/limit_periods_values"
54-
android:icon="@drawable/ic_period"
55-
android:key="messages.limit_period"
56-
app:title="@string/period"
57-
app:useSimpleSummaryProvider="true" />
58-
<EditTextPreference
59-
android:defaultValue="0"
60-
android:icon="@drawable/ic_send"
61-
android:key="messages.limit_value"
62-
app:title="@string/messages_count"
63-
app:useSimpleSummaryProvider="true" />
25+
<Preference
26+
app:fragment="me.capcom.smsgateway.ui.settings.MessagesSettingsFragment"
27+
app:title="More settings..." />
6428
</PreferenceCategory>
6529

6630
<PreferenceCategory app:title="@string/webhooks">
6731
<SwitchPreference
32+
android:defaultValue="true"
6833
android:key="webhooks.internet_required"
69-
app:title="Require Internet connection"
7034
app:summary="@string/the_webhook_request_will_wait_for_an_internet_connection"
71-
android:defaultValue="true"/>
35+
app:title="@string/require_internet_connection" />
7236
</PreferenceCategory>
7337

7438
<PreferenceCategory
@@ -80,17 +44,16 @@
8044
app:useSimpleSummaryProvider="true" />
8145
</PreferenceCategory>
8246

83-
<PreferenceCategory
84-
app:title="@string/logs">
47+
<PreferenceCategory app:title="@string/logs">
8548
<Preference
8649
app:fragment="me.capcom.smsgateway.ui.LogsListFragment"
87-
app:title="@string/view"
88-
app:summary="@string/list_of_last_50_log_entries"/>
50+
app:summary="@string/list_of_last_50_log_entries"
51+
app:title="@string/view" />
8952
<EditTextPreference
9053
app:icon="@drawable/ic_log_lifetime"
9154
app:key="logs.lifetime_days"
92-
app:useSimpleSummaryProvider="true"
93-
app:title="@string/delete_after_days" />
55+
app:title="@string/delete_after_days"
56+
app:useSimpleSummaryProvider="true" />
9457
</PreferenceCategory>
9558

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

0 commit comments

Comments
 (0)