package com.iwedia.gui.keyhandlers;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.config_handler.ConfigGeneratorActivity;
import com.iwedia.gui.listeners.MainKeyListener;
import com.iwedia.gui.mainmenu.MainMenuContent;
import com.iwedia.gui.mainmenu.gallery.animations.TransitionItemAnimationHandler;
import com.iwedia.gui.osd.IOSDHandler;
import java.util.Timer;
import java.util.TimerTask;
public class MainMenuKeyHandler extends AppStateKeyHandler {
private final String LOG_TAG = "MainMenuKeyListener";
/** ConfigHandler Generator */
private final int CONFIGFILE_DURATION = 3000;
private MainActivity mActivity = null;
/** ConfigHandler Generator */
private int mConfigHandlerCounter = 0;
private Timer mConfigHandlerTimer = null;
private TimerTask mConfigHandlerTimerTask = null;
public MainMenuKeyHandler(MainActivity activity) {
this.mActivity = activity;
}
@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) {
// /////////////////////////////////////
// CLOSE
// /////////////////////////////////////
case KeyEvent.KEYCODE_BACK: {
// Check if main menu dialog is showing and its not in
// main menu
if (mActivity.getMainMenuHandler() != null) {
if (mActivity.getMainMenuHandler().getMainMenuDialog()
.isShowing()
&& MainMenuContent.currentState != MainMenuContent.MAIN_MENU) {
// Delay starting of translate animation
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
public void run() {
// ///////////////////////////
// If back key is enabled
// ///////////////////////////
if (MainKeyListener.enableKeyCodeBack
|| MainActivity.service == null) {
// Start transition
mActivity
.getMainMenuHandler()
.getTransitionItemAnimHandler()
.translate(
mActivity
.getMainMenuHandler()
.getFlip3dAnimationHandler()
.getImage(),
mActivity
.getMainMenuHandler()
.getTransitionItemAnimHandler()
.getSubmenuRootImage(),
TransitionItemAnimationHandler.ANIMATE_DOWN);
}
}
}, 10);
}
// If it is in main menu...and close it
if (mActivity.getMainMenuHandler().getMainMenuDialog()
.isShowing()
&& MainMenuContent.currentState == MainMenuContent.MAIN_MENU) {
mActivity.getMainMenuHandler().closeMainMenu(true);
}
return true;
}
return true;
}
// /////////////////////////////////////////////////////
// INFO BANNER
// //////////////////////////////////////////////////////
case KeyEvent.KEYCODE_I:
case KeyEvent.KEYCODE_INFO: {
mActivity.getPageCurl().info();
return true;
}
// ////////////////////////////////////////////
// CLOSE 2
// ////////////////////////////////////////////
case KeyEvent.KEYCODE_TAB:
case KeyEvent.KEYCODE_MENU:
case KeyEvent.KEYCODE_M: {
mActivity.getMainMenuHandler().closeMainMenu(true);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME UP
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_F8:
case KeyEvent.KEYCODE_VOLUME_UP: {
IOSDHandler curlHandler = mActivity.getPageCurl();
curlHandler.volume(VOLUME_UP, false);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME DOWN
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_F7:
case KeyEvent.KEYCODE_VOLUME_DOWN: {
IOSDHandler curlHandler = mActivity.getPageCurl();
curlHandler.volume(VOLUME_DOWN, false);
return true;
}
// ///////////////////////////////////////////////////////////////////
// VOLUME MUTE
// ///////////////////////////////////////////////////////////////////
case KeyEvent.KEYCODE_MUTE: {
IOSDHandler curlHandler = mActivity.getPageCurl();
curlHandler.volume(VOLUME_MUTE, false);
return true;
}
// Activate ConfigHandler Generator
case KeyEvent.KEYCODE_MEDIA_RECORD: {
mConfigHandlerCounter++;
startConfigFileGenerator(CONFIGFILE_DURATION);
}
default:
return false;
}
}
// Nothing happened
return false;
}
/**
* Start ConfigFile Generator
*/
public void startConfigFileGenerator(final int milliseconds) {
if (null != mConfigHandlerTimer) {
mConfigHandlerTimer.purge();
if (null != mConfigHandlerTimerTask)
mConfigHandlerTimerTask.cancel();
mConfigHandlerTimerTask = null;
mConfigHandlerTimerTask = new TimerTask() {
@Override
public void run() {
if (mConfigHandlerCounter >= 5) {
mActivity.startActivity(new Intent(mActivity,
ConfigGeneratorActivity.class));
mActivity.finish();
} else {
mConfigHandlerCounter = 0;
}
}
};
mConfigHandlerTimer.schedule(mConfigHandlerTimerTask, milliseconds);
} else {
mConfigHandlerTimer = new Timer();
startConfigFileGenerator(CONFIGFILE_DURATION);
}
}
}