Design changes

This commit is contained in:
Sylvain Berfini 2023-09-14 10:46:24 +02:00
parent 61365ff3c2
commit a2bd50ee22
20 changed files with 1173 additions and 964 deletions

View file

@ -31,6 +31,7 @@ import androidx.core.view.doOnPreDraw
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding import androidx.databinding.ViewDataBinding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import androidx.navigation.navGraphViewModels import androidx.navigation.navGraphViewModels
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -55,7 +56,7 @@ class EditContactFragment : GenericFragment() {
private lateinit var binding: ContactNewOrEditFragmentBinding private lateinit var binding: ContactNewOrEditFragmentBinding
private val viewModel: ContactNewOrEditViewModel by navGraphViewModels( private val viewModel: ContactNewOrEditViewModel by navGraphViewModels(
R.id.main_nav_graph R.id.contact_nav_graph
) )
private val args: EditContactFragmentArgs by navArgs() private val args: EditContactFragmentArgs by navArgs()
@ -114,7 +115,7 @@ class EditContactFragment : GenericFragment() {
model.confirmRemovalEvent.observe(viewLifecycleOwner) { model.confirmRemovalEvent.observe(viewLifecycleOwner) {
it.consume { it.consume {
goBack() findNavController().popBackStack()
dialog.dismiss() dialog.dismiss()
} }
} }
@ -134,7 +135,7 @@ class EditContactFragment : GenericFragment() {
getString(R.string.contact_editor_saved_changes_toast), getString(R.string.contact_editor_saved_changes_toast),
R.drawable.info R.drawable.info
) )
goBack() findNavController().popBackStack()
} else { } else {
(requireActivity() as MainActivity).showRedToast( (requireActivity() as MainActivity).showRedToast(
getString(R.string.contact_editor_error_saving_changes_toast), getString(R.string.contact_editor_error_saving_changes_toast),

View file

@ -31,6 +31,7 @@ import androidx.annotation.UiThread
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding import androidx.databinding.ViewDataBinding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels import androidx.navigation.navGraphViewModels
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.linphone.BR import org.linphone.BR
@ -129,7 +130,8 @@ class NewContactFragment : GenericFragment() {
it.consume { refKey -> it.consume { refKey ->
if (refKey.isNotEmpty()) { if (refKey.isNotEmpty()) {
backPressedCallback.isEnabled = false backPressedCallback.isEnabled = false
goBack() findNavController().popBackStack()
sharedViewModel.showContactEvent.value = Event(refKey) sharedViewModel.showContactEvent.value = Event(refKey)
(requireActivity() as MainActivity).showGreenToast( (requireActivity() as MainActivity).showGreenToast(
getString(R.string.contact_editor_saved_contact_toast), getString(R.string.contact_editor_saved_contact_toast),
@ -222,7 +224,7 @@ class NewContactFragment : GenericFragment() {
model.confirmRemovalEvent.observe(viewLifecycleOwner) { model.confirmRemovalEvent.observe(viewLifecycleOwner) {
it.consume { it.consume {
backPressedCallback.isEnabled = false backPressedCallback.isEnabled = false
goBack() findNavController().popBackStack()
dialog.dismiss() dialog.dismiss()
} }
} }

View file

@ -81,6 +81,8 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
@UiThread @UiThread
fun findFriendByRefKey(refKey: String?) { fun findFriendByRefKey(refKey: String?) {
reset()
coreContext.postOnCoreThread { core -> coreContext.postOnCoreThread { core ->
friend = if (refKey.isNullOrEmpty()) { friend = if (refKey.isNullOrEmpty()) {
core.createFriend() core.createFriend()
@ -257,4 +259,17 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
private fun isSaveButtonEnabled(): Boolean { private fun isSaveButtonEnabled(): Boolean {
return firstName.value.orEmpty().isNotEmpty() || lastName.value.orEmpty().isNotEmpty() return firstName.value.orEmpty().isNotEmpty() || lastName.value.orEmpty().isNotEmpty()
} }
@UiThread
private fun reset() {
isEdit.value = false
picturePath.value = ""
firstName.value = ""
lastName.value = ""
sipAddresses.clear()
phoneNumbers.clear()
company.value = ""
jobTitle.value = ""
saveButtonEnabled.value = false
}
} }

View file

@ -0,0 +1,102 @@
/*
* 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.help.fragment
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.navGraphViewModels
import org.linphone.R
import org.linphone.databinding.HelpDebugFragmentBinding
import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.ui.main.help.viewmodel.HelpViewModel
import org.linphone.utils.AppUtils
class DebugFragment : GenericFragment() {
companion object {
private const val TAG = "[Debug Fragment]"
}
private lateinit var binding: HelpDebugFragmentBinding
val viewModel: HelpViewModel by navGraphViewModels(
R.id.main_nav_graph
)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = HelpDebugFragmentBinding.inflate(layoutInflater)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.lifecycleOwner = viewLifecycleOwner
binding.viewModel = viewModel
binding.setBackClickListener {
goBack()
}
viewModel.debugLogsCleanedEvent.observe(viewLifecycleOwner) {
it.consume {
(requireActivity() as MainActivity).showGreenToast(
getString(R.string.help_advanced_debug_logs_cleaned_toast_message),
R.drawable.info
)
}
}
viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) {
it.consume { url ->
val clipboard =
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Logs url", url)
clipboard.setPrimaryClip(clip)
(requireActivity() as MainActivity).showGreenToast(
getString(
R.string.help_advanced_debug_logs_url_copied_into_clipboard_toast_message
),
R.drawable.info
)
AppUtils.shareUploadedLogsUrl(requireActivity(), url)
}
}
viewModel.uploadDebugLogsErrorEvent.observe(viewLifecycleOwner) {
it.consume {
(requireActivity() as MainActivity).showRedToast(
getString(R.string.help_advanced_debug_logs_upload_error_toast_message),
R.drawable.warning_circle
)
}
}
}
}

View file

@ -1,8 +1,5 @@
package org.linphone.ui.main.settings.fragment package org.linphone.ui.main.help.fragment
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
@ -10,14 +7,14 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.UiThread import androidx.annotation.UiThread
import androidx.navigation.fragment.findNavController
import androidx.navigation.navGraphViewModels import androidx.navigation.navGraphViewModels
import org.linphone.R import org.linphone.R
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
import org.linphone.databinding.HelpFragmentBinding import org.linphone.databinding.HelpFragmentBinding
import org.linphone.ui.main.MainActivity import org.linphone.ui.main.MainActivity
import org.linphone.ui.main.fragment.GenericFragment import org.linphone.ui.main.fragment.GenericFragment
import org.linphone.ui.main.settings.viewmodel.HelpViewModel import org.linphone.ui.main.help.viewmodel.HelpViewModel
import org.linphone.utils.AppUtils
@UiThread @UiThread
class HelpFragment : GenericFragment() { class HelpFragment : GenericFragment() {
@ -49,6 +46,11 @@ class HelpFragment : GenericFragment() {
goBack() goBack()
} }
binding.setDebugClickListener {
val action = HelpFragmentDirections.actionHelpFragmentToDebugFragment()
findNavController().navigate(action)
}
binding.setPrivacyPolicyClickListener { binding.setPrivacyPolicyClickListener {
val url = getString(R.string.privacy_policy_url) val url = getString(R.string.privacy_policy_url)
try { try {
@ -111,41 +113,5 @@ class HelpFragment : GenericFragment() {
) )
} }
} }
viewModel.debugLogsCleanedEvent.observe(viewLifecycleOwner) {
it.consume {
(requireActivity() as MainActivity).showGreenToast(
getString(R.string.help_advanced_debug_logs_cleaned_toast_message),
R.drawable.info
)
}
}
viewModel.uploadDebugLogsFinishedEvent.observe(viewLifecycleOwner) {
it.consume { url ->
val clipboard =
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Logs url", url)
clipboard.setPrimaryClip(clip)
(requireActivity() as MainActivity).showGreenToast(
getString(
R.string.help_advanced_debug_logs_url_copied_into_clipboard_toast_message
),
R.drawable.info
)
AppUtils.shareUploadedLogsUrl(requireActivity(), url)
}
}
viewModel.uploadDebugLogsErrorEvent.observe(viewLifecycleOwner) {
it.consume {
(requireActivity() as MainActivity).showRedToast(
getString(R.string.help_advanced_debug_logs_upload_error_toast_message),
R.drawable.warning_circle
)
}
}
} }
} }

View file

@ -17,7 +17,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.linphone.ui.main.settings.viewmodel package org.linphone.ui.main.help.viewmodel
import androidx.annotation.UiThread import androidx.annotation.UiThread
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread

View file

@ -5,5 +5,5 @@
<item android:state_pressed="true" <item android:state_pressed="true"
android:drawable="@color/gray_3" /> android:drawable="@color/gray_3" />
<item <item
android:drawable="@color/gray_2" /> android:drawable="@color/transparent_color" />
</selector> </selector>

View file

@ -15,7 +15,7 @@
android:onClick="@{() -> model.setAsDefault()}" android:onClick="@{() -> model.setAsDefault()}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/white"> android:background="@{model.isDefault ? @color/transparent_light_orange : @color/white, default=@color/transparent_light_orange}">
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/left_barrier" android:id="@+id/left_barrier"
@ -57,15 +57,17 @@
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style" style="@style/default_text_style"
android:id="@+id/name" android:id="@+id/name"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:text="@{model.displayName, default=`John Doe`}" android:text="@{model.displayName, default=`John Doe`}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_8" android:textColor="@color/gray_8"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
app:layout_constraintStart_toEndOf="@id/avatar" app:layout_constraintStart_toEndOf="@id/avatar"
app:layout_constraintEnd_toStartOf="@id/menu"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/register_status"/> app:layout_constraintBottom_toTopOf="@id/register_status"/>
@ -85,26 +87,12 @@
android:text="@{model.registrationState, default=@string/drawer_menu_account_connection_status_connected}" android:text="@{model.registrationState, default=@string/drawer_menu_account_connection_status_connected}"
android:textColor="@{model.isConnected ? @color/green_online : model.inError ? @color/red_danger : @color/gray_1, default=@color/green_online}" android:textColor="@{model.isConnected ? @color/green_online : model.inError ? @color/red_danger : @color/gray_1, default=@color/green_online}"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="@id/name" app:layout_constraintStart_toStartOf="@id/name"
app:layout_constraintEnd_toStartOf="@id/menu"
app:layout_constraintTop_toBottomOf="@id/name" app:layout_constraintTop_toBottomOf="@id/name"
app:layout_constraintBottom_toTopOf="@id/separator"/> app:layout_constraintBottom_toTopOf="@id/separator"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_300"
android:visibility="@{model.isDefault ? View.VISIBLE : View.GONE}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/drawer_menu_default_account_label"
android:textSize="12sp"
android:gravity="center"
android:drawableStart="@drawable/check_fat_fill"
android:drawablePadding="3dp"
app:drawableTint="@color/primary_color"
app:layout_constraintStart_toEndOf="@id/left_barrier"
app:layout_constraintEnd_toStartOf="@id/menu"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView <ImageView
android:onClick="@{() -> model.openMenu(menu)}" android:onClick="@{() -> model.openMenu(menu)}"
android:id="@+id/menu" android:id="@+id/menu"

View file

@ -22,22 +22,11 @@
type="org.linphone.ui.main.settings.viewmodel.AccountProfileViewModel" /> type="org.linphone.ui.main.settings.viewmodel.AccountProfileViewModel" />
</data> </data>
<ScrollView <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fillViewport="true"
android:background="@color/white"> android:background="@color/white">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Group
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:constraint_referenced_ids="sip_address, sip_address_label, display_name, display_name_label, details_background"
android:visibility="@{viewModel.expandDetails ? View.VISIBLE : View.GONE}" />
<ImageView <ImageView
android:id="@+id/back" android:id="@+id/back"
android:onClick="@{backClickListener}" android:onClick="@{backClickListener}"
@ -67,336 +56,358 @@
app:layout_constraintStart_toEndOf="@id/back" app:layout_constraintStart_toEndOf="@id/back"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent"/>
<io.getstream.avatarview.AvatarView <ScrollView
android:onClick="@{pickImageClickListener}"
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_big_size"
android:layout_height="@dimen/avatar_big_size"
android:layout_marginTop="8dp"
android:adjustViewBounds="true"
android:background="@drawable/shape_circle_light_blue_background"
accountAvatar="@{viewModel.accountModel}"
app:avatarViewInitials="JD"
app:avatarViewInitialsBackgroundColor="@color/blue_light"
app:avatarViewInitialsTextColor="@color/gray_9"
app:avatarViewInitialsTextSize="21sp"
app:avatarViewInitialsTextStyle="bold"
app:avatarViewPlaceholder="@drawable/contact_avatar"
app:avatarViewShape="circle"
app:avatarViewBorderWidth="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title" />
<ImageView
android:id="@+id/avatar_trust_badge"
android:layout_width="@dimen/avatar_presence_badge_big_size"
android:layout_height="@dimen/avatar_presence_badge_big_size"
android:src="@drawable/trusted"
app:layout_constraintStart_toStartOf="@id/avatar"
app:layout_constraintBottom_toBottomOf="@id/avatar"/>
<ImageView
android:id="@+id/overlay"
android:layout_width="@dimen/avatar_presence_badge_big_size"
android:layout_height="@dimen/avatar_presence_badge_big_size"
android:layout_marginEnd="@dimen/avatar_presence_badge_big_end_margin"
android:padding="@dimen/avatar_presence_badge_big_padding"
android:background="@drawable/led_background"
android:src="@drawable/camera"
app:layout_constraintEnd_toEndOf="@id/avatar"
app:layout_constraintBottom_toBottomOf="@id/avatar" />
<androidx.appcompat.widget.AppCompatTextView
android:onClick="@{pickImageClickListener}"
style="@style/default_text_style"
android:id="@+id/add_picture_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{viewModel.accountModel.avatar.empty ? @string/manage_account_add_picture : @string/manage_account_edit_picture, default=@string/manage_account_add_picture}"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/avatar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_800"
android:onClick="@{() -> viewModel.toggleDetailsExpand()}"
android:id="@+id/details"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_marginStart="26dp"
android:layout_marginEnd="26dp"
android:layout_marginTop="32dp"
android:text="@string/manage_account_details_title"
android:drawableEnd="@{viewModel.expandDetails ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}"
android:drawableTint="@color/gray_9"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_picture_label"/>
<ImageView
android:id="@+id/details_background"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="8dp" android:fillViewport="true"
android:layout_marginStart="17dp" android:background="@color/gray_7"
android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_gray_2_background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/details" app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintBottom_toBottomOf="@id/details_bottom_anchor"/> app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.ConstraintLayout
style="@style/default_text_style_700" android:layout_width="match_parent"
android:id="@+id/sip_address_label" android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@string/sip_address"
android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/details_background"
app:layout_constraintTop_toTopOf="@id/details_background"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.Group
style="@style/default_text_style" android:layout_width="wrap_content"
android:id="@+id/sip_address" android:layout_height="wrap_content"
android:layout_width="0dp" app:constraint_referenced_ids="sip_address, sip_address_label, display_name, display_name_label, details_background"
android:layout_height="wrap_content" android:visibility="@{viewModel.expandDetails ? View.VISIBLE : View.GONE}" />
android:layout_marginStart="5dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@={viewModel.sipAddress, default=`sip:johndoe@sip.example.org`}"
android:textSize="14sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toEndOf="@id/sip_address_label"
app:layout_constraintEnd_toEndOf="@id/details_background"
app:layout_constraintTop_toTopOf="@id/details_background"/>
<androidx.appcompat.widget.AppCompatTextView <io.getstream.avatarview.AvatarView
style="@style/default_text_style_700" android:onClick="@{pickImageClickListener}"
android:id="@+id/display_name_label" android:id="@+id/avatar"
android:layout_width="wrap_content" android:layout_width="@dimen/avatar_big_size"
android:layout_height="wrap_content" android:layout_height="@dimen/avatar_big_size"
android:layout_marginStart="17dp" android:layout_marginTop="21dp"
android:paddingTop="8dp" android:adjustViewBounds="true"
android:paddingBottom="8dp" android:background="@drawable/shape_circle_light_blue_background"
android:text="@string/sip_address_display_name" accountAvatar="@{viewModel.accountModel}"
android:textSize="13sp" app:avatarViewInitials="JD"
app:layout_constraintStart_toStartOf="@id/details_background" app:avatarViewInitialsBackgroundColor="@color/blue_light"
app:layout_constraintTop_toBottomOf="@id/sip_address"/> app:avatarViewInitialsTextColor="@color/gray_9"
app:avatarViewInitialsTextSize="21sp"
app:avatarViewInitialsTextStyle="bold"
app:avatarViewPlaceholder="@drawable/contact_avatar"
app:avatarViewShape="circle"
app:avatarViewBorderWidth="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatEditText <ImageView
style="@style/default_text_style" android:id="@+id/avatar_trust_badge"
android:id="@+id/display_name" android:layout_width="@dimen/avatar_presence_badge_big_size"
android:layout_width="0dp" android:layout_height="@dimen/avatar_presence_badge_big_size"
android:layout_height="50dp" android:src="@drawable/trusted"
android:layout_marginEnd="16dp" app:layout_constraintStart_toStartOf="@id/avatar"
android:layout_marginTop="5dp" app:layout_constraintBottom_toBottomOf="@id/avatar"/>
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:text="@={viewModel.displayName, default=`John Doe`}"
android:textSize="14sp"
android:textColor="@color/gray_9"
android:maxLines="1"
android:background="@drawable/edit_text_background"
android:inputType="text|textPersonName"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/display_name_label"
app:layout_constraintStart_toStartOf="@id/display_name_label"
app:layout_constraintEnd_toEndOf="@id/details_background"/>
<View <ImageView
android:id="@+id/details_bottom_anchor" android:id="@+id/overlay"
android:layout_width="1dp" android:layout_width="@dimen/avatar_presence_badge_big_size"
android:layout_height="1dp" android:layout_height="@dimen/avatar_presence_badge_big_size"
android:layout_marginTop="21dp" android:layout_marginEnd="@dimen/avatar_presence_badge_big_end_margin"
app:layout_constraintStart_toStartOf="parent" android:padding="@dimen/avatar_presence_badge_big_padding"
app:layout_constraintTop_toBottomOf="@id/display_name"/> android:background="@drawable/led_background"
android:src="@drawable/camera"
app:layout_constraintEnd_toEndOf="@id/avatar"
app:layout_constraintBottom_toBottomOf="@id/avatar" />
<ImageView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/connection_background" android:onClick="@{pickImageClickListener}"
android:layout_width="0dp" style="@style/default_text_style"
android:layout_height="0dp" android:id="@+id/add_picture_label"
android:layout_marginTop="16dp" android:layout_width="wrap_content"
android:layout_marginStart="17dp" android:layout_height="wrap_content"
android:layout_marginEnd="17dp" android:layout_marginTop="10dp"
android:src="@drawable/shape_squircle_gray_2_background" android:text="@{viewModel.accountModel.avatar.empty ? @string/manage_account_add_picture : @string/manage_account_edit_picture, default=@string/manage_account_add_picture}"
app:layout_constraintStart_toStartOf="parent" android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/avatar"
app:layout_constraintTop_toBottomOf="@id/details_background" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@id/connection_bottom_anchor"/> app:layout_constraintEnd_toEndOf="parent"/>
<com.google.android.material.materialswitch.MaterialSwitch <androidx.appcompat.widget.AppCompatTextView
android:onClick="@{() -> viewModel.toggleRegister()}" style="@style/default_text_style_800"
android:id="@+id/connected_switch" android:onClick="@{() -> viewModel.toggleDetailsExpand()}"
android:layout_width="wrap_content" android:id="@+id/details"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_marginStart="17dp" android:layout_height="wrap_content"
android:layout_marginTop="21dp" android:padding="5dp"
android:checked="@{viewModel.registerEnabled, default=true}" android:layout_marginStart="26dp"
app:layout_constraintStart_toStartOf="@id/connection_background" android:layout_marginEnd="26dp"
app:layout_constraintTop_toTopOf="@id/connection_background" /> android:layout_marginTop="32dp"
android:text="@string/manage_account_details_title"
android:drawableEnd="@{viewModel.expandDetails ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}"
android:drawableTint="@color/gray_9"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_picture_label"/>
<androidx.appcompat.widget.AppCompatTextView <ImageView
style="@style/default_text_style_700" android:id="@+id/details_background"
android:id="@+id/connected_label" android:layout_width="0dp"
android:layout_width="wrap_content" android:layout_height="0dp"
android:layout_height="wrap_content" android:layout_marginTop="8dp"
android:layout_marginStart="16dp" android:layout_marginStart="17dp"
android:text="@{viewModel.accountModel.registrationState, default=@string/drawer_menu_account_connection_status_connected}" android:layout_marginEnd="17dp"
android:textSize="13sp" android:src="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toEndOf="@id/connected_switch" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/connected_switch" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/connected_switch" /> app:layout_constraintTop_toBottomOf="@id/details"
app:layout_constraintBottom_toBottomOf="@id/details_bottom_anchor"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style" style="@style/default_text_style_700"
android:id="@+id/connected_summary" android:id="@+id/sip_address_label"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:paddingTop="8dp"
android:layout_marginTop="16dp" android:paddingBottom="8dp"
android:textSize="14sp" android:text="@string/sip_address"
android:text="@{viewModel.accountModel.registrationStateSummary, default=@string/manage_account_status_connected_summary}" android:textSize="13sp"
app:layout_constraintStart_toStartOf="@id/connection_background" app:layout_constraintStart_toStartOf="@id/details_background"
app:layout_constraintEnd_toEndOf="@id/connection_background" app:layout_constraintTop_toTopOf="@id/details_background"/>
app:layout_constraintTop_toBottomOf="@id/connected_label" />
<View <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/connection_bottom_anchor" style="@style/default_text_style"
android:layout_width="1dp" android:id="@+id/sip_address"
android:layout_height="1dp" android:layout_width="0dp"
android:layout_marginTop="21dp" android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="5dp"
app:layout_constraintTop_toBottomOf="@id/connected_summary"/> android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="@={viewModel.sipAddress, default=`sip:johndoe@sip.example.org`}"
android:textSize="14sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toEndOf="@id/sip_address_label"
app:layout_constraintEnd_toEndOf="@id/details_background"
app:layout_constraintTop_toTopOf="@id/details_background"/>
<ImageView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/mode_background" style="@style/default_text_style_700"
android:layout_width="0dp" android:id="@+id/display_name_label"
android:layout_height="0dp" android:layout_width="wrap_content"
android:layout_marginTop="16dp" android:layout_height="wrap_content"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:paddingTop="8dp"
android:src="@drawable/shape_squircle_gray_2_background" android:paddingBottom="8dp"
app:layout_constraintStart_toStartOf="parent" android:text="@string/sip_address_display_name"
app:layout_constraintEnd_toEndOf="parent" android:textSize="13sp"
app:layout_constraintTop_toBottomOf="@id/connection_background" app:layout_constraintStart_toStartOf="@id/details_background"
app:layout_constraintBottom_toBottomOf="@id/change_mode"/> app:layout_constraintTop_toBottomOf="@id/sip_address"/>
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatEditText
style="@style/default_text_style_700" style="@style/default_text_style"
android:id="@+id/current_mode" android:id="@+id/display_name"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="50dp"
android:layout_marginStart="16dp" android:layout_marginEnd="16dp"
android:layout_marginEnd="16dp" android:layout_marginTop="5dp"
android:text="@{viewModel.currentMode, default=@string/manage_account_secure_mode_default_title}" android:paddingStart="20dp"
android:textSize="13sp" android:paddingEnd="20dp"
android:textColor="@color/gray_9" android:text="@={viewModel.displayName, default=`John Doe`}"
app:layout_constraintTop_toTopOf="@id/mode_background" android:textSize="14sp"
app:layout_constraintStart_toStartOf="@id/mode_background" android:textColor="@color/gray_9"
app:layout_constraintBottom_toBottomOf="@id/mode_background"/> android:maxLines="1"
android:background="@drawable/edit_text_background"
android:inputType="text|textPersonName"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintTop_toBottomOf="@id/display_name_label"
app:layout_constraintStart_toStartOf="@id/display_name_label"
app:layout_constraintEnd_toEndOf="@id/details_background"/>
<androidx.appcompat.widget.AppCompatTextView <View
android:onClick="@{changeModeClickListener}" android:id="@+id/details_bottom_anchor"
style="@style/default_text_style_600" android:layout_width="1dp"
android:id="@+id/change_mode" android:layout_height="1dp"
android:layout_width="wrap_content" android:layout_marginTop="21dp"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginEnd="17dp" app:layout_constraintTop_toBottomOf="@id/display_name"/>
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/manage_account_change_mode"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintEnd_toEndOf="@id/mode_background"
app:layout_constraintTop_toTopOf="@id/mode_background"
app:layout_constraintBottom_toBottomOf="@id/mode_background"/>
<androidx.appcompat.widget.AppCompatTextView <ImageView
style="@style/default_text_style_800" android:id="@+id/connection_background"
android:id="@+id/actions" android:layout_width="0dp"
android:layout_width="0dp" android:layout_height="0dp"
android:layout_height="wrap_content" android:layout_marginTop="16dp"
android:padding="5dp" android:layout_marginStart="17dp"
android:layout_marginStart="26dp" android:layout_marginEnd="17dp"
android:layout_marginEnd="26dp" android:src="@drawable/shape_squircle_white_background"
android:layout_marginTop="16dp" app:layout_constraintStart_toStartOf="parent"
android:text="@string/contact_details_actions_title" app:layout_constraintEnd_toEndOf="parent"
android:textSize="16sp" app:layout_constraintTop_toBottomOf="@id/details_background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="@id/connection_bottom_anchor"/>
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/mode_background"/>
<ImageView <com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/actions_background" android:onClick="@{() -> viewModel.toggleRegister()}"
android:layout_width="0dp" android:id="@+id/connected_switch"
android:layout_height="0dp" android:layout_width="wrap_content"
android:layout_marginTop="8dp" android:layout_height="wrap_content"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:layout_marginTop="21dp"
android:src="@drawable/shape_squircle_gray_2_background" android:checked="@{viewModel.registerEnabled, default=true}"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="@id/connection_background"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/connection_background" />
app:layout_constraintTop_toBottomOf="@id/actions"
app:layout_constraintBottom_toBottomOf="@id/action_delete" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:onClick="@{settingsClickListener}" style="@style/default_text_style_700"
style="@style/context_menu_action_label_style" android:id="@+id/connected_label"
android:id="@+id/action_settings" android:layout_width="wrap_content"
android:layout_width="0dp" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:layout_marginStart="16dp"
android:layout_marginStart="17dp" android:text="@{viewModel.accountModel.registrationState, default=@string/drawer_menu_account_connection_status_connected}"
android:layout_marginEnd="17dp" android:textSize="13sp"
android:background="@drawable/action_background" app:layout_constraintStart_toEndOf="@id/connected_switch"
android:text="@string/manage_account_settings" app:layout_constraintTop_toTopOf="@id/connected_switch"
android:drawableStart="@drawable/user_gear" app:layout_constraintBottom_toBottomOf="@id/connected_switch" />
app:layout_constraintTop_toTopOf="@id/actions_background"
app:layout_constraintStart_toStartOf="@id/actions_background"
app:layout_constraintEnd_toEndOf="@id/actions_background"/>
<View <androidx.appcompat.widget.AppCompatTextView
android:layout_width="0dp" style="@style/default_text_style"
android:layout_height="1dp" android:id="@+id/connected_summary"
android:background="@color/blue_light" android:layout_width="0dp"
app:layout_constraintStart_toStartOf="@id/action_settings" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="@id/action_settings" android:layout_marginStart="17dp"
app:layout_constraintTop_toBottomOf="@+id/action_settings"/> android:layout_marginEnd="17dp"
android:layout_marginTop="16dp"
android:textSize="14sp"
android:text="@{viewModel.accountModel.registrationStateSummary, default=@string/manage_account_status_connected_summary}"
app:layout_constraintStart_toStartOf="@id/connection_background"
app:layout_constraintEnd_toEndOf="@id/connection_background"
app:layout_constraintTop_toBottomOf="@id/connected_label" />
<androidx.appcompat.widget.AppCompatTextView <View
android:onClick="@{() -> viewModel.deleteAccount()}" android:id="@+id/connection_bottom_anchor"
style="@style/context_menu_danger_action_label_style" android:layout_width="1dp"
android:id="@+id/action_delete" android:layout_height="1dp"
android:layout_width="0dp" android:layout_marginTop="21dp"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="17dp" app:layout_constraintTop_toBottomOf="@id/connected_summary"/>
android:layout_marginEnd="17dp"
android:background="@drawable/action_background" <ImageView
android:text="@string/manage_account_delete" android:id="@+id/mode_background"
android:drawableStart="@drawable/trash_simple" android:layout_width="0dp"
app:layout_constraintTop_toBottomOf="@id/action_settings" android:layout_height="0dp"
app:layout_constraintStart_toStartOf="@id/actions_background" android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="@id/actions_background"/> android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/connection_background"
app:layout_constraintBottom_toBottomOf="@id/change_mode"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_700"
android:id="@+id/current_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@{viewModel.currentMode, default=@string/manage_account_secure_mode_default_title}"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toTopOf="@id/mode_background"
app:layout_constraintStart_toStartOf="@id/mode_background"
app:layout_constraintBottom_toBottomOf="@id/mode_background"/>
<androidx.appcompat.widget.AppCompatTextView
android:onClick="@{changeModeClickListener}"
style="@style/default_text_style_600"
android:id="@+id/change_mode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="17dp"
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/manage_account_change_mode"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintEnd_toEndOf="@id/mode_background"
app:layout_constraintTop_toTopOf="@id/mode_background"
app:layout_constraintBottom_toBottomOf="@id/mode_background"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_800"
android:id="@+id/actions"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_marginStart="26dp"
android:layout_marginEnd="26dp"
android:layout_marginTop="16dp"
android:text="@string/contact_details_actions_title"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/mode_background"/>
<ImageView
android:id="@+id/actions_background"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/actions"
app:layout_constraintBottom_toBottomOf="@id/action_delete" />
<androidx.appcompat.widget.AppCompatTextView
android:onClick="@{settingsClickListener}"
style="@style/context_menu_action_label_style"
android:id="@+id/action_settings"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/action_background"
android:text="@string/manage_account_settings"
android:drawableStart="@drawable/user_gear"
app:layout_constraintTop_toTopOf="@id/actions_background"
app:layout_constraintStart_toStartOf="@id/actions_background"
app:layout_constraintEnd_toEndOf="@id/actions_background"/>
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:background="@color/blue_light"
app:layout_constraintStart_toStartOf="@id/action_settings"
app:layout_constraintEnd_toEndOf="@id/action_settings"
app:layout_constraintTop_toBottomOf="@+id/action_settings"/>
<androidx.appcompat.widget.AppCompatTextView
android:onClick="@{() -> viewModel.deleteAccount()}"
style="@style/context_menu_danger_action_label_style"
android:id="@+id/action_delete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginEnd="17dp"
android:background="@drawable/action_background"
android:text="@string/manage_account_delete"
android:drawableStart="@drawable/trash_simple"
app:layout_constraintTop_toBottomOf="@id/action_settings"
app:layout_constraintStart_toStartOf="@id/actions_background"
app:layout_constraintEnd_toEndOf="@id/actions_background"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</layout> </layout>

View file

@ -15,8 +15,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingBottom="8dp" android:paddingBottom="8dp">
android:background="@drawable/secondary_cell_background">
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
android:id="@+id/end_barrier" android:id="@+id/end_barrier"

View file

@ -70,6 +70,7 @@
android:id="@+id/scrollView" android:id="@+id/scrollView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/gray_7"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/invisible_title" app:layout_constraintTop_toBottomOf="@id/invisible_title"
@ -262,7 +263,7 @@
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:padding="10dp" android:padding="10dp"
android:background="@drawable/shape_squircle_gray_2_background" android:background="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/numbers_and_addresses_label" app:layout_constraintTop_toBottomOf="@id/numbers_and_addresses_label"
@ -276,7 +277,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_gray_2_background" android:src="@drawable/shape_squircle_white_background"
android:visibility="@{viewModel.title.length() > 0 || viewModel.company.length() > 0 ? View.VISIBLE : View.GONE}" android:visibility="@{viewModel.title.length() > 0 || viewModel.company.length() > 0 ? View.VISIBLE : View.GONE}"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -381,7 +382,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_gray_2_background" android:src="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/trust_label" app:layout_constraintTop_toBottomOf="@id/trust_label"
@ -468,7 +469,7 @@
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginStart="17dp" android:layout_marginStart="17dp"
android:layout_marginEnd="17dp" android:layout_marginEnd="17dp"
android:src="@drawable/shape_squircle_gray_2_background" android:src="@drawable/shape_squircle_white_background"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/actions" app:layout_constraintTop_toBottomOf="@id/actions"

View file

@ -39,6 +39,7 @@
android:text="@={model.value}" android:text="@={model.value}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:hint="@{model.isSip ? @string/sip_address : @string/phone_number, default=@string/sip_address}"
android:background="@drawable/edit_text_background" android:background="@drawable/edit_text_background"
android:maxLines="1" android:maxLines="1"
android:inputType="@{model.isSip ? InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS : InputType.TYPE_CLASS_PHONE}" android:inputType="@{model.isSip ? InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS : InputType.TYPE_CLASS_PHONE}"

View file

@ -68,6 +68,8 @@
android:id="@+id/scrollView" android:id="@+id/scrollView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/gray_7"
android:fillViewport="true"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/title" app:layout_constraintTop_toBottomOf="@id/title"
@ -137,6 +139,7 @@
android:text="@={viewModel.firstName, default=`John`}" android:text="@={viewModel.firstName, default=`John`}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:hint="@string/contact_editor_first_name"
android:maxLines="1" android:maxLines="1"
android:background="@drawable/edit_text_background" android:background="@drawable/edit_text_background"
android:inputType="text|textPersonName|textCapWords" android:inputType="text|textPersonName|textCapWords"
@ -170,6 +173,7 @@
android:text="@={viewModel.lastName, default=`Doe`}" android:text="@={viewModel.lastName, default=`Doe`}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:hint="@string/contact_editor_last_name"
android:maxLines="1" android:maxLines="1"
android:background="@drawable/edit_text_background" android:background="@drawable/edit_text_background"
android:inputType="text|textPersonName|textCapWords" android:inputType="text|textPersonName|textCapWords"
@ -229,6 +233,7 @@
android:text="@={viewModel.company, default=`Belledonne Comm`}" android:text="@={viewModel.company, default=`Belledonne Comm`}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:hint="@string/contact_editor_company"
android:maxLines="1" android:maxLines="1"
android:background="@drawable/edit_text_background" android:background="@drawable/edit_text_background"
android:inputType="text|textCapWords" android:inputType="text|textCapWords"
@ -263,11 +268,11 @@
android:text="@={viewModel.jobTitle, default=`Android dev`}" android:text="@={viewModel.jobTitle, default=`Android dev`}"
android:textSize="14sp" android:textSize="14sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
android:hint="@string/contact_editor_first_name"
android:maxLines="1" android:maxLines="1"
android:background="@drawable/edit_text_background" android:background="@drawable/edit_text_background"
android:inputType="text|textCapWords" android:inputType="text|textCapWords"
app:layout_constraintWidth_max="@dimen/text_input_max_width" app:layout_constraintWidth_max="@dimen/text_input_max_width"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/job_title_label" app:layout_constraintTop_toBottomOf="@id/job_title_label"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/> app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -61,6 +61,7 @@
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:fillViewport="true"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/brand_name" app:layout_constraintTop_toBottomOf="@id/brand_name"
@ -69,17 +70,35 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:orientation="vertical" android:orientation="vertical"
entries="@{viewModel.accounts}" entries="@{viewModel.accounts}"
layout="@{@layout/account_list_cell}"> layout="@{@layout/account_list_cell}">
<androidx.appcompat.widget.AppCompatTextView <ImageView
style="@style/default_text_style" android:id="@+id/no_account_image"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:text="@string/drawer_menu_no_account_configured_yet" /> android:src="@drawable/illu"
android:layout_margin="10dp"
app:layout_constraintHeight_max="200dp"
app:layout_constraintBottom_toTopOf="@id/no_contacts_label"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/background" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_800"
android:id="@+id/no_account_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/drawer_menu_no_account_configured_yet"
android:textSize="16sp"
android:gravity="center"
app:layout_constraintBottom_toTopOf="@id/background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/no_contacts_image" />
</LinearLayout> </LinearLayout>

View file

@ -0,0 +1,142 @@
<?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" />
<variable
name="backClickListener"
type="View.OnClickListener" />
<variable
name="viewModel"
type="org.linphone.ui.main.help.viewmodel.HelpViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:id="@+id/back"
android:onClick="@{backClickListener}"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_marginStart="10dp"
android:adjustViewBounds="true"
android:padding="5dp"
android:src="@drawable/caret_left"
android:drawableTint="@color/primary_color"
app:layout_constraintBottom_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/title" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_800"
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="@dimen/top_bar_height"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:gravity="center_vertical"
android:text="@string/help_debug_title"
android:textColor="@color/primary_color"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/back"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_700"
android:id="@+id/debug_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="24dp"
android:text="@string/help_advanced_debug_title"
android:textSize="13sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/debug_mode_switch"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/debug_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/help_advanced_debug_subtitle"
android:textSize="14sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/debug_title"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/debug_mode_switch" />
<com.google.android.material.materialswitch.MaterialSwitch
android:onClick="@{() -> viewModel.toggleDebugMode()}"
android:id="@+id/debug_mode_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:checked="@{viewModel.debugModeEnabled, default=true}"
app:layout_constraintStart_toEndOf="@id/debug_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/debug_title"
app:layout_constraintBottom_toBottomOf="@id/debug_subtitle" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:onClick="@{() -> viewModel.cleanLogs()}"
android:id="@+id/clean_logs"
android:enabled="@{viewModel.debugModeEnabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="32dp"
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/help_advanced_clean_logs"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/debug_subtitle"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:onClick="@{() -> viewModel.shareLogs()}"
android:id="@+id/send_logs"
android:enabled="@{viewModel.debugModeEnabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="32dp"
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/help_advanced_share_logs"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toEndOf="@id/clean_logs"
app:layout_constraintTop_toBottomOf="@id/debug_subtitle"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View file

@ -17,9 +17,12 @@
<variable <variable
name="translateClickListener" name="translateClickListener"
type="View.OnClickListener" /> type="View.OnClickListener" />
<variable
name="debugClickListener"
type="View.OnClickListener" />
<variable <variable
name="viewModel" name="viewModel"
type="org.linphone.ui.main.settings.viewmodel.HelpViewModel" /> type="org.linphone.ui.main.help.viewmodel.HelpViewModel" />
</data> </data>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
@ -277,97 +280,23 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/debug_title" app:layout_constraintEnd_toStartOf="@id/debug_title"
app:layout_constraintTop_toTopOf="@id/debug_title" app:layout_constraintTop_toTopOf="@id/debug_title"
app:layout_constraintBottom_toBottomOf="@id/debug_subtitle" /> app:layout_constraintBottom_toBottomOf="@id/debug_title" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_700" style="@style/default_text_style_700"
android:onClick="@{debugClickListener}"
android:id="@+id/debug_title" android:id="@+id/debug_title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginTop="24dp" android:layout_marginTop="24dp"
android:text="@string/help_advanced_debug_title" android:text="@string/help_debug_title"
android:textSize="13sp" android:textSize="13sp"
android:textColor="@color/gray_9" android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/advanced_title" app:layout_constraintTop_toBottomOf="@id/advanced_title"
app:layout_constraintStart_toEndOf="@id/debug_icon" app:layout_constraintStart_toEndOf="@id/debug_icon"
app:layout_constraintEnd_toStartOf="@id/debug_mode_switch"/> app:layout_constraintEnd_toEndOf="parent"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:id="@+id/debug_subtitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:text="@string/help_advanced_debug_subtitle"
android:textSize="14sp"
android:textColor="@color/gray_9"
app:layout_constraintTop_toBottomOf="@id/debug_title"
app:layout_constraintStart_toEndOf="@id/debug_icon"
app:layout_constraintEnd_toStartOf="@id/debug_mode_switch" />
<com.google.android.material.materialswitch.MaterialSwitch
android:onClick="@{() -> viewModel.toggleDebugMode()}"
android:id="@+id/debug_mode_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:checked="@{viewModel.debugModeEnabled, default=true}"
app:layout_constraintStart_toEndOf="@id/debug_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/debug_title"
app:layout_constraintBottom_toBottomOf="@id/debug_subtitle" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:onClick="@{() -> viewModel.cleanLogs()}"
android:id="@+id/clean_logs"
android:enabled="@{viewModel.debugModeEnabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="32dp"
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/help_advanced_clean_logs"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/debug_subtitle"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_600"
android:onClick="@{() -> viewModel.shareLogs()}"
android:id="@+id/send_logs"
android:enabled="@{viewModel.debugModeEnabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="32dp"
android:background="@drawable/tertiary_button_background"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:gravity="center"
android:text="@string/help_advanced_share_logs"
android:textColor="@color/tertiary_button_label_color"
android:textSize="13sp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toEndOf="@id/clean_logs"
app:layout_constraintTop_toBottomOf="@id/debug_subtitle"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

File diff suppressed because it is too large Load diff

View file

@ -56,7 +56,8 @@
app:enterAnim="@anim/slide_in_right" app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left" app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left" app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" /> app:popExitAnim="@anim/slide_out_right"
app:launchSingleTop="true" />
<fragment <fragment
android:id="@+id/settingsFragment" android:id="@+id/settingsFragment"
@ -70,9 +71,18 @@
<fragment <fragment
android:id="@+id/helpFragment" android:id="@+id/helpFragment"
android:name="org.linphone.ui.main.settings.fragment.HelpFragment" android:name="org.linphone.ui.main.help.fragment.HelpFragment"
android:label="HelpFragment" android:label="HelpFragment"
tools:layout="@layout/help_fragment" /> tools:layout="@layout/help_fragment" >
<action
android:id="@+id/action_helpFragment_to_debugFragment"
app:destination="@id/debugFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:launchSingleTop="true" />
</fragment>
<action <action
android:id="@+id/action_global_helpFragment" android:id="@+id/action_global_helpFragment"
@ -120,4 +130,10 @@
android:label="AccountProfileModeFragment" android:label="AccountProfileModeFragment"
tools:layout="@layout/account_profile_secure_mode_fragment"/> tools:layout="@layout/account_profile_secure_mode_fragment"/>
<fragment
android:id="@+id/debugFragment"
android:name="org.linphone.ui.main.help.fragment.DebugFragment"
android:label="DebugFragment"
tools:layout="@layout/help_debug_fragment" />
</navigation> </navigation>

View file

@ -21,6 +21,7 @@
<color name="warning_orange_background">#FFEACB</color> <color name="warning_orange_background">#FFEACB</color>
<color name="warning_orange_pressed_background">#FFB266</color> <color name="warning_orange_pressed_background">#FFB266</color>
<color name="dialog_background">#A622334D</color> <color name="dialog_background">#A622334D</color>
<color name="transparent_light_orange">#1ABF4601</color>
<color name="gradient_start">#EEF7F8</color> <color name="gradient_start">#EEF7F8</color>

View file

@ -111,7 +111,6 @@
<string name="assistant_account_register_phone_number_already_in_use_error">Phone number already used</string> <string name="assistant_account_register_phone_number_already_in_use_error">Phone number already used</string>
<string name="assistant_account_register_invalid_phone_number_error">Invalid phone number and/or prefix</string> <string name="assistant_account_register_invalid_phone_number_error">Invalid phone number and/or prefix</string>
<string name="drawer_menu_default_account_label">Default</string>
<string name="drawer_menu_manage_account">Manage the profile</string> <string name="drawer_menu_manage_account">Manage the profile</string>
<string name="drawer_menu_account_connection_status_connected">Connected</string> <string name="drawer_menu_account_connection_status_connected">Connected</string>
<string name="drawer_menu_account_connection_status_refreshing">Refreshing</string> <string name="drawer_menu_account_connection_status_refreshing">Refreshing</string>
@ -132,6 +131,7 @@
<string name="help_about_check_for_update">Check update</string> <string name="help_about_check_for_update">Check update</string>
<string name="help_about_contribute_translations_title">Contribute on &appName; translation</string> <string name="help_about_contribute_translations_title">Contribute on &appName; translation</string>
<string name="help_about_advanced_title">Advanced</string> <string name="help_about_advanced_title">Advanced</string>
<string name="help_debug_title">Troubleshooting</string>
<string name="help_advanced_debug_title">Enable/disable debug logs</string> <string name="help_advanced_debug_title">Enable/disable debug logs</string>
<string name="help_advanced_debug_subtitle">Blah</string> <!-- TODO --> <string name="help_advanced_debug_subtitle">Blah</string> <!-- TODO -->
<string name="help_advanced_clean_logs">Clean logs</string> <string name="help_advanced_clean_logs">Clean logs</string>