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.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.mainmenu.DialogManager;
import com.iwedia.gui.mainmenu.MainMenuContent;
import java.util.ArrayList;
/**
* Wired network information dialog
*
* @author Mladen Ilic
*/
public class NetworkAdvancedSoftAPDialog extends A4TVDialog implements
A4TVDialogInterface, android.view.View.OnClickListener {
/** IDs for text box */
public static final int TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID = 26,
TV_MENU_NETWORK_ADVANCED_SOFT_AP_PASSWORD = 28;
/** IDs for buttons */
public static final int TV_MENU_NETWORK_ADVANCED_SOFT_AP_START = 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 String SSID;
private String Password;
private Boolean SoftAPState;
private A4TVEditText editSSID;
private A4TVEditText editPassword;
public NetworkAdvancedSoftAPDialog(Context context) {
super(context, checkTheme(context), 0);
// fill lists
returnArrayListsWithDialogContents(contentList, contentListIDs,
titleIDs);
init();
// set content to dialog
fillDialog();
// set attributes
setDialogAttributes();
}
/** Get references from views and set look and feel */
private void init() {
editSSID = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID);
editPassword = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_PASSWORD);
}
@Override
public void show() {
super.show();
}
@Override
public void onBackPressed() {
// clearEditTexts();
super.onBackPressed();
}
private void clearEditTexts() {
A4TVEditText editSSID = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID);
A4TVEditText editPassword = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_PASSWORD);
editSSID.setText("");
editPassword.setText("");
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case TV_MENU_NETWORK_ADVANCED_SOFT_AP_START: {
INetworkSettings networkSettings;
try {
networkSettings = MainActivity.service.getSystemControl()
.getNetworkControl();
SoftAPState = networkSettings.getSoftAPState();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!SoftAPState) {
A4TVEditText editSSID = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID);
A4TVEditText editPassword = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_PASSWORD);
SSID = "" + editSSID.getText();
Password = "" + editPassword.getText();
try {
networkSettings = MainActivity.service
.getSystemControl().getNetworkControl();
networkSettings.startSoftAP(SSID, Password, true);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
A4TVButton startAP = (A4TVButton) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_START);
startAP.setText("Stop");
} else {
A4TVEditText editSSID = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID);
A4TVEditText editPassword = (A4TVEditText) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_PASSWORD);
try {
networkSettings = MainActivity.service
.getSystemControl().getNetworkControl();
networkSettings.startSoftAP(null, null, false);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
A4TVButton startAP = (A4TVButton) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_START);
startAP.setText("Start");
}
}
default:
break;
}
}
@Override
public void fillDialog() {
View view = DialogManager.dialogCreator.fillDialogWithContents(
contentList, contentListIDs, titleIDs, null, this, null);
setContentView(view);
INetworkSettings networkSettings;
try {
networkSettings = MainActivity.service.getSystemControl()
.getNetworkControl();
SoftAPState = networkSettings.getSoftAPState();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (SoftAPState) {
editSSID.setText(SSID);
editPassword.setText(Password);
A4TVButton startAP = (A4TVButton) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_START);
startAP.setText("Stop");
} else {
clearEditTexts();
A4TVButton startAP = (A4TVButton) findViewById(TV_MENU_NETWORK_ADVANCED_SOFT_AP_START);
startAP.setText("Start");
}
}
@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_soft_ap_settings);
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_advanced_soft_ap_ssid);
list.add(TV_MENU_NETWORK_ADVANCED_SOFT_AP_SSID);
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_advanced_soft_ap_password);
list.add(TV_MENU_NETWORK_ADVANCED_SOFT_AP_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.button_text_configure);
list.add(TV_MENU_NETWORK_ADVANCED_SOFT_AP_START);
contentListIDs.add(list);
}
}