package com.ecollege.android;
import java.util.List;
import roboguice.inject.InjectExtra;
import roboguice.inject.InjectResource;
import roboguice.inject.InjectView;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import com.ecollege.android.activities.ECollegeListActivity;
import com.ecollege.android.adapter.UberAdapter;
import com.ecollege.android.adapter.UberItem;
import com.ecollege.api.model.Announcement;
import com.ecollege.api.model.Course;
import com.ecollege.api.services.courses.FetchAnnouncementsForCourse;
import com.google.inject.Inject;
public class CourseAnnouncementsActivity extends ECollegeListActivity {
@Inject ECollegeApplication app;
@Inject SharedPreferences prefs;
@InjectView(R.id.title_text) TextView titleText;
@InjectView(R.id.course_title_text) TextView courseTitleText;
@InjectResource(R.string.announcements) String announcementsTitle;
@InjectExtra(CoursesActivity.COURSE_EXTRA) Course course;
@InjectExtra(value=CourseActivity.ANNOUNCEMENT_LIST_EXTRA,optional=true) List<Announcement> announcements;
private LayoutInflater viewInflater;
private UberAdapter<Announcement> announcementsAdapter;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.course_menu_item_detail_view);
viewInflater = getLayoutInflater();
titleText.setText(announcementsTitle);
displayCourse();
loadAndDisplayAnnouncementsForCourse();
}
private void displayCourse() {
courseTitleText.setText(Html.fromHtml(course.getTitle()));
}
private void loadAndDisplayAnnouncementsForCourse() {
announcementsAdapter = new AnnouncementAdapter(this);
setListAdapter(announcementsAdapter);
if (announcements == null) {
announcementsAdapter.beginLoading();
buildService(new FetchAnnouncementsForCourse(course)).execute();
} else {
announcementsAdapter.updateItems(announcements);
}
}
public void onServiceCallSuccess(FetchAnnouncementsForCourse service) {
announcements = service.getResult();
announcementsAdapter.updateItems(service.getResult());
}
public void onServiceCallException(FetchAnnouncementsForCourse service, Exception ex) {
announcementsAdapter.hasError();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
@SuppressWarnings("unchecked")
UberItem<Announcement> item = (UberItem<Announcement>)l.getItemAtPosition(position);
Intent i = new Intent(this,AnnouncementActivity.class);
i.putExtra(AnnouncementActivity.COURSE_EXTRA, course);
i.putExtra(AnnouncementActivity.ANNOUNCEMENT_EXTRA, item.getDataItem());
i.putExtra(AnnouncementActivity.FINISH_ON_CLICK_ALL_ANNOUNCEMENTS_EXTRA, true);
startActivity(i);
}
protected class AnnouncementViewHolder {
public TextView titleText;
public TextView descriptionText;
}
protected class AnnouncementAdapter extends UberAdapter<Announcement> {
public AnnouncementAdapter(Context context) {
super(context, false, false, false);
}
@Override
protected View getDataItemView(View convertView, ViewGroup parent,
UberItem<Announcement> item) {
AnnouncementViewHolder holder;
if (convertView == null) {
holder = new AnnouncementViewHolder();
convertView = viewInflater.inflate(R.layout.announcement_list_item, null);
holder.titleText = (TextView) convertView.findViewById(R.id.announcement_title);
holder.descriptionText = (TextView) convertView.findViewById(R.id.description_text);
convertView.setTag(holder);
} else {
holder = (AnnouncementViewHolder) convertView.getTag();
}
Announcement announcement = item.getDataItem();
holder.titleText.setText(announcement.getSubject());
holder.descriptionText.setText(announcement.getRawText());
return convertView;
}
}
}