package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.res.TypedArray; import android.net.DhcpInfo; import android.view.View; 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.A4TVDialog; import com.iwedia.gui.components.A4TVEditText; 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; /** * Wired network information dialog * * @author Mladen Ilic */ public class NetworkAdvancedManualConfigDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for text box */ public static final int TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_IP = 26, TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_NETWORK_PREFIX_LENGTH = 28, TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_GATEWAY_IP = 29, TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_DNS = 30; /** IDs for buttons */ public static final int TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_START = 31; public static final int TV_MENU_NETWORK_SETTINGS_ADDRESS_TYPE = 68; // 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 A4TVSpinner spinnerAddressType; private A4TVEditText editTextDNS; private A4TVEditText editTextGateway; private A4TVEditText editTextIP; private A4TVEditText editTextNetworkPrefix; private A4TVButton buttonIP, buttonNetmask, buttonGateway, buttonDNS1, buttonDNS2; private int addressType; public int getAddressType() { return addressType; } public void setAddressType(int addressType) { this.addressType = addressType; } public NetworkAdvancedManualConfigDialog(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() { editTextDNS = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_DNS); editTextGateway = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_GATEWAY_IP); editTextIP = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_IP); editTextNetworkPrefix = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_NETWORK_PREFIX_LENGTH); spinnerAddressType = (A4TVSpinner) findViewById(TV_MENU_NETWORK_SETTINGS_ADDRESS_TYPE); spinnerAddressType .setOnSelectA4TVSpinnerListener(new OnSelectA4TVSpinnerListener() { @Override public void onSelect(A4TVSpinner spinner, int index, String[] contents) { if (index == 1) { enableEditTexts(); } else { disableEditTexts(); } } }); } public void fillViews() { INetworkSettings networkSettings; try { networkSettings = MainActivity.service.getSystemControl() .getNetworkControl(); if (networkSettings.isDHCPactive() == true) { spinnerAddressType.setSelection(0); DhcpInfo currentIP = networkSettings.getIP(); editTextIP.setText(intToIp(currentIP.ipAddress)); // TODO: This Should Be Fixed! // editTextNetworkPrefix.setText(String.valueOf(NetworkUtils // .netmaskIntToPrefixLength(currentIP.netmask))); // Temp Fix: editTextNetworkPrefix.setText(""); editTextGateway.setText(intToIp(currentIP.gateway)); editTextDNS.setText(intToIp(currentIP.dns1)); disableEditTexts(); } else { spinnerAddressType.setSelection(1); DhcpInfo currentIP = networkSettings.getIP(); editTextIP.setText(intToIp(currentIP.ipAddress)); // TODO: This Should Be Fixed! // editTextNetworkPrefix.setText(String.valueOf(NetworkUtils // .netmaskIntToPrefixLength(currentIP.netmask))); // Temp Fix: editTextNetworkPrefix.setText(""); editTextGateway.setText(intToIp(currentIP.gateway)); editTextDNS.setText(intToIp(currentIP.dns1)); enableEditTexts(); } } catch (Exception e4) { e4.printStackTrace(); } } private void disableEditTexts() { editTextIP.setFocusable(false); editTextIP.setFocusableInTouchMode(false); editTextIP.setClickable(false); editTextNetworkPrefix.setFocusable(false); editTextNetworkPrefix.setFocusableInTouchMode(false); editTextNetworkPrefix.setClickable(false); editTextGateway.setFocusable(false); editTextGateway.setFocusableInTouchMode(false); editTextGateway.setClickable(false); editTextDNS.setFocusable(false); editTextDNS.setFocusableInTouchMode(false); editTextDNS.setClickable(false); } private void enableEditTexts() { editTextIP.setFocusable(true); editTextIP.setFocusableInTouchMode(true); editTextIP.setClickable(true); editTextNetworkPrefix.setFocusable(true); editTextNetworkPrefix.setFocusableInTouchMode(true); editTextNetworkPrefix.setClickable(true); editTextGateway.setFocusable(true); editTextGateway.setFocusableInTouchMode(true); editTextGateway.setClickable(true); editTextDNS.setFocusable(true); editTextDNS.setFocusableInTouchMode(true); editTextDNS.setClickable(true); } @Override public void show() { fillViews(); super.show(); } @Override public void onBackPressed() { clearEditTexts(); super.onBackPressed(); } private void clearEditTexts() { editTextDNS.setText(""); editTextGateway.setText(""); editTextIP.setText(""); editTextNetworkPrefix.setText(""); } @Override public void onClick(View v) { switch (v.getId()) { case TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_START: { if (spinnerAddressType.getCHOOSEN_ITEM_INDEX() == 1) { try { INetworkSettings networkSettings; networkSettings = MainActivity.service .getSystemControl().getNetworkControl(); networkSettings.setStaticIP("STATIC", "" + editTextIP.getText(), "" + editTextDNS.getText(), "" + editTextGateway.getText(), "" + editTextNetworkPrefix.getText()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { try { INetworkSettings networkSettings; networkSettings = MainActivity.service .getSystemControl().getNetworkControl(); networkSettings.enableDHCP(); } catch (Exception 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_network_advanced_manual_config); // ****************************************** ArrayList<Integer> list = new 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_network_advanced_network_setup_ip_settings); list.add(TV_MENU_NETWORK_SETTINGS_ADDRESS_TYPE); contentListIDs.add(list); // ******************** // ArrayList<Integer> list = new ArrayList<Integer>(); 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_network_wired_info_IP); list.add(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_IP); contentListIDs.add(list); 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_network_wired_info_prefix_length); list.add(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_NETWORK_PREFIX_LENGTH); contentListIDs.add(list); 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_network_wired_info_gateway); list.add(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_GATEWAY_IP); contentListIDs.add(list); 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_network_wired_dns); list.add(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_DNS); 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.button_text_configure); list.add(TV_MENU_NETWORK_ADVANCED_MANUAL_CONFIG_START); contentListIDs.add(list); } public String intToIp(int addr) { return ((addr & 0xFF) + "." + ((addr >>>= 8) & 0xFF) + "." + ((addr >>>= 8) & 0xFF) + "." + ((addr >>>= 8) & 0xFF)); } }