package com.iwedia.gui.components.dialogs;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.RemoteException;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import com.iwedia.comm.enums.WirelessState;
import com.iwedia.comm.system.INetworkSettings;
import com.iwedia.comm.system.WifiAddHiddenNetwork;
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.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import java.util.ArrayList;
/**
* Wireless network add hidden network dialog
*
* @author Mladen Ilic
*/
public class NetworkWirelessAddHiddenNetworkDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener {
/** IDs for buttons */
public static final int TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_ADD = 7788;
/** IDs for spinner */
public static final int TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SECURITY = 7777;
/** IDs for edit text in this dialog */
public static final int TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SSID = 7755,
TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_PASSWORD = 7756;
// 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 buttonAddNetwork;
private A4TVSpinner spinnerSelectSecurity;
private A4TVToast toastHiddenSSID;
private Context ctx;
private WifiAddHiddenNetwork configureNetwork;
private String password = "";
private String SSID = "";
private INetworkSettings networkSettings;
public NetworkWirelessAddHiddenNetworkDialog(Context context) {
super(context, checkTheme(context), 0);
ctx = context;
configureNetwork = new WifiAddHiddenNetwork();
// 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() {
buttonAddNetwork = (A4TVButton) findViewById(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_ADD);
spinnerSelectSecurity = (A4TVSpinner) findViewById(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SECURITY);
buttonAddNetwork.setClickable(false);
toastHiddenSSID = new A4TVToast(ctx);
((EditText) findViewById(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SSID))
.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
SSID = s.toString();
configureNetwork.setSSID(SSID);
buttonAddNetwork.setClickable(true);
} else {
buttonAddNetwork.setClickable(false);
}
}
});
((EditText) findViewById(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_PASSWORD))
.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
password = s.toString();
configureNetwork.setPassword(password);
}
});
}
@Override
public void show() {
setViews();
super.show();
}
/** Get informations from service and display it */
private void setViews() {
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public void cancel() {
super.cancel();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_ADD: {
int choosenSecurity;
networkSettings = null;
try {
networkSettings = MainActivity.service.getSystemControl()
.getNetworkControl();
} catch (Exception e) {
e.printStackTrace();
}
choosenSecurity = spinnerSelectSecurity.getCHOOSEN_ITEM_INDEX();
if (choosenSecurity == 0) {
configureNetwork.setCapabilities("NONE");
} else if (choosenSecurity == 1) {
configureNetwork.setCapabilities("WEP");
} else {
configureNetwork.setCapabilities("WPA PSK");
}
try {
if (networkSettings != null) {
networkSettings
.setHiddenWirelessNetwork(configureNetwork);
}
} 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;
}
public void wirelessNetworksChanged(int state) {
if (this.isShowing()) {
switch (state) {
case WirelessState.WIRELESS_STATE_CONNECTED: {
MainActivity.activity.runOnUiThread(new Runnable() {
@Override
public void run() {
toastHiddenSSID.showToast("Connected to " + SSID);
}
});
break;
}
case WirelessState.WIRELESS_STATE_FAILED: {
MainActivity.activity.runOnUiThread(new Runnable() {
@Override
public void run() {
toastHiddenSSID.showToast("Failed to connect to "
+ SSID);
}
});
break;
}
case WirelessState.WIRELESS_STATE_PASSWORD_INCORRECT: {
MainActivity.activity.runOnUiThread(new Runnable() {
@Override
public void run() {
toastHiddenSSID.showToast("Bad parameters " + SSID);
}
});
break;
}
default:
break;
}
}
}
/**
* 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_wireless_add_hidden_network);
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_wireless_add_hidden_network_ssid);
list.add(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SSID);
contentListIDs.add(list);
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_wireless_add_hidden_network_security);
list.add(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_SECURITY);
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_wireless_add_hidden_network_password);
list.add(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_PASSWORD);
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_add_hidden_network_add_none);
list.add(TV_MENU_NETWORK_WIRELESS_ADD_HIDDEN_NETWORK_ADD);
contentListIDs.add(list);
}
}