refactor(ListEditor.java): add back the working ListEditor version
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user