Update UI elements of contact share activity.
This commit is contained in:
parent
9c914ab715
commit
caab91cdc3
6 changed files with 92 additions and 59 deletions
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.contactshare;
|
|||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -85,7 +86,6 @@ class ContactFieldAdapter extends RecyclerView.Adapter<ContactFieldAdapter.Conta
|
|||
|
||||
private final TextView value;
|
||||
private final TextView label;
|
||||
private final ImageView icon;
|
||||
private final ImageView avatar;
|
||||
private final CheckBox checkBox;
|
||||
|
||||
|
@ -94,7 +94,6 @@ class ContactFieldAdapter extends RecyclerView.Adapter<ContactFieldAdapter.Conta
|
|||
|
||||
value = itemView.findViewById(R.id.contact_field_value);
|
||||
label = itemView.findViewById(R.id.contact_field_label);
|
||||
icon = itemView.findViewById(R.id.contact_field_icon);
|
||||
avatar = itemView.findViewById(R.id.contact_field_avatar);
|
||||
checkBox = itemView.findViewById(R.id.contact_field_checkbox);
|
||||
}
|
||||
|
@ -103,7 +102,7 @@ class ContactFieldAdapter extends RecyclerView.Adapter<ContactFieldAdapter.Conta
|
|||
value.setMaxLines(field.maxLines);
|
||||
value.setText(field.value);
|
||||
label.setText(field.label);
|
||||
icon.setImageResource(field.iconResId);
|
||||
label.setVisibility(TextUtils.isEmpty(field.label) ? View.GONE : View.VISIBLE);
|
||||
|
||||
if (field.iconUri != null) {
|
||||
avatar.setVisibility(View.VISIBLE);
|
||||
|
@ -118,18 +117,22 @@ class ContactFieldAdapter extends RecyclerView.Adapter<ContactFieldAdapter.Conta
|
|||
|
||||
if (selectable) {
|
||||
checkBox.setVisibility(View.VISIBLE);
|
||||
checkBox.setOnCheckedChangeListener(null);
|
||||
checkBox.setChecked(field.isSelected());
|
||||
checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> field.setSelected(isChecked));
|
||||
itemView.setOnClickListener(unused -> {
|
||||
field.setSelected(!field.isSelected());
|
||||
checkBox.setChecked(field.isSelected());
|
||||
});
|
||||
super.itemView.setOnClickListener(v -> checkBox.toggle());
|
||||
} else {
|
||||
checkBox.setVisibility(View.GONE);
|
||||
checkBox.setOnCheckedChangeListener(null);
|
||||
itemView.setOnClickListener(null);
|
||||
itemView.setClickable(false);
|
||||
}
|
||||
}
|
||||
|
||||
void recycle() {
|
||||
checkBox.setOnCheckedChangeListener(null);
|
||||
itemView.setOnClickListener(null);
|
||||
itemView.setClickable(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import android.widget.Toast;
|
|||
import androidx.annotation.ColorInt;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.lifecycle.ViewModelProviders;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
@ -23,9 +24,12 @@ import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
|||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
import org.thoughtcrime.securesms.util.Material3OnScrollHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.thoughtcrime.securesms.contactshare.Contact.Name;
|
||||
|
@ -39,7 +43,7 @@ public class ContactShareEditActivity extends PassphraseRequiredActivity impleme
|
|||
private static final String KEY_SEND_BUTTON_COLOR = "send_button_color";
|
||||
private static final int CODE_NAME_EDIT = 55;
|
||||
|
||||
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
||||
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
|
||||
private final DynamicLanguage dynamicLanguage = new DynamicLanguage();
|
||||
|
||||
private ContactShareEditViewModel viewModel;
|
||||
|
@ -80,6 +84,11 @@ public class ContactShareEditActivity extends PassphraseRequiredActivity impleme
|
|||
contactList.setLayoutManager(new LinearLayoutManager(this));
|
||||
contactList.getLayoutManager().setAutoMeasureEnabled(true);
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
toolbar.setNavigationOnClickListener(unused -> onBackPressed());
|
||||
Material3OnScrollHelper onScrollHelper = new Material3OnScrollHelper(this, Collections.singletonList(toolbar), Collections.emptyList());
|
||||
onScrollHelper.attach(contactList);
|
||||
|
||||
ContactShareEditAdapter contactAdapter = new ContactShareEditAdapter(GlideApp.with(this), dynamicLanguage.getCurrentLocale(), this);
|
||||
contactList.setAdapter(contactAdapter);
|
||||
|
||||
|
|
|
@ -1,27 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/signal_m3_toolbar_height"
|
||||
android:minHeight="@dimen/signal_m3_toolbar_height"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:navigationIcon="@drawable/ic_arrow_left_24"
|
||||
app:title="@string/ContactShareEditActivity__send_contact"
|
||||
app:titleTextAppearance="@style/Signal.Text.TitleLarge" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/contact_share_edit_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="80dp" />
|
||||
android:paddingBottom="80dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/toolbar" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_share_edit_send"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="end|bottom"
|
||||
android:layout_margin="@dimen/floating_action_button_margin"
|
||||
android:background="@drawable/circle_tintable"
|
||||
android:contentDescription="@string/conversation_activity__send"
|
||||
android:scaleType="centerInside"
|
||||
app:backgroundTint="@color/signal_colorPrimary"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:srcCompat="@drawable/ic_send_lock_24"
|
||||
app:tint="@color/white" />
|
||||
|
||||
</FrameLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -1,44 +1,41 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="56dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
|
||||
android:id="@+id/editable_contact_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginStart="72dp"
|
||||
android:layout_weight="1"
|
||||
android:textSize="20sp"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
android:textAppearance="@style/Signal.Text.BodyLarge"
|
||||
tools:text="Peter Parker" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/editable_contact_name_edit_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:src="@drawable/ic_create_white_24dp"
|
||||
android:tint="@color/core_ultramarine"/>
|
||||
android:contentDescription="@string/ContactShareEditActivity__edit_name"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_compose_24"
|
||||
android:tint="@color/signal_colorOnSurface" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:src="@color/grey_400"/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/editable_contact_fields"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -1,32 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:gravity="center_vertical">
|
||||
android:background="@drawable/selectable_list_item_background"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="56dp"
|
||||
android:orientation="horizontal"
|
||||
android:paddingHorizontal="@dimen/dsl_settings_gutter"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingBottom="12dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/contact_field_icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_margin="16dp"
|
||||
android:tint="@color/grey_600"
|
||||
tools:src="@drawable/ic_phone_right_unlock_solid_24" />
|
||||
<androidx.appcompat.widget.AppCompatCheckBox
|
||||
android:id="@+id/contact_field_checkbox"
|
||||
android:layout_width="22dp"
|
||||
android:layout_height="22dp"
|
||||
android:background="@drawable/contact_selection_checkbox"
|
||||
android:button="@null"
|
||||
android:clickable="false"
|
||||
android:focusable="false"
|
||||
tools:checked="true" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_field_avatar"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:contentDescription="@string/ContactShareEditActivity__avatar"
|
||||
android:visibility="gone"
|
||||
tools:src="@drawable/ic_contact_picture" />
|
||||
tools:src="@drawable/ic_contact_picture"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
|
@ -34,24 +42,21 @@
|
|||
android:id="@+id/contact_field_value"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/Signal.Text.BodyLarge"
|
||||
tools:text="(610) 867-5309" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_field_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="@style/Signal.Text.BodyMedium"
|
||||
android:textColor="@color/signal_colorOnSurfaceVariant"
|
||||
tools:text="Mobile" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/contact_field_checkbox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"/>
|
||||
|
||||
</LinearLayout>
|
|
@ -217,11 +217,17 @@
|
|||
<string name="ContactNameEditActivity_middle_name">Middle name</string>
|
||||
|
||||
<!-- ContactShareEditActivity -->
|
||||
<!-- ContactShareEditActivity toolbar title -->
|
||||
<string name="ContactShareEditActivity__send_contact">Send contact</string>
|
||||
<string name="ContactShareEditActivity_type_home">Home</string>
|
||||
<string name="ContactShareEditActivity_type_mobile">Mobile</string>
|
||||
<string name="ContactShareEditActivity_type_work">Work</string>
|
||||
<string name="ContactShareEditActivity_type_missing">Other</string>
|
||||
<string name="ContactShareEditActivity_invalid_contact">Selected contact was invalid</string>
|
||||
<!-- Content descrption for name edit button on contact share edit activity -->
|
||||
<string name="ContactShareEditActivity__edit_name">Edit name</string>
|
||||
<!-- Content description for user avatar in edit activity -->
|
||||
<string name="ContactShareEditActivity__avatar">Avatar</string>
|
||||
|
||||
<!-- ConversationItem -->
|
||||
<string name="ConversationItem_error_not_sent_tap_for_details">Not sent, tap for details</string>
|
||||
|
|
Loading…
Add table
Reference in a new issue