@ -17,7 +17,6 @@
* /
* /
package org.floens.chan.ui.view ;
package org.floens.chan.ui.view ;
import android.content.ActivityNotFoundException ;
import android.content.Context ;
import android.content.Context ;
import android.content.ContextWrapper ;
import android.content.ContextWrapper ;
import android.content.Intent ;
import android.content.Intent ;
@ -28,6 +27,7 @@ import android.view.Gravity;
import android.view.View ;
import android.view.View ;
import android.widget.FrameLayout ;
import android.widget.FrameLayout ;
import android.widget.ImageView ;
import android.widget.ImageView ;
import android.widget.MediaController ;
import android.widget.Toast ;
import android.widget.Toast ;
import android.widget.VideoView ;
import android.widget.VideoView ;
@ -69,6 +69,7 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
private Future videoRequest ;
private Future videoRequest ;
private VideoView videoView ;
private VideoView videoView ;
private boolean videoError = false ;
public MultiImageView ( Context context ) {
public MultiImageView ( Context context ) {
super ( context ) ;
super ( context ) ;
@ -320,24 +321,16 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
Intent intent = new Intent ( Intent . ACTION_VIEW ) ;
Intent intent = new Intent ( Intent . ACTION_VIEW ) ;
intent . setDataAndType ( Uri . fromFile ( file ) , "video/*" ) ;
intent . setDataAndType ( Uri . fromFile ( file ) , "video/*" ) ;
try {
AndroidUtils . openIntent ( intent ) ;
getContext ( ) . startActivity ( intent ) ;
onModeLoaded ( Mode . MOVIE , videoView ) ;
} catch ( ActivityNotFoundException e ) {
Toast . makeText ( getContext ( ) , R . string . open_link_failed , Toast . LENGTH_SHORT ) . show ( ) ;
}
// TODO: check this
onModeLoaded ( Mode . GIF , videoView ) ;
} else {
} else {
Context proxyContext = new NoMusicServiceCommandContext ( getContext ( ) ) ;
Context proxyContext = new NoMusicServiceCommandContext ( getContext ( ) ) ;
videoView = new VideoView ( proxyContext ) ;
videoView = new VideoView ( proxyContext ) ;
videoView . setZOrderOnTop ( true ) ;
videoView . setZOrderOnTop ( true ) ;
videoView . setLayoutParams ( new LayoutParams ( LayoutParams . MATCH_PARENT ,
videoView . setMediaController ( new MediaController ( getContext ( ) ) ) ;
LayoutParams . MATCH_PARENT ) ) ;
videoView . setLayoutParams ( AndroidUtils . MATCH_PARAMS ) ;
addView ( videoView , new FrameLayout . LayoutParams ( LayoutParams . MATCH_PARENT , LayoutParams . MATCH_PARENT , Gravity . CENTER ) ) ;
LayoutParams par = new LayoutParams ( LayoutParams . MATCH_PARENT , LayoutParams . MATCH_PARENT ) ;
par . gravity = Gravity . CENTER ;
videoView . setLayoutParams ( par ) ;
videoView . setOnPreparedListener ( new MediaPlayer . OnPreparedListener ( ) {
videoView . setOnPreparedListener ( new MediaPlayer . OnPreparedListener ( ) {
@Override
@Override
@ -346,10 +339,11 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
onModeLoaded ( Mode . MOVIE , videoView ) ;
onModeLoaded ( Mode . MOVIE , videoView ) ;
}
}
} ) ;
} ) ;
videoView . setOnErrorListener ( new MediaPlayer . OnErrorListener ( ) {
videoView . setOnErrorListener ( new MediaPlayer . OnErrorListener ( ) {
@Override
@Override
public boolean onError ( MediaPlayer mp , int what , int extra ) {
public boolean onError ( MediaPlayer mp , int what , int extra ) {
callback . onVideoError ( MultiImageView . this , file ) ;
onVideoError ( ) ;
return true ;
return true ;
}
}
@ -357,9 +351,12 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
videoView . setVideoPath ( file . getAbsolutePath ( ) ) ;
videoView . setVideoPath ( file . getAbsolutePath ( ) ) ;
addView ( videoView , new FrameLayout . LayoutParams ( LayoutParams . MATCH_PARENT , LayoutParams . MATCH_PARENT , Gravity . CENTER ) ) ;
try {
videoView . start ( ) ;
videoView . start ( ) ;
} catch ( IllegalStateException e ) {
Logger . e ( TAG , "Video view start error" , e ) ;
onVideoError ( ) ;
}
}
}
}
}
@ -367,6 +364,13 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
return videoView ;
return videoView ;
}
}
private void onVideoError ( ) {
if ( ! videoError ) {
videoError = true ;
callback . onVideoError ( this ) ;
}
}
private void onError ( ) {
private void onError ( ) {
Toast . makeText ( getContext ( ) , R . string . image_preview_failed , Toast . LENGTH_SHORT ) . show ( ) ;
Toast . makeText ( getContext ( ) , R . string . image_preview_failed , Toast . LENGTH_SHORT ) . show ( ) ;
callback . showProgress ( this , false ) ;
callback . showProgress ( this , false ) ;
@ -443,9 +447,7 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
void onProgress ( MultiImageView multiImageView , long current , long total ) ;
void onProgress ( MultiImageView multiImageView , long current , long total ) ;
void onVideoLoaded ( MultiImageView multiImageView ) ;
void onVideoError ( MultiImageView multiImageView ) ;
void onVideoError ( MultiImageView multiImageView , File video ) ;
void onModeLoaded ( MultiImageView multiImageView , Mode mode ) ;
void onModeLoaded ( MultiImageView multiImageView , Mode mode ) ;
}
}