package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.view.View;
import com.iwedia.comm.ISubtitleControl;
import com.iwedia.dtv.subtitle.SubtitleMode;
import com.iwedia.dtv.subtitle.SubtitleType;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.components.A4TVButton;
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.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import java.util.ArrayList;
/**
* Subtitle settings dialog
*
* @author Branimir Pavlovic
*/
public class SubtitleSettingsDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener {
/** IDs for buttons */
// public static final int tv_menu_subtitle_settings_subtitle_mode = 6;
public static final int TV_MENU_SUBTITLE_SETTINGS_ON_OFF = 6;
/** IDs for spinners */
public static final int TV_MENU_SUBTITLE_SETTINGS_TELETEXT_LANGUAGE = 16,
TV_MENU_SUBTITLE_SETTINGS_EPG_LANGUAGE = 17,
TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_FIRST_LANGUAGE = 18,
TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_SECOND_LANGUAGE = 666,
TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_MODE = 328,
TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_TYPE = 841;
/** IDs for buttons */
public static final int TV_MENU_SUBTITLE_SETTINGS_SET_DEFAULT_SETTINGS = 1;
// 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 A4TVButtonSwitch subtitlesEnabledSwitch;
private A4TVSpinner subtitleFirst, subtitleSecond, subtitleMode,
subtitleType;
private A4TVButton buttonSetDefaultSettings;
public SubtitleSettingsDialog(Context context) {
super(context, checkTheme(context), 0);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
// just init views
subtitlesEnabledSwitch = (A4TVButtonSwitch) findViewById(TV_MENU_SUBTITLE_SETTINGS_ON_OFF);
subtitleFirst = (A4TVSpinner) findViewById(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_FIRST_LANGUAGE);
subtitleSecond = (A4TVSpinner) findViewById(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_SECOND_LANGUAGE);
subtitleMode = (A4TVSpinner) findViewById(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_MODE);
subtitleType = (A4TVSpinner) findViewById(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_TYPE);
buttonSetDefaultSettings = (A4TVButton) findViewById(TV_MENU_SUBTITLE_SETTINGS_SET_DEFAULT_SETTINGS);
buttonSetDefaultSettings
.setText(com.iwedia.gui.R.string.button_text_ok);
// set listeners for spinner
subtitleFirst
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
try {
MainActivity.service.getSubtitleControl()
.setFirstSubtitleLanguage(index);
} catch (Exception e) {
e.printStackTrace();
}
}
});
subtitleSecond
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
try {
MainActivity.service.getSubtitleControl()
.setSecondSubtitleLanguage(index);
} catch (Exception e) {
e.printStackTrace();
}
}
});
subtitleMode
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
try {
MainActivity.service.getSubtitleControl()
.setSubtitleMode(
SubtitleMode.values()[index]);
} catch (Exception e) {
e.printStackTrace();
}
}
});
subtitleType
.setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() {
@Override
public void onSelect(A4TVSpinner spinner, int index,
String[] contents) {
try {
MainActivity.service.getSubtitleControl()
.setSubtitleType(
SubtitleType.values()[index]);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public void show() {
fillViews();
super.show();
}
private void fillViews() {
ISubtitleControl subtitleControl = null;
try {
subtitleControl = MainActivity.service.getSubtitleControl();
} catch (Exception e) {
e.printStackTrace();
}
if (subtitleControl != null) {
boolean subState = false;
try {
subState = subtitleControl.getSubtitleEnabled();
} catch (Exception e) {
e.printStackTrace();
}
if (subState) {
subtitlesEnabledSwitch.setSelectedStateAndText(true,
com.iwedia.gui.R.string.button_text_on);
} else {
subtitlesEnabledSwitch.setSelectedStateAndText(false,
com.iwedia.gui.R.string.button_text_off);
}
/*********************** FIRST SUBTITLE LANGUAGE **************************/
int first = 0;
try {
first = subtitleControl.getFirstSubtitleLanguage();
} catch (Exception e) {
e.printStackTrace();
}
subtitleFirst.setSelection(first);
/*********************** SECOND SUBTITLE LANGUAGE **************************/
int second = 0;
try {
second = subtitleControl.getSecondSubtitleLanguage();
} catch (Exception e) {
e.printStackTrace();
}
subtitleSecond.setSelection(second);
/*********************** SUBTITLE MODE **************************/
int mode = 0;
try {
mode = subtitleControl.getSubtitleMode().getValue();
} catch (Exception e) {
e.printStackTrace();
}
subtitleMode.setSelection(mode);
/*********************** SUBTITLE TYPE **************************/
int type = 0;
try {
type = subtitleControl.getSubtitleType().getValue();
} catch (Exception e) {
e.printStackTrace();
}
subtitleType.setSelection(type);
}
}
@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[] { com.iwedia.gui.R.attr.A4TVDialog });
int i = atts.getResourceId(0, 0);
atts.recycle();
return i;
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case TV_MENU_SUBTITLE_SETTINGS_ON_OFF: {
if (subtitlesEnabledSwitch.isSelected()) {
try {
ISubtitleControl subtitleControl = MainActivity.service
.getSubtitleControl();
subtitleControl.setSubtitleEnabled(false);
subtitleControl.hide();
subtitlesEnabledSwitch.setSelectedStateAndText(false,
com.iwedia.gui.R.string.button_text_off);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
ISubtitleControl subtitleControl = MainActivity.service
.getSubtitleControl();
subtitleControl.setSubtitleEnabled(true);
int trackCount = subtitleControl
.getSubtitleTrackCount();
if (trackCount > 0) {
if (subtitleControl.getCurrentSubtitleTrackIndex() == -1) {
int i, index = -1;
String trackLanguage;
String firstSubtitleLanguage = MainActivity.service
.getSetupControl()
.getLanguageName(
subtitleControl
.getFirstSubtitleLanguage());
String secondSubtitleLanguage = MainActivity.service
.getSetupControl()
.getLanguageName(
subtitleControl
.getSecondSubtitleLanguage());
for (i = 0; i < trackCount; i++) {
trackLanguage = subtitleControl
.getSubtitleTrack(i);
if (trackLanguage
.equals(firstSubtitleLanguage)) {
index = i;
break;
} else if (trackLanguage
.equals(secondSubtitleLanguage)) {
index = i;
}
}
if (index != -1) {
subtitleControl
.setCurrentSubtitleTrack(index);
} else {
subtitleControl.setCurrentSubtitleTrack(0);
}
}
}
subtitlesEnabledSwitch.setSelectedStateAndText(true,
com.iwedia.gui.R.string.button_text_on);
} catch (Exception e) {
e.printStackTrace();
}
}
break;
}
case TV_MENU_SUBTITLE_SETTINGS_SET_DEFAULT_SETTINGS: {
try {
ISubtitleControl subtitleControl = MainActivity.service
.getSubtitleControl();
subtitleControl.resetSubtitleSettings();
} catch (Exception e) {
e.printStackTrace();
}
this.show();
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(com.iwedia.gui.R.drawable.settings_icon);
titleIDs.add(com.iwedia.gui.R.drawable.tv_menu_icon);
titleIDs.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings);
// subtitle mode******************************************
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButtonSwitch);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings_subtitle_enabled);
list.add(TV_MENU_SUBTITLE_SETTINGS_ON_OFF);
contentListIDs.add(list);
// subtitle language******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings_subtitle_language);
list.add(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_FIRST_LANGUAGE);
contentListIDs.add(list);
// subtitle second language******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings_subtitle_second_language);
list.add(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_SECOND_LANGUAGE);
contentListIDs.add(list);
// subtitle mode******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings_subtitle_mode);
list.add(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_MODE);
contentListIDs.add(list);
// subtitle type******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVSpinner);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_subtitle_settings_subtitle_type);
list.add(TV_MENU_SUBTITLE_SETTINGS_SUBTITLE_TYPE);
contentListIDs.add(list);
// subtitle set default settings
// ******************************************
list = new ArrayList<Integer>();
list.add(MainMenuContent.TAGA4TVTextView);
list.add(MainMenuContent.TAGA4TVButton);
contentList.add(list);
list = new ArrayList<Integer>();
list.add(com.iwedia.gui.R.string.tv_menu_sound_settings_set_default_settings);
list.add(TV_MENU_SUBTITLE_SETTINGS_SET_DEFAULT_SETTINGS);
contentListIDs.add(list);
}
}