From 78384e7b5571ea776b71183444fb388bf9f7f273 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Thu, 7 Oct 2021 19:48:33 +0200 Subject: [PATCH 01/50] add initial approach for pip mode (wip) Signed-off-by: Marcel Hibbe --- app/src/main/AndroidManifest.xml | 3 +- .../talk/activities/MagicCallActivity.kt | 64 +++++++++++-------- .../talk/controllers/CallController.java | 10 ++- .../talk/controllers/ChatController.kt | 12 +--- .../ic_baseline_picture_in_picture_alt_24.xml | 10 +++ app/src/main/res/layout/controller_call.xml | 4 +- app/src/main/res/layout/controller_chat.xml | 13 ---- 7 files changed, 59 insertions(+), 57 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_picture_in_picture_alt_24.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e254e15ce..c0f7a31c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -124,7 +124,8 @@ = android.os.Build.VERSION_CODES.Q) { + if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) { setForceShowIcon(true) } show() diff --git a/app/src/main/res/drawable/ic_baseline_picture_in_picture_alt_24.xml b/app/src/main/res/drawable/ic_baseline_picture_in_picture_alt_24.xml new file mode 100644 index 000000000..7837510dd --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_picture_in_picture_alt_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/controller_call.xml b/app/src/main/res/layout/controller_call.xml index a02000cfc..6592ab88b 100644 --- a/app/src/main/res/layout/controller_call.xml +++ b/app/src/main/res/layout/controller_call.xml @@ -142,14 +142,14 @@ android:orientation="horizontal"> - - Date: Mon, 11 Oct 2021 22:47:12 +0200 Subject: [PATCH 02/50] set calling/dialing state by ApplicationWideCurrentRoomHolder Signed-off-by: Marcel Hibbe --- .../talk/controllers/CallController.java | 4 +++- .../nextcloud/talk/controllers/ChatController.kt | 15 ++++----------- .../ApplicationWideCurrentRoomHolder.java | 10 ++++++++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 8eec7429d..0aff62c2d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -844,7 +844,7 @@ public class CallController extends BaseController { @RequiresApi(api = Build.VERSION_CODES.O) @OnClick(R.id.callControlEnterPip) - void onToggleChatClick() { + void enterPipMode() { ((MagicCallActivity) getActivity()).enterPipMode(); } @@ -1304,6 +1304,7 @@ public class CallController extends BaseController { setCallState(CallStatus.JOINED); ApplicationWideCurrentRoomHolder.getInstance().setInCall(true); + ApplicationWideCurrentRoomHolder.getInstance().setDialing(false); if (!TextUtils.isEmpty(roomToken)) { NotificationUtils.INSTANCE.cancelExistingNotificationsForRoom(getApplicationContext(), @@ -1581,6 +1582,7 @@ public class CallController extends BaseController { } hangupNetworkCalls(shutDownView); + ApplicationWideCurrentRoomHolder.getInstance().setInCall(false); } private void hangupNetworkCalls(boolean shutDownView) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index fe54e4628..48617a730 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -232,7 +232,6 @@ class ChatController(args: Bundle) : val roomId: String val voiceOnly: Boolean var isFirstMessagesProcessing = true - var isLeavingForConversation: Boolean = false var wasDetached: Boolean = false var emojiPopup: EmojiPopup? = null @@ -1367,10 +1366,8 @@ class ChatController(args: Bundle) : activity?.findViewById(R.id.toolbar)?.setOnClickListener { v -> showConversationInfoScreen() } } - isLeavingForConversation = false ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = roomId ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = roomId - ApplicationWideCurrentRoomHolder.getInstance().isInCall = false ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser val smileyButton = binding.messageInputView.findViewById(R.id.smileyButton) @@ -1434,11 +1431,6 @@ class ChatController(args: Bundle) : override fun onDetach(view: View) { super.onDetach(view) - - if (!isLeavingForConversation) { - // current room is still "active", we need the info - ApplicationWideCurrentRoomHolder.getInstance().clear() - } eventBus?.unregister(this) if (activity != null) { @@ -1448,9 +1440,10 @@ class ChatController(args: Bundle) : if (conversationUser != null && activity != null && !activity?.isChangingConfigurations!! && - !isLeavingForConversation + !ApplicationWideCurrentRoomHolder.getInstance().isInCall && + !ApplicationWideCurrentRoomHolder.getInstance().isDialing ) { - // TODO: don't leave room when going back to call from PIP Mode!! + ApplicationWideCurrentRoomHolder.getInstance().clear() wasDetached = true leaveRoom() } @@ -2121,7 +2114,7 @@ class ChatController(args: Bundle) : } private fun startACall(isVoiceOnlyCall: Boolean) { - isLeavingForConversation = true + ApplicationWideCurrentRoomHolder.getInstance().isDialing = true val callIntent = getIntentForCall(isVoiceOnlyCall) if (callIntent != null) { startActivity(callIntent) diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java index 6ce60d386..1ab12a531 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java +++ b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java @@ -28,6 +28,7 @@ public class ApplicationWideCurrentRoomHolder { private String currentRoomToken = ""; private UserEntity userInRoom = new UserEntity(); private boolean inCall = false; + private boolean isDialing = false; private String session = ""; public static ApplicationWideCurrentRoomHolder getInstance() { @@ -38,6 +39,7 @@ public class ApplicationWideCurrentRoomHolder { currentRoomId = ""; userInRoom = new UserEntity(); inCall = false; + isDialing = false; currentRoomToken = ""; session = ""; } @@ -74,6 +76,14 @@ public class ApplicationWideCurrentRoomHolder { this.inCall = inCall; } + public boolean isDialing() { + return isDialing; + } + + public void setDialing(boolean dialing) { + isDialing = dialing; + } + public String getSession() { return session; } From 7f19816961d3cb26a4f4aad37115559f2c9902ea Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Tue, 12 Oct 2021 12:27:14 +0200 Subject: [PATCH 03/50] remove call activity from tasks add launch screen for call Signed-off-by: Marcel Hibbe --- app/src/main/AndroidManifest.xml | 5 ++++- app/src/main/res/values/styles.xml | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c0f7a31c0..00de93a50 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -124,9 +124,12 @@ + android:launchMode="singleTask" + android:taskAffinity=".call" + android:excludeFromRecents="true" /> @color/colorPrimary + + + - - @@ -189,9 +185,9 @@