package com.brady.jlulife.Fragments;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import com.brady.jlulife.Activities.EditCourseActivity;
import com.brady.jlulife.Entities.CourseSpec;
import com.brady.jlulife.Models.db.DBManager;
import com.brady.jlulife.R;
/**
* Created by brady on 15-11-30.
*/
public class EditCourseFragment extends BaseFragment {
private static EditCourseFragment instance;
private EditText etCourseName;
private EditText etTeacherName;
private EditText etCoursePlace;
private Button btnAddCourse;
private Button btnUpdateCourse;
private Button btnDelCourse;
private Spinner spinnerWeek;
private Spinner spinnerStartTime;
private Spinner spinnerEndTime;
private Spinner spinnerStartWeek;
private Spinner spinnerEndWeek;
private Context mContext;
private DBManager dbManager;
private CourseSpec mCourseSpec;
private CheckBox mCboxSingleWeek;
private CheckBox mCboxDoubleWeek;
public static EditCourseFragment getInstance() {
if (instance == null) {
instance = new EditCourseFragment();
}
return instance;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_edit_course, container, false);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mContext = getActivity().getApplicationContext();
initComents(view);
initSpinners();
dbManager = new DBManager(mContext);
initData();
}
private void initComents(View view) {
etCourseName = (EditText) view.findViewById(R.id.et_course_name);
etCoursePlace = (EditText) view.findViewById(R.id.et_course_place);
etTeacherName = (EditText) view.findViewById(R.id.et_teacher_name);
spinnerWeek = (Spinner) view.findViewById(R.id.spinner_week_picker);
spinnerStartWeek = (Spinner) view.findViewById(R.id.spinner_startweek_picker);
spinnerEndWeek = (Spinner) view.findViewById(R.id.spinner_endweek_picker);
spinnerStartTime = (Spinner) view.findViewById(R.id.spinner_startclass_picker);
spinnerEndTime = (Spinner) view.findViewById(R.id.spinner_endclass_picker);
btnAddCourse = (Button) view.findViewById(R.id.btn_add_course);
btnDelCourse = (Button) view.findViewById(R.id.btn_del_course);
btnUpdateCourse = (Button) view.findViewById(R.id.btn_update_course);
btnAddCourse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addCourse();
}
});
btnDelCourse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delCourse();
}
});
btnUpdateCourse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateCourse();
}
});
mCboxSingleWeek = (CheckBox) view.findViewById(R.id.cbox_single_week);
mCboxDoubleWeek = (CheckBox) view.findViewById(R.id.cbox_double_week);
mCboxDoubleWeek.setChecked(true);
mCboxSingleWeek.setChecked(true);
}
private void initSpinners() {
spinnerWeek.setAdapter(new ArrayAdapter(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.days)));
spinnerStartWeek.setAdapter(new ArrayAdapter(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.weeks)));
spinnerEndWeek.setAdapter(new ArrayAdapter(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.weeks)));
spinnerStartTime.setAdapter(new ArrayAdapter(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.course)));
spinnerEndTime.setAdapter(new ArrayAdapter(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.course)));
}
public void initData() {
int courseId = getCourseIdFromArgments();
if (courseId != -1) {
btnAddCourse.setVisibility(View.GONE);
CourseSpec spec = dbManager.queryCourse(courseId);
mCourseSpec = spec;
etCourseName.setText(spec.getCourseName());
etTeacherName.setText(spec.getTeacherName());
etCoursePlace.setText(spec.getClassRoom());
spinnerWeek.setSelection(spec.getWeek() - 1);
spinnerStartWeek.setSelection(spec.getBeginWeek() - 1);
spinnerEndWeek.setSelection(spec.getEndWeek() - 1);
spinnerStartTime.setSelection(spec.getStartTime() - 1);
spinnerEndTime.setSelection(spec.getEndTime() - 1);
if(spec.getIsDoubleWeek()==spec.getIsSingleWeek()){
mCboxSingleWeek.setChecked(true);
mCboxDoubleWeek.setChecked(true);
}else {
mCboxSingleWeek.setChecked(spec.getIsSingleWeek() == 1);
mCboxDoubleWeek.setChecked(spec.getIsDoubleWeek() == 1);
}
} else {
btnUpdateCourse.setVisibility(View.GONE);
btnDelCourse.setVisibility(View.GONE);
setTitle("添加课程");
}
}
private int getCourseIdFromArgments() {
Bundle argument;
int result = -1;
if ((argument = getArguments()) != null) {
result = argument.getInt(EditCourseActivity.EXTRA_COURSEID, -1);
}
return result;
}
private void addCourse() {
CourseSpec spec = obtainData();
if (validateCourse(spec)) {
dbManager.addCourse(spec);
Toast.makeText(mContext, "添加成功", Toast.LENGTH_SHORT).show();
getActivity().finish();
}
}
private void delCourse() {
int id = mCourseSpec.getId();
dbManager.deleteCourse(id);
Toast.makeText(mContext, "删除成功", Toast.LENGTH_SHORT).show();
getActivity().finish();
}
private void updateCourse() {
CourseSpec spec = obtainData();
if (validateCourse(spec)) {
dbManager.editCourse(mCourseSpec.getId(), spec);
Toast.makeText(mContext, "修改成功", Toast.LENGTH_SHORT).show();
getActivity().finish();
}
}
private CourseSpec obtainData() {
CourseSpec spec = new CourseSpec();
spec.setCourseName(etCourseName.getText().toString());
spec.setClassRoom(etCoursePlace.getText().toString());
spec.setEndWeek(spinnerEndWeek.getSelectedItemPosition() + 1);
spec.setBeginWeek(spinnerStartWeek.getSelectedItemPosition() + 1);
spec.setEndTime(spinnerEndTime.getSelectedItemPosition() + 1);
spec.setCourseId(0);
spec.setIsDoubleWeek(0);
spec.setIsSingleWeek(0);
spec.setStartTime(spinnerStartTime.getSelectedItemPosition() + 1);
spec.setTeacherName(etTeacherName.getText().toString());
spec.setWeek(spinnerWeek.getSelectedItemPosition() + 1);
if(mCboxSingleWeek.isChecked()==mCboxDoubleWeek.isChecked());
else if(mCboxSingleWeek.isChecked()){
spec.setIsSingleWeek(1);
spec.setIsDoubleWeek(0);
}else if(mCboxDoubleWeek.isChecked()){
spec.setIsSingleWeek(0);
spec.setIsDoubleWeek(1);
}
return spec;
}
private boolean validateCourse(CourseSpec spec) {
if (spec.getStartTime() > spec.getEndTime()) {
Toast.makeText(mContext, "开始节数必须小于结束节数", Toast.LENGTH_SHORT).show();
return false;
} else if (spec.getBeginWeek() > spec.getEndWeek()) {
Toast.makeText(mContext, "开始周数必须小于结束周数", Toast.LENGTH_SHORT).show();
return false;
} else if (TextUtils.isEmpty(spec.getCourseName()) || TextUtils.isEmpty(spec.getClassRoom())) {
Toast.makeText(mContext, "课程名或上课地点不能为空", Toast.LENGTH_SHORT).show();
return false;
} else {
return true;
}
}
}