package com.ecollege.android; import java.text.DecimalFormat; import roboguice.inject.InjectExtra; import roboguice.inject.InjectResource; import roboguice.inject.InjectView; import roboguice.util.Strings; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.Html; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.ecollege.android.activities.ECollegeDefaultActivity; import com.ecollege.android.util.DateTimeUtil; import com.ecollege.api.ECollegeClient; import com.ecollege.api.model.Course; import com.ecollege.api.model.Grade; import com.ecollege.api.model.GradebookItem; import com.ecollege.api.services.grades.FetchGradebookItemByGuid; import com.ecollege.api.services.grades.FetchMyGradebookItemGrade; import com.google.inject.Inject; public class GradeActivity extends ECollegeDefaultActivity { public static final String FINISH_ON_CLICK_ALL_GRADES_EXTRA = "FINISH_ON_CLICK_ALL_GRADES_EXTRA"; @Inject ECollegeApplication app; @Inject SharedPreferences prefs; @InjectExtra("courseId") long courseId; @InjectExtra("gradebookItemGuid") String gradebookItemGuid; @InjectExtra(value = FINISH_ON_CLICK_ALL_GRADES_EXTRA, optional = true) boolean finishOnClickAllGrades; @InjectView(R.id.course_title_text) TextView courseTitleText; @InjectView(R.id.grade_title_text) TextView gradeTitleText; @InjectView(R.id.comments_text) TextView commentsText; @InjectView(R.id.grade_item_text) TextView gradeItemText; @InjectView(R.id.letter_grade_text) TextView letterGradeText; @InjectView(R.id.numeric_grade_text) TextView numericGradeText; @InjectView(R.id.date_text) TextView dateText; @InjectView(R.id.view_all_button) Button viewAllButton; @InjectResource(R.string.no_comments) String no_comments; @InjectResource(R.string.grade_comments_label) String grade_comments_label; @InjectResource(R.string.grade_value) String grade_value; @InjectResource(R.string.letter_grade_s) String letterGradeFormat; @InjectResource(R.string.numeric_grade_s) String numericGradeFormat; protected ECollegeClient client; protected Course course; protected GradebookItem gradebookItem; protected Grade grade; private static DecimalFormat decimalFormatter = new DecimalFormat(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.grade); client = app.getClient(); course = app.getCourseById(courseId); updateText(); viewAllButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { viewAllCourseGrades(); } }); fetchData(); } protected void fetchData() { buildService(new FetchGradebookItemByGuid(courseId,gradebookItemGuid)).execute(); buildService(new FetchMyGradebookItemGrade(courseId,gradebookItemGuid)).execute(); } public void onServiceCallSuccess(FetchGradebookItemByGuid service) { gradebookItem = service.getResult(); updateText(); } public void onServiceCallSuccess(FetchMyGradebookItemGrade service) { grade = service.getResult(); updateText(); } protected void viewAllCourseGrades() { if (finishOnClickAllGrades) { finish(); } else { Intent intent = new Intent(this, CourseGradebookActivity.class); intent.putExtra(CoursesActivity.COURSE_EXTRA, course); startActivity(intent); } } protected void updateText() { if (course != null) { courseTitleText.setText(Html.fromHtml(course.getTitle())); } if (gradebookItem != null){ gradeItemText.setText(Html.fromHtml(gradebookItem.getTitle())); } if (grade != null) { if (Strings.notEmpty(grade.getComments())) { commentsText.setText(Html.fromHtml(grade_comments_label + grade.getComments())); } else { commentsText.setText(Html.fromHtml("<i>" + no_comments + "</i>")); } if (Strings.notEmpty(grade.getLetterGrade())) { letterGradeText.setText(String.format(letterGradeFormat, grade.getLetterGrade())); letterGradeText.setVisibility(View.VISIBLE); } else { letterGradeText.setVisibility(View.GONE); } if (gradebookItem != null && gradebookItem.getPointsPossible() != null && gradebookItem.getPointsPossible().floatValue() != 0) { if (grade.getPoints() != null) { String gradeValue = String.format(numericGradeFormat, String.format("%s/%s", decimalFormatter.format(grade.getPoints()), decimalFormatter.format(gradebookItem.getPointsPossible()))); numericGradeText.setText(gradeValue); } else { numericGradeText.setVisibility(View.GONE); } } else { numericGradeText.setVisibility(View.GONE); } dateText.setText(DateTimeUtil.getLongFriendlyDate(grade.getUpdatedDate())); } } }