package pg.autyzm.friendly_plans.manager_app.view.plan_create_task_list; import android.app.Fragment; import android.app.FragmentTransaction; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import javax.inject.Inject; import database.repository.PlanTemplateRepository; import pg.autyzm.friendly_plans.ActivityProperties; import pg.autyzm.friendly_plans.App; import pg.autyzm.friendly_plans.R; import pg.autyzm.friendly_plans.databinding.FragmentPlanTaskListBinding; import pg.autyzm.friendly_plans.manager_app.view.plan_create_add_tasks.AddTasksToPlanFragment; import pg.autyzm.friendly_plans.manager_app.view.task_list.TaskRecyclerViewAdapter; import pg.autyzm.friendly_plans.manager_app.view.task_type_enum.TaskType; public class PlanTaskListFragment extends Fragment implements PlanTaskListEvents { private TaskRecyclerViewAdapter taskListAdapter; private Long planId; private Integer typeId; @Inject PlanTemplateRepository planTemplateRepository; TaskRecyclerViewAdapter.TaskItemClickListener taskItemClickListener = new TaskRecyclerViewAdapter.TaskItemClickListener() { @Override public void onTaskItemClick(int position) { /* What to do after click? Remove task? Edit? */ } @Override public void onRemoveTaskClick(int position) { planTemplateRepository.deleteTaskFromThisPlan( planId, taskListAdapter.getTaskItem(position).getId()); taskListAdapter.removeListItem(position); } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ((App) getActivity().getApplication()).getAppComponent().inject(this); FragmentPlanTaskListBinding binding = DataBindingUtil.inflate( inflater, R.layout.fragment_plan_task_list, container, false); binding.setPlanTaskListEvents(this); View view = binding.getRoot(); return view; } @Override public void eventAddTasksToPlan(View view) { AddTasksToPlanFragment fragment = new AddTasksToPlanFragment(); Bundle args = new Bundle(); args.putLong(ActivityProperties.PLAN_ID, planId); args.putInt(ActivityProperties.TYPE_ID, typeId); fragment.setArguments(args); FragmentTransaction transaction = getFragmentManager() .beginTransaction(); transaction.replace(R.id.plan_container, fragment); transaction.addToBackStack(null); transaction.commit(); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { Bundle arguments = getArguments(); if (arePlanArgumentProvided(arguments)) { planId = (Long) arguments.get(ActivityProperties.PLAN_ID); typeId = (Integer) arguments.get(ActivityProperties.TYPE_ID); } TaskType taskType = TaskType.getTaskType(typeId); Button addButton = (Button) view.findViewById(R.id.id_btn_create_plan_add_tasks); TextView labelInfo = (TextView) view.findViewById(R.id.id_tv_plan_tasks_list_info); addButton.setText(taskType.getAddLabel()); labelInfo.setText(taskType.getTaskListInfoLabel()); RecyclerView recyclerView = (RecyclerView) getActivity() .findViewById(R.id.rv_create_plan_task_list); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); taskListAdapter = new TaskRecyclerViewAdapter(taskItemClickListener); recyclerView.setAdapter(taskListAdapter); taskListAdapter .setTaskItems(planTemplateRepository.getTaskWithThisPlanByTypeId(planId, typeId)); } public boolean arePlanArgumentProvided(Bundle arguments) { return arguments != null && arguments.containsKey(ActivityProperties.PLAN_ID) && arguments .containsKey(ActivityProperties.TYPE_ID); } public void onResume() { taskListAdapter .setTaskItems(planTemplateRepository.getTaskWithThisPlanByTypeId(planId, typeId)); taskListAdapter.notifyDataSetChanged(); super.onResume(); } }