package com.jens.automation2; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.ListView; import android.widget.RadioButton; import android.widget.TableLayout; import android.widget.Toast; import androidx.annotation.NonNull; import com.jens.automation2.Action.Action_Enum; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Map; public class ActivityManageActionTriggerUrl extends Activity { Button bSaveTriggerUrl, bAddHttpParam; EditText etTriggerUrl, etTriggerUrlUsername, etTriggerUrlPassword, etParameterName, etParameterValue; ListView lvTriggerUrlPostParameters; CheckBox chkTriggerUrlUseAuthentication; RadioButton rbTriggerUrlMethodGet, rbTriggerUrlMethodPost; TableLayout tlTriggerUrlAuthentication; ArrayAdapter httpParametersAdapter; private ArrayList httpParamsList = new ArrayList<>(); ArrayAdapter> lvTriggerUrlPostParametersAdapter; public static final String methodGet = "GET"; public static final String methodPost = "POST"; // public static boolean edit = false; // public static Action resultingAction = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Miscellaneous.setDisplayLanguage(this); this.setContentView(R.layout.activity_manage_action_trigger_url); etTriggerUrl = (EditText)findViewById(R.id.etTriggerUrl); etTriggerUrlUsername = (EditText)findViewById(R.id.etTriggerUrlUsername); etTriggerUrlPassword = (EditText)findViewById(R.id.etTriggerUrlPassword); chkTriggerUrlUseAuthentication = (CheckBox)findViewById(R.id.chkTriggerUrlUseAuthentication); lvTriggerUrlPostParameters = (ListView)findViewById(R.id.lvTriggerUrlPostParameters); tlTriggerUrlAuthentication = (TableLayout)findViewById(R.id.tlTriggerUrlAuthentication); bSaveTriggerUrl = (Button)findViewById(R.id.bSaveSpeakText); rbTriggerUrlMethodGet = (RadioButton) findViewById(R.id.rbTriggerUrlMethodGet); rbTriggerUrlMethodPost = (RadioButton) findViewById(R.id.rbTriggerUrlMethodPost); etTriggerUrl = (EditText) findViewById(R.id.etTriggerUrl); etParameterName = (EditText) findViewById(R.id.etParameterName); etParameterValue = (EditText)findViewById(R.id.etParameterValue); bAddHttpParam = (Button)findViewById(R.id.bAddHttpParam); etParameterName.setEnabled(false); etParameterValue.setEnabled(false); bAddHttpParam.setEnabled(false); rbTriggerUrlMethodPost.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { etParameterName.setEnabled(checked); etParameterValue.setEnabled(checked); bAddHttpParam.setEnabled(checked); if(checked) lvTriggerUrlPostParameters.setVisibility(View.VISIBLE); } }); httpParametersAdapter = new ArrayAdapter(this, R.layout.text_view_for_poi_listview_mediumtextsize, httpParamsList); bSaveTriggerUrl.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(etTriggerUrl.getText().toString().length() > 0) { Intent returnIntent = new Intent(); returnIntent.putExtra(ActivityManageRule.intentNameActionParameter1, chkTriggerUrlUseAuthentication.isChecked()); String username = etTriggerUrlUsername.getText().toString(); String password = etTriggerUrlPassword.getText().toString(); if(username == null) username = ""; if(password == null) password = ""; String method = methodGet; if(rbTriggerUrlMethodPost.isChecked()) method = methodPost; String httpParams = ""; for (String s : httpParamsList) httpParams += Action.actionParameters2SeparatorOuter + s; if(httpParams.length() > 0) httpParams = httpParams.substring(Action.actionParameters2SeparatorOuter.length()); returnIntent.putExtra(ActivityManageRule.intentNameActionParameter2, username + Action.actionParameter2Split + password + Action.actionParameter2Split + etTriggerUrl.getText().toString().trim() + Action.actionParameter2Split + method + Action.actionParameter2Split + httpParams ); setResult(RESULT_OK, returnIntent); finish(); } else Toast.makeText(getBaseContext(), getResources().getString(R.string.urlTooShort), Toast.LENGTH_LONG).show(); } }); chkTriggerUrlUseAuthentication.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { tlTriggerUrlAuthentication.setVisibility(View.VISIBLE); rbTriggerUrlMethodGet.setChecked(false); rbTriggerUrlMethodPost.setChecked(true); rbTriggerUrlMethodGet.setEnabled(false); rbTriggerUrlMethodPost.setEnabled(false); } else { tlTriggerUrlAuthentication.setVisibility(View.GONE); rbTriggerUrlMethodGet.setEnabled(true); rbTriggerUrlMethodPost.setEnabled(true); } etTriggerUrlUsername.setEnabled(isChecked); etTriggerUrlPassword.setEnabled(isChecked); } }); lvTriggerUrlPostParameters.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView arg0, View arg1, int arg2, long arg3) { return false; } }); updateListView(); if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2)) { // username,password,URL,etc. String[] components; if(getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).contains(Action.actionParameter2Split)) components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split, -1); else components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(";", -1); if(components.length >= 3) { etTriggerUrl.setText(components[2]); chkTriggerUrlUseAuthentication.setChecked(getIntent().getBooleanExtra(ActivityManageRule.intentNameActionParameter1, false)); etTriggerUrlUsername.setText(components[0]); etTriggerUrlPassword.setText(components[1]); if(components.length >= 4) { switch(components[3]) { case methodPost: rbTriggerUrlMethodPost.setChecked(true); break; case methodGet: default: rbTriggerUrlMethodGet.setChecked(true); break; } } if(components.length >= 5) { if(!StringUtils.isEmpty(components[4]) && components[4].contains(Action.actionParameters2SeparatorInner)) { String httpParams[] = components[4].split(Action.actionParameters2SeparatorOuter); for (String paramPair : httpParams) httpParamsList.add(paramPair); updateHttpParamsList(); } } } else etTriggerUrl.setText(components[0]); } bAddHttpParam.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if(StringUtils.isEmpty(etParameterName.getText()) || StringUtils.isEmpty(etParameterValue.getText())) { Toast.makeText(ActivityManageActionTriggerUrl.this, getResources().getString(R.string.enterValidDataIntoParametersFields), Toast.LENGTH_SHORT).show(); return; } httpParamsList.add(etParameterName.getText() + Action.actionParameters2SeparatorInner + etParameterValue.getText()); updateHttpParamsList(); etParameterName.setText(""); etParameterValue.setText(""); if(lvTriggerUrlPostParameters.getVisibility() != View.VISIBLE) lvTriggerUrlPostParameters.setVisibility(View.VISIBLE); } }); lvTriggerUrlPostParameters.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView arg0, View arg1, int arg2, long arg3) { getHttpParamsDialog(arg2).show(); return false; } }); } private void updateListView() { Miscellaneous.logEvent("i", "ListView", "Attempting to update lvTriggerUrlPostParameters", 4); try { if(lvTriggerUrlPostParameters.getAdapter() == null) lvTriggerUrlPostParameters.setAdapter(lvTriggerUrlPostParametersAdapter); lvTriggerUrlPostParametersAdapter.notifyDataSetChanged(); } catch(NullPointerException e) {} } private void updateHttpParamsList() { if(lvTriggerUrlPostParameters.getAdapter() == null) lvTriggerUrlPostParameters.setAdapter(httpParametersAdapter); httpParametersAdapter.notifyDataSetChanged(); } private AlertDialog getHttpParamsDialog(final int itemPosition) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ActivityManageActionTriggerUrl.this); alertDialogBuilder.setTitle(getResources().getString(R.string.whatToDoWithIntentPair)); alertDialogBuilder.setItems(new String[]{getResources().getString(R.string.delete)}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Only 1 choice at the moment, no need to check ActivityManageActionTriggerUrl.this.httpParamsList.remove(itemPosition); updateHttpParamsList(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); return alertDialog; } }