Add 'Add to a group' button to bottom sheet.

This commit is contained in:
Alan Evans
2020-06-09 12:09:59 -03:00
committed by GitHub
parent 7e934eff5d
commit e1bb773d85
17 changed files with 505 additions and 37 deletions

View File

@@ -11,6 +11,7 @@ import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.fragment.app.FragmentActivity;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
@@ -24,6 +25,7 @@ import org.thoughtcrime.securesms.groups.ui.managegroup.ManageGroupActivity;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment;
import org.thoughtcrime.securesms.util.AvatarUtil;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.ThemeUtil;
@@ -162,11 +164,17 @@ public final class AvatarImageView extends AppCompatImageView {
private void setAvatarClickHandler(@NonNull final Recipient recipient, boolean quickContactEnabled) {
if (quickContactEnabled) {
super.setOnClickListener(v -> {
Context context = getContext();
if (FeatureFlags.newGroupUI() && recipient.isPushGroup()) {
getContext().startActivity(ManageGroupActivity.newIntent(getContext(), recipient.requireGroupId().requirePush()),
ManageGroupActivity.createTransitionBundle(getContext(), this));
context.startActivity(ManageGroupActivity.newIntent(context, recipient.requireGroupId().requirePush()),
ManageGroupActivity.createTransitionBundle(context, this));
} else {
getContext().startActivity(RecipientPreferenceActivity.getLaunchIntent(getContext(), recipient.getId()));
if (context instanceof FragmentActivity) {
RecipientBottomSheetDialogFragment.create(recipient.getId(), null)
.show(((FragmentActivity) context).getSupportFragmentManager(), "BOTTOM");
} else {
context.startActivity(RecipientPreferenceActivity.getLaunchIntent(context, recipient.getId()));
}
}
});
} else {

View File

@@ -3,11 +3,6 @@ package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Rect;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.core.widget.TextViewCompat;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
@@ -18,20 +13,23 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import androidx.core.widget.TextViewCompat;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.views.DarkOverflowToolbar;
public class ContactFilterToolbar extends DarkOverflowToolbar {
public final class ContactFilterToolbar extends DarkOverflowToolbar {
private OnFilterChangedListener listener;
private EditText searchText;
private AnimatingToggle toggle;
private ImageView keyboardToggle;
private ImageView dialpadToggle;
private ImageView clearToggle;
private LinearLayout toggleContainer;
private final EditText searchText;
private final AnimatingToggle toggle;
private final ImageView keyboardToggle;
private final ImageView dialpadToggle;
private final ImageView clearToggle;
private final LinearLayout toggleContainer;
public ContactFilterToolbar(Context context) {
this(context, null);
@@ -45,12 +43,12 @@ public class ContactFilterToolbar extends DarkOverflowToolbar {
super(context, attrs, defStyleAttr);
inflate(context, R.layout.contact_filter_toolbar, this);
this.searchText = ViewUtil.findById(this, R.id.search_view);
this.toggle = ViewUtil.findById(this, R.id.button_toggle);
this.keyboardToggle = ViewUtil.findById(this, R.id.search_keyboard);
this.dialpadToggle = ViewUtil.findById(this, R.id.search_dialpad);
this.clearToggle = ViewUtil.findById(this, R.id.search_clear);
this.toggleContainer = ViewUtil.findById(this, R.id.toggle_container);
this.searchText = findViewById(R.id.search_view);
this.toggle = findViewById(R.id.button_toggle);
this.keyboardToggle = findViewById(R.id.search_keyboard);
this.dialpadToggle = findViewById(R.id.search_dialpad);
this.clearToggle = findViewById(R.id.search_clear);
this.toggleContainer = findViewById(R.id.toggle_container);
this.keyboardToggle.setOnClickListener(new View.OnClickListener() {
@Override
@@ -103,11 +101,11 @@ public class ContactFilterToolbar extends DarkOverflowToolbar {
setLogo(null);
setContentInsetStartWithNavigation(0);
expandTapArea(toggleContainer, dialpadToggle);
styleSearchText(searchText, context, attrs, defStyleAttr);
applyAttributes(searchText, context, attrs, defStyleAttr);
searchText.requestFocus();
}
private void styleSearchText(@NonNull EditText searchText,
private void applyAttributes(@NonNull EditText searchText,
@NonNull Context context,
@NonNull AttributeSet attrs,
int defStyle)
@@ -121,6 +119,9 @@ public class ContactFilterToolbar extends DarkOverflowToolbar {
if (styleResource != -1) {
TextViewCompat.setTextAppearance(searchText, styleResource);
}
if (!attributes.getBoolean(R.styleable.ContactFilterToolbar_showDialpad, true)) {
dialpadToggle.setVisibility(GONE);
}
attributes.recycle();
}
@@ -133,6 +134,10 @@ public class ContactFilterToolbar extends DarkOverflowToolbar {
this.listener = listener;
}
public void setHint(@StringRes int hint) {
searchText.setHint(hint);
}
private void notifyListener() {
if (listener != null) listener.onFilterChanged(searchText.getText().toString());
}