From 87edd595ba1a7a7f8f239637120e569db432a4da Mon Sep 17 00:00:00 2001 From: jens Date: Sun, 9 Jan 2022 15:22:03 +0100 Subject: [PATCH] notification trigger --- app/src/apkFlavor/AndroidManifest.xml | 1 + .../java/com/jens/automation2/Action.java | 3 + ...ActivityManageActionBrightnessSetting.java | 15 +-- ...ctivityManageActionCreateNotification.java | 66 +++++++++++++ .../jens/automation2/ActivityManageRule.java | 53 +++++++++- ...vity_manage_action_create_notification.xml | 97 +++++++++++++++++++ app/src/main/res/values/strings.xml | 3 + 7 files changed, 228 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java create mode 100644 app/src/main/res/layout/activity_manage_action_create_notification.xml diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml index 5ac27c1..84884a9 100644 --- a/app/src/apkFlavor/AndroidManifest.xml +++ b/app/src/apkFlavor/AndroidManifest.xml @@ -152,6 +152,7 @@ + diff --git a/app/src/main/java/com/jens/automation2/Action.java b/app/src/main/java/com/jens/automation2/Action.java index 61763e2..5a59e4a 100644 --- a/app/src/main/java/com/jens/automation2/Action.java +++ b/app/src/main/java/com/jens/automation2/Action.java @@ -44,6 +44,7 @@ public class Action setScreenBrightness, playSound, vibrate, + createNotification, sendTextMessage; public String getFullName(Context context) @@ -108,6 +109,8 @@ public class Action return context.getResources().getString(R.string.sendTextMessage); case setScreenBrightness: return context.getResources().getString(R.string.setScreenBrightness); + case createNotification: + return context.getResources().getString(R.string.createNotification); default: return "Unknown"; } diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java b/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java index 1225e7e..1a90190 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageActionBrightnessSetting.java @@ -14,6 +14,9 @@ import androidx.annotation.Nullable; public class ActivityManageActionBrightnessSetting extends Activity { + public static final String intentNameAutoBrightness = "autoBrightness"; + public static final String intentNameBrightnessValue = "brightnessValue"; + CheckBox chkAutoBrightness; SeekBar sbBrightness; Button bApplyBrightness; @@ -32,11 +35,11 @@ public class ActivityManageActionBrightnessSetting extends Activity Intent input = getIntent(); - if(input.hasExtra("autoBrightness")) - chkAutoBrightness.setChecked(input.getBooleanExtra("autoBrightness", false)); + if(input.hasExtra(intentNameAutoBrightness)) + chkAutoBrightness.setChecked(input.getBooleanExtra(intentNameAutoBrightness, false)); - if(input.hasExtra("brightnessValue")) - sbBrightness.setProgress(input.getIntExtra("brightnessValue", 0)); + if(input.hasExtra(intentNameBrightnessValue)) + sbBrightness.setProgress(input.getIntExtra(intentNameBrightnessValue, 0)); bApplyBrightness.setOnClickListener(new View.OnClickListener() { @@ -44,8 +47,8 @@ public class ActivityManageActionBrightnessSetting extends Activity public void onClick(View view) { Intent answer = new Intent(); - answer.putExtra("autoBrightness", chkAutoBrightness.isChecked()); - answer.putExtra("brightnessValue", sbBrightness.getProgress()); + answer.putExtra(intentNameAutoBrightness, chkAutoBrightness.isChecked()); + answer.putExtra(intentNameBrightnessValue, sbBrightness.getProgress()); setResult(RESULT_OK, answer); finish(); } diff --git a/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java b/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java new file mode 100644 index 0000000..d4f8bc4 --- /dev/null +++ b/app/src/main/java/com/jens/automation2/ActivityManageActionCreateNotification.java @@ -0,0 +1,66 @@ +package com.jens.automation2; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.annotation.Nullable; + +import org.apache.commons.lang3.StringUtils; + +public class ActivityManageActionCreateNotification extends Activity +{ + public static final String intentNameNotificationTitle = "notificationTitle"; + public static final String intentNameNotificationText = "notificationText"; + + EditText etNotificationTitle, etNotificationText; + Button bSaveActionNotification; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_manage_action_create_notification); + + etNotificationTitle = (EditText) findViewById(R.id.etNotificationTitle); + etNotificationText = (EditText)findViewById(R.id.etNotificationText); + bSaveActionNotification = (Button)findViewById(R.id.bSaveActionNotification); + + Intent input = getIntent(); + + if(input.hasExtra(intentNameNotificationTitle)) + etNotificationTitle.setText(input.getStringExtra(intentNameNotificationTitle)); + + if(input.hasExtra(intentNameNotificationText)) + etNotificationText.setText(input.getStringExtra(intentNameNotificationText)); + + bSaveActionNotification.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View view) + { + if(StringUtils.isBlank(etNotificationTitle.getText().toString())) + { + Toast.makeText(ActivityManageActionCreateNotification.this, getResources().getString(R.string.enterTitle), Toast.LENGTH_LONG).show(); + return; + } + + if(StringUtils.isBlank(etNotificationText.getText().toString())) + { + Toast.makeText(ActivityManageActionCreateNotification.this, getResources().getString(R.string.enterText), Toast.LENGTH_LONG).show(); + return; + } + + Intent answer = new Intent(); + answer.putExtra(intentNameNotificationTitle, etNotificationTitle.getText().toString()); + answer.putExtra(intentNameNotificationText, etNotificationText.getText().toString()); + setResult(RESULT_OK, answer); + finish(); + } + }); + } +} diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java index 21363ce..4efaf17 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java @@ -115,6 +115,8 @@ public class ActivityManageRule extends Activity final static int requestCodeActionSendTextMessageEdit = 5002; final static int requestCodeActionVibrateAdd = 801; final static int requestCodeActionVibrateEdit = 802; + final static int requestCodeActionCreateNotificationAdd = 803; + final static int requestCodeActionCreateNotificationEdit = 804; public static ActivityManageRule getInstance() { @@ -353,8 +355,8 @@ public class ActivityManageRule extends Activity break; case setScreenBrightness: Intent activityEditScreenBrightnessIntent = new Intent(ActivityManageRule.this, ActivityManageActionBrightnessSetting.class); - activityEditScreenBrightnessIntent.putExtra("autoBrightness", a.getParameter1()); - activityEditScreenBrightnessIntent.putExtra("brightnessValue", Integer.parseInt(a.getParameter2())); + activityEditScreenBrightnessIntent.putExtra(ActivityManageActionBrightnessSetting.intentNameAutoBrightness, a.getParameter1()); + activityEditScreenBrightnessIntent.putExtra(ActivityManageActionBrightnessSetting.intentNameBrightnessValue, Integer.parseInt(a.getParameter2())); startActivityForResult(activityEditScreenBrightnessIntent, requestCodeActionScreenBrightnessEdit); break; case vibrate: @@ -362,6 +364,13 @@ public class ActivityManageRule extends Activity activityEditVibrateIntent.putExtra("vibratePattern", a.getParameter2()); startActivityForResult(activityEditVibrateIntent, requestCodeActionVibrateEdit); break; + case createNotification: + Intent activityEditCreateNotificationIntent = new Intent(ActivityManageRule.this, ActivityManageActionCreateNotification.class); + String[] elements = a.getParameter2().split(Action.actionParameter2Split); + activityEditCreateNotificationIntent.putExtra(ActivityManageActionCreateNotification.intentNameNotificationTitle, elements[0]); + activityEditCreateNotificationIntent.putExtra(ActivityManageActionCreateNotification.intentNameNotificationText, elements[1]); + startActivityForResult(activityEditCreateNotificationIntent, requestCodeActionCreateNotificationEdit); + break; case playSound: Intent actionPlaySoundIntent = new Intent(context, ActivityManageActionPlaySound.class); actionPlaySoundIntent.putExtra("edit", true); @@ -1336,8 +1345,8 @@ public class ActivityManageRule extends Activity { if(resultCode == RESULT_OK) { - newAction.setParameter1(data.getBooleanExtra("autoBrightness", false)); - newAction.setParameter2(String.valueOf(data.getIntExtra("brightnessValue", 0))); + newAction.setParameter1(data.getBooleanExtra(ActivityManageActionBrightnessSetting.intentNameAutoBrightness, false)); + newAction.setParameter2(String.valueOf(data.getIntExtra(ActivityManageActionBrightnessSetting.intentNameBrightnessValue, 0))); newAction.setParentRule(ruleToEdit); ruleToEdit.getActionSet().add(newAction); this.refreshActionList(); @@ -1368,6 +1377,20 @@ public class ActivityManageRule extends Activity this.refreshActionList(); } } + else if(requestCode == requestCodeActionCreateNotificationAdd) + { + if(resultCode == RESULT_OK) + { + newAction.setParentRule(ruleToEdit); + newAction.setParameter2( + data.getStringExtra(ActivityManageActionCreateNotification.intentNameNotificationTitle) + + Action.actionParameter2Split + + data.getStringExtra(ActivityManageActionCreateNotification.intentNameNotificationText) + ); + ruleToEdit.getActionSet().add(newAction); + this.refreshActionList(); + } + } else if(requestCode == requestCodeActionVibrateEdit) { if(resultCode == RESULT_OK) @@ -1380,6 +1403,22 @@ public class ActivityManageRule extends Activity this.refreshActionList(); } } + else if(requestCode == requestCodeActionCreateNotificationEdit) + { + if(resultCode == RESULT_OK) + { + ruleToEdit.getActionSet().get(editIndex).setParentRule(ruleToEdit); + + if(data.hasExtra(ActivityManageActionCreateNotification.intentNameNotificationTitle)) + ruleToEdit.getActionSet().get(editIndex).setParameter2( + data.getStringExtra(ActivityManageActionCreateNotification.intentNameNotificationTitle) + + Action.actionParameter2Split + + data.getStringExtra(ActivityManageActionCreateNotification.intentNameNotificationText) + ); + + this.refreshActionList(); + } + } else if(requestCode == requestCodeActionPlaySoundAdd) { if(resultCode == RESULT_OK) @@ -1682,6 +1721,12 @@ public class ActivityManageRule extends Activity Intent intent = new Intent(ActivityManageRule.this, ActivityManageActionVibrate.class); startActivityForResult(intent, requestCodeActionVibrateAdd); } + else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.createNotification.toString())) + { + newAction.setAction(Action_Enum.createNotification); + Intent intent = new Intent(ActivityManageRule.this, ActivityManageActionCreateNotification.class); + startActivityForResult(intent, requestCodeActionCreateNotificationAdd); + } else if(Action.getActionTypesAsArray()[which].toString().equals(Action_Enum.setScreenBrightness.toString())) { newAction.setAction(Action_Enum.setScreenBrightness); diff --git a/app/src/main/res/layout/activity_manage_action_create_notification.xml b/app/src/main/res/layout/activity_manage_action_create_notification.xml new file mode 100644 index 0000000..5166c60 --- /dev/null +++ b/app/src/main/res/layout/activity_manage_action_create_notification.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + +