package edu.mit.mitmobile2.news.view;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher.OnRefreshListener;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import edu.mit.mitmobile2.LoaderBar;
import edu.mit.mitmobile2.LockingScrollView;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SliderInterface;
import edu.mit.mitmobile2.news.beans.NewsStory;
public class NewsListSlider extends NewsCategoryLoader implements SliderInterface, LoadingScreenListener, OnRefreshListener{
private View mView;
private ListView mNewsListView;
private LoaderBar mLoaderBar;
private Context context;
private NewsArrayAdapter newsAdapter;
private PullToRefreshAttacher mRefreshAttacher;
private String category_id;
private LayoutInflater inflater;
public NewsListSlider(Context ctx, String category_id){
super(ctx);
this.context = ctx;
this.mLoadingScreenListener = this;
newsAdapter = new NewsArrayAdapter(ctx,0);
mRefreshAttacher = ((NewsCategoryListActivity)ctx).createPullToRefreshAttacher();
mRefreshAttacher.setEnabled(false);
this.refreshData = false;
this.category_id = category_id;
inflater = LayoutInflater.from(context);
mView = inflater.inflate(R.layout.news, null);
mLoaderBar = (LoaderBar) mView.findViewById(R.id.newsLoaderBar);
mLoaderBar.setFailedMessage("Error loading news headlines.");
mNewsListView = (ListView) mView.findViewById(R.id.newsCategoryLV);
loadStories(category_id,"category",0,20);
}
@Override
public void updateView() {
// TODO Auto-generated method stub
}
@Override
public View getView() {
final Context c = this.context;
mNewsListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
NewsStory newsCursor = (NewsStory) listView.getItemAtPosition(position);
if(newsCursor.getId().equals("more")){
//removeItem(position);
setLoadMore(true);
mLoaderBar.setVisibility(View.VISIBLE);
loadStories(category_id,"category",position,20);
}else if(newsCursor.getCategory()!=null && newsCursor.getCategory().getId().equals("in_the_media")){
nd.showOpenInBrowserDialog(c,newsCursor.getSourceUrl());
return;
}else{
Intent i = new Intent(context, NewsDetailsActivity.class);
i.putExtra(NewsDetailsActivity.STORY_ID_KEY, newsCursor.getId());
if(newsCursor.getCategory()!=null){
i.putExtra(NewsDetailsActivity.CATEGORY_ID_KEY, newsCursor.getCategory().getId());
}
context.startActivity(i);
}
}
}
);
mNewsListView.setAdapter(newsAdapter);
mLoaderBar.enableAnimation();
mRefreshAttacher.setRefreshableView(mNewsListView, this);
mRefreshAttacher.setEnabled(true);
return mView;
}
@Override
public void onSelected() {
// TODO Auto-generated method stub
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
}
@Override
public LockingScrollView getVerticalScrollView() {
return null;
}
@Override
public void onStoriesLoaded() {
newsAdapter.clear();
for(int i=0;(i < list.size()); i++){
newsAdapter.add(list.get(i));
}
NewsStory nMore = new NewsStory();
nMore.setId("more");
nMore.setDek("Load More...");
newsAdapter.add(nMore);
//mLoaderBar.endLoading();
//mLoaderBar.getParent().removeView(mLoaderBar);
//mView.removeView(mLoaderBar);
mLoaderBar.setVisibility(View.GONE);
//((LinearLayout)mLoaderBar.getParent()).removeView(mLoaderBar);
mRefreshAttacher.setRefreshComplete();
}
@Override
public void onRefreshStarted(View view) {
this.refreshData = true;
loadStories(this.category_id,"category",0,20);
}
}