package com.iwedia.gui.multimedia.dlna.player.controller;
import android.app.Activity;
import android.util.Log;
import com.iwedia.comm.content.Content;
import com.iwedia.comm.content.multimedia.MultimediaContent;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVMultimediaController.ControlProvider;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.multimedia.MultimediaGlobal;
import com.iwedia.gui.multimedia.MultimediaHandler;
import com.iwedia.gui.multimedia.controller.MediaController;
import com.iwedia.gui.osd.OSDGlobal;
/**
* @author Milos Milanovic
*/
public class DlnaLocalController extends ControlProvider implements OSDGlobal,
MultimediaGlobal {
private final String TAG = "DlnaLocalController";
private Activity mActivity = null;
private MediaController mMediaController = null;
private MultimediaContent mMultimediaControllerContent = null;
public DlnaLocalController(Activity activity,
MediaController mediaController) {
this.mActivity = activity;
this.mMediaController = mediaController;
}
@Override
public void stop(int displayId) {
// ///////////////////////////////////////////////////
// Stop MultiMedia PlayBack
// ///////////////////////////////////////////////////
this.setElapsedTime(0);
// //Com_3.0
mMediaController.seekTo(0);
mMediaController.stop(0);
// Com_4.0
// ((MainActivity) mActivity).getExternalVideoView()
// .stopPlayback();
// Set isPlayingFlag
ControlProvider.setFlagPlay(mMediaController.isPlaying());
// ////////////////////////////////////////////////////
}
@Override
public void setContent(MultimediaContent content) {
mMultimediaControllerContent = content;
}
@Override
public MultimediaContent getContent() {
return mMultimediaControllerContent;
}
@Override
public void rewind(int displayId) {
if (mMediaController.seek(-2000)) {
// Set isPlayingFlag
ControlProvider.setFlagPlay(mMediaController.isPlaying());
}
}
@Override
public void repeatOne(int displayId) {
// Start from beginning
mMediaController.seekTo(0);
resume(displayId);
((MainActivity) mActivity).getPageCurl().multimediaController(false);
}
@Override
public void repeatOff(int displayId) {
stop(displayId);
mMediaController.startLiveStream(false);
MultimediaHandler.returnMultimediaToPreviousState();
}
@Override
public void repeatAll(int displayId) {
next(displayId);
((MainActivity) mActivity).getPageCurl().multimediaController(false);
}
@Override
public void previous(int displayId) {
// ////////////////////////////////////
// Check current content extension
// ////////////////////////////////////
String lExtension;
if (mMultimediaControllerContent.getMime() != null) {
lExtension = mMultimediaControllerContent.getMime();
} else {
lExtension = mMultimediaControllerContent.getExtension();
}
Content previousContent = null;
if (EXTENSIONS_VIDEO.contains(lExtension.toLowerCase())) {
// Find previous content
previousContent = ((MainActivity) mActivity).getMultimediaHandler()
.getMultimediaShowHandler().findPreviousVideo();
} else if (EXTENSIONS_AUDIO.contains(lExtension.toLowerCase())) {
// Find previous content
previousContent = ((MainActivity) mActivity).getMultimediaHandler()
.getMultimediaShowHandler().findPreviousAudio();
}
if (previousContent != null) {
setContent((MultimediaContent) previousContent);
// // Com_3.0
if (mMediaController.play(
mMultimediaControllerContent.getFileURL(), 0)) {
// Set Duration
this.setDuration(mMediaController.getPlayBackDuration());
// Set isPlayingFlag
ControlProvider.setFlagPlay(true);
String strName;
try {
strName = previousContent.getName();
} catch (Exception e) {
Log.i(TAG, "Method: previous strName", e);
strName = "";
}
ControlProvider.setFileName(strName);
ControlProvider.setFileDescription("");
}
} else {
stop(displayId);
mMediaController.startLiveStream(false);
MultimediaHandler.returnMultimediaToPreviousState();
A4TVToast toast = new A4TVToast(mActivity);
toast.showToast(R.string.dlna_playback_no_previous_file);
}
}
@Override
public void play(int displayId) {
// // Com_3.0
if (mMediaController.play(mMultimediaControllerContent.getFileURL(), 0)) {
// Set Duration
this.setDuration(mMediaController.getPlayBackDuration());
// Set isPlayingFlag
ControlProvider.setFlagPlay(true);
}
}
@Override
public void pause(int displayId) {
if (mMediaController.pause()) {
// Set isPlayingFlag
ControlProvider.setFlagPlay(false);
}
}
@Override
public void next(int displayId) {
// ////////////////////////////////////
// Check current content extension
// ////////////////////////////////////
String lExtension;
if (mMultimediaControllerContent.getMime() != null) {
lExtension = mMultimediaControllerContent.getMime();
} else {
lExtension = mMultimediaControllerContent.getExtension();
}
Content nextContent = null;
if (EXTENSIONS_VIDEO.contains(lExtension.toLowerCase())) {
// Find next content
nextContent = ((MainActivity) mActivity).getMultimediaHandler()
.getMultimediaShowHandler().findNextVideo();
} else if (EXTENSIONS_AUDIO.contains(lExtension.toLowerCase())) {
// Find next content
nextContent = ((MainActivity) mActivity).getMultimediaHandler()
.getMultimediaShowHandler().findNextAudio();
}
if (nextContent != null) {
setContent((MultimediaContent) nextContent);
// // Com_3.0
if (mMediaController.play(
mMultimediaControllerContent.getFileURL(), 0)) {
// Set Duration
this.setDuration(mMediaController.getPlayBackDuration());
// Set isPlayingFlag
ControlProvider.setFlagPlay(true);
String strName;
try {
strName = nextContent.getName();
} catch (Exception e) {
Log.i(TAG, "Method: next strName", e);
strName = "";
}
ControlProvider.setFileName(strName);
ControlProvider.setFileDescription("");
}
} else {
stop(displayId);
mMediaController.startLiveStream(false);
MultimediaHandler.returnMultimediaToPreviousState();
A4TVToast toast = new A4TVToast(mActivity);
toast.showToast(R.string.dlna_playback_no_next_file);
}
}
@Override
public void fastForward(int displayId) {
if (mMediaController.seek(2000)) {
// Set isPlayingFlag
ControlProvider.setFlagPlay(mMediaController.isPlaying());
}
}
@Override
public void resume(int displayId) {
if (mMediaController.resume()) {
// Set isPlayingFlag
ControlProvider.setFlagPlay(true);
}
}
public MediaController getMediaController() {
return mMediaController;
}
}