From e85e55f67672f56a8f541bc23f733377430bcc3b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 11 Apr 2019 10:54:21 +0200 Subject: [PATCH] Added secured chat shortcut in history detail view --- .../history/HistoryDetailFragment.java | 30 ++++++++++++++----- app/src/main/res/layout-land/about.xml | 4 +-- app/src/main/res/layout/history_detail.xml | 25 ++++++++++++++++ 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java index f11b8df00..3d0ad6ca3 100644 --- a/app/src/main/java/org/linphone/history/HistoryDetailFragment.java +++ b/app/src/main/java/org/linphone/history/HistoryDetailFragment.java @@ -40,6 +40,7 @@ import org.linphone.core.ChatRoomListenerStub; import org.linphone.core.ChatRoomParams; import org.linphone.core.Core; import org.linphone.core.Factory; +import org.linphone.core.FriendCapability; import org.linphone.core.ProxyConfig; import org.linphone.core.tools.Log; import org.linphone.fragments.FragmentsAvailable; @@ -53,7 +54,7 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { private ImageView mCallDirection; private TextView mContactName, mContactAddress, mTime, mDate; private String mSipUri, mDisplayName; - private RelativeLayout mWaitLayout, mAvatarLayout; + private RelativeLayout mWaitLayout, mAvatarLayout, mChatSecured; private LinphoneContact mContact; private ChatRoom mChatRoom; private ChatRoomListenerStub mChatRoomCreationListener; @@ -84,8 +85,14 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { mChat = mView.findViewById(R.id.chat); mChat.setOnClickListener(this); - if (getResources().getBoolean(R.bool.disable_chat)) - mView.findViewById(R.id.chat).setVisibility(View.GONE); + + mChatSecured = mView.findViewById(R.id.chat_secured); + mChatSecured.setOnClickListener(this); + + if (getResources().getBoolean(R.bool.disable_chat)) { + mChat.setVisibility(View.GONE); + mChatSecured.setVisibility(View.GONE); + } mAddToContacts = mView.findViewById(R.id.add_contact); mAddToContacts.setOnClickListener(this); @@ -146,6 +153,7 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { } else if (status.equals(getResources().getString(R.string.outgoing))) { mCallDirection.setImageResource(R.drawable.call_outgoing); } + mChatSecured.setVisibility(View.GONE); mTime.setText(callTime == null ? "" : callTime); Long longDate = Long.parseLong(callDate); @@ -164,6 +172,12 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { ContactAvatar.displayAvatar(mContact, mAvatarLayout); mAddToContacts.setVisibility(View.GONE); mGoToContact.setVisibility(View.VISIBLE); + + if (!getResources().getBoolean(R.bool.disable_chat) + && mContact.hasPresenceModelForUriOrTelCapability( + mSipUri, FriendCapability.LimeX3Dh)) { + mChatSecured.setVisibility(View.VISIBLE); + } } else { mContactName.setText( mDisplayName == null @@ -212,12 +226,13 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { } if (id == R.id.call) { LinphoneActivity.instance().setAddresGoToDialerAndCall(mSipUri, mDisplayName); - } else if (id == R.id.chat) { + } else if (id == R.id.chat || id == R.id.chat_secured) { + boolean isSecured = id == R.id.chat_secured; Core lc = LinphoneManager.getLc(); Address participant = Factory.instance().createAddress(mSipUri); ChatRoom room = lc.findOneToOneChatRoom( - lc.getDefaultProxyConfig().getContact(), participant, false); + lc.getDefaultProxyConfig().getContact(), participant, isSecured); if (room != null) { LinphoneActivity.instance() .goToChat( @@ -228,11 +243,12 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { ProxyConfig lpc = lc.getDefaultProxyConfig(); if (lpc != null && lpc.getConferenceFactoryUri() != null - && !LinphonePreferences.instance().useBasicChatRoomFor1To1()) { + && (isSecured + || !LinphonePreferences.instance().useBasicChatRoomFor1To1())) { mWaitLayout.setVisibility(View.VISIBLE); ChatRoomParams params = lc.createDefaultChatRoomParams(); - params.enableEncryption(false); + params.enableEncryption(isSecured); params.enableGroup(false); // We don't want a basic chat room params.setBackend(ChatRoomBackend.FlexisipChat); diff --git a/app/src/main/res/layout-land/about.xml b/app/src/main/res/layout-land/about.xml index 09bf7a094..564269fb1 100644 --- a/app/src/main/res/layout-land/about.xml +++ b/app/src/main/res/layout-land/about.xml @@ -97,7 +97,7 @@ + + + + + + + +