Refactor LoggerView.java

This commit is contained in:
SerpentSpirale 2022-02-26 17:34:39 +01:00 committed by ArtDev
parent b9c4723fee
commit fa690f99a6

View File

@ -21,10 +21,10 @@ import net.kdt.pojavlaunch.R;
* It has support for the Logger class * It has support for the Logger class
*/ */
public class LoggerView extends ConstraintLayout { public class LoggerView extends ConstraintLayout {
private Logger.eventLogListener logListener; private Logger.eventLogListener mLogListener;
private ToggleButton toggleButton; private ToggleButton mToggleButton;
private ScrollView scrollView; private ScrollView mScrollView;
private TextView log; private TextView mLogTextView;
public LoggerView(@NonNull Context context) { public LoggerView(@NonNull Context context) {
@ -36,50 +36,51 @@ public class LoggerView extends ConstraintLayout {
init(); init();
} }
@Override
public void setVisibility(int visibility) {
super.setVisibility(visibility);
// Triggers the log view shown state by default when viewing it
mToggleButton.setChecked(visibility == VISIBLE);
}
/** /**
* Inflate the layout, and add component behaviors * Inflate the layout, and add component behaviors
*/ */
private void init(){ private void init(){
inflate(getContext(), R.layout.loggerview_layout, this); inflate(getContext(), R.layout.loggerview_layout, this);
log = findViewById(R.id.content_log_view); mLogTextView = findViewById(R.id.content_log_view);
log.setTypeface(Typeface.MONOSPACE); mLogTextView.setTypeface(Typeface.MONOSPACE);
//TODO clamp the max text so it doesn't go oob //TODO clamp the max text so it doesn't go oob
log.setMaxLines(Integer.MAX_VALUE); mLogTextView.setMaxLines(Integer.MAX_VALUE);
log.setEllipsize(null); mLogTextView.setEllipsize(null);
log.setVisibility(GONE); mLogTextView.setVisibility(GONE);
// Toggle log visibility // Toggle log visibility
toggleButton = findViewById(R.id.content_log_toggle_log); mToggleButton = findViewById(R.id.content_log_toggle_log);
toggleButton.setOnCheckedChangeListener( mToggleButton.setOnCheckedChangeListener(
(compoundButton, isChecked) -> { (compoundButton, isChecked) -> {
log.setVisibility(isChecked ? VISIBLE : GONE); mLogTextView.setVisibility(isChecked ? VISIBLE : GONE);
if(!isChecked) log.setText(""); if(!isChecked) mLogTextView.setText("");
}); });
toggleButton.setChecked(false); mToggleButton.setChecked(false);
// Remove the loggerView from the user View // Remove the loggerView from the user View
ImageButton cancelButton = findViewById(R.id.log_view_cancel); ImageButton cancelButton = findViewById(R.id.log_view_cancel);
cancelButton.setOnClickListener(view -> LoggerView.this.setVisibility(GONE)); cancelButton.setOnClickListener(view -> LoggerView.this.setVisibility(GONE));
// Set the scroll view // Set the scroll view
scrollView = findViewById(R.id.content_log_scroll); mScrollView = findViewById(R.id.content_log_scroll);
// Listen to logs // Listen to logs
logListener = text -> { mLogListener = text -> {
if(log.getVisibility() != VISIBLE) return; if(mLogTextView.getVisibility() != VISIBLE) return;
post(() -> { post(() -> {
log.append(text + '\n'); mLogTextView.append(text + '\n');
scrollView.fullScroll(View.FOCUS_DOWN); mScrollView.fullScroll(View.FOCUS_DOWN);
}); });
}; };
Logger.getInstance().setLogListener(logListener); Logger.getInstance().setLogListener(mLogListener);
} }
@Override
public void setVisibility(int visibility) {
super.setVisibility(visibility);
// Triggers the log view shown state by default when viewing it
toggleButton.setChecked(visibility == VISIBLE);
}
} }