package com.iwedia.gui.keyhandlers;
import android.content.DialogInterface;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.components.A4TVMultimediaController;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.listeners.MainKeyListener;
import com.iwedia.gui.multimedia.MultimediaHandler;
import com.iwedia.gui.osd.IOSDHandler;
import com.iwedia.gui.osd.OSDHandlerHelper;
import com.iwedia.gui.osd.curleffect.CurlHandler;
public class MultimediaPlaybackKeyHandler extends AppStateKeyHandler {
private final String LOG_TAG = "MultimediaPlaybackKeyListener";
private MainActivity activity;
public MultimediaPlaybackKeyHandler(MainActivity activity) {
this.activity = activity;
}
@Override
public boolean onKeyPressed(View v, DialogInterface dialog, int keyCode,
KeyEvent event, boolean isFromMheg) {
// TODO: Applies on main display only
final int displayId = 0;
if (event.getAction() == KeyEvent.ACTION_DOWN) {
Log.d(LOG_TAG, "- keycode " + keyCode);
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT: {
IOSDHandler mCurlHandler = activity.getPageCurl();
mCurlHandler.multimediaControllerMoveLeft();
return true;
}
case KeyEvent.KEYCODE_DPAD_RIGHT: {
IOSDHandler mCurlHandler = activity.getPageCurl();
mCurlHandler.multimediaControllerMoveRight();
return true;
}
case KeyEvent.KEYCODE_ENTER:
case KeyEvent.KEYCODE_DPAD_CENTER: {
Log.d(TAG, "KeyCode Enter");
IOSDHandler mCurlHandler = activity.getPageCurl();
mCurlHandler.multimediaControllerClick(false);
return true;
}
// ////////////////////////////////
// PIP
// ////////////////////////////////
case KeyEvent.KEYCODE_PROG_YELLOW:
case KeyEvent.KEYCODE_Y: {
// Get active content object and stop secondary display
// playback
Log.d(LOG_TAG, "YELLOW KEY ");
if (MainActivity.activity.getDualVideoManager().isPiP()) {
MainActivity.activity.getDualVideoManager().stop(
MainActivity.SECONDARY_DISPLAY_UNIT_ID);
return true;
}
// TODO: move to dualVideoManager
// check if renderer
if (MainActivity.activity.getPrimaryMultimediaVideoView() != null) {
if (MainActivity.activity.getRendererController()
.getmRendererState() != 0) {
MainActivity.activity.getRendererController()
.stop();
} else {
if (MainActivity.activity.getMultimediaMode() == MainActivity.MULTIMEDIA_PIP) {
MainActivity.activity
.getDualVideoManager()
.stop(MainActivity.SECONDARY_DISPLAY_UNIT_ID);
}
}
return true;
}
return false;
}
// ////////////////////////////////
// PAP
// ////////////////////////////////
case KeyEvent.KEYCODE_PROG_BLUE:
case KeyEvent.KEYCODE_B: {
Log.d(LOG_TAG, "BLUE KEY ");
if (MainActivity.activity.getDualVideoManager().isPaP()) {
if (MainActivity.activity.getDualVideoManager().stop(
MainActivity.SECONDARY_DISPLAY_UNIT_ID)) {
return true;
}
}
// TODO: move to dualVideoManager
// check if renderer
Log.d(LOG_TAG,
"IS pap returned false - check if renderer ... ");
if (MainActivity.activity.getPrimaryMultimediaVideoView() != null) {
if (MainActivity.activity.getRendererController()
.getmRendererState() != 0) {
MainActivity.activity.getRendererController()
.stop();
} else {
if (MainActivity.activity.getMultimediaMode() == MainActivity.MULTIMEDIA_PAP) {
MainActivity.activity
.stopMultimediaVideo(MainActivity.MULTIMEDIA_PAP);
}
}
return true;
}
return false;
}
case KeyEvent.KEYCODE_TAB:
case KeyEvent.KEYCODE_MENU: {
if (MainKeyListener.enableKeyCodeMenu) {
MainKeyListener.stopreAppState();
// If main menu isn't created create it
if (activity.getMainMenuHandler() == null) {
activity.initMainMenu();
}
if (activity.getMainMenuHandler().getMainMenuDialog()
.isShowing()) {
activity.getMainMenuHandler()
.getA4TVOnSelectLister()
.clearAnimationsManual();
activity.getMainMenuHandler().closeMainMenu(true);
} else {
// Show main menu
activity.getMainMenuHandler().showMainMenu();
}
}
return true;
}
// /////////////////////////////////////////////////////
// INFO BANNER
// //////////////////////////////////////////////////////
case KeyEvent.KEYCODE_INFO: {
activity.getPageCurl().info();
return true;
}
// Stop PlayBack
case KeyEvent.KEYCODE_MEDIA_STOP: {
IOSDHandler mCurlHandler = activity.getPageCurl();
A4TVMultimediaController
.setControlPosition(A4TVMultimediaController.MULTIMEDIA_CONTROLLER_STOP);
mCurlHandler.multimediaControllerClick(true);
return true;
}
// Play & Pause & Resume
case 126:
case 127:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: {
IOSDHandler mCurlHandler = activity.getPageCurl();
A4TVMultimediaController
.setControlPosition(A4TVMultimediaController.MULTIMEDIA_CONTROLLER_PLAY);
mCurlHandler.multimediaControllerClick(true);
return true;
}
// FF & Next
case 87:
case 125:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
IOSDHandler mCurlHandler = activity.getPageCurl();
A4TVMultimediaController
.setControlPosition(A4TVMultimediaController.MULTIMEDIA_CONTROLLER_FF_NEXT);
mCurlHandler.multimediaControllerClick(true);
return true;
}
// REW & Previous
case 88:
case KeyEvent.KEYCODE_MEDIA_REWIND: {
IOSDHandler mCurlHandler = activity.getPageCurl();
A4TVMultimediaController
.setControlPosition(A4TVMultimediaController.MULTIMEDIA_CONTROLLER_REW_PREVIOUS);
mCurlHandler.multimediaControllerClick(true);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME UP
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_F8:
case KeyEvent.KEYCODE_VOLUME_UP: {
IOSDHandler curlHandler = activity.getPageCurl();
curlHandler.volume(VOLUME_UP, true);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME DOWN
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_F7:
case KeyEvent.KEYCODE_VOLUME_DOWN: {
IOSDHandler curlHandler = activity.getPageCurl();
curlHandler.volume(VOLUME_DOWN, true);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME MUTE
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_MUTE: {
IOSDHandler curlHandler = activity.getPageCurl();
curlHandler.volume(VOLUME_MUTE, true);
return true;
}
// ///////////////////////////////////////////////////////////////////
// BACk
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_BACK: {
// Stop Current PlayBack
A4TVMultimediaController.getControlProvider().stop(
displayId);
if (OSDHandlerHelper.getHandlerState() == CURL_HANDLER_STATE_MULTIMEDIA_CONTROLLER) {
activity.getMediaController().startLiveStream(false);
// Close Info Banner if is On
if (MainActivity.activity.getPageCurl() instanceof CurlHandler
&& (MainActivity.activity.getPageCurl()
.getCurrentState() == STATE_PVR || MainActivity.activity
.getPageCurl().getCurrentState() == STATE_MULTIMEDIA_CONTROLLER)) {
activity.getPageCurl().info();
}
// Clear PVR icons
OSDHandlerHelper
.setHandlerState(CURL_HANDLER_STATE_DO_NOTHING);
if (MainActivity.service != null) {
MultimediaHandler.returnMultimediaToPreviousState();
} else {
A4TVToast toast = new A4TVToast(activity);
toast.showToast(com.iwedia.gui.R.string.proxy_service_is_null);
}
}
return true;
}
case KeyEvent.KEYCODE_CHANNEL_UP:
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_F4: {
activity.getMultimediaHandler().scrollLyrics(1);
return true;
}
case KeyEvent.KEYCODE_CHANNEL_DOWN:
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_F3: {
activity.getMultimediaHandler().scrollLyrics(-1);
return true;
}
default:
return false;
}
}
return false;
}
}