Improved UI when using external sharing mode to choose the chat room to use + added toast for contact picking as well

This commit is contained in:
Sylvain Berfini 2019-02-19 17:26:46 +01:00
parent 44d8f49b86
commit 51e9d1507e
5 changed files with 50 additions and 124 deletions

View file

@ -700,34 +700,6 @@ public class LinphoneActivity extends LinphoneGenericActivity
startActivity(new Intent(LinphoneActivity.this, InAppPurchaseActivity.class)); startActivity(new Intent(LinphoneActivity.this, InAppPurchaseActivity.class));
} }
private void displayChat(
String localSipUri,
String remoteSipUri,
String message,
String fileUri,
String pictureUri,
String thumbnailUri,
String displayName,
Address lAddress) {
Bundle extras = new Bundle();
extras.putString("LocalSipUri", localSipUri);
extras.putString("RemoteSipUri", remoteSipUri);
if (message != null) extras.putString("messageDraft", message);
if (fileUri != null) extras.putString("fileSharedUri", fileUri);
if (remoteSipUri != null && lAddress.getDisplayName() != null) {
extras.putString("DisplayName", displayName);
extras.putString("PictureUri", pictureUri);
extras.putString("ThumbnailUri", thumbnailUri);
}
if (remoteSipUri == null) {
changeCurrentFragment(FragmentsAvailable.CREATE_CHAT, extras);
} else {
changeCurrentFragment(FragmentsAvailable.GROUP_CHAT, extras);
}
}
public void goToChatCreator( public void goToChatCreator(
String address, String address,
ArrayList<ContactAddress> selectedContacts, ArrayList<ContactAddress> selectedContacts,
@ -837,70 +809,6 @@ public class LinphoneActivity extends LinphoneGenericActivity
changeCurrentFragment(FragmentsAvailable.CHAT_LIST, null); changeCurrentFragment(FragmentsAvailable.CHAT_LIST, null);
} }
public void displayChat(
String localSipUri, String remoteSipUri, String message, String fileUri) {
if (getResources().getBoolean(R.bool.disable_chat)) {
return;
}
String pictureUri = null;
String thumbnailUri = null;
String displayName = null;
Address lAddress = null;
if (remoteSipUri != null) {
lAddress = LinphoneManager.getLc().interpretUrl(remoteSipUri);
if (lAddress == null) return;
LinphoneContact contact =
ContactsManager.getInstance().findContactFromAddress(lAddress);
displayName = contact != null ? contact.getFullName() : null;
if (contact != null && contact.getPhotoUri() != null) {
pictureUri = contact.getPhotoUri().toString();
thumbnailUri = contact.getThumbnailUri().toString();
}
}
if (mCurrentFragment == FragmentsAvailable.CHAT_LIST
|| mCurrentFragment == FragmentsAvailable.GROUP_CHAT) {
Fragment fragment2 = getFragmentManager().findFragmentById(R.id.fragmentContainer2);
if (fragment2 != null
&& fragment2.isVisible()
&& mCurrentFragment == FragmentsAvailable.GROUP_CHAT
&& !mEmptyFragment) {
ChatMessagesFragment chatFragment = (ChatMessagesFragment) fragment2;
chatFragment.changeDisplayedChat(localSipUri, remoteSipUri);
} else {
displayChat(
localSipUri,
remoteSipUri,
message,
fileUri,
pictureUri,
thumbnailUri,
displayName,
lAddress);
}
} else {
if (isTablet()) {
changeCurrentFragment(FragmentsAvailable.CHAT_LIST, null);
} else {
displayChat(
localSipUri,
remoteSipUri,
message,
fileUri,
pictureUri,
thumbnailUri,
displayName,
lAddress);
}
}
LinphoneManager.getInstance().updateUnreadCountForChatRoom(localSipUri, remoteSipUri, 0);
displayMissedChats(LinphoneManager.getInstance().getUnreadMessageCount());
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
int id = v.getId(); int id = v.getId();
@ -1122,12 +1030,6 @@ public class LinphoneActivity extends LinphoneGenericActivity
} }
public void setAddresGoToDialerAndCall(String number, String name) { public void setAddresGoToDialerAndCall(String number, String name) {
// Bundle extras = new Bundle();
// extras.putString("SipUri", number);
// extras.putString("DisplayName", name);
// extras.putString("Photo", photo == null ? null : photo.toString());
// changeCurrentFragment(FragmentsAvailable.DIALER, extras);
AddressType address = new AddressText(this, null); AddressType address = new AddressText(this, null);
address.setText(number); address.setText(number);
address.setDisplayedName(name); address.setDisplayedName(name);
@ -1407,13 +1309,12 @@ public class LinphoneActivity extends LinphoneGenericActivity
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
ArrayList<String> permissionsList = new ArrayList<>(); ArrayList<String> permissionsList = new ArrayList<>();
permissionsList.add( // This one is to allow floating notifications
Manifest.permission permissionsList.add(Manifest.permission.SYSTEM_ALERT_WINDOW);
.SYSTEM_ALERT_WINDOW); // This one is to allow floating notifications // Manifest.permission.FOREGROUND_SERVICE,
permissionsList.add(
"android.permission.FOREGROUND_SERVICE"); // Manifest.permission.FOREGROUND_SERVICE,
// required starting Android 9 to be able // required starting Android 9 to be able
// to start a foreground service // to start a foreground service
permissionsList.add("android.permission.FOREGROUND_SERVICE");
int contacts = int contacts =
getPackageManager() getPackageManager()
@ -1557,13 +1458,16 @@ public class LinphoneActivity extends LinphoneGenericActivity
Intent intent = getIntent(); Intent intent = getIntent();
if (intent.getStringExtra("msgShared") != null) { if (intent.getStringExtra("msgShared") != null) {
displayChat(null, null, intent.getStringExtra("msgShared"), null); Bundle extras = new Bundle();
intent.putExtra("msgShared", ""); extras.putString("messageDraft", intent.getStringExtra("msgShared"));
} changeCurrentFragment(FragmentsAvailable.CHAT_LIST, extras);
if (intent.getStringExtra("fileShared") != null intent.removeExtra("msgShared");
} else if (intent.getStringExtra("fileShared") != null
&& !intent.getStringExtra("fileShared").equals("")) { && !intent.getStringExtra("fileShared").equals("")) {
displayChat(null, null, null, intent.getStringExtra("fileShared")); Bundle extras = new Bundle();
intent.putExtra("fileShared", ""); extras.putString("fileSharedUri", intent.getStringExtra("fileShared"));
changeCurrentFragment(FragmentsAvailable.CHAT_LIST, extras);
intent.removeExtra("fileShared");
} }
mIsOnBackground = false; mIsOnBackground = false;

View file

@ -168,17 +168,6 @@ public class LinphoneLauncherActivity extends Activity {
mAddressToCall = null; mAddressToCall = null;
} }
startActivity(newIntent); startActivity(newIntent);
if (classToStart == LinphoneActivity.class
&& LinphoneActivity.isInstanciated()
&& (stringFileShared != null || fileUri != null)) {
if (stringFileShared != null) {
LinphoneActivity.instance()
.displayChat(null, null, stringFileShared, null);
} else if (fileUri != null) {
LinphoneActivity.instance()
.displayChat(null, null, null, stringUriFileShared);
}
}
} }
}, },
1000); 1000);

View file

@ -30,6 +30,7 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -115,8 +116,10 @@ public class ChatRoomsFragment extends Fragment
new View.OnClickListener() { new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Bundle extras = (Bundle) getArguments().clone();
getArguments().clear();
LinphoneActivity.instance() LinphoneActivity.instance()
.goToChatCreator(null, null, null, false, null, false, false); .goToChatCreator(null, null, null, false, extras, false, false);
} }
}); });
@ -124,8 +127,10 @@ public class ChatRoomsFragment extends Fragment
new View.OnClickListener() { new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Bundle extras = (Bundle) getArguments().clone();
getArguments().clear();
LinphoneActivity.instance() LinphoneActivity.instance()
.goToChatCreator(null, null, null, false, null, true, false); .goToChatCreator(null, null, null, false, extras, true, false);
} }
}); });
@ -173,6 +178,19 @@ public class ChatRoomsFragment extends Fragment
} }
} }
}; };
if (getArguments() != null) {
String fileSharedUri = getArguments().getString("fileSharedUri");
String messageSharedUri = getArguments().getString("messageDraft");
if (fileSharedUri != null || messageSharedUri != null) {
Toast.makeText(
LinphoneActivity.instance(),
R.string.toast_choose_chat_room_for_sharing,
Toast.LENGTH_SHORT)
.show();
}
}
return view; return view;
} }
@ -182,11 +200,13 @@ public class ChatRoomsFragment extends Fragment
mChatRoomsAdapter.toggleSelection(position); mChatRoomsAdapter.toggleSelection(position);
} else { } else {
ChatRoom room = (ChatRoom) mChatRoomsAdapter.getItem(position); ChatRoom room = (ChatRoom) mChatRoomsAdapter.getItem(position);
Bundle extras = (Bundle) getArguments().clone();
getArguments().clear();
LinphoneActivity.instance() LinphoneActivity.instance()
.goToChat( .goToChat(
room.getLocalAddress().asStringUriOnly(), room.getLocalAddress().asStringUriOnly(),
room.getPeerAddress().asString(), room.getPeerAddress().asString(),
null); extras);
} }
} }

View file

@ -31,6 +31,7 @@ import android.widget.ImageView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.SearchView; import android.widget.SearchView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -75,9 +76,19 @@ public class ContactsFragment extends Fragment
if (getArguments() != null) { if (getArguments() != null) {
mEditOnClick = getArguments().getBoolean("EditOnClick"); mEditOnClick = getArguments().getBoolean("EditOnClick");
mSipAddressToAdd = getArguments().getString("SipAddress"); mSipAddressToAdd = getArguments().getString("SipAddress");
if (getArguments().getString("DisplayName") != null) if (getArguments().getString("DisplayName") != null) {
mDisplayName = getArguments().getString("DisplayName"); mDisplayName = getArguments().getString("DisplayName");
}
mOnlyDisplayChatAddress = getArguments().getBoolean("ChatAddressOnly"); mOnlyDisplayChatAddress = getArguments().getBoolean("ChatAddressOnly");
if (getArguments().getBoolean("EditOnClick")) {
Toast.makeText(
LinphoneActivity.instance(),
R.string.toast_choose_contact_for_edition,
Toast.LENGTH_SHORT)
.show();
}
getArguments().clear();
} }
mNoSipContact = view.findViewById(R.id.noSipContact); mNoSipContact = view.findViewById(R.id.noSipContact);

View file

@ -178,6 +178,7 @@
<string name="contact_organization">Organization</string> <string name="contact_organization">Organization</string>
<string name="invite_friend">Invite</string> <string name="invite_friend">Invite</string>
<string name="invite_friend_text">Hello, join me on Linphone! You can download it for free at http://www.linphone.org/technical-corner/linphone/downloads</string> <string name="invite_friend_text">Hello, join me on Linphone! You can download it for free at http://www.linphone.org/technical-corner/linphone/downloads</string>
<string name="toast_choose_contact_for_edition">Select the contact to edit or create a new one</string>
<!-- Chat --> <!-- Chat -->
<string name="no_chat_history">No conversations</string> <string name="no_chat_history">No conversations</string>
@ -244,6 +245,7 @@
<string name="participant_max_count_exceeded">Max participant count exceeded by %s</string> <string name="participant_max_count_exceeded">Max participant count exceeded by %s</string>
<string name="unexpected_event">Unexpected event %i for %s</string> <string name="unexpected_event">Unexpected event %i for %s</string>
<string name="download_file">Download</string> <string name="download_file">Download</string>
<string name="toast_choose_chat_room_for_sharing">Select the conversation in which to send your selection or create a new one</string>
<!-- Status Bar --> <!-- Status Bar -->
<string name="status_connected">Registered</string> <string name="status_connected">Registered</string>