package com.zhuinden.simplestackdemoexamplemvp.presentation.paths.taskdetail; import android.annotation.TargetApi; import android.content.Context; import android.support.annotation.NonNull; import android.util.AttributeSet; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.RelativeLayout; import android.widget.TextView; import com.zhuinden.simplestackdemoexamplemvp.R; import com.zhuinden.simplestackdemoexamplemvp.application.Injector; import com.zhuinden.simplestackdemoexamplemvp.application.MainActivity; import com.zhuinden.simplestackdemoexamplemvp.presentation.objects.Task; import com.zhuinden.simplestackdemoexamplemvp.util.Strings; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by Zhuinden on 2017.01.26.. */ public class TaskDetailView extends RelativeLayout implements MainActivity.OptionsItemSelectedListener { public TaskDetailView(Context context) { super(context); init(context); } public TaskDetailView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public TaskDetailView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } @TargetApi(21) public TaskDetailView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context); } private void init(Context context) { if(!isInEditMode()) { Injector.get().inject(this); } } @BindView(R.id.task_detail_title) TextView detailTitle; @BindView(R.id.task_detail_description) TextView mDetailDescription; @BindView(R.id.task_detail_complete) CheckBox detailCompleteStatus; @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch(menuItem.getItemId()) { case R.id.menu_delete: deleteTask(); return true; } return false; } @Inject TaskDetailPresenter taskDetailPresenter; public void editTask() { taskDetailPresenter.editTask(); } public void showTitle(@NonNull String title) { detailTitle.setVisibility(View.VISIBLE); detailTitle.setText(title); } public void hideTitle() { detailTitle.setVisibility(View.GONE); } public void showDescription(@NonNull String description) { mDetailDescription.setVisibility(View.VISIBLE); mDetailDescription.setText(description); } public void hideDescription() { mDetailDescription.setVisibility(View.GONE); } public void showMissingTask() { detailTitle.setText(""); mDetailDescription.setText(getContext().getString(R.string.no_data)); } public void showTask(Task task) { String title = task.title(); String description = task.description(); if(Strings.isNullOrEmpty(title)) { hideTitle(); } else { showTitle(title); } if(Strings.isNullOrEmpty(description)) { hideDescription(); } else { showDescription(description); } showCompletionStatus(task, task.isCompleted()); } private void showCompletionStatus(Task task, boolean completed) { detailCompleteStatus.setChecked(completed); detailCompleteStatus.setOnCheckedChangeListener((buttonView, isChecked) -> { if(isChecked) { taskDetailPresenter.completeTask(task); } else { taskDetailPresenter.activateTask(task); } }); } public void deleteTask() { taskDetailPresenter.deleteTask(); } @Override protected void onFinishInflate() { super.onFinishInflate(); ButterKnife.bind(this); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); taskDetailPresenter.attachView(this); } @Override protected void onDetachedFromWindow() { taskDetailPresenter.detachView(this); super.onDetachedFromWindow(); } }