package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.RemoteException;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import com.iwedia.comm.content.Content;
import com.iwedia.comm.content.IContentFilter;
import com.iwedia.comm.enums.FilterType;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVButton;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import java.util.ArrayList;
/**
* Source menu dialog
*
* @author Sasa Jagodin
*/
public class SourceMenuDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener {
/** IDs for buttons */
public static final int TV_MENU_SOURCE_MENU_BROADCAST = 1,
TV_MENU_SOURCE_MENU_CVBS = 2, TV_MENU_SOURCE_MENU_VGA = 3,
TV_MENU_SOURCE_MENU_COMPONENT = 4, TV_MENU_SOURCE_MENU_HDMI1 = 5,
TV_MENU_SOURCE_MENU_HDMI2 = 6, TV_MENU_SOURCE_MENU_HDMI3 = 7,
TV_MENU_SOURCE_MENU_HDMI4 = 8;
// fields for creating dialogs
private ArrayList<ArrayList<Integer>> contentList = new ArrayList<ArrayList<Integer>>(),
contentListIDs = new ArrayList<ArrayList<Integer>>();
private ArrayList<Integer> titleIDs = new ArrayList<Integer>();
private A4TVButton buttonBroadcast, buttonCvbs, buttonVga, buttonComponent,
buttonHdmi1, buttonHdmi2, buttonHdmi3, buttonHdmi4;
Content inputContent;
public SourceMenuDialog(Context context) {
super(context, checkTheme(context), 0);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
init();
}
/** Get references from views and set look and feel */
private void init() {
buttonBroadcast = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_BROADCAST);
buttonCvbs = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_CVBS);
buttonVga = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_VGA);
buttonComponent = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_COMPONENT);
buttonHdmi1 = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_HDMI1);
buttonHdmi2 = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_HDMI2);
buttonHdmi3 = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_HDMI3);
buttonHdmi4 = (A4TVButton) findViewById(TV_MENU_SOURCE_MENU_HDMI4);
buttonBroadcast.setText(R.string.button_text_choose);
buttonCvbs.setText(R.string.button_text_choose);
buttonVga.setText(R.string.button_text_choose);
buttonComponent.setText(R.string.button_text_choose);
buttonHdmi1.setText(R.string.button_text_choose);
buttonHdmi2.setText(R.string.button_text_choose);
buttonHdmi3.setText(R.string.button_text_choose);
buttonHdmi4.setText(R.string.button_text_choose);
buttonBroadcast.requestFocus();
}
@Override
public void show() {
setViews();
super.show();
}
/** Get informations from service and display it */
private void setViews() {
boolean isDisabled;
boolean isConnected;
try {
IContentFilter contentFilter = MainActivity.service
.getContentListControl()
.getContentFilter(FilterType.INPUTS);
Content inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_CVBS - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
if (isDisabled) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_cvbs,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_cvbs,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_VGA - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
if (isDisabled) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_vga,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_vga,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_COMPONENT - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
if (isDisabled) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_component,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_component,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_HDMI1 - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
isConnected = MainActivity.service.getInputOutputControl()
.ioGetDeviceConnected(inputContent.getIndex());
if ((isDisabled == true) || (isConnected == false)) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi1,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi1,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_HDMI2 - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
isConnected = MainActivity.service.getInputOutputControl()
.ioGetDeviceConnected(inputContent.getIndex());
if ((isDisabled == true) || (isConnected == false)) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi2,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi2,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_HDMI3 - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
isConnected = MainActivity.service.getInputOutputControl()
.ioGetDeviceConnected(inputContent.getIndex());
if ((isDisabled == true) || (isConnected == false)) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi3,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi3,
DisplayMode.SHOW);
}
inputContent = contentFilter
.getContent(TV_MENU_SOURCE_MENU_HDMI4 - 2);
Log.d(TAG, "Input " + inputContent.toString());
isDisabled = MainActivity.service.getContentListControl()
.getContentLockedStatus(inputContent);
isConnected = MainActivity.service.getInputOutputControl()
.ioGetDeviceConnected(inputContent.getIndex());
if ((isDisabled == true) || (isConnected == false)) {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi4,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_source_menu_hdmi4,
DisplayMode.SHOW);
}
} catch (RemoteException e1) {
e1.printStackTrace();
}
}
@Override
public void onClick(View v) {
try {
Content activeContent = MainActivity.service
.getContentListControl().getActiveContent(0);
MainActivity.service.getContentListControl().stopContent(
activeContent, 0);
MainActivity.activity.setAnalogSignalLock(false);
/*
* Remove WebView from screen and set key mask to 0
*/
if (0 != (MainActivity.getKeySet())) {
try {
if (!MainActivity.activity.isHbbTVInHTTPPlaybackMode()) {
MainActivity.activity.webDialog.getHbbTVView()
.setAlpha((float) 0.00);
MainActivity.setKeySet(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int currentFilter = 0;
try {
currentFilter = MainActivity.service.getContentListControl()
.getActiveFilterIndex();
} catch (RemoteException e1) {
e1.printStackTrace();
}
switch (v.getId()) {
case TV_MENU_SOURCE_MENU_BROADCAST: {
/* Launch HbbTV Red Button if exists */
if (0 == (MainActivity.getKeySet())) {
int command = 0;
String param = "EXIT";
try {
Log.d(TAG, "Show HbbTV graphic");
MainActivity.activity.service.getHbbTvControl()
.notifyAppMngr(command, param);
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
}
case TV_MENU_SOURCE_MENU_CVBS: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_CVBS - 2);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_VGA: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_VGA - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_COMPONENT: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_COMPONENT - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_HDMI1: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_HDMI1 - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_HDMI2: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_HDMI2 - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_HDMI3: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_HDMI3 - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
case TV_MENU_SOURCE_MENU_HDMI4: {
try {
MainActivity.service.getContentListControl()
.setActiveFilter(FilterType.INPUTS);
inputContent = MainActivity.service.getContentListControl()
.getContent(TV_MENU_SOURCE_MENU_HDMI4 - 2);
} catch (RemoteException e) {
e.printStackTrace();
}
}
default:
break;
}
if (v.getId() != TV_MENU_SOURCE_MENU_BROADCAST) {
try {
MainActivity.service.getContentListControl().setActiveFilter(
currentFilter);
MainActivity.activity.sourceSwichingProgressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
MainActivity.service.getContentListControl()
.goContent(inputContent, 0);
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
MainActivity.activity.runOnUiThread(new Runnable() {
public void run() {
MainActivity.activity.sourceSwichingProgressDialog
.cancel();
if (MainActivity.activity
.getIsAnalogSignalLocked() == false) {
MainActivity.activity.getCheckServiceType()
.showNoSignalLayout();
}
}
});
}
}).start();
} catch (RemoteException e) {
e.printStackTrace();
}
}
SourceMenuDialog srcMenuDialog = MainActivity.activity
.getDialogManager().getSourceMenuDialog();
if (srcMenuDialog != null) {
srcMenuDialog.cancel();
}
}
@Override
public void fillDialog() {
View view = DialogManager.dialogCreator.fillDialogWithContents(
contentList, contentListIDs, titleIDs, null, this, null);
setContentView(view);
}
@Override
public void setDialogAttributes() {
getWindow().getAttributes().width = MainActivity.dialogWidth;
getWindow().getAttributes().height = MainActivity.dialogHeight;
}
/**
* Function that load theme
*
* @param ctx
* @return
*/
private static int checkTheme(Context ctx) {
TypedArray atts = ctx.getTheme().obtainStyledAttributes(
new int[] { R.attr.A4TVDialog });
int i = atts.getResourceId(0, 0);
atts.recycle();
return i;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
MainActivity.activity.getScreenSaverDialog().updateScreensaverTimer();
switch (keyCode) {
case KeyEvent.KEYCODE_I: {
SourceMenuDialog srcMenuDialog = MainActivity.activity
.getDialogManager().getSourceMenuDialog();
if (srcMenuDialog != null)
if (srcMenuDialog.isShowing()) {
srcMenuDialog.cancel();
}
return true;
}
default:
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void returnArrayListsWithDialogContents(
ArrayList<ArrayList<Integer>> contentList,
ArrayList<ArrayList<Integer>> contentListIDs,
ArrayList<Integer> titleIDs) {
// clear old data in lists
contentList.clear();
contentListIDs.clear();
titleIDs.clear();
// title
titleIDs.add(R.string.main_menu_description_input_selection);
ArrayList<Integer> list;
// broadcast source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_broadcast);
list.add(TV_MENU_SOURCE_MENU_BROADCAST);
contentListIDs.add(list);
// cvbs source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_cvbs);
list.add(TV_MENU_SOURCE_MENU_CVBS);
contentListIDs.add(list);
// vga source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_vga);
list.add(TV_MENU_SOURCE_MENU_VGA);
contentListIDs.add(list);
// component source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_component);
list.add(TV_MENU_SOURCE_MENU_COMPONENT);
contentListIDs.add(list);
// hdmi1 source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_hdmi1);
list.add(TV_MENU_SOURCE_MENU_HDMI1);
contentListIDs.add(list);
// hdmi2 source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_hdmi2);
list.add(TV_MENU_SOURCE_MENU_HDMI2);
contentListIDs.add(list);
// hdmi3 source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_hdmi3);
list.add(TV_MENU_SOURCE_MENU_HDMI3);
contentListIDs.add(list);
// hdmi4 source******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_source_menu_hdmi4);
list.add(TV_MENU_SOURCE_MENU_HDMI4);
contentListIDs.add(list);
}
}