package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.res.TypedArray; import android.os.Handler; import android.util.Log; import android.view.KeyEvent; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.components.A4TVDialog; import com.iwedia.gui.epg.EPGHandlingClass; import com.iwedia.gui.listeners.MainKeyListener; import com.iwedia.gui.osd.IOSDHandler; import java.util.ArrayList; /** * Dialog for EPG * * @author Branimir Pavlovic */ public class EPGDialog extends A4TVDialog implements A4TVDialogInterface { public static final String TAG = "EPGDialog"; private final int WIDTH_720p = 1280, HEIGHT_720p = 720, WIDTH_1080p = 1920, HEIGHT_1080p = 1080, TIME_TO_WAIT = 2000; private EPGHandlingClass epgHandler; private boolean canIGo = true; private boolean first, last; /** Constructor */ public EPGDialog(Context context) { super(context, checkTheme(context), 0); // set content to dialog fillDialog(); setDialogAttributes(); super.setMenuButtonEnabled(false); } @Override public void fillDialog() { setContentView(R.layout.epg_main_overscale); } @Override public void setDialogAttributes() { if (MainActivity.screenWidth == WIDTH_720p || MainActivity.screenHeight == WIDTH_720p) { getWindow().getAttributes().height = HEIGHT_720p; getWindow().getAttributes().width = WIDTH_720p; } if (MainActivity.screenWidth == WIDTH_1080p || MainActivity.screenHeight == WIDTH_1080p) { getWindow().getAttributes().height = HEIGHT_1080p; getWindow().getAttributes().width = WIDTH_1080p; } } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode) { // left or right case KeyEvent.KEYCODE_DPAD_LEFT: case KeyEvent.KEYCODE_DPAD_RIGHT: { return true; } } return super.onKeyUp(keyCode, event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (epgHandler != null) { switch (keyCode) { // input filter right case KeyEvent.KEYCODE_B: case KeyEvent.KEYCODE_PROG_BLUE: { Log.d(TAG, "ON KEY LISTENER ********************************BLUE******************************"); epgHandler.selectNextFilter(); return true; } // input filter left case KeyEvent.KEYCODE_R: case KeyEvent.KEYCODE_PROG_RED: { Log.d(TAG, "ON KEY LISTENER ********************************RED******************************"); epgHandler.changeEPGZoom(); return true; } // schedule recording dialog case KeyEvent.KEYCODE_Y: case KeyEvent.KEYCODE_PROG_YELLOW: { Log.d(TAG, "ON KEY LISTENER ********************************YELLOW******************************"); // epgHandler.selectPreviousFilter(); epgHandler.openScheduleRecordingDialog(); return true; } // reminders case KeyEvent.KEYCODE_G: case KeyEvent.KEYCODE_PROG_GREEN: { Log.d(TAG, "ON KEY LISTENER ********************************GREEN******************************"); epgHandler.openReminderDialog(); return true; } case KeyEvent.KEYCODE_F3: case KeyEvent.KEYCODE_GUIDE: case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_E: case KeyEvent.KEYCODE_SEARCH: { MainKeyListener.returnToStoredAppState(); epgHandler.stopThread(); epgHandler.clearViewsFromScreenAndData(); epgHandler.dayInWeekToLoadData = 1; epgHandler.scrollView.scrollTo(0, 0); if (epgHandler.currentFilterFromContentList > -1) { /** Return filter to filter before entering EPG */ try { MainActivity.service .getContentListControl() .setActiveFilter( epgHandler.currentFilterFromContentList); } catch (Exception e) { e.printStackTrace(); } /** Return value to default */ epgHandler.currentFilterFromContentList = -1; } EPGDialog.this.cancel(); // epgHandler.hideEPGDialog(); return true; } 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: { epgHandler.showEPGToServiceByNumber(keyCode); return true; } // go left case KeyEvent.KEYCODE_DPAD_LEFT: { if (canIGo) { canIGo = false; Log.d(TAG, "ON KEY LISTENER ********************************LEFT******************************"); epgHandler.goLeft(true); /** Enable left in one second */ new Handler().postDelayed(new Runnable() { @Override public void run() { canIGo = true; } }, TIME_TO_WAIT); } return true; } // go right case KeyEvent.KEYCODE_DPAD_RIGHT: { if (canIGo) { canIGo = false; Log.d(TAG, "ON KEY LISTENER ********************************RIGHT******************************"); epgHandler.goRigth(true); /** Enable right in one second */ new Handler().postDelayed(new Runnable() { @Override public void run() { canIGo = true; } }, TIME_TO_WAIT); } return true; } // ////////////////////////////////////////////////////////////// // VOLUME UP // ////////////////////////////////////////////////////////////// // case KeyEvent.KEYCODE_F6: case KeyEvent.KEYCODE_VOLUME_UP: { IOSDHandler mCurlHandler = MainActivity.activity .getPageCurl(); mCurlHandler.volume(VOLUME_UP, false); return true; } // /////////////////////////////////////////////////////////////////// // VOLUME DOWN // /////////////////////////////////////////////////////////////////// // case KeyEvent.KEYCODE_F5: case KeyEvent.KEYCODE_VOLUME_DOWN: { IOSDHandler mCurlHandler = MainActivity.activity .getPageCurl(); mCurlHandler.volume(VOLUME_DOWN, false); return true; } // /////////////////////////////////////////////////////////////////// // VOLUME MUTE // /////////////////////////////////////////////////////////////////// case KeyEvent.KEYCODE_MUTE: { IOSDHandler curlHandler = MainActivity.activity .getPageCurl(); curlHandler.volume(VOLUME_MUTE, false); return true; } default: break; } } return super.onKeyDown(keyCode, event); } /** * Function that load theme * * @param ctx * @return */ private static int checkTheme(Context ctx) { TypedArray atts = ctx.getTheme().obtainStyledAttributes( new int[] { R.attr.A4TVDialogTransparent }); int i = atts.getResourceId(0, 0); atts.recycle(); return i; } // not needed here @Override public void returnArrayListsWithDialogContents( ArrayList<ArrayList<Integer>> contentList, ArrayList<ArrayList<Integer>> contentListIDs, ArrayList<Integer> titleIDs) { } public EPGHandlingClass getEpgHandler() { return epgHandler; } public void setEpgHandler(EPGHandlingClass epgHandler) { this.epgHandler = epgHandler; } }