package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.res.TypedArray; import android.os.RemoteException; import android.view.View; import com.iwedia.comm.IServiceMode; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.components.A4TVButton; import com.iwedia.gui.components.A4TVButtonSwitch; import com.iwedia.gui.components.A4TVDialog; import com.iwedia.gui.components.A4TVEditText; import com.iwedia.gui.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.util.ArrayList; /** * Product info dialog * * @author Sasa Jagodin */ public class ServiceSoundDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for buttons */ public static final int TV_MENU_SOUND_SETTINGS_VOLUME_FIXED = 1, TV_MENU_SOUND_SETTINGS_COMMIT = 4; /** IDs for edit text in this dialog */ public static final int TV_MENU_SOUND_SETTINGS_MAXIMUM_VOLUME = 2, TV_MENU_SOUND_SETTINGS_VOLUME_FIXED_LEVEL = 3; /** Switch buttons */ private A4TVButtonSwitch volumeFixedButton; private A4TVButton commitButton; private A4TVEditText maxVolumeEdit, fixedLevelEdit; private IServiceMode serviceMode; // 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>(); public ServiceSoundDialog(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() { maxVolumeEdit = (A4TVEditText) findViewById(TV_MENU_SOUND_SETTINGS_MAXIMUM_VOLUME); volumeFixedButton = (A4TVButtonSwitch) findViewById(TV_MENU_SOUND_SETTINGS_VOLUME_FIXED); fixedLevelEdit = (A4TVEditText) findViewById(TV_MENU_SOUND_SETTINGS_VOLUME_FIXED_LEVEL); commitButton = (A4TVButton) findViewById(TV_MENU_SOUND_SETTINGS_COMMIT); } @Override public void show() { setViews(); super.show(); } /** Get informations from service and display it */ private void setViews() { serviceMode = null; commitButton.setText(R.string.button_text_ok); try { serviceMode = MainActivity.service.getServiceMode(); } catch (Exception e) { e.printStackTrace(); } if (serviceMode != null) { String fixedLevelString; int fixedLevel; try { fixedLevel = serviceMode.getVolumeFixedLevel(); if (fixedLevel > 0) { fixedLevelString = String.valueOf(fixedLevel); fixedLevelEdit.setText(fixedLevelString); fixedLevelEdit.setSelection(fixedLevelString.length()); } } catch (Exception e) { e.printStackTrace(); } String maxVolumeString; int maxVolume; try { maxVolume = serviceMode.getMaxVolume(); if (maxVolume > 0) { maxVolumeString = String.valueOf(maxVolume); maxVolumeEdit.setText(maxVolumeString); maxVolumeEdit.setSelection(maxVolumeString.length()); } } catch (Exception e) { e.printStackTrace(); } boolean isVolumeFixed = false; try { isVolumeFixed = serviceMode.getVolumeFixed(); } catch (Exception e) { e.printStackTrace(); } if (isVolumeFixed) { volumeFixedButton.setSelectedStateAndText(true, R.string.button_text_on); } else { volumeFixedButton.setSelectedStateAndText(false, R.string.button_text_off); } } } @Override public void onClick(View v) { switch (v.getId()) { case TV_MENU_SOUND_SETTINGS_VOLUME_FIXED: { if (volumeFixedButton.isSelected()) { try { serviceMode.setVolumeFixed(false); volumeFixedButton.setSelectedStateAndText(false, R.string.button_text_off); } catch (Exception e) { e.printStackTrace(); } } else { try { serviceMode.setVolumeFixed(true); volumeFixedButton.setSelectedStateAndText(true, R.string.button_text_on); } catch (Exception e) { e.printStackTrace(); } } break; } case TV_MENU_SOUND_SETTINGS_COMMIT: { try { /* * if entered volume bigger than max allowed volume set to * max */ if (Integer.valueOf(maxVolumeEdit.getText().toString()) > 100) { maxVolumeEdit.setText("100"); serviceMode.setMaxVolume(100); } else { serviceMode.setMaxVolume(Integer.valueOf(maxVolumeEdit .getText().toString())); } /* * if entered volume bigger than max allowed volume set to * max */ if (Integer.valueOf(fixedLevelEdit.getText().toString()) > 100) { fixedLevelEdit.setText("100"); serviceMode.setVolumeFixedLevel(100); } else { serviceMode.setVolumeFixedLevel(Integer .valueOf(fixedLevelEdit.getText().toString())); } } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; } default: break; } } @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 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_service_mode_menu_sound_settings); ArrayList<Integer> list; // program number****************************************** list = new ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView); list.add(MainMenuContent.TAGA4TVEditText); contentList.add(list); list = new ArrayList<Integer>(); list.add(R.string.tv_menu_service_mode_menu_maximum_volume); list.add(TV_MENU_SOUND_SETTINGS_MAXIMUM_VOLUME); contentListIDs.add(list); // on screen display****************************************** list = new ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView); list.add(MainMenuContent.TAGA4TVButtonSwitch); contentList.add(list); list = new ArrayList<Integer>(); list.add(R.string.tv_menu_service_mode_menu_volume_fixed); list.add(TV_MENU_SOUND_SETTINGS_VOLUME_FIXED); contentListIDs.add(list); // program number****************************************** list = new ArrayList<Integer>(); list.add(MainMenuContent.TAGA4TVTextView); list.add(MainMenuContent.TAGA4TVEditText); contentList.add(list); list = new ArrayList<Integer>(); list.add(R.string.tv_menu_service_mode_menu_volume_fixed_level); list.add(TV_MENU_SOUND_SETTINGS_VOLUME_FIXED_LEVEL); contentListIDs.add(list); // commit ****************************************** 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_service_mode_menu_commit); list.add(TV_MENU_SOUND_SETTINGS_COMMIT); contentListIDs.add(list); } }