mirror of
https://github.com/M66B/FairEmail.git
synced 2025-03-01 09:16:00 +00:00
Allow selecting audio file for rule sounds
This commit is contained in:
parent
83a70cdfea
commit
d8241bb86b
2 changed files with 46 additions and 12 deletions
|
@ -230,11 +230,12 @@ public class FragmentRule extends FragmentBase {
|
||||||
private static final int REQUEST_TO = 7;
|
private static final int REQUEST_TO = 7;
|
||||||
private final static int REQUEST_TTS_CHECK = 8;
|
private final static int REQUEST_TTS_CHECK = 8;
|
||||||
private final static int REQUEST_TTS_DATA = 9;
|
private final static int REQUEST_TTS_DATA = 9;
|
||||||
private final static int REQUEST_SOUND = 10;
|
private final static int REQUEST_RINGTONE = 10;
|
||||||
private final static int REQUEST_DATE_AFTER = 11;
|
private final static int REQUEST_AUDIO = 11;
|
||||||
private final static int REQUEST_DATE_BEFORE = 12;
|
private final static int REQUEST_DATE_AFTER = 12;
|
||||||
private final static int REQUEST_FOLDER = 13;
|
private final static int REQUEST_DATE_BEFORE = 13;
|
||||||
private final static int REQUEST_COLOR_NOTES = 14;
|
private final static int REQUEST_FOLDER = 14;
|
||||||
|
private final static int REQUEST_COLOR_NOTES = 15;
|
||||||
|
|
||||||
private static final List<String> HEADER_CONDITIONS = Collections.unmodifiableList(Arrays.asList(
|
private static final List<String> HEADER_CONDITIONS = Collections.unmodifiableList(Arrays.asList(
|
||||||
"$$seen$",
|
"$$seen$",
|
||||||
|
@ -811,12 +812,37 @@ public class FragmentRule extends FragmentBase {
|
||||||
btnSound.setOnClickListener(new View.OnClickListener() {
|
btnSound.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
|
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), getViewLifecycleOwner(), v);
|
||||||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
|
|
||||||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound));
|
popupMenu.getMenu().add(Menu.NONE, R.string.title_rule_select_sound_ringtone, 1, R.string.title_rule_select_sound_ringtone);
|
||||||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
|
popupMenu.getMenu().add(Menu.NONE, R.string.title_rule_select_sound_audio, 2, R.string.title_rule_select_sound_audio);
|
||||||
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound);
|
|
||||||
startActivityForResult(Helper.getChooser(getContext(), intent), REQUEST_SOUND);
|
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
int itemId = item.getItemId();
|
||||||
|
if (itemId == R.string.title_rule_select_sound_ringtone) {
|
||||||
|
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
|
||||||
|
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
|
||||||
|
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.title_advanced_sound));
|
||||||
|
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
|
||||||
|
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, sound);
|
||||||
|
startActivityForResult(Helper.getChooser(getContext(), intent), REQUEST_RINGTONE);
|
||||||
|
return true;
|
||||||
|
} else if (itemId == R.string.title_rule_select_sound_audio) {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||||
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
intent.setType("audio/*");
|
||||||
|
startActivityForResult(Helper.getChooser(getContext(), intent), REQUEST_AUDIO);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
popupMenu.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1035,10 +1061,14 @@ public class FragmentRule extends FragmentBase {
|
||||||
break;
|
break;
|
||||||
case REQUEST_TTS_DATA:
|
case REQUEST_TTS_DATA:
|
||||||
break;
|
break;
|
||||||
case REQUEST_SOUND:
|
case REQUEST_RINGTONE:
|
||||||
if (resultCode == RESULT_OK && data != null)
|
if (resultCode == RESULT_OK && data != null)
|
||||||
onSelectSound(data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI));
|
onSelectSound(data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI));
|
||||||
break;
|
break;
|
||||||
|
case REQUEST_AUDIO:
|
||||||
|
if (resultCode == RESULT_OK && data != null)
|
||||||
|
onSelectSound(data.getData());
|
||||||
|
break;
|
||||||
case REQUEST_DATE_AFTER:
|
case REQUEST_DATE_AFTER:
|
||||||
if (resultCode == RESULT_OK && data != null)
|
if (resultCode == RESULT_OK && data != null)
|
||||||
onDateAfter(data.getBundleExtra("args"));
|
onDateAfter(data.getBundleExtra("args"));
|
||||||
|
@ -1091,6 +1121,8 @@ public class FragmentRule extends FragmentBase {
|
||||||
try {
|
try {
|
||||||
Log.i("Selected sound uri=" + uri);
|
Log.i("Selected sound uri=" + uri);
|
||||||
getContext().getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
getContext().getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
if (!Helper.isPersisted(getContext(), uri, true, false))
|
||||||
|
throw new IllegalStateException("No permission granted to access selected image " + uri);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
Log.w(ex);
|
Log.w(ex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2136,6 +2136,8 @@
|
||||||
<string name="title_rule_tts_content">Text</string>
|
<string name="title_rule_tts_content">Text</string>
|
||||||
|
|
||||||
<string name="title_rule_select_sound">Select sound</string>
|
<string name="title_rule_select_sound">Select sound</string>
|
||||||
|
<string name="title_rule_select_sound_ringtone">Ringtone</string>
|
||||||
|
<string name="title_rule_select_sound_audio">Audio file</string>
|
||||||
<string name="title_rule_use_as_alarm">Use as alarm</string>
|
<string name="title_rule_use_as_alarm">Use as alarm</string>
|
||||||
<string name="title_rule_alarm_hint">This will ignore "do not disturb" rules</string>
|
<string name="title_rule_alarm_hint">This will ignore "do not disturb" rules</string>
|
||||||
<string name="title_rule_alarm_duration">Maximum alarm duration (seconds)</string>
|
<string name="title_rule_alarm_duration">Maximum alarm duration (seconds)</string>
|
||||||
|
|
Loading…
Reference in a new issue