mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-15 23:59:21 -04:00
Feat[log]: add autoscroll switch
This commit is contained in:
parent
af3d4abd75
commit
f8eddc0eb5
@ -22,9 +22,15 @@ import net.kdt.pojavlaunch.R;
|
||||
*/
|
||||
public class LoggerView extends ConstraintLayout {
|
||||
private Logger.eventLogListener mLogListener;
|
||||
private ToggleButton mToggleButton;
|
||||
private ToggleButton mLogToggle;
|
||||
private ScrollView mScrollView;
|
||||
/*
|
||||
* android:descendantFocusability="blocksDescendants"
|
||||
* This is set for the ScrollView, since under focus the TextView always autoscrolls.
|
||||
* By not allowing focus, we are able to control its behaviour from the code that we have here.
|
||||
*/
|
||||
private TextView mLogTextView;
|
||||
private boolean mAutoScroll = true;
|
||||
|
||||
|
||||
public LoggerView(@NonNull Context context) {
|
||||
@ -40,7 +46,7 @@ public class LoggerView extends ConstraintLayout {
|
||||
public void setVisibility(int visibility) {
|
||||
super.setVisibility(visibility);
|
||||
// Triggers the log view shown state by default when viewing it
|
||||
mToggleButton.setChecked(visibility == VISIBLE);
|
||||
mLogToggle.setChecked(visibility == VISIBLE);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -56,8 +62,8 @@ public class LoggerView extends ConstraintLayout {
|
||||
mLogTextView.setVisibility(GONE);
|
||||
|
||||
// Toggle log visibility
|
||||
mToggleButton = findViewById(R.id.content_log_toggle_log);
|
||||
mToggleButton.setOnCheckedChangeListener(
|
||||
mLogToggle = findViewById(R.id.content_log_toggle_log);
|
||||
mLogToggle.setOnCheckedChangeListener(
|
||||
(compoundButton, isChecked) -> {
|
||||
mLogTextView.setVisibility(isChecked ? VISIBLE : GONE);
|
||||
if(isChecked) {
|
||||
@ -68,7 +74,13 @@ public class LoggerView extends ConstraintLayout {
|
||||
// NOTE: was tested by rapidly smashing the log on/off button, no sync issues found :)
|
||||
}
|
||||
});
|
||||
mToggleButton.setChecked(false);
|
||||
mLogToggle.setChecked(false);
|
||||
|
||||
ToggleButton autoscrollToggle = findViewById(R.id.content_log_toggle_autoscroll);
|
||||
autoscrollToggle.setOnCheckedChangeListener(
|
||||
(compoundButton, isChecked) -> mAutoScroll = isChecked
|
||||
);
|
||||
autoscrollToggle.setChecked(true);
|
||||
|
||||
// Remove the loggerView from the user View
|
||||
ImageButton cancelButton = findViewById(R.id.log_view_cancel);
|
||||
@ -82,7 +94,7 @@ public class LoggerView extends ConstraintLayout {
|
||||
if(mLogTextView.getVisibility() != VISIBLE) return;
|
||||
post(() -> {
|
||||
mLogTextView.append(text + '\n');
|
||||
mScrollView.fullScroll(View.FOCUS_DOWN);
|
||||
if(mAutoScroll) mScrollView.fullScroll(View.FOCUS_DOWN);
|
||||
});
|
||||
|
||||
};
|
||||
|
@ -15,18 +15,31 @@
|
||||
android:id="@+id/log_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="25dp"
|
||||
android:text="Log output:"
|
||||
android:paddingHorizontal="25dp"
|
||||
android:text="@string/log_view_label_log_output"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/top_log_view"
|
||||
app:layout_constraintStart_toStartOf="@+id/top_log_view"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/content_log_toggle_autoscroll"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:textOff="@string/log_view_button_scroll_off"
|
||||
android:textOn="@string/log_view_button_scroll_on"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/top_log_view"
|
||||
app:layout_constraintEnd_toStartOf="@+id/content_log_toggle_log"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/content_log_toggle_log"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginHorizontal="10dp"
|
||||
android:textOff="@string/log_view_button_output_off"
|
||||
android:textOn="@string/log_view_button_output_on"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/top_log_view"
|
||||
app:layout_constraintEnd_toStartOf="@+id/log_view_cancel"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
@ -47,6 +60,7 @@
|
||||
android:layout_height="0dp"
|
||||
android:alpha="0.8"
|
||||
android:background="#000000"
|
||||
android:descendantFocusability="blocksDescendants"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/top_log_view">
|
||||
|
||||
|
@ -376,4 +376,9 @@
|
||||
<string name="cropper_lock_horizontal">H. lock</string>
|
||||
<string name="cropper_reset">Reset</string>
|
||||
<string name="cropper_select_cancelled">Selection cancelled</string>
|
||||
<string name="log_view_button_scroll_off">Autoscroll\nOFF</string>
|
||||
<string name="log_view_button_scroll_on">Autoscroll\nON</string>
|
||||
<string name="log_view_button_output_off">Output\nOFF</string>
|
||||
<string name="log_view_button_output_on">Output\nON</string>
|
||||
<string name="log_view_label_log_output">Log output:</string>
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user