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.KeyEvent; import android.view.View; import com.iwedia.comm.enums.FontScale; 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.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.listeners.MainKeyListener; import com.iwedia.gui.mainmenu.DialogCreatorClass; import com.iwedia.gui.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.util.ArrayList; /** * Language and keyboard dialog * * @author Branimir Pavlovic */ public class LanguageAndKeyboardDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for spinner */ public static final int TV_MENU_LANGUAGE_SETTINGS_SELECT_LANGUAGE = 6, TV_MENU_LANGUAGE_SETTINGS_SELECT_COUNTRY = 7, TV_MENU_LANGUAGE_SETTINGS_AUDIO_LANGUAGEa = 8, TV_MENU_LANGUAGE_SETTINGS_TEXT_SIZE = 56; /** IDs for buttons */ public static final int TV_MENU_LANGUAGE_SETTINGS_KEYBOARD_SETTINGS = 25, FIRST_TIME_INSTALL_NEXT_BUTTON = 34; // 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 buttonFirstInstallNext; private A4TVSpinner mSpinnerTextSize, mSpinnerSelectCountry, mSpinnerSelectLanguage; public LanguageAndKeyboardDialog(final Context context) { super(context, checkTheme(context), 0); // fill lists returnArrayListsWithDialogContents(contentList, contentListIDs, titleIDs); // set content to dialog fillDialog(); // set attributes setDialogAttributes(); // find spinners mSpinnerTextSize = ((A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_TEXT_SIZE)); mSpinnerSelectCountry = ((A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_SELECT_COUNTRY)); mSpinnerSelectLanguage = (A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_SELECT_LANGUAGE); // set listeners mSpinnerTextSize .setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() { @Override public void onSelect(A4TVSpinner spinner, final int index, String[] contents) { Log.d(TAG, "Choosen from text size: " + contents[index]); MainActivity.stopVideoOnPauseAndReturnMenuToUser = false; A4TVToast toast = new A4TVToast(context); toast.showToast(R.string.app_recreate); Handler delay = new Handler(); delay.postDelayed(new Runnable() { public void run() { switch (index) { case 0: { try { MainActivity.service .getSystemControl() .getLanguageAndKeyboardControl() .setFontScale( FontScale.SMALL); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } break; } case 1: { try { MainActivity.service .getSystemControl() .getLanguageAndKeyboardControl() .setFontScale( FontScale.NORMAL); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } break; } case 2: { try { MainActivity.service .getSystemControl() .getLanguageAndKeyboardControl() .setFontScale( FontScale.LARGE); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } break; } case 3: { try { MainActivity.service .getSystemControl() .getLanguageAndKeyboardControl() .setFontScale( FontScale.HUGE); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } break; } default: break; } } }, 500); } }); mSpinnerSelectCountry .setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() { @Override public void onSelect(A4TVSpinner spinner, int index, String[] contents) { Log.d(TAG, "Choosen from select country: " + contents[index] + ", INDEX: " + index); try { MainActivity.service.getSetupControl().setCountry( index); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } } }); mSpinnerSelectLanguage .setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() { @Override public void onSelect(A4TVSpinner spinner, int index, String[] contents) { Log.d(TAG, "Choosen from select language: " + contents[index]); // //////////////////////////////// // Veljko Ilkic // //////////////////////////////// MainActivity.stopVideoOnPauseAndReturnMenuToUser = false; // //////////////////////////////// // Veljko Ilkic // //////////////////////////////// A4TVToast toast = new A4TVToast(context); toast.showToast(R.string.app_recreate); Handler delay = new Handler(); final String optionText = contents[index]; delay.postDelayed(new Runnable() { @Override public void run() { try { MainActivity.service.getSystemControl() .getLanguageAndKeyboardControl() .setActiveLanguage(optionText); if (MainActivity.isInFirstTimeInstall) { MainActivity.sharedPrefs .edit() .putBoolean( MainActivity.IS_FIRST_TIME_LOADED_FOR_LANGUAGE_CHANGE, true).commit(); } // return state to clean screen MainKeyListener .setAppState(MainKeyListener.CLEAN_SCREEN); } catch (RemoteException e) { e.printStackTrace(); } catch (RuntimeException e) { e.printStackTrace(); } } }, 500); } }); } @Override public void show() { init(); setInitialViews(); super.show(); } @Override public void onBackPressed() { if (MainActivity.isInFirstTimeInstall) { return; } super.onBackPressed(); } private void init() { if (!MainActivity.isInFirstTimeInstall) { // hide first time install next button findViewById(R.string.first_time_install_next).setVisibility( View.GONE); findViewById(DialogCreatorClass.LINES_BASE_ID + 3).setVisibility( View.GONE); } else { 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_language_and_country); } } // hide keyboard settings when app is STB if (!ConfigHandler.TV_FEATURES) { findViewById(R.string.tv_menu_language_settings_keyboard_settings) .setVisibility(View.GONE); findViewById(DialogCreatorClass.LINES_BASE_ID + 2).setVisibility( View.GONE); } } /** Set initial set up of views */ private void setInitialViews() { /************* Select country *************/ int what = 0; try { what = MainActivity.service.getSetupControl().getActiveCountry(); MainActivity.service.getSetupControl().setCountry(what); } catch (Exception e) { e.printStackTrace(); } ((A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_SELECT_COUNTRY)) .setSelection(what); /************* Select language *************/ int indexLanguage = 0; try { indexLanguage = MainActivity.service.getSystemControl() .getLanguageAndKeyboardControl().getActiveLanguageIndex(); } catch (Exception e) { e.printStackTrace(); } ((A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_SELECT_LANGUAGE)) .setSelection(indexLanguage); /************* Text size *************/ float fontScale = 1.0f; try { fontScale = MainActivity.service.getSystemControl() .getLanguageAndKeyboardControl().getActiveFontScale(); } catch (Exception e) { e.printStackTrace(); } int index = 0; if (fontScale == FontScale.NORMAL) { index = 1; } if (fontScale == FontScale.LARGE) { index = 2; } if (fontScale == FontScale.HUGE) { index = 3; } ((A4TVSpinner) findViewById(TV_MENU_LANGUAGE_SETTINGS_TEXT_SIZE)) .setSelection(index); } @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 void onClick(View v) { switch (v.getId()) { case FIRST_TIME_INSTALL_NEXT_BUTTON: { PictureSettingsDialog picSettingsDialog = MainActivity.activity .getDialogManager().getPictureSettingsDialog(); if (picSettingsDialog != null) { picSettingsDialog.show(); } LanguageAndKeyboardDialog.this.cancel(); break; } case TV_MENU_LANGUAGE_SETTINGS_KEYBOARD_SETTINGS: { 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.settings_icon); titleIDs.add(R.string.tv_menu_language_settings_keyboard_settings); // select language****************************************** 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_language_settings_select_language); list.add(TV_MENU_LANGUAGE_SETTINGS_SELECT_LANGUAGE); contentListIDs.add(list); // select country****************************************** 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_language_settings_select_country); list.add(TV_MENU_LANGUAGE_SETTINGS_SELECT_COUNTRY); contentListIDs.add(list); // audio language****************************************** // 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_language_settings_audio_language); // list.add(TV_MENU_LANGUAGE_SETTINGS_AUDIO_LANGUAGE); // contentListIDs.add(list); // keyboard 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_language_settings_keyboard_settings); list.add(TV_MENU_LANGUAGE_SETTINGS_KEYBOARD_SETTINGS); contentListIDs.add(list); // text size****************************************** 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_language_settings_text_size); list.add(TV_MENU_LANGUAGE_SETTINGS_TEXT_SIZE); 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); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MUTE) { if (null != MainActivity.activity.getFirstTimeInstallLayout()) { MainActivity.activity.getFirstTimeInstallLayout() .setVisibility(View.GONE); } MainActivity.getSharedPrefs().edit() .putBoolean(MainActivity.FIRST_TIME_INSTALL, false) .commit(); MainActivity.isInFirstTimeInstall = false; dismiss(); return true; } return super.onKeyDown(keyCode, event); } }