package com.zhuinden.simplestackdemoexamplefragments.presentation.paths.taskdetail;
import android.support.annotation.NonNull;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import com.zhuinden.simplestackdemoexamplefragments.R;
import com.zhuinden.simplestackdemoexamplefragments.application.Injector;
import com.zhuinden.simplestackdemoexamplefragments.application.MainActivity;
import com.zhuinden.simplestackdemoexamplefragments.presentation.objects.Task;
import com.zhuinden.simplestackdemoexamplefragments.util.BaseFragment;
import com.zhuinden.simplestackdemoexamplefragments.util.Strings;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
/**
* Created by Owner on 2017. 01. 26..
*/
// UNSCOPED!
public class TaskDetailFragment
extends BaseFragment<TaskDetailFragment, TaskDetailPresenter>
implements MainActivity.OptionsItemSelectedListener {
@BindView(R.id.task_detail_title)
TextView mDetailTitle;
@BindView(R.id.task_detail_description)
TextView mDetailDescription;
@BindView(R.id.task_detail_complete)
CheckBox mDetailCompleteStatus;
public TaskDetailFragment() {
}
@Inject
TaskDetailPresenter taskDetailPresenter;
@Override
public TaskDetailPresenter getPresenter() {
return taskDetailPresenter;
}
@Override
public TaskDetailFragment getThis() {
return this;
}
@Override
protected Unbinder bindViews(View view) {
return ButterKnife.bind(this, view);
}
@Override
protected void injectSelf() {
Injector.get().inject(this);
}
public void editTask() {
taskDetailPresenter.editTask();
}
public void showTitle(@NonNull String title) {
mDetailTitle.setVisibility(View.VISIBLE);
mDetailTitle.setText(title);
}
public void hideTitle() {
mDetailTitle.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() {
mDetailTitle.setText("");
mDetailDescription.setText(getView().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) {
mDetailCompleteStatus.setChecked(completed);
mDetailCompleteStatus.setOnCheckedChangeListener((buttonView, isChecked) -> {
if(isChecked) {
getPresenter().completeTask(task);
} else {
getPresenter().activateTask(task);
}
});
}
public void deleteTask() {
taskDetailPresenter.deleteTask();
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch(menuItem.getItemId()) {
case R.id.menu_delete:
deleteTask();
return true;
}
return false;
}
}