mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-04-25 13:58:32 +00:00
Added edit/remove contact/account picture
This commit is contained in:
parent
42dd293aa8
commit
95401fb8c4
8 changed files with 120 additions and 15 deletions
|
|
@ -139,6 +139,10 @@ class EditContactFragment : GenericFragment() {
|
||||||
pickImage()
|
pickImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.setDeleteImageClickListener {
|
||||||
|
viewModel.picturePath.value = ""
|
||||||
|
}
|
||||||
|
|
||||||
viewModel.saveChangesEvent.observe(viewLifecycleOwner) {
|
viewModel.saveChangesEvent.observe(viewLifecycleOwner) {
|
||||||
it.consume { refKey ->
|
it.consume { refKey ->
|
||||||
if (refKey.isNotEmpty()) {
|
if (refKey.isNotEmpty()) {
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,10 @@ class NewContactFragment : GenericFragment() {
|
||||||
pickImage()
|
pickImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.setDeleteImageClickListener {
|
||||||
|
viewModel.picturePath.value = ""
|
||||||
|
}
|
||||||
|
|
||||||
viewModel.saveChangesEvent.observe(viewLifecycleOwner) {
|
viewModel.saveChangesEvent.observe(viewLifecycleOwner) {
|
||||||
it.consume { refKey ->
|
it.consume { refKey ->
|
||||||
if (refKey.isNotEmpty()) {
|
if (refKey.isNotEmpty()) {
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,10 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
|
||||||
// TODO ? What to do when vCard is null
|
// TODO ? What to do when vCard is null
|
||||||
}
|
}
|
||||||
|
|
||||||
picturePath.postValue(friend.photo)
|
val photo = friend.photo.orEmpty()
|
||||||
|
if (photo.isNotEmpty()) {
|
||||||
|
picturePath.postValue(photo)
|
||||||
|
}
|
||||||
|
|
||||||
for (address in friend.addresses) {
|
for (address in friend.addresses) {
|
||||||
addSipAddress(address.asStringUriOnly())
|
addSipAddress(address.asStringUriOnly())
|
||||||
|
|
@ -146,6 +149,8 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() {
|
||||||
val picture = picturePath.value.orEmpty()
|
val picture = picturePath.value.orEmpty()
|
||||||
if (picture.isNotEmpty()) {
|
if (picture.isNotEmpty()) {
|
||||||
friend.photo = FileUtils.getProperFilePath(picture)
|
friend.photo = FileUtils.getProperFilePath(picture)
|
||||||
|
} else {
|
||||||
|
friend.photo = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,10 @@ class AccountProfileFragment : GenericFragment() {
|
||||||
pickImage()
|
pickImage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.setDeleteImageClickListener {
|
||||||
|
viewModel.setNewPicturePath("")
|
||||||
|
}
|
||||||
|
|
||||||
binding.setChangeModeClickListener {
|
binding.setChangeModeClickListener {
|
||||||
val action = AccountProfileFragmentDirections.actionAccountProfileFragmentToAccountProfileModeFragment()
|
val action = AccountProfileFragmentDirections.actionAccountProfileFragmentToAccountProfileModeFragment()
|
||||||
findNavController().navigate(action)
|
findNavController().navigate(action)
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,9 @@ class AccountProfileViewModel @UiThread constructor() : ViewModel() {
|
||||||
if (path.isNotEmpty() && path != params.pictureUri) {
|
if (path.isNotEmpty() && path != params.pictureUri) {
|
||||||
Log.i("$TAG New account profile picture [$path]")
|
Log.i("$TAG New account profile picture [$path]")
|
||||||
copy.pictureUri = path
|
copy.pictureUri = path
|
||||||
|
} else {
|
||||||
|
Log.i("$TAG Account profile picture removed")
|
||||||
|
copy.pictureUri = null
|
||||||
}
|
}
|
||||||
|
|
||||||
accountModel.value?.avatar?.postValue(path)
|
accountModel.value?.avatar?.postValue(path)
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
<variable
|
<variable
|
||||||
name="pickImageClickListener"
|
name="pickImageClickListener"
|
||||||
type="View.OnClickListener" />
|
type="View.OnClickListener" />
|
||||||
|
<variable
|
||||||
|
name="deleteImageClickListener"
|
||||||
|
type="View.OnClickListener" />
|
||||||
<variable
|
<variable
|
||||||
name="changeModeClickListener"
|
name="changeModeClickListener"
|
||||||
type="View.OnClickListener" />
|
type="View.OnClickListener" />
|
||||||
|
|
@ -108,17 +111,6 @@
|
||||||
app:layout_constraintStart_toStartOf="@id/avatar"
|
app:layout_constraintStart_toStartOf="@id/avatar"
|
||||||
app:layout_constraintBottom_toBottomOf="@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
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
android:onClick="@{pickImageClickListener}"
|
android:onClick="@{pickImageClickListener}"
|
||||||
style="@style/default_text_style"
|
style="@style/default_text_style"
|
||||||
|
|
@ -126,12 +118,56 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="10dp"
|
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:text="@string/manage_account_add_picture"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/camera"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.accountModel.avatar.empty ? View.VISIBLE : View.GONE, default=gone}"
|
||||||
app:layout_constraintTop_toBottomOf="@id/avatar"
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"/>
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:onClick="@{pickImageClickListener}"
|
||||||
|
style="@style/default_text_style"
|
||||||
|
android:id="@+id/edit_picture_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:text="@string/manage_account_edit_picture"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/pencil_simple"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.accountModel.avatar.empty ? View.GONE : View.VISIBLE}"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/remove_picture_label"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:onClick="@{deleteImageClickListener}"
|
||||||
|
style="@style/default_text_style"
|
||||||
|
android:id="@+id/remove_picture_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:text="@string/manage_account_remove_picture"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/trash_simple"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.accountModel.avatar.empty ? View.GONE : View.VISIBLE}"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/edit_picture_label"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Barrier
|
||||||
|
android:id="@+id/avatar_barrier"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="remove_picture_label, edit_picture_label, add_picture_label"
|
||||||
|
app:barrierDirection="bottom" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/section_header_style"
|
style="@style/section_header_style"
|
||||||
android:onClick="@{() -> viewModel.toggleDetailsExpand()}"
|
android:onClick="@{() -> viewModel.toggleDetailsExpand()}"
|
||||||
|
|
@ -147,7 +183,7 @@
|
||||||
android:drawableTint="@color/gray_main2_600"
|
android:drawableTint="@color/gray_main2_600"
|
||||||
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/add_picture_label"/>
|
app:layout_constraintTop_toBottomOf="@id/avatar_barrier"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/details_background"
|
android:id="@+id/details_background"
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
<variable
|
<variable
|
||||||
name="pickImageClickListener"
|
name="pickImageClickListener"
|
||||||
type="View.OnClickListener" />
|
type="View.OnClickListener" />
|
||||||
|
<variable
|
||||||
|
name="deleteImageClickListener"
|
||||||
|
type="View.OnClickListener" />
|
||||||
<variable
|
<variable
|
||||||
name="viewModel"
|
name="viewModel"
|
||||||
type="org.linphone.ui.main.contacts.viewmodel.ContactNewOrEditViewModel" />
|
type="org.linphone.ui.main.contacts.viewmodel.ContactNewOrEditViewModel" />
|
||||||
|
|
@ -99,6 +102,7 @@
|
||||||
app:layout_constraintBottom_toBottomOf="@id/avatar" />
|
app:layout_constraintBottom_toBottomOf="@id/avatar" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:onClick="@{pickImageClickListener}"
|
||||||
style="@style/default_text_style"
|
style="@style/default_text_style"
|
||||||
android:id="@+id/add_picture_label"
|
android:id="@+id/add_picture_label"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
@ -106,10 +110,54 @@
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:text="@string/manage_account_add_picture"
|
android:text="@string/manage_account_add_picture"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/camera"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.picturePath.empty ? View.VISIBLE : View.GONE, default=gone}"
|
||||||
app:layout_constraintTop_toBottomOf="@id/avatar"
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"/>
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:onClick="@{pickImageClickListener}"
|
||||||
|
style="@style/default_text_style"
|
||||||
|
android:id="@+id/edit_picture_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:text="@string/manage_account_edit_picture"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/pencil_simple"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.picturePath.empty ? View.GONE : View.VISIBLE}"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/remove_picture_label"/>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:onClick="@{deleteImageClickListener}"
|
||||||
|
style="@style/default_text_style"
|
||||||
|
android:id="@+id/remove_picture_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:text="@string/manage_account_remove_picture"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:drawableStart="@drawable/trash_simple"
|
||||||
|
android:drawablePadding="3dp"
|
||||||
|
android:visibility="@{viewModel.picturePath.empty ? View.GONE : View.VISIBLE}"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/avatar"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/edit_picture_label"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"/>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Barrier
|
||||||
|
android:id="@+id/avatar_barrier"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:constraint_referenced_ids="remove_picture_label, edit_picture_label, add_picture_label"
|
||||||
|
app:barrierDirection="bottom" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
style="@style/header_style"
|
style="@style/header_style"
|
||||||
android:id="@+id/first_name_label"
|
android:id="@+id/first_name_label"
|
||||||
|
|
@ -119,7 +167,7 @@
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:text="@string/contact_editor_first_name"
|
android:text="@string/contact_editor_first_name"
|
||||||
app:layout_constraintStart_toStartOf="@id/first_name"
|
app:layout_constraintStart_toStartOf="@id/first_name"
|
||||||
app:layout_constraintTop_toBottomOf="@id/add_picture_label"/>
|
app:layout_constraintTop_toBottomOf="@id/avatar_barrier"/>
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatEditText
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
style="@style/default_text_style"
|
style="@style/default_text_style"
|
||||||
|
|
|
||||||
|
|
@ -195,6 +195,7 @@
|
||||||
<string name="manage_account_devices_title">Devices</string>
|
<string name="manage_account_devices_title">Devices</string>
|
||||||
<string name="manage_account_add_picture">Add a picture</string>
|
<string name="manage_account_add_picture">Add a picture</string>
|
||||||
<string name="manage_account_edit_picture">Edit picture</string>
|
<string name="manage_account_edit_picture">Edit picture</string>
|
||||||
|
<string name="manage_account_remove_picture">Remove picture</string>
|
||||||
<string name="manage_account_status_connected_summary">This account in online, everybody can call you.</string>
|
<string name="manage_account_status_connected_summary">This account in online, everybody can call you.</string>
|
||||||
<string name="manage_account_status_cleared_summary">Account has been disabled, you won\'t receive any call or message.</string>
|
<string name="manage_account_status_cleared_summary">Account has been disabled, you won\'t receive any call or message.</string>
|
||||||
<string name="manage_account_status_progress_summary">Account is connecting to the server, please wait…</string>
|
<string name="manage_account_status_progress_summary">Account is connecting to the server, please wait…</string>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue