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.enums.NetworkType; import com.iwedia.comm.system.INetworkSettings; 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.components.A4TVLoginDialog; import com.iwedia.gui.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.util.ArrayList; /** * Wireless network settings dialog * * @author Mladen Ilic */ public class NetworkWirelessSettingsDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for buttons */ public static final int TV_MENU_NETWORK_WIRELESS_SETTINGS_FIND_AP = 4440, TV_MENU_NETWORK_WIRELESS_SETTINGS_MANUAL_ADD_AP = 4441, TV_MENU_NETWORK_WIRELESS_SETTINGS_WPS_CONFIG = 4442, TV_MENU_NETWORK_WIRELESS_SETTINGS_TURN_ON_OFF = 4445; // 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 btnFindAP, btnManualAddAP, btnWPSConfig; private A4TVButtonSwitch btnOnOff; private INetworkSettings networkSettings; private A4TVLoginDialog loginDialog; private A4TVEditText editText1, editText2; private Context ctx; public NetworkWirelessSettingsDialog(Context context) { super(context, checkTheme(context), 0); ctx = context; // fill lists returnArrayListsWithDialogContents(contentList, contentListIDs, titleIDs); // set content to dialog fillDialog(); // set attributes setDialogAttributes(); init(); } @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; } /** Init views in dialog */ private void init() { btnFindAP = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRELESS_SETTINGS_FIND_AP); btnManualAddAP = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRELESS_SETTINGS_MANUAL_ADD_AP); btnWPSConfig = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRELESS_SETTINGS_WPS_CONFIG); btnOnOff = (A4TVButtonSwitch) findViewById(TV_MENU_NETWORK_WIRELESS_SETTINGS_TURN_ON_OFF); loginDialog = new A4TVLoginDialog(ctx, true); loginDialog.setCancelable(false); loginDialog.setNegativeButton(R.string.button_text_cancel, new android.view.View.OnClickListener() { @Override public void onClick(View v) { loginDialog.cancel(); } }); } @Override public void show() { fillViews(); super.show(); } @Override public void onBackPressed() { NetworkSettingsDialog netSettDialog = MainActivity.activity .getDialogManager().getNetworkSettingsDialog(); if (netSettDialog != null) { netSettDialog.fillViews(); } super.onBackPressed(); } private void fillViews() { networkSettings = null; try { networkSettings = MainActivity.service.getSystemControl() .getNetworkControl(); } catch (Exception e) { e.printStackTrace(); } if (networkSettings != null) { int networkType = NetworkType.UNDEFINED; try { networkType = networkSettings.getActiveNetworkType(); } catch (Exception e) { e.printStackTrace(); } if (networkType == NetworkType.WIRELESS) { btnOnOff.setSelectedStateAndText(true, R.string.button_text_yes); btnFindAP.setClickable(true); btnManualAddAP.setClickable(true); btnWPSConfig.setClickable(true); } else { btnOnOff.setSelectedStateAndText(false, R.string.button_text_no); btnFindAP.setClickable(false); btnManualAddAP.setClickable(false); btnWPSConfig.setClickable(false); } } } @Override public void onClick(View v) { switch (v.getId()) { case TV_MENU_NETWORK_WIRELESS_SETTINGS_TURN_ON_OFF: { if (v.isSelected()) { ((A4TVButtonSwitch) v).setSelectedStateAndText(false, R.string.button_text_no); btnFindAP.setClickable(false); btnManualAddAP.setClickable(false); btnWPSConfig.setClickable(false); try { if (networkSettings != null) networkSettings .setActiveNetworkType(NetworkType.ETHERNET); } catch (RemoteException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } else { ((A4TVButtonSwitch) v).setSelectedStateAndText(true, R.string.button_text_yes); networkSettings = null; try { networkSettings = MainActivity.service .getSystemControl().getNetworkControl(); } catch (Exception e) { e.printStackTrace(); } try { if (networkSettings != null) networkSettings .setActiveNetworkType(NetworkType.WIRELESS); } catch (RemoteException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } btnFindAP.setClickable(true); btnManualAddAP.setClickable(true); btnWPSConfig.setClickable(true); } break; } case TV_MENU_NETWORK_WIRELESS_SETTINGS_FIND_AP: { NetworkWirelessFindAPDialog netWirelessFindApDialog = MainActivity.activity .getDialogManager().getNetworkWirelessFindAPDialog(); if (netWirelessFindApDialog != null) { netWirelessFindApDialog.show(); } break; } case TV_MENU_NETWORK_WIRELESS_SETTINGS_MANUAL_ADD_AP: { NetworkWirelessAddHiddenNetworkDialog netWirelessAddHiddenDialog = MainActivity.activity .getDialogManager() .getNetworkWirelessAddHiddenNetworkDialog(); if (netWirelessAddHiddenDialog != null) { netWirelessAddHiddenDialog.show(); } break; } case TV_MENU_NETWORK_WIRELESS_SETTINGS_WPS_CONFIG: { NetworkWirelessWPSConfigDialog netWirelessWPSDialog = MainActivity.activity .getDialogManager().getNetworkWirelessWPSConfigDialog(); if (netWirelessWPSDialog != null) { netWirelessWPSDialog.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(R.drawable.settings_icon); titleIDs.add(R.string.tv_menu_network_wireless_settings); // no operation off****************************************** ArrayList<Integer> 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_network_settings_wireless); list.add(TV_MENU_NETWORK_WIRELESS_SETTINGS_TURN_ON_OFF); contentListIDs.add(list); // network type****************************************** 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_network_wireless_settings_networks); list.add(TV_MENU_NETWORK_WIRELESS_SETTINGS_FIND_AP); contentListIDs.add(list); 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_network_wireless_settings_add_wireless_network); list.add(TV_MENU_NETWORK_WIRELESS_SETTINGS_MANUAL_ADD_AP); contentListIDs.add(list); 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_network_wireless_wps_config); list.add(TV_MENU_NETWORK_WIRELESS_SETTINGS_WPS_CONFIG); contentListIDs.add(list); } }