diff --git a/app/src/main/java/org/linphone/activities/Navigation.kt b/app/src/main/java/org/linphone/activities/Navigation.kt index e943b5d84..a3275454c 100644 --- a/app/src/main/java/org/linphone/activities/Navigation.kt +++ b/app/src/main/java/org/linphone/activities/Navigation.kt @@ -409,6 +409,14 @@ internal fun DetailChatRoomFragment.navigateToDialer(args: Bundle?) { ) } +internal fun DetailChatRoomFragment.navigateToConferenceScheduling() { + findMasterNavController().navigate( + R.id.action_global_conferenceSchedulingFragment, + null, + popupTo() + ) +} + internal fun ChatRoomCreationFragment.navigateToGroupInfo() { if (findNavController().currentDestination?.id == R.id.chatRoomCreationFragment) { findNavController().navigate( diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index 08466f632..cf759d7d6 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -871,6 +871,15 @@ class DetailChatRoomFragment : MasterFragment() + for (participant in chatRoom.participants) { + participants.add(participant.address) + } + sharedViewModel.participantsListForNextScheduledMeeting.value = Event(participants) + navigateToConferenceScheduling() + } + private fun showForwardConfirmationDialog(chatMessage: ChatMessage) { val viewModel = DialogViewModel(getString(R.string.chat_message_forward_confirmation_dialog)) viewModel.iconResource = R.drawable.forward_message_default @@ -901,7 +910,7 @@ class DetailChatRoomFragment : MasterFragment + Log.i("[Conference Scheduling] Found participants (${participants.size}) to pre-populate for meeting schedule") + viewModel.prePopulateParticipantsList(participants, true) + } + } + + sharedViewModel.addressOfConferenceInfoToEdit.observe( viewLifecycleOwner ) { it.consume { address -> diff --git a/app/src/main/java/org/linphone/activities/main/conference/fragments/ScheduledConferencesFragment.kt b/app/src/main/java/org/linphone/activities/main/conference/fragments/ScheduledConferencesFragment.kt index 626dd79d8..b9f720e1d 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/fragments/ScheduledConferencesFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/fragments/ScheduledConferencesFragment.kt @@ -127,7 +127,7 @@ class ScheduledConferencesFragment : MasterFragment - sharedViewModel.conferenceInfoToEdit.value = Event(address) + sharedViewModel.addressOfConferenceInfoToEdit.value = Event(address) navigateToConferenceScheduling() } } diff --git a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceSchedulingViewModel.kt b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceSchedulingViewModel.kt index f7bbcf456..807e30466 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceSchedulingViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/viewmodels/ConferenceSchedulingViewModel.kt @@ -196,6 +196,11 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() { super.onCleared() } + fun prePopulateParticipantsList(participants: ArrayList
, isSchedule: Boolean) { + selectedAddresses.value = participants + scheduleForLater.value = isSchedule + } + fun populateFromConferenceInfo(conferenceInfo: ConferenceInfo) { confInfo = conferenceInfo diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt index a5e5109dc..3e3d0f5b7 100644 --- a/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/viewmodels/SharedMainViewModel.kt @@ -101,10 +101,14 @@ class SharedMainViewModel : ViewModel() { /* Conference */ - val conferenceInfoToEdit: MutableLiveData> by lazy { + val addressOfConferenceInfoToEdit: MutableLiveData> by lazy { MutableLiveData>() } + val participantsListForNextScheduledMeeting: MutableLiveData>> by lazy { + MutableLiveData>>() + } + /* Dialer */ var dialerUri: String = "" diff --git a/app/src/main/res/drawable-xhdpi/menu_meeting_schedule.png b/app/src/main/res/drawable-xhdpi/menu_meeting_schedule.png new file mode 100644 index 000000000..64ba07792 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/menu_meeting_schedule.png differ diff --git a/app/src/main/res/drawable/chat_room_menu_meeting.xml b/app/src/main/res/drawable/chat_room_menu_meeting.xml new file mode 100644 index 000000000..ed877a812 --- /dev/null +++ b/app/src/main/res/drawable/chat_room_menu_meeting.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/chat_room_menu.xml b/app/src/main/res/layout/chat_room_menu.xml index f8b70fbf7..2b8009992 100644 --- a/app/src/main/res/layout/chat_room_menu.xml +++ b/app/src/main/res/layout/chat_room_menu.xml @@ -13,6 +13,9 @@ + @@ -31,6 +34,9 @@ + @@ -107,6 +113,16 @@ android:text="@string/chat_message_context_menu_ephemeral_messages" app:drawableRightCompat="@drawable/chat_room_menu_ephemeral" /> + +