package com.wifiafterconnect; import java.util.ArrayList; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import com.wifiafterconnect.html.HtmlInput; public class EditCredentialsActivity extends FragmentActivity { private WifiAuthParams authParams; private CheckBox checkSavePassword = null; private TableLayout fieldsTable = null; private ArrayList<View> edits = new ArrayList<View>(); private String authHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.wifi_auth_edit_layout); Intent intent = getIntent(); WifiAuthDatabase wifiDb = WifiAuthDatabase.getInstance(this); long siteId = intent.getIntExtra(WifiAuthenticator.OPTION_SITE_ID, -1); authParams = wifiDb.getAuthParams (siteId); fieldsTable = (TableLayout)findViewById(R.id.fieldsTableLayout); fieldsTable.removeAllViews(); edits.clear(); Log.d(Constants.TAG, "Adding controls..."); HtmlInput passwordField = authParams.getFieldByType(HtmlInput.TYPE_PASSWORD); for (HtmlInput i : authParams.getFields()) { if (i != passwordField) addField (i); } checkSavePassword = (CheckBox)findViewById(R.id.checkSavePassword); if (passwordField != null) addField (passwordField); else if (checkSavePassword != null) { checkSavePassword.setVisibility (View.GONE); checkSavePassword = null; } } private void onSaveClick(View v) { for (View ev : edits) view2Params(ev); WifiAuthDatabase.getInstance(this).storeAuthParams (authHost, authParams); } private void view2Params (View v) { if (v instanceof EditText && authParams != null) { EditText edit = (EditText)v; String tag = (String) v.getTag(); HtmlInput field = authParams.getField (tag); if (field != null) field.setValue(edit.getText().toString().trim()); } } private void addField (HtmlInput field) { Log.d(Constants.TAG, "adding ["+field.getName() + "], type = [" + field.getType()+"]"); TextView labelView = new TextView(this); labelView.setText(field.getName()); int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, (float) 8, getResources().getDisplayMetrics()); labelView.setTextSize (textSize); EditText editView = new EditText(this); editView.setInputType(field.getAndroidInputType()); editView.setText (field.getValue()); editView.setTag(field.getName()); editView.setFocusable (true); edits.add(editView); editView.setOnEditorActionListener(new EditText.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { onSaveClick(v); } return false; } }); TableRow row = new TableRow (this); fieldsTable.addView (row, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,TableLayout.LayoutParams.WRAP_CONTENT)); TableRow.LayoutParams labelLayout = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT); int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 5, getResources().getDisplayMetrics()); labelLayout.setMargins(margin, margin, margin, margin); row.addView(labelView, labelLayout); TableRow.LayoutParams editLayout = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.WRAP_CONTENT); row.addView(editView, editLayout); } }