package com.iwedia.gui.keyhandlers; import android.content.DialogInterface; import android.util.Log; import android.view.KeyEvent; import android.view.View; import com.iwedia.comm.enums.FilterType; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.components.A4TVAlertDialog; import com.iwedia.gui.components.A4TVProgressBarPVR; import com.iwedia.gui.components.A4TVToast; import com.iwedia.gui.listeners.MainKeyListener; import com.iwedia.gui.osd.IOSDHandler; import com.iwedia.gui.osd.OSDHandlerHelper; import com.iwedia.gui.osd.infobanner.InfoBannerHandler; import com.iwedia.gui.osd.noneinfobanner.NoneBannerHandler; /** * KeyHandler for PVR. */ public class PVRKeyHandler extends AppStateKeyHandler { private final String LOG_TAG = "PVRKeyListener"; private MainActivity mActivity = null; private MainKeyListener mKeyListener = null; public PVRKeyHandler(MainActivity activity, MainKeyListener keyListener) { mActivity = activity; mKeyListener = keyListener; } @Override public boolean onKeyPressed(View v, DialogInterface dialog, int keyCode, KeyEvent event, boolean isFromMheg) { if (event.getAction() == KeyEvent.ACTION_DOWN) { Log.d(LOG_TAG, "KeyCode: " + keyCode); switch (keyCode) { // Channel Change by Number case KeyEvent.KEYCODE_0: case KeyEvent.KEYCODE_1: case KeyEvent.KEYCODE_2: case KeyEvent.KEYCODE_3: case KeyEvent.KEYCODE_4: case KeyEvent.KEYCODE_5: case KeyEvent.KEYCODE_6: case KeyEvent.KEYCODE_7: case KeyEvent.KEYCODE_8: case KeyEvent.KEYCODE_9: case KeyEvent.KEYCODE_F10: { if (OSDHandlerHelper.getHandlerState() == PVR_STATE_RECORDING && !A4TVProgressBarPVR .getControlProviderPVR() .getFileDescription() .equals(mActivity.getApplicationContext() .getString(R.string.shedule_record))) { IOSDHandler curlHandler = mActivity.getPageCurl(); curlHandler.changeChannelByNum( mActivity.getMainKeyListener() .generateChannelNumber(keyCode), 0); } return true; } // Channel Up case KeyEvent.KEYCODE_CHANNEL_UP: case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_F4: { if (OSDHandlerHelper.getHandlerState() == PVR_STATE_RECORDING && !A4TVProgressBarPVR .getControlProviderPVR() .getFileDescription() .equals(mActivity.getApplicationContext() .getString(R.string.shedule_record))) { if (OSDHandlerHelper.getHandlerState() != STATE_INFO_BANNER_SHOWN || (OSDHandlerHelper.getHandlerState() == STATE_INFO_BANNER_SHOWN && mActivity.getPageCurl() instanceof InfoBannerHandler && !InfoBannerHandler.description) || mActivity.getPageCurl() instanceof NoneBannerHandler) { try { if (FilterType.INPUTS == MainActivity.service .getContentListControl() .getActiveContent(0).getFilterType()) { A4TVToast toast = new A4TVToast(mActivity); toast.showToast(R.string.not_supported_action_for_input); return true; } } catch (Exception e) { e.printStackTrace(); } if (!mActivity .dualVideoActionHandler(CHANNEL_UP, 0)) { return true; } mActivity.getMainKeyListener().changeChannelUp(); } else { mActivity.getPageCurl().scroll(1); } } return true; } // Channel Down case KeyEvent.KEYCODE_CHANNEL_DOWN: case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_F3: { if (OSDHandlerHelper.getHandlerState() == PVR_STATE_RECORDING && !A4TVProgressBarPVR .getControlProviderPVR() .getFileDescription() .equals(mActivity.getApplicationContext() .getString(R.string.shedule_record))) { if (OSDHandlerHelper.getHandlerState() != STATE_INFO_BANNER_SHOWN || (OSDHandlerHelper.getHandlerState() == STATE_INFO_BANNER_SHOWN && mActivity.getPageCurl() instanceof InfoBannerHandler && !InfoBannerHandler.description) || mActivity.getPageCurl() instanceof NoneBannerHandler) { try { if (FilterType.INPUTS == MainActivity.service .getContentListControl() .getActiveContent(0).getFilterType()) { A4TVToast toast = new A4TVToast(mActivity); toast.showToast(R.string.not_supported_action_for_input); return true; } } catch (Exception e) { e.printStackTrace(); } if (!mActivity.dualVideoActionHandler(CHANNEL_DOWN, 0)) { return true; } mActivity.getMainKeyListener().changeChannelDown(); } else { mActivity.getPageCurl().scroll(-1); } } 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 .stopMultimediaVideo(MainActivity.MULTIMEDIA_PIP); } } 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; } // Move Focus Left on PVR OSD Controls case KeyEvent.KEYCODE_DPAD_LEFT: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); mCurlHandler.multimediaControllerMoveLeft(); return true; } // Move Focus Right on PVR OSD Controls case KeyEvent.KEYCODE_DPAD_RIGHT: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); mCurlHandler.multimediaControllerMoveRight(); return true; } // Do Click on Selected PVR OSD Control case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: { Log.d(LOG_TAG, "KeyCode Enter PVR"); IOSDHandler mCurlHandler = mActivity.getPageCurl(); mCurlHandler.multimediaControllerClick(false); return true; } // Show Info Banner case KeyEvent.KEYCODE_INFO: case KeyEvent.KEYCODE_SPACE: { mActivity.getPageCurl().info(); return true; } // Turn Off TV(STB) case KeyEvent.KEYCODE_P: { if (OSDHandlerHelper.getHandlerState() == PVR_STATE_RECORDING) { final A4TVAlertDialog askDialog = new A4TVAlertDialog( mActivity); askDialog.setTitleOfAlertDialog( R.string.stop_recording_message).setCancelable( false); askDialog.setPositiveButton(R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { IOSDHandler mCurlHandler = mActivity .getPageCurl(); A4TVProgressBarPVR .setControlPosition(A4TVProgressBarPVR.MULTIMEDIA_CONTROLLER_STOP); mCurlHandler .multimediaControllerClick(true); askDialog.cancel(); try { MainActivity.service .getSetupControl() .rebootTV(); } catch (Exception e) { e.printStackTrace(); } } }); askDialog.setNegativeButton(R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { askDialog.cancel(); return; } }); askDialog.show(); } return true; } // Back // Stop PlayBack case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_MEDIA_STOP: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); A4TVProgressBarPVR .setControlPosition(A4TVProgressBarPVR.MULTIMEDIA_CONTROLLER_STOP); mCurlHandler.multimediaControllerClick(true); return true; } // Play & Pause & Resume case 126: case 127: case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); A4TVProgressBarPVR .setControlPosition(A4TVProgressBarPVR.MULTIMEDIA_CONTROLLER_PLAY); mCurlHandler.multimediaControllerClick(true); return true; } // FF & Next case 87: case 125: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); A4TVProgressBarPVR .setControlPosition(A4TVProgressBarPVR.MULTIMEDIA_CONTROLLER_FF_NEXT); mCurlHandler.multimediaControllerClick(true); return true; } // REW & Previous case 88: case KeyEvent.KEYCODE_MEDIA_REWIND: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); A4TVProgressBarPVR .setControlPosition(A4TVProgressBarPVR.MULTIMEDIA_CONTROLLER_REW_PREVIOUS); mCurlHandler.multimediaControllerClick(true); return true; } // Volume Up case KeyEvent.KEYCODE_F8: case KeyEvent.KEYCODE_VOLUME_UP: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); mCurlHandler.volume(VOLUME_UP, true); return true; } // Volume Down case KeyEvent.KEYCODE_F7: case KeyEvent.KEYCODE_VOLUME_DOWN: { IOSDHandler mCurlHandler = mActivity.getPageCurl(); mCurlHandler.volume(VOLUME_DOWN, true); return true; } // Volume Mute case KeyEvent.KEYCODE_MUTE: { IOSDHandler curlHandler = mActivity.getPageCurl(); curlHandler.volume(VOLUME_MUTE, true); return true; } // Show Dialog for Available Audio Languages case KeyEvent.KEYCODE_F6: case KeyEvent.KEYCODE_A: { // mKeyListener.getCleanScreenHandler().showAudio(); return true; } // Teletext case KeyEvent.KEYCODE_T: case KeyEvent.KEYCODE_F5: { // mKeyListener.getCleanScreenHandler().showTeletext(); return true; } // Subtitle case KeyEvent.KEYCODE_S: case KeyEvent.KEYCODE_CAPTIONS: { // mKeyListener.getCleanScreenHandler().showSubtitle(); return true; } } } return false; } }