package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Handler;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import com.iwedia.comm.content.Content;
import com.iwedia.comm.content.service.ServiceContent;
import com.iwedia.comm.enums.FilterType;
import com.iwedia.comm.system.IPictureSettings;
import com.iwedia.dtv.types.AspectRatioMode;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.ThemeUtils;
import com.iwedia.gui.components.A4TVButton;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVProgressBar;
import com.iwedia.gui.components.A4TVSpinner;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.components.A4TVSpinner.OnSelectA4TVSpinnerListener;
import com.iwedia.gui.config_handler.ConfigHandler;
import com.iwedia.gui.mainmenu.DialogCreatorClass;
import com.iwedia.gui.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import com.iwedia.gui.osd.IOSDHandler;
import java.util.ArrayList;
/**
* s Picture settings dialog
*
* @author Branimir Pavlovic
*/
public class PictureSettingsDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener,
OnSeekBarChangeListener {
private static final String TAG = "PictureSettingsDialog";
/** IDs for spinners */
public static final int PICTURE_SETTINGS_PICTURE_MODE = 0,
PICTURE_SETTINGS_THEME = 1, PICTURE_SETTINGS_ASPECT_RATIO = 67,
PICTURE_SETTINGS_COLOR_TEMPERATURE = 20004,
PICTURE_SETTINGS_NR = 20010;
/** IDs for buttons */
public static final int FIRST_TIME_INSTALL_NEXT_BUTTON = 10001;
public static final int PICTURE_SETTINGS_SET_DEFAULT_SETTINGS = 10002;
/** IDs for progress */
public static final int PICTURE_SETTINGS_BRIGHTNESS = 20000,
PICTURE_SETTINGS_CONTRAST = 20001,
PICTURE_SETTINGS_SHARPNESS = 20002, PICTURE_SETTINGS_COLOR = 20003,
PICTURE_SETTINGS_TINT = 20005, PICTURE_SETTINGS_HUE = 20007,
PICTURE_SETTINGS_SATURATION = 20008,
PICTURE_SETTINGS_BACKLIGHT = 20009;
// 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>();
/** Buttons */
private A4TVButton buttonFirstInstallNext;
private A4TVButton buttonCurlSettings;
private A4TVButton buttonSetDefaultSettings;
/** Spinners */
private A4TVSpinner spinnerAspectRatio, spinnerPictureMode, spinnerTheme,
spinnerColorTemperature, spinnerNRMode;
/** Progress bars */
private A4TVProgressBar progressBrightness, progressContrast,
progressSharpness, progressHue, progressSaturation,
progressBacklight;
private IPictureSettings pictureSettings;
private final boolean mSwitchToUserModeIfPredefinedModeParamChanged = false;
private int mCurrentPictureModeIdx = -1;
public static final int DigitalInputTypeGroup = 0;
public static final int AnalogInputTypeGroup = 1;
public static final int VGAInputTypeGroup = 2;
public PictureSettingsDialog(Context context) {
super(context, checkTheme(context), 0);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
// fill initial
init(context);
}
@Override
public void show() {
fillViews();
super.show();
}
@Override
public void onBackPressed() {
if (MainActivity.isInFirstTimeInstall) {
LanguageAndKeyboardDialog langDialog = MainActivity.activity
.getDialogManager().getLanguageAndKeyboardDialog();
if (langDialog != null) {
langDialog.show();
}
}
super.onBackPressed();
}
private void init(final Context context) {
/** Get spinner views */
spinnerAspectRatio = (A4TVSpinner) findViewById(PICTURE_SETTINGS_ASPECT_RATIO);
spinnerPictureMode = (A4TVSpinner) findViewById(PICTURE_SETTINGS_PICTURE_MODE);
spinnerTheme = (A4TVSpinner) findViewById(PICTURE_SETTINGS_THEME);
spinnerNRMode = (A4TVSpinner) findViewById(PICTURE_SETTINGS_NR);
/** Progress bars */
progressBrightness = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_BRIGHTNESS);
progressContrast = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_CONTRAST);
progressSharpness = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_SHARPNESS);
spinnerColorTemperature = (A4TVSpinner) findViewById(PICTURE_SETTINGS_COLOR_TEMPERATURE);
progressHue = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_HUE);
progressSaturation = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_SATURATION);
progressBacklight = (A4TVProgressBar) findViewById(PICTURE_SETTINGS_BACKLIGHT);
buttonSetDefaultSettings = (A4TVButton) findViewById(PICTURE_SETTINGS_SET_DEFAULT_SETTINGS);
buttonSetDefaultSettings.setText(R.string.button_text_ok);
// ////////////////////////////////
// Check config file
// ////////////////////////////////
// set spinner listeners
spinnerAspectRatio
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
Log.d(TAG,
"spinnerAspectRatio onClick choosenItemIndex="
+ index);
try {
pictureSettings
.setAspectRatioMode(convertToAspectOutputRatioIndex(index));
IOSDHandler curlHandler = MainActivity.activity
.getPageCurl();
if (curlHandler != null) {
curlHandler
.showPictureFormat(currentFormatToString(convertToAspectOutputRatioIndex(index)));
} else {
Log.e(TAG,
"Failed to show current picture format on OSD.");
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
}
});
spinnerPictureMode
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
Log.d(TAG,
"spinnerPictureMode onClick choosenItemIndex="
+ index);
if (mCurrentPictureModeIdx != index) {
mCurrentPictureModeIdx = index;
Log.d(TAG,
"spinnerPictureMode onClick mCurrentPictureModeIdx="
+ mCurrentPictureModeIdx);
updatePictureModeParams(-1,
(mCurrentPictureModeIdx != 5));
}
try {
MainActivity.service.getSystemControl()
.getPictureControl()
.setActivePictureMode(index);
} catch (RemoteException e) {
e.printStackTrace();
}
}
});
spinnerNRMode
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
boolean otherParamsNeedUpdate = false;
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& 5 != spinnerPictureMode
.getCHOOSEN_ITEM_INDEX()) { // Diff than
// user mode
setUserPictureMode();
}
try {
pictureSettings.setActiveNoiseReduction(index);
} catch (Exception e) {
e.printStackTrace();
}
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_NR, false);
}
}
});
spinnerColorTemperature
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
boolean otherParamsNeedUpdate = false;
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& 5 != spinnerPictureMode
.getCHOOSEN_ITEM_INDEX()) { // Diff than
// user mode
setUserPictureMode();
}
try {
pictureSettings.setActiveColorTemperature(index);
} catch (Exception e) {
e.printStackTrace();
}
if (otherParamsNeedUpdate) {
updatePictureModeParams(
PICTURE_SETTINGS_COLOR_TEMPERATURE, false);
}
}
});
spinnerTheme
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
if (index != ThemeUtils.getActiveThemeIndex()) {
MainActivity.stopVideoOnPauseAndReturnMenuToUser = false;
final int id = spinner.getId();
A4TVToast toast = new A4TVToast(context);
toast.showToast(R.string.app_recreate);
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
// change theme
ThemeUtils.changeToTheme(
MainActivity.activity, id);
}
}, 500);
}
}
});
// ///////////////////////
// NO TV FEATURES
// ///////////////////////
if (!ConfigHandler.TV_FEATURES) {
// hide picture mode
findViewById(R.string.tv_menu_picture_settings_picture_mode)
.setVisibility(View.GONE);
findViewById(DialogCreatorClass.LINES_BASE_ID).setVisibility(
View.GONE);
// Hide backlight row
findViewById(R.string.tv_menu_picture_settings_backlight)
.setVisibility(View.GONE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 7).setVisibility(
View.GONE);
// hide HUE
findViewById(R.string.tv_menu_picture_settings_hue).setVisibility(
View.GONE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 5).setVisibility(
View.GONE);
// hide THEME
findViewById(R.string.tv_menu_picture_settings_theme)
.setVisibility(View.GONE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 8).setVisibility(
View.GONE);
} else {
// hide picture mode
findViewById(R.string.tv_menu_picture_settings_picture_mode)
.setVisibility(View.VISIBLE);
findViewById(DialogCreatorClass.LINES_BASE_ID).setVisibility(
View.VISIBLE);
// Show backlight name row
findViewById(R.string.tv_menu_picture_settings_backlight)
.setVisibility(View.VISIBLE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 7).setVisibility(
View.VISIBLE);
// show HUE
findViewById(R.string.tv_menu_picture_settings_hue).setVisibility(
View.VISIBLE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 5).setVisibility(
View.VISIBLE);
// show THEME
findViewById(R.string.tv_menu_picture_settings_theme)
.setVisibility(View.VISIBLE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 8).setVisibility(
View.VISIBLE);
}
// just for first time in FTI
try {
pictureSettings = MainActivity.service.getSystemControl()
.getPictureControl();
} catch (Exception e1) {
e1.printStackTrace();
}
if (pictureSettings != null) {
if (MainActivity.isInFirstTimeInstall) {
try {
AspectRatioMode format = pictureSettings
.getAspectRatioMode();
pictureSettings.setAspectRatioMode(format);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
private void fillViews() {
boolean disableParams = false;
if (!MainActivity.isInFirstTimeInstall) {
findViewById(R.string.first_time_install_next).setVisibility(
View.GONE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 9).setVisibility(
View.GONE);
} else {
findViewById(R.string.first_time_install_next).setVisibility(
View.VISIBLE);
findViewById(DialogCreatorClass.LINES_BASE_ID + 9).setVisibility(
View.VISIBLE);
buttonFirstInstallNext = (A4TVButton) findViewById(FIRST_TIME_INSTALL_NEXT_BUTTON);
buttonFirstInstallNext
.setText(R.string.first_time_install_next_button_text);
if (MainActivity.activity.getFirstTimeInfoText() != null) {
MainActivity.activity.getFirstTimeInfoText().setText(
R.string.first_time_install_set_tv_mode);
}
}
pictureSettings = null;
try {
pictureSettings = MainActivity.service.getSystemControl()
.getPictureControl();
} catch (Exception e1) {
e1.printStackTrace();
}
if (pictureSettings != null) {
/************************* ASPECT RATIO ***************************/
int aspectRatio = 0;
try {
aspectRatio = convertToAspectRatioSpinnerIndex(pictureSettings
.getAspectRatioMode());
} catch (Exception e) {
e.printStackTrace();
}
spinnerAspectRatio.setSelection(aspectRatio);
if (ConfigHandler.TV_FEATURES) {
/************************* PICTURE MODE ***************************/
int pictureMode = 0;
try {
pictureMode = pictureSettings.getActivePictureMode();
// Log.d(TAG, "fillViews pictureMode[" + pictureMode +
// "] setSelection");
} catch (Exception e1) {
e1.printStackTrace();
}
spinnerPictureMode.setSelection(pictureMode);
disableParams = pictureMode != 5;// different than user mode
}
/************************** THEME **********************************/
spinnerTheme.setSelection(ThemeUtils.getActiveThemeIndex());
/************************* BRIGHTNESS ***************************/
int brightnessProgress = 50;
try {
brightnessProgress = pictureSettings.getBrightness();
} catch (Exception e) {
e.printStackTrace();
}
progressBrightness.setProgress(brightnessProgress);
progressBrightness.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_brightness,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_brightness,
DisplayMode.SHOW);
}
/************************* CONTRAST ***************************/
int contrastProgress = 50;
try {
contrastProgress = pictureSettings.getContrast();
} catch (Exception e) {
e.printStackTrace();
}
progressContrast.setProgress(contrastProgress);
progressContrast.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_contrast,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_contrast,
DisplayMode.SHOW);
}
/************************* SHARPNESS ***************************/
int sharpnessProgress = 50;
try {
sharpnessProgress = pictureSettings.getSharpness();
} catch (Exception e) {
e.printStackTrace();
}
progressSharpness.setProgress(sharpnessProgress);
progressSharpness.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_sharpness,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_sharpness,
DisplayMode.SHOW);
}
/************************* COLOR TEMPERATURE ***************************/
int colorTemperature = 0;
try {
colorTemperature = pictureSettings.getActiveColorTemperature();
} catch (Exception e) {
e.printStackTrace();
}
spinnerColorTemperature.setSelection(colorTemperature);
spinnerColorTemperature.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_color_temperature,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_color_temperature,
DisplayMode.SHOW);
}
/************************* HUE ***************************/
int hueProgress = 50;
try {
hueProgress = pictureSettings.getHue();
} catch (Exception e) {
e.printStackTrace();
}
progressHue.setProgress(hueProgress);
/************************* SATURATION ***************************/
int saturationProgress = 50;
try {
saturationProgress = pictureSettings.getSaturation();
} catch (Exception e) {
e.printStackTrace();
}
progressSaturation.setProgress(saturationProgress);
progressSaturation.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_saturation,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_saturation,
DisplayMode.SHOW);
}
/************************* BACKLIGHT ***************************/
if (ConfigHandler.TV_FEATURES) {
int backlightProgress = 50;
try {
backlightProgress = pictureSettings.getBacklight();
} catch (Exception e) {
e.printStackTrace();
}
progressBacklight.setProgress(backlightProgress);
progressBacklight.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_backlight,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_backlight,
DisplayMode.SHOW);
}
}
/************************* NR MODE ***************************/
int nRMode = 0;
try {
nRMode = pictureSettings.getActiveNoiseReduction();
} catch (Exception e) {
e.printStackTrace();
}
spinnerNRMode.setSelection(nRMode);
spinnerNRMode.setClickable(!disableParams);
if (disableParams) {
setLayoutDisplayMode(R.string.tv_menu_picture_settings_nr,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_picture_settings_nr,
DisplayMode.SHOW);
}
}
}
@Override
public void fillDialog() {
View view = DialogManager.dialogCreator.fillDialogWithContents(
contentList, contentListIDs, titleIDs, this, this, null);// ,
// pictureBackgroundID);
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 void onClick(View v) {
switch (v.getId()) {
case FIRST_TIME_INSTALL_NEXT_BUTTON: {
NetworkSettingsDialog netSettDialog = MainActivity.activity
.getDialogManager().getNetworkSettingsDialog();
if (netSettDialog != null) {
netSettDialog.show();
}
PictureSettingsDialog.this.cancel();
break;
}
case PICTURE_SETTINGS_SET_DEFAULT_SETTINGS: {
try {
pictureSettings.setPictureMenuDefaultSettings();
AspectRatioMode format = pictureSettings
.getAspectRatioMode();
pictureSettings.setAspectRatioMode(format);
} catch (Exception e) {
e.printStackTrace();
}
this.show();
break;
}
default:
break;
}
}
/*
* - Brightness - Contrast - Saturation - Color Temperature - Tint -
* Sharpness - Backlight - Noise reduction
*/
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
((A4TVProgressBar) seekBar).setText(String.valueOf(seekBar
.getProgress()));
// Log.d(TAG, "onProgressChanged seekBar.getId()[" + seekBar.getId()
// +"] progress[" + progress + "] fromUser[" + fromUser + "]" );
switch (seekBar.getId()) {
// Brightness
case PICTURE_SETTINGS_BRIGHTNESS: {
boolean otherParamsNeedUpdate = false;
try {
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& fromUser
&& 5 != pictureSettings.getActivePictureMode()) {// Diff
// than
// user
// mode
setUserPictureMode();
otherParamsNeedUpdate = true;
}
pictureSettings.setBrightness(progress);
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_BRIGHTNESS,
false);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
// Contrast
case PICTURE_SETTINGS_CONTRAST: {
boolean otherParamsNeedUpdate = false;
try {
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& fromUser
&& 5 != pictureSettings.getActivePictureMode()) {// Diff
// than
// user
// mode
setUserPictureMode();
otherParamsNeedUpdate = true;
}
pictureSettings.setContrast(progress);
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_CONTRAST,
false);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
// Sharpness
case PICTURE_SETTINGS_SHARPNESS: {
boolean otherParamsNeedUpdate = false;
try {
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& fromUser
&& 5 != pictureSettings.getActivePictureMode()) {// Diff
// than
// user
// mode
setUserPictureMode();
otherParamsNeedUpdate = true;
}
pictureSettings.setSharpness(progress);
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_SHARPNESS,
false);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
// Hue
case PICTURE_SETTINGS_HUE: {
try {
pictureSettings.setHue(progress);
} catch (RemoteException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
break;
}
// Saturation
case PICTURE_SETTINGS_SATURATION: {
boolean otherParamsNeedUpdate = false;
try {
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& fromUser
&& 5 != pictureSettings.getActivePictureMode()) {// Diff
// than
// user
// mode
setUserPictureMode();
otherParamsNeedUpdate = true;
}
pictureSettings.setSaturation(progress);
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_SATURATION,
false);
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
break;
}
// Backlight
case PICTURE_SETTINGS_BACKLIGHT: {
boolean otherParamsNeedUpdate = false;
try {
if (mSwitchToUserModeIfPredefinedModeParamChanged
&& fromUser
&& 5 != pictureSettings.getActivePictureMode()) {// Diff
// than
// user
// mode
setUserPictureMode();
otherParamsNeedUpdate = true;
}
pictureSettings.setsBacklight(progress);
if (otherParamsNeedUpdate) {
updatePictureModeParams(PICTURE_SETTINGS_BACKLIGHT,
false);
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
break;
}
default:
break;
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@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.drawable.settings_icon);
titleIDs.add(R.drawable.tv_menu_icon);
titleIDs.add(R.string.tv_menu_picture_settings);
// picture mode******************************************
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_picture_mode);
list.add(PICTURE_SETTINGS_PICTURE_MODE);
contentListIDs.add(list);
// aspect ratio ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_aspect_ratio);
list.add(PICTURE_SETTINGS_ASPECT_RATIO);
contentListIDs.add(list);
// brightness*******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_brightness);
list.add(PICTURE_SETTINGS_BRIGHTNESS);
contentListIDs.add(list);
// contrast**********************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_contrast);
list.add(PICTURE_SETTINGS_CONTRAST);
contentListIDs.add(list);
/*
* // color**************************************************** list =
* new ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView);
* list.add(MainMenuContent.TAGA4TVProgressBar); contentList.add(list);
* list = new ArrayList<Integer>();
* list.add(R.string.tv_menu_picture_settings_color);
* list.add(picture_settings_color); contentListIDs.add(list); //
* tint***************************************************** list = new
* ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView);
* list.add(MainMenuContent.TAGA4TVProgressBar); contentList.add(list);
* list = new ArrayList<Integer>();
* list.add(R.string.tv_menu_picture_settings_tint);
* list.add(picture_settings_tint); contentListIDs.add(list);
*/
// sharpness*************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_sharpness);
list.add(PICTURE_SETTINGS_SHARPNESS);
contentListIDs.add(list);
// color temperature****************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_color_temperature);
list.add(PICTURE_SETTINGS_COLOR_TEMPERATURE);
contentListIDs.add(list);
// hue*****************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_hue);
list.add(PICTURE_SETTINGS_HUE);
contentListIDs.add(list);
// saturation*************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_saturation);
list.add(PICTURE_SETTINGS_SATURATION);
contentListIDs.add(list);
// backlight*************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVProgressBar);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_backlight);
list.add(PICTURE_SETTINGS_BACKLIGHT);
contentListIDs.add(list);
// theme*****************************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_theme);
list.add(PICTURE_SETTINGS_THEME);
contentListIDs.add(list);
// noise reduction mode***************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_menu_picture_settings_nr);
list.add(PICTURE_SETTINGS_NR);
contentListIDs.add(list);
// picture set default settings
// ******************************************
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_sound_settings_set_default_settings);
list.add(PICTURE_SETTINGS_SET_DEFAULT_SETTINGS);
contentListIDs.add(list);
// first time install next ***********************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.first_time_install_next);
list.add(FIRST_TIME_INSTALL_NEXT_BUTTON);
contentListIDs.add(list);
}
private void updatePictureModeParams(int excludeParam, boolean disableParams) {
int value;
Log.d(TAG, "updatePictureModeParams");
try {
if (PICTURE_SETTINGS_BRIGHTNESS != excludeParam) {
value = pictureSettings.getBrightness();
progressBrightness.setProgress(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_brightness,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_brightness,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_CONTRAST != excludeParam) {
value = pictureSettings.getContrast();
progressContrast.setProgress(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_contrast,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_contrast,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_SATURATION != excludeParam) {
value = pictureSettings.getSaturation();
progressSaturation.setProgress(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_saturation,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_saturation,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_COLOR_TEMPERATURE != excludeParam) {
value = pictureSettings.getActiveColorTemperature();
spinnerColorTemperature.setSelection(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_color_temperature,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_color_temperature,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_SHARPNESS != excludeParam) {
value = pictureSettings.getSharpness();
progressSharpness.setProgress(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_sharpness,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_sharpness,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_BACKLIGHT != excludeParam) {
value = pictureSettings.getBacklight();
progressBacklight.setProgress(value);
if (disableParams) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_backlight,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_backlight,
DisplayMode.SHOW);
}
}
if (PICTURE_SETTINGS_NR != excludeParam) {
value = pictureSettings.getActiveNoiseReduction();
spinnerNRMode.setSelection(value);
if (disableParams) {
setLayoutDisplayMode(R.string.tv_menu_picture_settings_nr,
DisplayMode.DISABLE);
} else {
setLayoutDisplayMode(R.string.tv_menu_picture_settings_nr,
DisplayMode.SHOW);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void setUserPictureMode() {
Log.d(TAG, "setUserPictureMode");
try {
// PictureMode.PICTURE_USER_MODE == 5
pictureSettings.setActivePictureMode(5);
spinnerPictureMode.setSelection(5);
mCurrentPictureModeIdx = 5;
} catch (Exception e1) {
e1.printStackTrace();
}
}
private AspectRatioMode convertToAspectOutputRatioIndex(int index) {
AspectRatioMode aspectRatio = AspectRatioMode.AUTO;
switch (getCurrentInputTypeGroup(0)) {
case 0: // digital group
switch (index) {
case 0: // tv_menu_picture_settings_aspect_ratio_auto
aspectRatio = AspectRatioMode.AUTO;
break;
case 1: // tv_menu_picture_settings_aspect_ratio_normal_4_3
aspectRatio = AspectRatioMode.NORMAL_4_3;
break;
case 2: // tv_menu_picture_settings_aspect_ratio_zoom_14_9
aspectRatio = AspectRatioMode.ZOOM_14_9;
break;
case 3: // tv_menu_picture_settings_aspect_ratio_panorama
aspectRatio = AspectRatioMode.PANORAMA;
break;
case 4: // tv_menu_picture_settings_aspect_ratio_letterbox
aspectRatio = AspectRatioMode.LETTERBOX;
break;
case 5: // tv_menu_picture_settings_aspect_ratio_full
aspectRatio = AspectRatioMode.FULL;
break;
case 6: // tv_menu_picture_settings_aspect_ratio_cinema_16_9
aspectRatio = AspectRatioMode.CINEMA_16_9;
break;
case 7: // tv_menu_picture_settings_aspect_ratio_cinema_14_9
aspectRatio = AspectRatioMode.CINEMA_14_9;
break;
default:
break;
}
break;
case 1: // analog group
switch (index) {
case 0: // tv_menu_picture_settings_aspect_ratio_auto
aspectRatio = AspectRatioMode.AUTO;
break;
case 1: // tv_menu_picture_settings_aspect_ratio_normal_4_3
aspectRatio = AspectRatioMode.NORMAL_4_3;
break;
case 2: // tv_menu_picture_settings_aspect_ratio_zoom_14_9
aspectRatio = AspectRatioMode.ZOOM_14_9;
break;
case 3: // tv_menu_picture_settings_aspect_ratio_panorama
aspectRatio = AspectRatioMode.PANORAMA;
break;
case 4: // tv_menu_picture_settings_aspect_ratio_letterbox
aspectRatio = AspectRatioMode.LETTERBOX;
break;
case 5: // tv_menu_picture_settings_aspect_ratio_cinema_16_9
aspectRatio = AspectRatioMode.CINEMA_16_9;
break;
case 6: // tv_menu_picture_settings_aspect_ratio_cinema_14_9
aspectRatio = AspectRatioMode.CINEMA_14_9;
break;
default:
break;
}
break;
case 2: // vga group
switch (index) {
case 0: // tv_menu_picture_settings_aspect_ratio_normal_4_3
aspectRatio = AspectRatioMode.NORMAL_4_3;
break;
case 1: // tv_menu_picture_settings_aspect_ratio_cinema_16_9
aspectRatio = AspectRatioMode.CINEMA_16_9;
break;
default:
break;
}
break;
}
return aspectRatio;
}
private int convertToAspectRatioSpinnerIndex(AspectRatioMode aspectRatio) {
int index = -1;
switch (getCurrentInputTypeGroup(0)) {
case 0: // digital group
switch (aspectRatio) {
case AUTO:
index = 0; // tv_menu_picture_settings_aspect_ratio_auto
break;
case NORMAL_4_3:
index = 1; // tv_menu_picture_settings_aspect_ratio_normal_4_3
break;
case ZOOM_14_9:
index = 2; // tv_menu_picture_settings_aspect_ratio_zoom_14_9
break;
case PANORAMA:
index = 3; // tv_menu_picture_settings_aspect_ratio_panorama
break;
case LETTERBOX:
index = 4; // tv_menu_picture_settings_aspect_ratio_letterbox
break;
case FULL:
index = 5; // tv_menu_picture_settings_aspect_ratio_full
break;
case CINEMA_16_9:
index = 6; // tv_menu_picture_settings_aspect_ratio_cinema_16_9
break;
case CINEMA_14_9:
index = 7; // tv_menu_picture_settings_aspect_ratio_cinema_14_9
break;
default:
break;
}
break;
case 1: // analog group
switch (aspectRatio) {
case AUTO:
index = 0; // tv_menu_picture_settings_aspect_ratio_auto
break;
case NORMAL_4_3:
index = 1; // tv_menu_picture_settings_aspect_ratio_normal_4_3
break;
case ZOOM_14_9:
index = 2; // tv_menu_picture_settings_aspect_ratio_zoom_14_9
break;
case PANORAMA:
index = 3; // tv_menu_picture_settings_aspect_ratio_panorama
break;
case LETTERBOX:
index = 4; // tv_menu_picture_settings_aspect_ratio_letterbox
break;
case CINEMA_16_9:
index = 5; // tv_menu_picture_settings_aspect_ratio_cinema_16_9
break;
case CINEMA_14_9:
index = 6; // tv_menu_picture_settings_aspect_ratio_cinema_14_9
break;
default:
break;
}
break;
case 2: // vga group
switch (aspectRatio) {
case NORMAL_4_3:
index = 0; // tv_menu_picture_settings_aspect_ratio_normal_4_3
break;
case CINEMA_16_9:
index = 1; // tv_menu_picture_settings_aspect_ratio_cinema_16_9
break;
default:
break;
}
break;
}
return index;
}
private String currentFormatToString(AspectRatioMode format) {
Log.d(TAG, "currentFormatToString: format[" + format + "]");
switch (format.getValue()) {
case 0:
return MainActivity.activity.getResources().getString(
R.string.tv_menu_picture_settings_aspect_ratio_auto);
case 1:
return MainActivity.activity.getResources().getString(
R.string.tv_menu_picture_settings_aspect_ratio_full);
case 2:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_cinema_16_9);
case 3:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_cinema_14_9);
case 4:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_normal_4_3);
case 5:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_zoom_14_9);
case 6:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_panorama);
case 7:
return MainActivity.activity
.getResources()
.getString(
R.string.tv_menu_picture_settings_aspect_ratio_letterbox);
default:
return "Unknown";
}
}
public static int getCurrentInputTypeGroup(int displayID) {
Content content = null;
try {
content = MainActivity.service.getContentListControl()
.getActiveContent(displayID);
} catch (Exception e) {
e.printStackTrace();
}
if (content != null) {
Log.d(TAG, "filterType[" + content.getFilterType() + "] index["
+ content.getIndex() + "]");
if (content instanceof ServiceContent) {
switch (content.getSourceType()) {
case TER:
case CAB:
case SAT:
return DigitalInputTypeGroup;
case ANALOG:
return AnalogInputTypeGroup;
}
} else
switch (content.getFilterType()) {
case FilterType.INPUTS:
int index = content.getIndex();
switch (index) {
case 3: // VGA,
return VGAInputTypeGroup;
case 5: // HDMI
case 6: // HDMI
case 7: // HDMI
case 8: // HDMI
// D/PictureSettingsDialog( 1539):
// filterType[18]
// index[5,6,7,8]
return DigitalInputTypeGroup;
case 4: // Component
// PictureSettingsDialog( 1539): filterType[18]
// index[4]
return DigitalInputTypeGroup;
case 2: // CVBS(composite)
// case SCART:????
return AnalogInputTypeGroup;
}
break;
default:
break;
}
}
Log.d(TAG,
"getCurrentInputTypeGroup return default group for display id["
+ displayID + "].");
return DigitalInputTypeGroup;
}
}