refactor(ListEditor.java): add back the working ListEditor version

This commit is contained in:
LucasGGamerM
2025-04-25 08:05:35 -03:00
parent 3572712e7c
commit 0616145b2a

View File

@@ -15,83 +15,83 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import org.joinmastodon.android.R; import org.joinmastodon.android.R;
import org.joinmastodon.android.model.ListTimeline; import org.joinmastodon.android.model.FollowList;
public class ListEditor extends LinearLayout { public class ListEditor extends LinearLayout {
private ListTimeline.RepliesPolicy policy = null; private FollowList.RepliesPolicy policy = null;
private final TextInputFrameLayout input; private final TextInputFrameLayout input;
private final Button button; private final Button button;
private final Switch exclusiveSwitch; private final Switch exclusiveSwitch;
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
public ListEditor(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { public ListEditor(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes); super(context, attrs, defStyleAttr, defStyleRes);
LayoutInflater.from(context).inflate(R.layout.list_timeline_editor, this); LayoutInflater.from(context).inflate(R.layout.list_timeline_editor, this);
button = findViewById(R.id.button); button = findViewById(R.id.button);
input = findViewById(R.id.input); input = findViewById(R.id.input);
exclusiveSwitch = findViewById(R.id.exclusive_checkbox); exclusiveSwitch = findViewById(R.id.exclusive_checkbox);
PopupMenu popupMenu = new PopupMenu(context, button, Gravity.CENTER_HORIZONTAL); PopupMenu popupMenu = new PopupMenu(context, button, Gravity.CENTER_HORIZONTAL);
popupMenu.inflate(R.menu.list_reply_policies); popupMenu.inflate(R.menu.list_reply_policies);
popupMenu.setOnMenuItemClickListener(this::onMenuItemClick); popupMenu.setOnMenuItemClickListener(this::onMenuItemClick);
button.setOnTouchListener(popupMenu.getDragToOpenListener()); button.setOnTouchListener(popupMenu.getDragToOpenListener());
button.setOnClickListener(v->popupMenu.show()); button.setOnClickListener(v->popupMenu.show());
input.getEditText().setHint(context.getString(R.string.sk_list_name_hint)); input.getEditText().setHint(context.getString(R.string.sk_list_name_hint));
findViewById(R.id.exclusive) findViewById(R.id.exclusive)
.setOnClickListener(v -> exclusiveSwitch.setChecked(!exclusiveSwitch.isChecked())); .setOnClickListener(v -> exclusiveSwitch.setChecked(!exclusiveSwitch.isChecked()));
setRepliesPolicy(ListTimeline.RepliesPolicy.LIST); setRepliesPolicy(FollowList.RepliesPolicy.LIST);
} }
public void applyList(String title, boolean exclusive, @Nullable ListTimeline.RepliesPolicy policy) { public void applyList(String title, boolean exclusive, @Nullable FollowList.RepliesPolicy policy) {
input.getEditText().setText(title); input.getEditText().setText(title);
exclusiveSwitch.setChecked(exclusive); exclusiveSwitch.setChecked(exclusive);
if (policy != null) setRepliesPolicy(policy); if (policy != null) setRepliesPolicy(policy);
} }
public String getTitle() { public String getTitle() {
return input.getEditText().getText().toString(); return input.getEditText().getText().toString();
} }
public ListTimeline.RepliesPolicy getRepliesPolicy() { public FollowList.RepliesPolicy getRepliesPolicy() {
return policy; return policy;
} }
public boolean isExclusive() { public boolean isExclusive() {
return exclusiveSwitch.isChecked(); return exclusiveSwitch.isChecked();
} }
public void setRepliesPolicy(@NonNull ListTimeline.RepliesPolicy policy) { public void setRepliesPolicy(@NonNull FollowList.RepliesPolicy policy) {
this.policy = policy; this.policy = policy;
switch (policy) { switch (policy) {
case FOLLOWED -> button.setText(R.string.sk_list_replies_policy_followed); case FOLLOWED -> button.setText(R.string.sk_list_replies_policy_followed);
case LIST -> button.setText(R.string.sk_list_replies_policy_list); case LIST -> button.setText(R.string.sk_list_replies_policy_list);
case NONE -> button.setText(R.string.sk_list_replies_policy_none); case NONE -> button.setText(R.string.sk_list_replies_policy_none);
} }
} }
private boolean onMenuItemClick(MenuItem i) { private boolean onMenuItemClick(MenuItem i) {
if (i.getItemId() == R.id.reply_policy_none) { if (i.getItemId() == R.id.reply_policy_none) {
setRepliesPolicy(ListTimeline.RepliesPolicy.NONE); setRepliesPolicy(FollowList.RepliesPolicy.NONE);
} else if (i.getItemId() == R.id.reply_policy_followed) { } else if (i.getItemId() == R.id.reply_policy_followed) {
setRepliesPolicy(ListTimeline.RepliesPolicy.FOLLOWED); setRepliesPolicy(FollowList.RepliesPolicy.FOLLOWED);
} else if (i.getItemId() == R.id.reply_policy_list) { } else if (i.getItemId() == R.id.reply_policy_list) {
setRepliesPolicy(ListTimeline.RepliesPolicy.LIST); setRepliesPolicy(FollowList.RepliesPolicy.LIST);
} }
return true; return true;
} }
public ListEditor(Context context, AttributeSet attrs, int defStyleAttr) { public ListEditor(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0); this(context, attrs, defStyleAttr, 0);
} }
public ListEditor(Context context, AttributeSet attrs) { public ListEditor(Context context, AttributeSet attrs) {
this(context, attrs, 0); this(context, attrs, 0);
} }
public ListEditor(Context context) { public ListEditor(Context context) {
this(context, null); this(context, null);
} }
} }