package com.ecollege.android; import roboguice.inject.InjectExtra; import roboguice.inject.InjectView; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.text.Html; import android.view.View; import android.widget.ListView; import android.widget.TextView; import com.ecollege.android.activities.ECollegeListActivity; import com.ecollege.android.adapter.TopicsAdapter; import com.ecollege.android.adapter.TopicsAdapter.TopicAdapterMode; import com.ecollege.android.adapter.UberItem; import com.ecollege.android.util.CacheConfiguration; import com.ecollege.api.model.Course; import com.ecollege.api.model.UserDiscussionTopic; import com.ecollege.api.services.discussions.FetchDiscussionTopicsForThreadId; import com.google.inject.Inject; public class CourseThreadActivity extends ECollegeListActivity { public static final String THREAD_ID_EXTRA = "THREAD_ID_EXTRA"; public static final String COURSE_EXTRA = "COURSE_EXTRA"; public static final String SCHEDULE_EXTRA = "SCHEDULE_EXTRA"; @Inject ECollegeApplication app; @Inject SharedPreferences prefs; @InjectView(R.id.title_text) TextView titleText; @InjectView(R.id.course_title_text) TextView courseTitleText; @InjectView(R.id.schedule_text) TextView scheduleText; @InjectExtra(COURSE_EXTRA) Course course; @InjectExtra(THREAD_ID_EXTRA) long threadId; @InjectExtra(SCHEDULE_EXTRA) String scheduleInfo; private TopicsAdapter topicAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.course_thread); titleText.setText(R.string.thread_topics); courseTitleText.setText(Html.fromHtml(course.getTitle())); scheduleText.setText(scheduleInfo); topicAdapter = new TopicsAdapter(this,TopicAdapterMode.NO_GROUP_NO_FILTER); setListAdapter(topicAdapter); updateCurrentTopics(false); } @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) { if (requestCode == UserTopicActivity.VIEW_TOPIC_REQUEST) { updateCurrentTopics(true); } } private void updateCurrentTopics(boolean reload) { topicAdapter.beginLoading(); CacheConfiguration cacheConfiguration = new CacheConfiguration(); cacheConfiguration.bypassFileCache = reload; cacheConfiguration.bypassResultCache = reload; buildService(new FetchDiscussionTopicsForThreadId(course.getId(), threadId)) .configureCaching(cacheConfiguration) .execute(); } public void onServiceCallSuccess(FetchDiscussionTopicsForThreadId service) { topicAdapter.updateItems(service.getResult()); } public void onServiceCallException(FetchDiscussionTopicsForThreadId service, Exception ex) { topicAdapter.hasError(); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { @SuppressWarnings("unchecked") UberItem<UserDiscussionTopic> item = (UberItem<UserDiscussionTopic>)l.getItemAtPosition(position); UserDiscussionTopic selectedTopic = item.getDataItem(); Intent intent = new Intent(this, UserTopicActivity.class); intent.putExtra(UserTopicActivity.USER_TOPIC_EXTRA, selectedTopic); startActivityForResult(intent, UserTopicActivity.VIEW_TOPIC_REQUEST); } }