package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.PowerManager;
import android.util.Log;
import android.view.View;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVButtonSwitch;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVSpinner;
import com.iwedia.gui.components.A4TVSpinner.OnSelectA4TVSpinnerListener;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import com.iwedia.gui.osd.OSDGlobal;
import java.util.ArrayList;
/**
* s Picture settings dialog
*
* @author Branimir Pavlovic
*/
public class OSDSelectionDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener, OSDGlobal {
/** IDs for spinners in this dialog */
public static final int CURL_ENABLED_ID = 3001;
public static final int CURL_TIME_DELAY_SPINNER = 3002;
public static final int CURL_ON_OFF = 3003;
private PowerManager pm = null;
// 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>();
/** Possible delay time values */
public static int[] delayTimeValues = { 3, 5, 10, 15, 20 };
private A4TVSpinner spinnerOsdSelection;
private A4TVSpinner spinnerCurlDelay;
private A4TVButtonSwitch buttonSwitchCurl;
public OSDSelectionDialog(Context context) {
super(context, checkTheme(context), 0);
pm = (PowerManager) MainActivity.activity
.getSystemService(Context.POWER_SERVICE);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
// set initial views
fillInitialViews();
}
@Override
public void show() {
// fill initial
fillViews();
super.show();
findViewById(R.string.tv_settings_menu_osd_selection).requestFocus();
}
/** Initially set up views */
private void fillInitialViews() {
spinnerOsdSelection = (A4TVSpinner) OSDSelectionDialog.this
.findViewById(CURL_ENABLED_ID);
/*************** Get references of views *************/
spinnerCurlDelay = (A4TVSpinner) OSDSelectionDialog.this
.findViewById(CURL_TIME_DELAY_SPINNER);
// Get stored curl animation time
int curlAnimationTime = MainActivity.sharedPrefs.getInt(
MainActivity.CURL_ANIMATION_TIME_INFO, 5000) / 1000;
int spinnerIndex = 0;
// Find index in spinner
for (int i = 0; i < delayTimeValues.length; i++) {
if (curlAnimationTime == delayTimeValues[i]) {
spinnerIndex = i;
break;
}
}
spinnerCurlDelay.setSelection(spinnerIndex);
spinnerCurlDelay
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
int newTime = OSDSelectionDialog.delayTimeValues[index];
// Store to prefs
MainActivity.sharedPrefs
.edit()
.putInt(MainActivity.CURL_ANIMATION_TIME_INFO,
newTime * 1000).commit();
// Set new animation time
MainActivity.activity.getPageCurl()
.setAnimationTimeChannelInfo(newTime * 1000);
A4TVToast toast = new A4TVToast(getContext());
toast.showToast(R.string.tv_menu_picture_settings_curl_settings_delay_time_updated);
}
});
// //////////////////////////////////////////////
// Curl on off
// //////////////////////////////////////////////
buttonSwitchCurl = (A4TVButtonSwitch) OSDSelectionDialog.this
.findViewById(CURL_ON_OFF);
spinnerOsdSelection
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
Log.d(TAG,
"spinnerAnalogOutputMode onClick choosenItemIndex="
+ index);
Log.d("STOP", "spinner onClick choosenItemIndex="
+ index);
MainActivity.sharedPrefs.edit()
.putInt(MainActivity.OSD_SELECTION, index)
.commit();
MainActivity.activity.initPageCurl();
setBackgroundView(index, false);
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
private void setBackgroundView(int choosenItemIndex, boolean firstOpened) {
A4TVToast toast = new A4TVToast(getContext());
if (choosenItemIndex == 0) {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_curl_settings_delay_time,
DisplayMode.SHOW);
setLayoutDisplayMode(R.string.curl_effect_on_off, DisplayMode.SHOW);
/*
* findViewById(
* R.string.tv_menu_picture_settings_curl_settings_delay_time)
* .setBackgroundColor(Color.TRANSPARENT);
* findViewById(R.string.curl_effect_on_off).setBackgroundColor(
* Color.TRANSPARENT); spinnerCurlDelay.setEnabled(true);
* buttonSwitchCurl.setEnabled(true);
* spinnerCurlDelay.setFocusable(true);
* buttonSwitchCurl.setFocusable(true);
*/
if (!firstOpened) {
toast.showToast(R.string.curl_view_enabled_success);
}
} else {
setLayoutDisplayMode(
R.string.tv_menu_picture_settings_curl_settings_delay_time,
DisplayMode.DISABLE);
setLayoutDisplayMode(R.string.curl_effect_on_off,
DisplayMode.DISABLE);
/*
* findViewById(
* R.string.tv_menu_picture_settings_curl_settings_delay_time)
* .setBackgroundColor(Color.GRAY);
* findViewById(R.string.curl_effect_on_off).setBackgroundColor(
* Color.GRAY); spinnerCurlDelay.setEnabled(false);
* buttonSwitchCurl.setEnabled(false);
* spinnerCurlDelay.setFocusable(false);
* buttonSwitchCurl.setFocusable(false);
*/
if (!firstOpened) {
if (choosenItemIndex == 1) {
toast.showToast(R.string.info_banner_enabled_success);
} else {
toast.showToast(R.string.spinner_item_osd_selection_none);
}
}
}
}
private void fillViews() {
int osdSelection = MainActivity.sharedPrefs.getInt(
MainActivity.OSD_SELECTION, 0);
setBackgroundView(osdSelection, true);
spinnerOsdSelection.setSelection(osdSelection);
boolean isAnimEnabled = MainActivity.sharedPrefs.getBoolean(
MainActivity.CURL_ANIMATION_ON_OFF, true);
buttonSwitchCurl.setSelectedStateAndText(isAnimEnabled,
isAnimEnabled ? R.string.button_text_on
: R.string.button_text_off);
}
@Override
public void fillDialog() {
View view = DialogManager.dialogCreator.fillDialogWithContents(
contentList, contentListIDs, titleIDs, null, 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(final View v) {
int id = v.getId();
switch (id) {
/*
* case CURL_ENABLED_ID: { buttonCurlEnabled.setSelectedStateAndText(!v
* .isSelected(), !v.isSelected() ? R.string.button_text_on :
* R.string.button_text_off); MainActivity.sharedPrefs .edit()
* .putBoolean(MainActivity.CURL_ENABLED, v.isSelected()).commit();
* MainActivity.sharedPrefs.edit() .putInt(MainActivity.OSD_SELECTION,
* newTime * 1000) .commit(); MainActivity.activity.initPageCurl();
* A4TVToast toast = new A4TVToast(getContext());
* toast.showToast(R.string.curl_enabled_success); break; }
*/
case CURL_ON_OFF: {
buttonSwitchCurl.setSelectedStateAndText(!v.isSelected(), !v
.isSelected() ? R.string.button_text_on
: R.string.button_text_off);
MainActivity.sharedPrefs
.edit()
.putBoolean(MainActivity.CURL_ANIMATION_ON_OFF,
v.isSelected()).commit();
break;
}
default:
break;
}
}
@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.tv_menu_icon);
titleIDs.add(R.drawable.osd_selection_icon);
titleIDs.add(R.string.tv_settings_menu_osd_selection);
ArrayList<Integer> list;
// curl enabled******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.tv_settings_menu_osd_selection);
list.add(CURL_ENABLED_ID);
contentListIDs.add(list);
// curl time delay******************************************
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_curl_settings_delay_time);
list.add(CURL_TIME_DELAY_SPINNER);
contentListIDs.add(list);
// curl on off******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButtonSwitch);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(R.string.curl_effect_on_off);
list.add(CURL_ON_OFF);
contentListIDs.add(list);
}
}