package ru.ltst.u2020mvp.ui.bugreport; import android.content.Context; import android.text.Editable; import android.util.AttributeSet; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import butterknife.Bind; import butterknife.ButterKnife; import ru.ltst.u2020mvp.R; import ru.ltst.u2020mvp.ui.misc.EmptyTextWatcher; import ru.ltst.u2020mvp.util.Strings; public final class BugReportView extends LinearLayout { @Bind(R.id.title) EditText titleView; @Bind(R.id.description) EditText descriptionView; @Bind(R.id.screenshot) CheckBox screenshotView; @Bind(R.id.logs) CheckBox logsView; public interface ReportDetailsListener { void onStateChanged(boolean valid); } private ReportDetailsListener listener; public BugReportView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); ButterKnife.bind(this); titleView.setOnFocusChangeListener((v, hasFocus) -> { if (!hasFocus) { titleView.setError(Strings.isBlank(titleView.getText()) ? "Cannot be empty." : null); } }); titleView.addTextChangedListener(new EmptyTextWatcher() { @Override public void afterTextChanged(Editable s) { if (listener != null) { listener.onStateChanged(!Strings.isBlank(s)); } } }); screenshotView.setChecked(true); logsView.setChecked(true); } public void setBugReportListener(ReportDetailsListener listener) { this.listener = listener; } public Report getReport() { return new Report(String.valueOf(titleView.getText()), String.valueOf(descriptionView.getText()), screenshotView.isChecked(), logsView.isChecked()); } public static final class Report { public final String title; public final String description; public final boolean includeScreenshot; public final boolean includeLogs; public Report(String title, String description, boolean includeScreenshot, boolean includeLogs) { this.title = title; this.description = description; this.includeScreenshot = includeScreenshot; this.includeLogs = includeLogs; } } }