Update UI elements of contact share activity.

This commit is contained in:
Alex Hart
2022-07-14 14:47:00 -03:00
committed by Cody Henthorne
parent 9c914ab715
commit caab91cdc3
6 changed files with 92 additions and 59 deletions

View File

@@ -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);
}
}

View File

@@ -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);