package edu.mit.mitmobile2.news.view;
import java.util.ArrayList;
import edu.mit.mitmobile2.ActivityPassingCache;
import edu.mit.mitmobile2.LoadingUIHelper;
import edu.mit.mitmobile2.LockingScrollView;
import edu.mit.mitmobile2.NewModule;
import edu.mit.mitmobile2.R;
import edu.mit.mitmobile2.SliderInterface;
import edu.mit.mitmobile2.SliderListNewModuleActivity;
import edu.mit.mitmobile2.StyledContentHTML;
import edu.mit.mitmobile2.news.NewsModule;
import edu.mit.mitmobile2.news.beans.NewsImage;
import edu.mit.mitmobile2.news.beans.NewsStory;
//import edu.mit.mitmobile2.objs.NewsItem;
import android.content.Context;
import android.content.Intent;
import android.graphics.Picture;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;
public class NewsImageActivity extends SliderListNewModuleActivity {
static final String NEWS_ITEM_ID_KEY = "news_item_cache_id";
private static ActivityPassingCache<NewsStory> sNewsItemCache = new ActivityPassingCache<NewsStory>();
public static final String TAG = "NewsImageActivity";
private int size_width;
public static void launchActivity(Context context, NewsStory newsItem) {
Intent i = new Intent(context, NewsImageActivity.class);
long id = sNewsItemCache.put(newsItem);
i.putExtra(NEWS_ITEM_ID_KEY, id);
context.startActivity(i);
}
/****************************************************/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics metrics = getResources().getDisplayMetrics();
size_width = (int)( metrics.widthPixels/metrics.density);
long newsItemCacheId = getIntent().getLongExtra(NEWS_ITEM_ID_KEY, -1);
NewsStory newsItem = sNewsItemCache.get(newsItemCacheId);
ArrayList<NewsImage> allImages = newsItem.getGalleryImages();
for(int i=0; i < allImages.size(); i++) {
NewsImage image = allImages.get(i);
addScreen(new NewsImageSliderInterface(image), "" + (i+1) + " of " + allImages.size());
}
setPosition(getPositionValue());
}
private class NewsImageSliderInterface implements SliderInterface {
NewsImage mImage;
NewsImageView mView;
NewsImageSliderInterface(NewsImage image) {
mImage = image;
mView = new NewsImageView(NewsImageActivity.this);
}
@Override
public View getView() {
return mView;
}
@Override
public void onSelected() { }
@Override
public void updateView() {
mView.populateView(mImage);
}
@Override
public LockingScrollView getVerticalScrollView() {
return mView;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
}
}
private class NewsImageView extends LockingScrollView {
public NewsImageView(Context context) {
super(context);
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflator.inflate(R.layout.news_image, this);
}
public void populateView(NewsImage image) {
final ImageView loadingView = (ImageView) findViewById(R.id.newsImageLoadingView);
LoadingUIHelper.startLoadingImage(new Handler(), loadingView);
WebView imageWV = (WebView) findViewById(R.id.newsLargeImageWV);
imageWV.getSettings().setBuiltInZoomControls(false);
imageWV.loadDataWithBaseURL(null,
StyledContentHTML.imageHtml(NewsImageActivity.this, image.getRepresentationBestFitByWidth(size_width).getUrl()),
"text/html", "utf-8", null);
// turn off loading view after picture completes loading
imageWV.setPictureListener(new WebView.PictureListener() {
@Override
public void onNewPicture(WebView view, Picture picture) {
LoadingUIHelper.stopLoadingImage(new Handler(), loadingView);
loadingView.setVisibility(GONE);
}
});
TextView captionView = (TextView) findViewById(R.id.newsImageCaption);
if(image.getDescription()!=null)
captionView.setText(image.getDescription());
else
captionView.setVisibility(GONE);
TextView creditView = (TextView) findViewById(R.id.newsImageCredit);
if(image.getCredits()!=null)
creditView.setText(image.getCredits());
else
creditView.setVisibility(GONE);
}
}
@Override
public boolean isModuleHomeActivity() {
return false;
}
@Override
protected NewModule getNewModule() {
return new NewsModule();
}
@Override
protected void onOptionSelected(String optionId) {
// TODO Auto-generated method stub
}
}