mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-05-06 21:33:09 +00:00
Started meeting detail view
This commit is contained in:
parent
5531dabae4
commit
3ae9740336
17 changed files with 1200 additions and 452 deletions
|
|
@ -83,7 +83,7 @@ class MeetingsListAdapter(
|
|||
|
||||
lifecycleOwner = viewLifecycleOwner
|
||||
|
||||
binding.root.isSelected = bindingAdapterPosition == selectedAdapterPosition
|
||||
binding.cardview.isSelected = bindingAdapterPosition == selectedAdapterPosition
|
||||
|
||||
binding.setOnClickListener {
|
||||
meetingClickedEvent.value = Event(meetingModel)
|
||||
|
|
|
|||
|
|
@ -19,14 +19,22 @@
|
|||
*/
|
||||
package org.linphone.ui.main.meetings.fragment
|
||||
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.provider.CalendarContract
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.databinding.MeetingFragmentBinding
|
||||
import org.linphone.ui.main.fragment.GenericFragment
|
||||
import org.linphone.ui.main.meetings.viewmodel.MeetingViewModel
|
||||
import org.linphone.utils.Event
|
||||
|
||||
@UiThread
|
||||
|
|
@ -37,6 +45,10 @@ class MeetingFragment : GenericFragment() {
|
|||
|
||||
private lateinit var binding: MeetingFragmentBinding
|
||||
|
||||
private lateinit var viewModel: MeetingViewModel
|
||||
|
||||
private val args: MeetingFragmentArgs by navArgs()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
|
@ -60,5 +72,66 @@ class MeetingFragment : GenericFragment() {
|
|||
postponeEnterTransition()
|
||||
|
||||
binding.lifecycleOwner = viewLifecycleOwner
|
||||
|
||||
viewModel = requireActivity().run {
|
||||
ViewModelProvider(this)[MeetingViewModel::class.java]
|
||||
}
|
||||
binding.viewModel = viewModel
|
||||
|
||||
val uri = args.conferenceUri
|
||||
Log.i(
|
||||
"$TAG Looking up for conference with SIP URI [$uri]"
|
||||
)
|
||||
viewModel.findConferenceInfo(uri)
|
||||
|
||||
binding.setBackClickListener {
|
||||
goBack()
|
||||
}
|
||||
|
||||
binding.setShareClickListener {
|
||||
val intent = Intent(Intent.ACTION_EDIT)
|
||||
intent.type = "vnd.android.cursor.item/event"
|
||||
intent.putExtra(CalendarContract.Events.TITLE, viewModel.subject.value)
|
||||
|
||||
val description = viewModel.description.value.orEmpty()
|
||||
if (description.isNotEmpty()) {
|
||||
intent.putExtra(CalendarContract.Events.DESCRIPTION, description)
|
||||
}
|
||||
|
||||
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, viewModel.startTimeStamp.value)
|
||||
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, viewModel.endTimeStamp.value)
|
||||
|
||||
intent.putExtra(CalendarContract.Events.CUSTOM_APP_URI, viewModel.sipUri.value)
|
||||
intent.putExtra(
|
||||
CalendarContract.Events.CUSTOM_APP_PACKAGE,
|
||||
requireContext().packageName
|
||||
)
|
||||
|
||||
try {
|
||||
startActivity(intent)
|
||||
} catch (exception: ActivityNotFoundException) {
|
||||
Log.e("$TAG No activity found to handle intent: $exception")
|
||||
}
|
||||
}
|
||||
|
||||
sharedViewModel.isSlidingPaneSlideable.observe(viewLifecycleOwner) { slideable ->
|
||||
viewModel.showBackButton.value = slideable
|
||||
}
|
||||
|
||||
viewModel.conferenceInfoFoundEvent.observe(viewLifecycleOwner) {
|
||||
it.consume { found ->
|
||||
if (found) {
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
sharedViewModel.openSlidingPaneEvent.value = Event(true)
|
||||
}
|
||||
} else {
|
||||
Log.e("$TAG Failed to find meeting with URI [$uri], going back")
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
goBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -103,6 +103,14 @@ class MeetingsFragment : GenericFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
sharedViewModel.showMeetingEvent.observe(viewLifecycleOwner) {
|
||||
it.consume { uri ->
|
||||
Log.i("$TAG Navigating to meeting fragment with URI [$uri]")
|
||||
val action = MeetingFragmentDirections.actionGlobalMeetingFragment(uri)
|
||||
binding.meetingsNavContainer.findNavController().navigate(action)
|
||||
}
|
||||
}
|
||||
|
||||
sharedViewModel.navigateToContactsEvent.observe(viewLifecycleOwner) {
|
||||
it.consume {
|
||||
if (findNavController().currentDestination?.id == R.id.meetingsFragment) {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import org.linphone.R
|
||||
|
|
@ -59,6 +60,7 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
}
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
postponeEnterTransition()
|
||||
|
||||
listViewModel = requireActivity().run {
|
||||
ViewModelProvider(this)[MeetingsListViewModel::class.java]
|
||||
|
|
@ -85,13 +87,23 @@ class MeetingsListFragment : AbstractTopBarFragment() {
|
|||
scrollToToday()
|
||||
}
|
||||
|
||||
adapter.meetingClickedEvent.observe(viewLifecycleOwner) {
|
||||
it.consume { model ->
|
||||
Log.i("$TAG Show conversation with ID [${model.id}]")
|
||||
sharedViewModel.showMeetingEvent.value = Event(model.id)
|
||||
}
|
||||
}
|
||||
|
||||
listViewModel.meetings.observe(viewLifecycleOwner) {
|
||||
val currentCount = adapter.itemCount
|
||||
adapter.submitList(it)
|
||||
Log.i("$TAG Meetings list ready with [${it.size}] items")
|
||||
|
||||
if (currentCount < it.size) {
|
||||
scrollToToday()
|
||||
(view.parent as? ViewGroup)?.doOnPreDraw {
|
||||
startPostponedEnterTransition()
|
||||
scrollToToday()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -73,10 +73,6 @@ class ScheduleMeetingFragment : GenericFragment() {
|
|||
}
|
||||
binding.viewModel = viewModel
|
||||
|
||||
sharedViewModel.isSlidingPaneSlideable.observe(viewLifecycleOwner) { slideable ->
|
||||
viewModel.showBackButton.value = slideable
|
||||
}
|
||||
|
||||
binding.setBackClickListener {
|
||||
goBack()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import org.linphone.core.Participant
|
|||
import org.linphone.utils.TimestampUtils
|
||||
|
||||
class MeetingModel @WorkerThread constructor(conferenceInfo: ConferenceInfo) {
|
||||
val id = conferenceInfo.uri?.asStringUriOnly()
|
||||
val id = conferenceInfo.uri?.asStringUriOnly() ?: ""
|
||||
|
||||
private val timestamp = conferenceInfo.dateTime
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2023 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linphone-android
|
||||
* (see https://www.linphone.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.linphone.ui.main.meetings.model
|
||||
|
||||
import androidx.annotation.WorkerThread
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.core.Address
|
||||
import org.linphone.ui.main.contacts.model.ContactAvatarModel
|
||||
|
||||
class ParticipantModel @WorkerThread constructor(address: Address, val isOrganizer: Boolean) {
|
||||
val avatarModel = MutableLiveData<ContactAvatarModel>()
|
||||
|
||||
init {
|
||||
val friend = coreContext.contactsManager.findContactByAddress(address)
|
||||
val avatar = if (friend != null) {
|
||||
ContactAvatarModel(friend)
|
||||
} else {
|
||||
val fakeFriend = coreContext.core.createFriend()
|
||||
fakeFriend.address = address
|
||||
ContactAvatarModel(fakeFriend)
|
||||
}
|
||||
avatarModel.postValue(avatar)
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
fun destroy() {
|
||||
avatarModel.value?.destroy()
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2023 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linphone-android
|
||||
* (see https://www.linphone.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.linphone.ui.main.meetings.viewmodel
|
||||
|
||||
import androidx.annotation.UiThread
|
||||
import androidx.annotation.WorkerThread
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.R
|
||||
import org.linphone.core.ConferenceInfo
|
||||
import org.linphone.core.Factory
|
||||
import org.linphone.core.Participant
|
||||
import org.linphone.core.tools.Log
|
||||
import org.linphone.ui.main.meetings.model.ParticipantModel
|
||||
import org.linphone.utils.AppUtils
|
||||
import org.linphone.utils.Event
|
||||
import org.linphone.utils.TimestampUtils
|
||||
|
||||
class MeetingViewModel @UiThread constructor() : ViewModel() {
|
||||
companion object {
|
||||
private const val TAG = "[Meeting ViewModel]"
|
||||
}
|
||||
|
||||
val showBackButton = MutableLiveData<Boolean>()
|
||||
|
||||
val isBroadcast = MutableLiveData<Boolean>()
|
||||
|
||||
val isEditable = MutableLiveData<Boolean>()
|
||||
|
||||
val subject = MutableLiveData<String>()
|
||||
|
||||
val sipUri = MutableLiveData<String>()
|
||||
|
||||
val dateTime = MutableLiveData<String>()
|
||||
|
||||
val timezone = MutableLiveData<String>()
|
||||
|
||||
val description = MutableLiveData<String>()
|
||||
|
||||
val speakers = MutableLiveData<ArrayList<ParticipantModel>>()
|
||||
|
||||
val participants = MutableLiveData<ArrayList<ParticipantModel>>()
|
||||
|
||||
val conferenceInfoFoundEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val startTimeStamp = MutableLiveData<Long>()
|
||||
val endTimeStamp = MutableLiveData<Long>()
|
||||
|
||||
private lateinit var conferenceInfo: ConferenceInfo
|
||||
|
||||
init {
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
|
||||
coreContext.postOnCoreThread {
|
||||
speakers.value.orEmpty().forEach(ParticipantModel::destroy)
|
||||
participants.value.orEmpty().forEach(ParticipantModel::destroy)
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun findConferenceInfo(uri: String) {
|
||||
coreContext.postOnCoreThread { core ->
|
||||
val address = Factory.instance().createAddress(uri)
|
||||
if (address != null) {
|
||||
val found = core.findConferenceInformationFromUri(address)
|
||||
if (found != null) {
|
||||
conferenceInfo = found
|
||||
configureConferenceInfo()
|
||||
conferenceInfoFoundEvent.postValue(Event(true))
|
||||
} else {
|
||||
conferenceInfoFoundEvent.postValue(Event(false))
|
||||
}
|
||||
} else {
|
||||
conferenceInfoFoundEvent.postValue(Event(false))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
fun join() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
private fun configureConferenceInfo() {
|
||||
if (::conferenceInfo.isInitialized) {
|
||||
subject.postValue(conferenceInfo.subject)
|
||||
sipUri.postValue(conferenceInfo.uri?.asStringUriOnly() ?: "")
|
||||
description.postValue(conferenceInfo.description)
|
||||
|
||||
val timestamp = conferenceInfo.dateTime
|
||||
val duration = conferenceInfo.duration
|
||||
val date = TimestampUtils.toString(
|
||||
timestamp,
|
||||
onlyDate = true,
|
||||
shortDate = false,
|
||||
hideYear = false
|
||||
)
|
||||
val startTime = TimestampUtils.timeToString(timestamp)
|
||||
val end = timestamp + (duration * 60)
|
||||
val endTime = TimestampUtils.timeToString(end)
|
||||
startTimeStamp.postValue(timestamp * 1000)
|
||||
endTimeStamp.postValue(end * 1000)
|
||||
dateTime.postValue("$date | $startTime - $endTime")
|
||||
|
||||
timezone.postValue(
|
||||
AppUtils.getFormattedString(
|
||||
R.string.meeting_schedule_timezone_title,
|
||||
TimeZone.getDefault().displayName
|
||||
)
|
||||
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }
|
||||
)
|
||||
|
||||
val organizerAddress = conferenceInfo.organizer
|
||||
if (organizerAddress != null) {
|
||||
val localAccount = coreContext.core.accountList.find { account ->
|
||||
val address = account.params.identityAddress
|
||||
address != null && organizerAddress.weakEqual(address)
|
||||
}
|
||||
isEditable.postValue(localAccount != null)
|
||||
} else {
|
||||
isEditable.postValue(false)
|
||||
Log.e(
|
||||
"$TAG No organizer SIP URI found for: ${conferenceInfo.uri?.asStringUriOnly()}"
|
||||
)
|
||||
}
|
||||
|
||||
computeParticipantsList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun computeParticipantsList() {
|
||||
speakers.value.orEmpty().forEach(ParticipantModel::destroy)
|
||||
participants.value.orEmpty().forEach(ParticipantModel::destroy)
|
||||
|
||||
val speakersList = arrayListOf<ParticipantModel>()
|
||||
val participantsList = arrayListOf<ParticipantModel>()
|
||||
|
||||
var allSpeaker = true
|
||||
val organizer = conferenceInfo.organizer
|
||||
var organizerFound = false
|
||||
for (info in conferenceInfo.participantInfos) {
|
||||
val participant = info.address
|
||||
val isOrganizer = organizer?.weakEqual(participant) ?: false
|
||||
Log.i(
|
||||
"$TAG Conference [${subject.value}] ${if (isOrganizer) "organizer" else "participant"} [${participant.asStringUriOnly()}] is a [${info.role}]"
|
||||
)
|
||||
if (isOrganizer) {
|
||||
organizerFound = true
|
||||
}
|
||||
|
||||
if (info.role == Participant.Role.Listener) {
|
||||
allSpeaker = false
|
||||
participantsList.add(ParticipantModel(participant, isOrganizer))
|
||||
} else {
|
||||
speakersList.add(ParticipantModel(participant, isOrganizer))
|
||||
}
|
||||
}
|
||||
if (!organizerFound && organizer != null) {
|
||||
Log.i("$TAG Organizer not found in participants list, adding it to participants list")
|
||||
participantsList.add(ParticipantModel(organizer, true))
|
||||
}
|
||||
|
||||
isBroadcast.postValue(!allSpeaker)
|
||||
speakers.postValue(speakersList)
|
||||
participants.postValue(participantsList)
|
||||
}
|
||||
}
|
||||
|
|
@ -35,8 +35,6 @@ class ScheduleMeetingViewModel @UiThread constructor() : ViewModel() {
|
|||
private const val TAG = "[Schedule Meeting ViewModel]"
|
||||
}
|
||||
|
||||
val showBackButton = MutableLiveData<Boolean>()
|
||||
|
||||
val isBroadcastSelected = MutableLiveData<Boolean>()
|
||||
|
||||
val showBroadcastHelp = MutableLiveData<Boolean>()
|
||||
|
|
|
|||
|
|
@ -114,4 +114,8 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() {
|
|||
val showScheduleMeetingEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val showMeetingEvent: MutableLiveData<Event<String>> by lazy {
|
||||
MutableLiveData<Event<String>>()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
9
app/src/main/res/color/list_cell_background_color.xml
Normal file
9
app/src/main/res/color/list_cell_background_color.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false"
|
||||
android:color="@color/gray_main2_100" />
|
||||
<item android:state_pressed="true"
|
||||
android:color="@color/gray_main2_100" />
|
||||
<item
|
||||
android:color="@color/white"/>
|
||||
</selector>
|
||||
|
|
@ -7,20 +7,326 @@
|
|||
<variable
|
||||
name="backClickListener"
|
||||
type="View.OnClickListener" />
|
||||
<variable
|
||||
name="shareClickListener"
|
||||
type="View.OnClickListener" />
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.ui.main.meetings.viewmodel.MeetingViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="80dp"
|
||||
android:background="@color/white">
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:padding="15dp"
|
||||
android:src="@drawable/caret_left"
|
||||
app:tint="@color/orange_main_500"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/main_page_title_style"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/top_bar_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
app:layout_constraintEnd_toStartOf="@id/edit"
|
||||
app:layout_constraintStart_toEndOf="@id/back"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
<ImageView
|
||||
android:id="@+id/edit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/pencil_simple"
|
||||
android:visibility="@{viewModel.isEditable ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:tint="@color/primary_color_selector"
|
||||
app:layout_constraintStart_toEndOf="@id/title"
|
||||
app:layout_constraintEnd_toStartOf="@id/menu"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/menu"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/dots_three_vertical"
|
||||
app:tint="@color/primary_color_selector"
|
||||
app:layout_constraintStart_toEndOf="@id/edit"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:fillViewport="true"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/subject"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.subject, default=`Broadcast about agility in software development`}"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@{viewModel.isBroadcast ? @drawable/slideshow : @drawable/users_three, default=@drawable/users_three}"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:background="@color/transparent_color"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/gray_main2_200"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/subject" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/sip_uri"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.sipUri, default=`linphone.com/wjre.fr`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/video_camera"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/share" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/share"
|
||||
android:onClick="@{shareClickListener}"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:src="@drawable/share_network"
|
||||
app:layout_constraintTop_toTopOf="@id/sip_uri"
|
||||
app:layout_constraintBottom_toBottomOf="@id/sip_uri"
|
||||
app:layout_constraintStart_toEndOf="@id/sip_uri"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/date_time"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.dateTime, default=`October 11th, 2023 | 17:00 - 18:00`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/clock"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintTop_toBottomOf="@id/sip_uri"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/timezone"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.timezone, default=@string/meeting_schedule_timezone_title}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/globe_hemisphere_west"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintTop_toBottomOf="@id/date_time"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/gray_main2_200"
|
||||
android:visibility="@{viewModel.description.length() > 0 ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/timezone" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.description, default=`Lorem ipsum dolor sit amet`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:maxLines="3"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/file_text"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.description.length() > 0 ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/gray_main2_200"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/description" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/speakers_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:src="@drawable/user_square"
|
||||
android:visibility="@{viewModel.isBroadcast ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_3"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:tint="@color/gray_main2_600" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/speakers"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcast ? View.VISIBLE : View.GONE}"
|
||||
entries="@{viewModel.speakers}"
|
||||
layout="@{@layout/meeting_participant_list_cell}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_3"
|
||||
app:layout_constraintStart_toEndOf="@id/speakers_icon"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/gray_main2_200"
|
||||
android:visibility="@{viewModel.isBroadcast ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/speakers" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/participants_icon"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:src="@drawable/users"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_4"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:tint="@color/gray_main2_600"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/participants"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
entries="@{viewModel.participants}"
|
||||
layout="@{@layout/meeting_participant_list_cell}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_4"
|
||||
app:layout_constraintStart_toEndOf="@id/participants_icon"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_5"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/gray_main2_200"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/participants" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/primary_button_label_style"
|
||||
android:id="@+id/join"
|
||||
android:onClick="@{() -> viewModel.join()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="@dimen/screen_bottom_margin"
|
||||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@string/meeting_info_join_title"
|
||||
app:layout_constraintWidth_max="@dimen/button_max_width"
|
||||
app:layout_constraintVertical_bias="1"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_5"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
|
|
@ -20,8 +20,6 @@
|
|||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:onClick="@{onClickListener}"
|
||||
android:onLongClick="@{onLongClickListener}"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
|
@ -66,12 +64,16 @@
|
|||
app:layout_constraintTop_toBottomOf="@id/header_day"/>
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/cardview"
|
||||
android:onClick="@{onClickListener}"
|
||||
android:onLongClick="@{onLongClickListener}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:layout_marginTop="@{firstMeetingOfTheDay ? @dimen/meeting_margin : @dimen/zero, default=@dimen/zero}"
|
||||
android:layout_marginBottom="8dp"
|
||||
app:cardBackgroundColor="@color/list_cell_background_color"
|
||||
app:cardElevation="5dp"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:layout_constraintStart_toEndOf="@id/header_day"
|
||||
|
|
|
|||
84
app/src/main/res/layout/meeting_participant_list_cell.xml
Normal file
84
app/src/main/res/layout/meeting_participant_list_cell.xml
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<import type="org.linphone.core.ConsolidatedPresence" />
|
||||
<variable
|
||||
name="model"
|
||||
type="org.linphone.ui.main.meetings.model.ParticipantModel" />
|
||||
</data>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<io.getstream.avatarview.AvatarView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="@dimen/avatar_list_cell_size"
|
||||
android:layout_height="@dimen/avatar_list_cell_size"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="@drawable/shape_circle_light_blue_background"
|
||||
contactAvatar="@{model.avatarModel}"
|
||||
app:avatarViewPlaceholder="@drawable/user_circle"
|
||||
app:avatarViewInitialsBackgroundColor="@color/gray_main2_200"
|
||||
app:avatarViewInitialsTextColor="@color/gray_main2_600"
|
||||
app:avatarViewInitialsTextSize="16sp"
|
||||
app:avatarViewInitialsTextStyle="bold"
|
||||
app:avatarViewShape="circle"
|
||||
app:avatarViewBorderWidth="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/presence_badge"
|
||||
android:layout_width="@dimen/avatar_presence_badge_size"
|
||||
android:layout_height="@dimen/avatar_presence_badge_size"
|
||||
android:layout_marginEnd="@dimen/avatar_presence_badge_end_margin"
|
||||
android:background="@drawable/led_background"
|
||||
android:padding="@dimen/avatar_presence_badge_padding"
|
||||
app:presenceIcon="@{model.avatarModel.presenceStatus}"
|
||||
android:visibility="@{model.avatarModel.presenceStatus == ConsolidatedPresence.Offline ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintEnd_toEndOf="@id/avatar"
|
||||
app:layout_constraintBottom_toBottomOf="@id/avatar"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{model.avatarModel.name, default=`John Doe`}"
|
||||
android:textSize="14sp"
|
||||
android:layout_marginStart="10dp"
|
||||
app:layout_constraintStart_toEndOf="@id/avatar"
|
||||
app:layout_constraintEnd_toStartOf="@id/organizer"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_300"
|
||||
android:id="@+id/organizer"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/meeting_info_organizer_label"
|
||||
android:textSize="12sp"
|
||||
android:textColor="@color/gray_main2_400"
|
||||
android:gravity="center"
|
||||
android:visibility="@{model.isOrganizer ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toEndOf="@id/name"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
|
|
@ -24,463 +24,474 @@
|
|||
type="org.linphone.ui.main.meetings.viewmodel.ScheduleMeetingViewModel" />
|
||||
</data>
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/white">
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:src="@drawable/caret_left"
|
||||
app:tint="@color/orange_main_500"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:onClick="@{backClickListener}"
|
||||
android:visibility="@{viewModel.showBackButton ? View.VISIBLE : View.GONE}"
|
||||
android:src="@drawable/caret_left"
|
||||
app:tint="@color/orange_main_500"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title"/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/main_page_title_style"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/top_bar_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/meeting_schedule_title"
|
||||
app:layout_constraintEnd_toStartOf="@id/schedule"
|
||||
app:layout_constraintStart_toEndOf="@id/back"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/main_page_title_style"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/top_bar_height"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:text="@string/meeting_schedule_title"
|
||||
app:layout_constraintEnd_toStartOf="@id/schedule"
|
||||
app:layout_constraintStart_toEndOf="@id/back"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
<ImageView
|
||||
android:id="@+id/schedule"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/check"
|
||||
app:tint="@color/orange_main_500"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/schedule"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/check"
|
||||
app:tint="@color/orange_main_500"
|
||||
app:layout_constraintBottom_toBottomOf="@id/title"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/title" />
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:fillViewport="true"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintBottom_toBottomOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/meeting_selected"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_meeting_label"
|
||||
android:textColor="@color/primary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/users_three"
|
||||
android:drawableTint="@color/primary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/primary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/broadcast"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast"
|
||||
android:onClick="@{() -> viewModel.selectBroadcast()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_label"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/slideshow"
|
||||
android:drawableTint="@color/secondary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
app:layout_constraintStart_toEndOf="@id/meeting_selected"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/meeting"
|
||||
android:onClick="@{() -> viewModel.selectMeeting()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_meeting_label"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/users_three"
|
||||
android:drawableTint="@color/secondary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintTop_toBottomOf="@id/meeting_selected"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/broadcast_selected"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast_selected"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_label"
|
||||
android:textColor="@color/primary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/slideshow"
|
||||
android:drawableTint="@color/primary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/primary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintTop_toBottomOf="@id/broadcast"
|
||||
app:layout_constraintStart_toEndOf="@id/meeting"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast_help"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_help"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_500"
|
||||
android:drawableStart="@drawable/info"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/shape_squircle_main2_100_background"
|
||||
android:visibility="@{viewModel.showBroadcastHelp ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/meeting"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/close_broadcast_help"
|
||||
android:onClick="@{() -> viewModel.closeBroadcastHelp()}"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:src="@drawable/x"
|
||||
android:visibility="@{viewModel.showBroadcastHelp ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toTopOf="@id/broadcast_help"
|
||||
app:layout_constraintBottom_toBottomOf="@id/broadcast_help"
|
||||
app:layout_constraintEnd_toEndOf="@id/broadcast_help" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/meeting_selected"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_meeting_label"
|
||||
android:textColor="@color/primary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/users_three"
|
||||
android:drawableTint="@color/primary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/primary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/broadcast"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/subject"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:hint="@string/meeting_schedule_subject_hint"
|
||||
android:textColorHint="@color/gray_main2_600"
|
||||
android:text="@={viewModel.subject}"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:inputType="text|textCapSentences"
|
||||
android:drawableStart="@{viewModel.isBroadcastSelected ? @drawable/slideshow : @drawable/users_three, default=@drawable/users_three}"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:background="@color/transparent_color"
|
||||
app:layout_constraintTop_toBottomOf="@id/broadcast_help"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast"
|
||||
android:onClick="@{() -> viewModel.selectBroadcast()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_label"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/slideshow"
|
||||
android:drawableTint="@color/secondary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/meeting_selected"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/separator"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/subject"
|
||||
android:background="@color/gray_main2_200" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/meeting"
|
||||
android:onClick="@{() -> viewModel.selectMeeting()}"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_meeting_label"
|
||||
android:textColor="@color/secondary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/users_three"
|
||||
android:drawableTint="@color/secondary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/secondary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintTop_toBottomOf="@id/meeting_selected"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/broadcast_selected"/>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
style="@style/material_switch_style"
|
||||
android:id="@+id/all_day_switch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:checked="@={viewModel.allDayMeeting}"
|
||||
app:layout_constraintStart_toEndOf="@id/all_day"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator"/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast_selected"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_label"
|
||||
android:textColor="@color/primary_button_label_color"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:drawableStart="@drawable/slideshow"
|
||||
android:drawableTint="@color/primary_button_label_color"
|
||||
android:drawablePadding="5dp"
|
||||
android:background="@drawable/primary_button_background"
|
||||
android:paddingTop="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE, default=gone}"
|
||||
app:layout_constraintTop_toBottomOf="@id/broadcast"
|
||||
app:layout_constraintStart_toEndOf="@id/meeting"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/all_day"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="@string/meeting_schedule_date_all_day_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/clock"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/all_day_switch"
|
||||
app:layout_constraintBottom_toBottomOf="@id/all_day_switch"/>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/broadcast_help"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:text="@string/meeting_schedule_broadcast_help"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_500"
|
||||
android:drawableStart="@drawable/info"
|
||||
android:drawablePadding="5dp"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/shape_squircle_main2_100_background"
|
||||
android:visibility="@{viewModel.showBroadcastHelp ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/meeting"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/from_date"
|
||||
android:onClick="@{pickStartDateClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@{viewModel.fromDate, default=`Tue. October 10th, 2023`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="@id/all_day"
|
||||
app:layout_constraintTop_toBottomOf="@id/all_day_switch" />
|
||||
<ImageView
|
||||
android:id="@+id/close_broadcast_help"
|
||||
android:onClick="@{() -> viewModel.closeBroadcastHelp()}"
|
||||
android:layout_width="@dimen/icon_size"
|
||||
android:layout_height="@dimen/icon_size"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:src="@drawable/x"
|
||||
android:visibility="@{viewModel.showBroadcastHelp ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toTopOf="@id/broadcast_help"
|
||||
app:layout_constraintBottom_toBottomOf="@id/broadcast_help"
|
||||
app:layout_constraintEnd_toEndOf="@id/broadcast_help" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/from_time"
|
||||
android:onClick="@{pickStartTimeClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{viewModel.fromTime, default=`17:00`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintEnd_toEndOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/from_date" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style_800"
|
||||
android:id="@+id/subject"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:hint="@string/meeting_schedule_subject_hint"
|
||||
android:textColorHint="@color/gray_main2_600"
|
||||
android:text="@={viewModel.subject}"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:inputType="text|textCapSentences"
|
||||
android:drawableStart="@{viewModel.isBroadcastSelected ? @drawable/slideshow : @drawable/users_three, default=@drawable/users_three}"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:background="@color/transparent_color"
|
||||
app:layout_constraintTop_toBottomOf="@id/broadcast_help"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/to_date"
|
||||
android:onClick="@{pickEndDateClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@{viewModel.toDate, default=`Tue. October 10th, 2023`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintStart_toStartOf="@id/from_date"
|
||||
app:layout_constraintTop_toBottomOf="@id/from_date" />
|
||||
<View
|
||||
android:id="@+id/separator"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/subject"
|
||||
android:background="@color/gray_main2_200" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/to_time"
|
||||
android:onClick="@{pickEndTimeClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{viewModel.toTime, default=`17:00`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintEnd_toEndOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/to_date" />
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
style="@style/material_switch_style"
|
||||
android:id="@+id/all_day_switch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:checked="@={viewModel.allDayMeeting}"
|
||||
app:layout_constraintStart_toEndOf="@id/all_day"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/timezone"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="26dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.timezone, default=@string/meeting_schedule_timezone_title}"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/globe_hemisphere_west"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/to_date" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/all_day"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="@string/meeting_schedule_date_all_day_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/clock"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/all_day_switch"
|
||||
app:layout_constraintBottom_toBottomOf="@id/all_day_switch"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/repeat"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_one_time_label"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/arrow_clockwise"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/timezone" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/from_date"
|
||||
android:onClick="@{pickStartDateClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@{viewModel.fromDate, default=`Tue. October 10th, 2023`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="@id/all_day"
|
||||
app:layout_constraintTop_toBottomOf="@id/all_day_switch" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/repeat"
|
||||
android:background="@color/gray_main2_200" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/from_time"
|
||||
android:onClick="@{pickStartTimeClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{viewModel.fromTime, default=`17:00`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintEnd_toEndOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/from_date" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:hint="@string/meeting_schedule_description_hint"
|
||||
android:textColorHint="@color/gray_main2_600"
|
||||
android:text="@={viewModel.description}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:inputType="text|textCapSentences"
|
||||
android:drawableStart="@drawable/file_text"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:background="@color/transparent_color"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/to_date"
|
||||
android:onClick="@{pickEndDateClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@{viewModel.toDate, default=`Tue. October 10th, 2023`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintStart_toStartOf="@id/from_date"
|
||||
app:layout_constraintTop_toBottomOf="@id/from_date" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/description"
|
||||
android:background="@color/gray_main2_200" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/to_time"
|
||||
android:onClick="@{pickEndTimeClickListener}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{viewModel.toTime, default=`17:00`}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.allDayMeeting ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintEnd_toEndOf="@id/all_day_switch"
|
||||
app:layout_constraintTop_toTopOf="@id/to_date" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/speakers"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_add_speaker_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/user_square"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_3" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/timezone"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="26dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@{viewModel.timezone, default=@string/meeting_schedule_timezone_title}"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:drawableStart="@drawable/globe_hemisphere_west"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/to_date" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/speakers"
|
||||
android:background="@color/gray_main2_200" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/repeat"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_one_time_label"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/arrow_clockwise"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/timezone" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/participants"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_add_participants_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/users"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_4" />
|
||||
<View
|
||||
android:id="@+id/separator_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/repeat"
|
||||
android:background="@color/gray_main2_200" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_5"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/participants"
|
||||
android:background="@color/gray_main2_200" />
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/description"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:hint="@string/meeting_schedule_description_hint"
|
||||
android:textColorHint="@color/gray_main2_600"
|
||||
android:text="@={viewModel.description}"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:inputType="text|textCapSentences"
|
||||
android:drawableStart="@drawable/file_text"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:background="@color/transparent_color"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_2"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<CheckBox
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/send_invitations"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_send_invitations_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:checked="@={viewModel.sendInvitations}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
<View
|
||||
android:id="@+id/separator_3"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/description"
|
||||
android:background="@color/gray_main2_200" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/speakers"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_add_speaker_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/user_square"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_3" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
<View
|
||||
android:id="@+id/separator_4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/speakers"
|
||||
android:background="@color/gray_main2_200" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
style="@style/default_text_style_700"
|
||||
android:id="@+id/participants"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_add_participants_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:drawableStart="@drawable/users"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="@color/gray_main2_600"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_4" />
|
||||
|
||||
<View
|
||||
android:id="@+id/separator_5"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="16dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/participants"
|
||||
android:background="@color/gray_main2_200" />
|
||||
|
||||
<CheckBox
|
||||
style="@style/default_text_style"
|
||||
android:id="@+id/send_invitations"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:text="@string/meeting_schedule_send_invitations_title"
|
||||
android:textColor="@color/gray_main2_600"
|
||||
android:textSize="14sp"
|
||||
android:checked="@={viewModel.sendInvitations}"
|
||||
app:layout_constraintTop_toBottomOf="@id/separator_5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</layout>
|
||||
|
|
@ -15,10 +15,15 @@
|
|||
android:id="@+id/meetingFragment"
|
||||
android:name="org.linphone.ui.main.meetings.fragment.MeetingFragment"
|
||||
android:label="MeetingFragment"
|
||||
tools:layout="@layout/meeting_fragment"/>
|
||||
tools:layout="@layout/meeting_fragment">
|
||||
<argument
|
||||
android:name="conferenceUri"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
|
||||
<action
|
||||
android:id="@+id/action_global_meetingFragment"
|
||||
app:destination="@id/meetingFragment"/>
|
||||
app:destination="@id/meetingFragment"
|
||||
app:launchSingleTop="true" />
|
||||
|
||||
</navigation>
|
||||
|
|
@ -348,6 +348,8 @@
|
|||
<string name="meeting_schedule_add_participants_title">Add participants</string>
|
||||
<string name="meeting_schedule_add_speaker_title">Add speaker</string>
|
||||
<string name="meeting_schedule_send_invitations_title">Send invitation to participants</string>
|
||||
<string name="meeting_info_join_title">Join the meeting now</string>
|
||||
<string name="meeting_info_organizer_label">Organizer</string>
|
||||
|
||||
<string name="operation_in_progress_overlay">Operation in progress, please wait</string>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue