diff --git a/app/src/main/java/org/linphone/call/CallStatusBarFragment.java b/app/src/main/java/org/linphone/call/CallStatusBarFragment.java index 3ac6b6acf..16e6180b5 100644 --- a/app/src/main/java/org/linphone/call/CallStatusBarFragment.java +++ b/app/src/main/java/org/linphone/call/CallStatusBarFragment.java @@ -288,9 +288,19 @@ public class CallStatusBarFragment extends Fragment { public void refreshStatusItems(final Call call) { if (call != null) { - MediaEncryption mediaEncryption = call.getCurrentParams().getMediaEncryption(); + if (call.getDir() == Call.Dir.Incoming + && call.getState() == Call.State.IncomingReceived + && LinphonePreferences.instance().isMediaEncryptionMandatory()) { + // If the incoming call view is displayed while encryption is mandatory, + // we can safely show the security_ok icon + mEncryption.setImageResource(R.drawable.security_ok); + mEncryption.setVisibility(View.VISIBLE); + return; + } + MediaEncryption mediaEncryption = call.getCurrentParams().getMediaEncryption(); mEncryption.setVisibility(View.VISIBLE); + if (mediaEncryption == MediaEncryption.SRTP || (mediaEncryption == MediaEncryption.ZRTP && call.getAuthenticationTokenVerified()) diff --git a/app/src/main/java/org/linphone/settings/CallSettingsFragment.java b/app/src/main/java/org/linphone/settings/CallSettingsFragment.java index eadeda704..d0ee874af 100644 --- a/app/src/main/java/org/linphone/settings/CallSettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/CallSettingsFragment.java @@ -167,8 +167,15 @@ public class CallSettingsFragment extends SettingsFragment { @Override public void onListValueChanged(int position, String newLabel, String newValue) { try { - mPrefs.setMediaEncryption( - MediaEncryption.fromInt(Integer.parseInt(newValue))); + MediaEncryption encryption = + MediaEncryption.fromInt(Integer.parseInt(newValue)); + mPrefs.setMediaEncryption(encryption); + + if (encryption == MediaEncryption.None) { + mMediaEncryptionMandatory.setChecked(false); + } + mMediaEncryptionMandatory.setEnabled( + encryption != MediaEncryption.None); } catch (NumberFormatException nfe) { Log.e(nfe); } @@ -248,7 +255,8 @@ public class CallSettingsFragment extends SettingsFragment { mDndPermissionSettings.setVisibility( Version.sdkAboveOrEqual(Version.API23_MARSHMALLOW_60) ? View.VISIBLE : View.GONE); - mMediaEncryptionMandatory.setChecked(mPrefs.acceptMediaEncryptionMandatory()); + mMediaEncryptionMandatory.setChecked(mPrefs.isMediaEncryptionMandatory()); + mMediaEncryptionMandatory.setEnabled(mPrefs.getMediaEncryption() != MediaEncryption.None); setListeners(); } diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java index d1d6aa11a..5583990a2 100644 --- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java +++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java @@ -459,7 +459,7 @@ public class LinphonePreferences { // End of contact settings // Call settings - public boolean acceptMediaEncryptionMandatory() { + public boolean isMediaEncryptionMandatory() { return getLc().isMediaEncryptionMandatory(); }