make notification tone picker work
This commit is contained in:
parent
85771fc26c
commit
b30a88e7a5
|
@ -61,6 +61,21 @@ public class AppSettings {
|
||||||
sharedPreferences.edit().putString(RINGTONE, uri == null ? null : uri.toString()).apply();
|
sharedPreferences.edit().putString(RINGTONE, uri == null ? null : uri.toString()).apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Uri getNotificationTone() {
|
||||||
|
final SharedPreferences sharedPreferences =
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
final String incomingCallRingtone =
|
||||||
|
sharedPreferences.getString(
|
||||||
|
NOTIFICATION_RINGTONE, context.getString(R.string.notification_ringtone));
|
||||||
|
return Strings.isNullOrEmpty(incomingCallRingtone) ? null : Uri.parse(incomingCallRingtone);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNotificationTone(final Uri uri) {
|
||||||
|
final SharedPreferences sharedPreferences =
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
sharedPreferences.edit().putString(NOTIFICATION_RINGTONE, uri == null ? null : uri.toString()).apply();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isBTBVEnabled() {
|
public boolean isBTBVEnabled() {
|
||||||
return getBooleanPreference(BTBV, R.bool.btbv);
|
return getBooleanPreference(BTBV, R.bool.btbv);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.siacs.conversations.ui.fragment.settings;
|
package eu.siacs.conversations.ui.fragment.settings;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.media.RingtoneManager;
|
import android.media.RingtoneManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -9,9 +8,7 @@ import android.util.Log;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.preference.ListPreference;
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceFragmentCompat;
|
|
||||||
|
|
||||||
import eu.siacs.conversations.AppSettings;
|
import eu.siacs.conversations.AppSettings;
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
|
@ -21,6 +18,18 @@ import eu.siacs.conversations.utils.Compatibility;
|
||||||
|
|
||||||
public class NotificationsSettingsFragment extends XmppPreferenceFragment {
|
public class NotificationsSettingsFragment extends XmppPreferenceFragment {
|
||||||
|
|
||||||
|
private final ActivityResultLauncher<Uri> pickNotificationToneLauncher =
|
||||||
|
registerForActivityResult(
|
||||||
|
new PickRingtone(RingtoneManager.TYPE_NOTIFICATION),
|
||||||
|
result -> {
|
||||||
|
if (result == null) {
|
||||||
|
// do nothing. user aborted
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final Uri uri = PickRingtone.noneToNull(result);
|
||||||
|
appSettings().setNotificationTone(uri);
|
||||||
|
Log.i(Config.LOGTAG, "User set notification tone to " + uri);
|
||||||
|
});
|
||||||
private final ActivityResultLauncher<Uri> pickRingtoneLauncher =
|
private final ActivityResultLauncher<Uri> pickRingtoneLauncher =
|
||||||
registerForActivityResult(
|
registerForActivityResult(
|
||||||
new PickRingtone(RingtoneManager.TYPE_RINGTONE),
|
new PickRingtone(RingtoneManager.TYPE_RINGTONE),
|
||||||
|
@ -30,7 +39,7 @@ public class NotificationsSettingsFragment extends XmppPreferenceFragment {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Uri uri = PickRingtone.noneToNull(result);
|
final Uri uri = PickRingtone.noneToNull(result);
|
||||||
setRingtone(uri);
|
appSettings().setRingtone(uri);
|
||||||
Log.i(Config.LOGTAG, "User set ringtone to " + uri);
|
Log.i(Config.LOGTAG, "User set ringtone to " + uri);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -79,22 +88,30 @@ public class NotificationsSettingsFragment extends XmppPreferenceFragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceTreeClick(final Preference preference) {
|
public boolean onPreferenceTreeClick(final Preference preference) {
|
||||||
if (AppSettings.RINGTONE.equals(preference.getKey())) {
|
final var key = preference.getKey();
|
||||||
|
if (AppSettings.RINGTONE.equals(key)) {
|
||||||
pickRingtone();
|
pickRingtone();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (AppSettings.NOTIFICATION_RINGTONE.equals(key)) {
|
||||||
|
pickNotificationTone();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return super.onPreferenceTreeClick(preference);
|
return super.onPreferenceTreeClick(preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void pickNotificationTone() {
|
||||||
|
final Uri uri = appSettings().getNotificationTone();
|
||||||
|
Log.i(Config.LOGTAG, "current notification tone: " + uri);
|
||||||
|
this.pickNotificationToneLauncher.launch(uri);
|
||||||
|
}
|
||||||
|
|
||||||
private void pickRingtone() {
|
private void pickRingtone() {
|
||||||
final Uri uri = appSettings().getRingtone();
|
final Uri uri = appSettings().getRingtone();
|
||||||
Log.i(Config.LOGTAG, "current ringtone: " + uri);
|
Log.i(Config.LOGTAG, "current ringtone: " + uri);
|
||||||
this.pickRingtoneLauncher.launch(uri);
|
this.pickRingtoneLauncher.launch(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRingtone(final Uri uri) {
|
|
||||||
appSettings().setRingtone(uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
private AppSettings appSettings() {
|
private AppSettings appSettings() {
|
||||||
return new AppSettings(requireContext());
|
return new AppSettings(requireContext());
|
||||||
|
|
|
@ -1025,9 +1025,6 @@
|
||||||
<string name="delete_and_close">Delete & Archive chat</string>
|
<string name="delete_and_close">Delete & Archive chat</string>
|
||||||
<string name="start_chat">Start chat</string>
|
<string name="start_chat">Start chat</string>
|
||||||
<string name="no_certificate_selected">No client certificate selected!</string>
|
<string name="no_certificate_selected">No client certificate selected!</string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<string name="pref_title_interface">Interface</string>
|
<string name="pref_title_interface">Interface</string>
|
||||||
<string name="pref_summary_appearance">Theme, Colors, Screenshots, Input</string>
|
<string name="pref_summary_appearance">Theme, Colors, Screenshots, Input</string>
|
||||||
<string name="pref_title_security">Security</string>
|
<string name="pref_title_security">Security</string>
|
||||||
|
|
Loading…
Reference in a new issue