package com.iwedia.gui.components.dialogs; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Color; import android.view.View; import com.iwedia.comm.system.about.IAbout; 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.mainmenu.DialogManager; import com.iwedia.gui.mainmenu.MainMenuContent; import java.net.NetworkInterface; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Wired network information dialog * * @author Mladen Ilic */ public class NetworkWiredInformationDialog extends A4TVDialog implements A4TVDialogInterface, android.view.View.OnClickListener { /** IDs for buttons */ public static final int TV_MENU_NETWORK_WIRED_INFORMATION__IP = 26, TV_MENU_NETWORK_WIRED_INFORMATION_NETMASK = 28, TV_MENU_NETWORK_WIRED_INFORMATION_GATEWAY_IP = 29, TV_MENU_NETWORK_WIRED_INFORMATION_DNS1 = 30, TV_MENU_NETWORK_WIRED_INFORMATION_DNS2 = 31; // 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 buttonIP, buttonNetmask, buttonGateway, buttonDNS1, buttonDNS2; public NetworkWiredInformationDialog(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() { buttonIP = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRED_INFORMATION__IP); buttonNetmask = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRED_INFORMATION_NETMASK); buttonGateway = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRED_INFORMATION_GATEWAY_IP); buttonDNS1 = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRED_INFORMATION_DNS1); buttonDNS2 = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRED_INFORMATION_DNS2); /** Set desired states to buttons */ disableBtn(buttonIP); disableBtn(buttonNetmask); disableBtn(buttonGateway); disableBtn(buttonDNS1); disableBtn(buttonDNS2); } /** Disable clicks on buttons and clear background */ private void disableBtn(A4TVButton btn) { btn.setClickable(false); btn.setBackgroundColor(Color.TRANSPARENT); } @Override public void show() { setViews(); super.show(); } /** Get informations from service and display it */ private void setViews() { IAbout about = null; try { about = MainActivity.service.getSystemControl().getAbout(); } catch (Exception e) { e.printStackTrace(); } if (about != null) { /******************************* GATEWAY ADDRESS ***************************/ buttonGateway .setText(R.string.tv_menu_software_upgrade_settings_unavailable); /******************************* NETMASK ADDRESS ***************************/ buttonNetmask .setText(R.string.tv_menu_software_upgrade_settings_unavailable); /********************************* IP ADDRESS ******************************/ String ip = null; try { ip = about.getIPAddress(); } catch (Exception e) { e.printStackTrace(); } if (ip != null && ip.length() != 0) { buttonIP.setText(ip); } else { buttonIP.setText(R.string.tv_menu_software_upgrade_settings_unavailable); } /********************************* DNS1 ADDRESS ******************************/ buttonDNS1 .setText(R.string.tv_menu_software_upgrade_settings_unavailable); /********************************* DNS2 ADDRESS ******************************/ buttonDNS2 .setText(R.string.tv_menu_software_upgrade_settings_unavailable); } } @Override public void onClick(View v) { switch (v.getId()) { 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; } /** * Returns MAC address of the given interface name. Note: requires * <uses-permission android:name="android.permission.INTERNET " /> and * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE " * /> in AndroidManifest.xml * * @param interfaceName * eth0, wlan0 or NULL=use first interface * @return mac address or empty string */ public static String getMACAddress(String interfaceName) { String macaddress = ""; try { List<NetworkInterface> interfaces = Collections .list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { if (interfaceName != null) { if (!intf.getName().equalsIgnoreCase(interfaceName)) { continue; } } byte[] mac = intf.getHardwareAddress(); if (mac == null) { return ""; } StringBuilder buf = new StringBuilder(); for (int idx = 0; idx < mac.length; idx++) { buf.append(String.format("%02X:", mac[idx])); } if (buf.length() > 0) { buf.deleteCharAt(buf.length() - 1); } macaddress = buf.toString(); } } catch (Exception ex) { ex.printStackTrace(); } // for now eat exceptions return macaddress; } @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_wired_info); ArrayList<Integer> 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_wired_info_IP); list.add(TV_MENU_NETWORK_WIRED_INFORMATION__IP); 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_wired_info_netmask); list.add(TV_MENU_NETWORK_WIRED_INFORMATION_NETMASK); 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_wired_info_gateway); list.add(TV_MENU_NETWORK_WIRED_INFORMATION_GATEWAY_IP); 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_wired_dns1); list.add(TV_MENU_NETWORK_WIRED_INFORMATION_DNS1); 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_wired_dns2); list.add(TV_MENU_NETWORK_WIRED_INFORMATION_DNS2); contentListIDs.add(list); } }