package info.guardianproject.securereaderinterface.views;
import info.guardianproject.securereaderinterface.uiutil.AnimationHelpers;
import info.guardianproject.securereaderinterface.R;
import info.guardianproject.iocipher.File;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
import android.os.Handler;
import android.provider.MediaStore.Video;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import com.tinymission.rss.MediaContent;
public class VideoMediaContentPreviewView extends FrameLayout implements MediaContentPreviewView
{
private ImageView mImageView;
private View mPlayView;
private File mMediaFile;
private Handler mHandler;
private boolean mUseThisThread;
private MediaContent mMediaContent;
public VideoMediaContentPreviewView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
initView(context);
}
public VideoMediaContentPreviewView(Context context, AttributeSet attrs)
{
super(context, attrs);
initView(context);
}
public VideoMediaContentPreviewView(Context context)
{
super(context);
initView(context);
}
public void setScaleType(ScaleType scaleType)
{
if (mImageView != null)
mImageView.setScaleType(scaleType);
}
private void initView(Context context)
{
View.inflate(context, R.layout.video_preview_view, this);
mImageView = (ImageView) findViewById(R.id.image);
mPlayView = findViewById(R.id.btnPlay);
mPlayView.setVisibility(View.GONE);
}
public void setMediaContent(MediaContent mediaContent, info.guardianproject.iocipher.File mediaFile, java.io.File mediaFileNonVFS, boolean useThisThread)
{
mMediaContent = mediaContent;
mUseThisThread = useThisThread;
mMediaFile = mediaFile;
if (mMediaFile == null)
{
Log.v("VideoMediaContentPreviewView", "Failed to download media, no file.");
return;
}
if (mHandler == null && !mUseThisThread)
mHandler = new Handler();
Runnable getOrientationRunnable = new Runnable()
{
@Override
public void run()
{
Log.v("VideoMediaContentPreviewView", "getOrientationThread");
Bitmap preview = ThumbnailUtils.createVideoThumbnail(mMediaFile.getPath(), Video.Thumbnails.MINI_KIND);
Runnable reportRunnable = new Runnable()
{
private Bitmap mBitmap;
@Override
public void run()
{
if (!mUseThisThread)
AnimationHelpers.fadeOut(mImageView, 0, 0, false);
if (mBitmap != null)
{
mImageView.setScaleType(ScaleType.CENTER_CROP);
mImageView.setImageBitmap(mBitmap);
}
else
{
mImageView.setScaleType(ScaleType.CENTER_CROP);
mImageView.setImageResource(R.drawable.img_placeholder);
}
if (!mUseThisThread)
AnimationHelpers.fadeIn(mImageView, 500, 0, false);
else
AnimationHelpers.fadeIn(mImageView, 0, 0, false);
}
private Runnable init(Bitmap bitmap)
{
mBitmap = bitmap;
return this;
}
}.init(preview);
if (mUseThisThread)
reportRunnable.run();
else
mHandler.post(reportRunnable);
}
};
if (mUseThisThread)
{
getOrientationRunnable.run();
}
else
{
Thread getOrientationThread = new Thread(getOrientationRunnable);
getOrientationThread.start();
}
}
public MediaContent getMediaContent()
{
return mMediaContent;
}
public void recycle()
{
mImageView.setImageBitmap(null);
}
}