2021-02-16 13:42:49 +01:00
package com.jens.automation2 ;
2021-09-15 21:58:18 +02:00
import android.Manifest ;
2021-02-16 13:42:49 +01:00
import android.app.Activity ;
import android.app.AlertDialog ;
import android.app.ProgressDialog ;
import android.content.Context ;
import android.content.DialogInterface ;
import android.content.Intent ;
import android.content.pm.PackageManager ;
import android.os.AsyncTask ;
import android.os.Build ;
import android.os.Bundle ;
import android.text.InputType ;
import android.text.util.Linkify ;
2022-01-04 17:51:27 +01:00
import android.util.Log ;
2021-02-16 13:42:49 +01:00
import android.view.MotionEvent ;
import android.view.View ;
import android.view.View.OnClickListener ;
import android.view.View.OnTouchListener ;
import android.view.ViewGroup ;
import android.view.inputmethod.InputMethodManager ;
import android.widget.AdapterView ;
import android.widget.AdapterView.OnItemClickListener ;
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.ImageView ;
import android.widget.ListAdapter ;
import android.widget.ListView ;
import android.widget.TextView ;
import android.widget.Toast ;
2021-02-16 20:24:12 +01:00
import androidx.annotation.RequiresApi ;
2021-02-16 13:42:49 +01:00
import com.jens.automation2.Action.Action_Enum ;
import com.jens.automation2.Trigger.Trigger_Enum ;
import com.jens.automation2.receivers.NfcReceiver ;
2021-02-16 20:24:12 +01:00
import java.lang.reflect.InvocationTargetException ;
import java.lang.reflect.Method ;
2021-02-16 13:42:49 +01:00
import java.util.ArrayList ;
import java.util.Collections ;
2021-02-17 22:27:53 +01:00
public class ActivityManageRule extends Activity
2021-02-16 13:42:49 +01:00
{
2021-02-16 23:38:38 +01:00
final static String activityDetectionClassPath = " com.jens.automation2.receivers.ActivityDetectionReceiver " ;
2021-12-09 18:03:00 +01:00
public final static String intentNameTriggerParameter1 = " triggerParameter1 " ;
2022-01-04 17:51:27 +01:00
public final static String intentNameTriggerParameter2 = " triggerParameter2 " ;
2021-12-12 20:03:53 +01:00
public final static String intentNameActionParameter1 = " actionParameter1 " ;
public final static String intentNameActionParameter2 = " actionParameter2 " ;
2021-02-16 23:38:38 +01:00
2021-02-16 13:42:49 +01:00
public Context context ;
2022-01-05 23:27:27 +01:00
Button cmdTriggerAdd , cmdActionAdd , cmdSaveRule ;
ListView triggerListView , actionListView ;
EditText etRuleName ;
CheckBox chkRuleActive , chkRuleToggle ;
static ActivityManageRule instance = null ;
2021-02-16 13:42:49 +01:00
ImageView imageHelpButton ;
2022-01-05 23:27:27 +01:00
static ProgressDialog progressDialog = null ;
2021-02-16 13:42:49 +01:00
2022-01-05 23:27:27 +01:00
static Trigger_Enum triggerType ;
static PointOfInterest triggerPoi ;
static String triggerProcess ;
static int triggerBattery ;
static double triggerSpeed ;
static double triggerNoise ;
2022-04-03 20:25:10 +02:00
2022-01-05 23:27:27 +01:00
static boolean newRule ;
2021-02-16 13:42:49 +01:00
2022-01-05 23:27:27 +01:00
static Trigger newTrigger ;
static Action newAction ;
2022-04-04 20:21:34 +02:00
Rule ruleToEdit = null ;
2021-02-16 13:42:49 +01:00
ArrayAdapter < Trigger > triggerListViewAdapter ;
ArrayAdapter < Action > actionListViewAdapter ;
int editIndex = 0 ;
final static int requestCodeActionTriggerUrlAdd = 1000 ;
final static int requestCodeActionTriggerUrlEdit = 1001 ;
final static int requestCodeTriggerTimeframeAdd = 2000 ;
final static int requestCodeTriggerTimeframeEdit = 2001 ;
final static int requestCodeActionStartActivityAdd = 3000 ;
final static int requestCodeActionStartActivityEdit = 3001 ;
final static int requestCodeTriggerNfcTagAdd = 4000 ;
final static int requestCodeTriggerNfcTagEdit = 4001 ;
2021-09-02 17:56:17 +02:00
final static int requestCodeActionSpeakTextAdd = 5101 ;
final static int requestCodeActionSpeakTextEdit = 5102 ;
2021-02-16 13:42:49 +01:00
final static int requestCodeTriggerBluetoothAdd = 6000 ;
final static int requestCodeTriggerBluetoothEdit = 6001 ;
final static int requestCodeActionScreenBrightnessAdd = 401 ;
final static int requestCodeActionScreenBrightnessEdit = 402 ;
2021-12-12 20:03:53 +01:00
final static int requestCodeTriggerDeviceOrientationAdd = 301 ;
final static int requestCodeTriggerDeviceOrientationEdit = 302 ;
2021-03-26 19:58:27 +01:00
final static int requestCodeTriggerNotificationAdd = 8000 ;
2022-01-10 23:00:36 +01:00
final static int requestCodeTriggerNotificationEdit = 8001 ;
2021-03-28 20:33:44 +02:00
final static int requestCodeActionPlaySoundAdd = 501 ;
final static int requestCodeActionPlaySoundEdit = 502 ;
2021-05-13 23:50:14 +02:00
final static int requestCodeTriggerPhoneCallAdd = 601 ;
final static int requestCodeTriggerPhoneCallEdit = 602 ;
2022-01-04 17:51:27 +01:00
final static int requestCodeTriggerProfileAdd = 603 ;
final static int requestCodeTriggerProfileEdit = 604 ;
2021-05-16 14:27:54 +02:00
final static int requestCodeTriggerWifiAdd = 723 ;
final static int requestCodeTriggerWifiEdit = 724 ;
2021-07-04 15:53:24 +02:00
final static int requestCodeActionSendTextMessageAdd = 5001 ;
2021-09-02 17:56:17 +02:00
final static int requestCodeActionSendTextMessageEdit = 5002 ;
2021-07-04 15:53:24 +02:00
final static int requestCodeActionVibrateAdd = 801 ;
final static int requestCodeActionVibrateEdit = 802 ;
2022-01-09 15:22:03 +01:00
final static int requestCodeActionCreateNotificationAdd = 803 ;
final static int requestCodeActionCreateNotificationEdit = 804 ;
2022-01-10 23:00:36 +01:00
final static int requestCodeActionCloseNotificationAdd = 805 ;
final static int requestCodeActionCloseNotificationEdit = 806 ;
2022-01-27 11:34:04 +01:00
final static int requestCodeActionControlMediaAdd = 807 ;
final static int requestCodeActionControlMediaEdit = 808 ;
2022-05-22 17:31:55 +02:00
final static int requestCodeTriggerBroadcastReceivedAdd = 809 ;
final static int requestCodeTriggerBroadcastReceivedEdit = 810 ;
2022-05-29 02:42:12 +02:00
final static int requestCodeActionSendBroadcastAdd = 811 ;
final static int requestCodeActionSendBroadcastEdit = 812 ;
2022-05-29 20:14:50 +02:00
final static int requestCodeActionRunExecutableAdd = 813 ;
final static int requestCodeActionRunExecutableEdit = 814 ;
2022-06-01 22:36:30 +02:00
final static int requestCodeActionSetWifiAdd = 815 ;
final static int requestCodeActionSetWifiEdit = 816 ;
2022-06-04 02:44:26 +02:00
final static int requestCodeTriggerTetheringAdd = 817 ;
final static int requestCodeTriggerTetheringEdit = 818 ;
2022-07-02 01:38:39 +02:00
final static int requestCodeActionWakeLockAdd = 819 ;
final static int requestCodeActionWakeLockEdit = 820 ;
2022-07-24 19:53:45 +02:00
final static int requestCodeTriggerSubSystemStateAdd = 821 ;
final static int requestCodeTriggerSubSystemStateEdit = 822 ;
2022-10-02 18:59:54 +02:00
final static int requestCodeActionMakePhoneCallAdd = 823 ;
final static int requestCodeActionMakePhoneCallEdit = 824 ;
2022-10-09 17:14:02 +02:00
final static int requestCodeActionSetVariableAdd = 825 ;
final static int requestCodeActionSetVariableEdit = 826 ;
final static int requestCodeTriggerCheckVariableAdd = 827 ;
final static int requestCodeTriggerCheckVariableEdit = 828 ;
2023-03-12 23:57:54 +01:00
final static int requestCodeActionCopyTextToClipboardAdd = 829 ;
final static int requestCodeActionCopyTextToClipboardEdit = 830 ;
2023-12-19 23:52:28 +01:00
final static int requestCodeActionSetLocationServiceAdd = 831 ;
final static int requestCodeActionSetLocationServiceEdit = 832 ;
2023-12-25 11:57:55 +01:00
final static int requestCodeTriggerCalendarEventAdd = 833 ;
final static int requestCodeTriggerCalendarEventEdit = 834 ;
2022-06-01 22:39:46 +02:00
2021-02-17 22:27:53 +01:00
public static ActivityManageRule getInstance ( )
2021-02-16 13:42:49 +01:00
{
if ( instance = = null )
2021-02-17 22:27:53 +01:00
instance = new ActivityManageRule ( ) ;
2021-02-16 13:42:49 +01:00
return instance ;
}
@Override
protected void onCreate ( Bundle savedInstanceState )
{
super . onCreate ( savedInstanceState ) ;
2023-07-23 18:57:38 +02:00
Miscellaneous . setDisplayLanguage ( this ) ;
2021-09-20 19:58:11 +02:00
setContentView ( R . layout . activity_manage_specific_rule ) ;
2022-04-04 20:21:34 +02:00
context = this ;
2021-02-16 13:42:49 +01:00
instance = this ;
cmdTriggerAdd = ( Button ) findViewById ( R . id . cmdTriggerAdd ) ;
cmdActionAdd = ( Button ) findViewById ( R . id . cmdActionAdd ) ;
triggerListView = ( ListView ) findViewById ( R . id . lvTriggerListView ) ;
actionListView = ( ListView ) findViewById ( R . id . lvActionListView ) ;
etRuleName = ( EditText ) findViewById ( R . id . etRuleName ) ;
cmdSaveRule = ( Button ) findViewById ( R . id . cmdSaveRule ) ;
chkRuleActive = ( CheckBox ) findViewById ( R . id . chkRuleActive ) ;
chkRuleToggle = ( CheckBox ) findViewById ( R . id . chkRuleToggle ) ;
imageHelpButton = ( ImageView ) findViewById ( R . id . imageHelpButton ) ;
//decide if it will be created anew or loaded to edit an existing one
2022-04-04 20:21:34 +02:00
if ( getIntent ( ) . hasExtra ( ActivityMainRules . intentNameRuleName ) )
{
// change existing rule
Miscellaneous . logEvent ( " i " , " Rule " , " Cache not empty, assuming change request. " , 3 ) ;
newRule = false ;
ruleToEdit = Rule . getByName ( getIntent ( ) . getStringExtra ( ActivityMainRules . intentNameRuleName ) ) ;
triggerListViewAdapter = new ArrayAdapter < Trigger > ( this , R . layout . text_view_for_poi_listview_mediumtextsize , ruleToEdit . getTriggerSet ( ) ) ;
actionListViewAdapter = new ArrayAdapter < Action > ( this , R . layout . text_view_for_poi_listview_mediumtextsize , ruleToEdit . getActionSet ( ) ) ;
loadVariablesIntoGui ( ) ;
}
else
2021-02-16 13:42:49 +01:00
{
// new rule
Miscellaneous . logEvent ( " i " , " Rule " , " Cache empty, assuming create request. " , 3 ) ;
newRule = true ;
ruleToEdit = new Rule ( ) ;
ruleToEdit . setTriggerSet ( new ArrayList < Trigger > ( ) ) ;
ruleToEdit . setActionSet ( new ArrayList < Action > ( ) ) ;
triggerListViewAdapter = new ArrayAdapter < Trigger > ( this , R . layout . text_view_for_poi_listview_mediumtextsize , ruleToEdit . getTriggerSet ( ) ) ;
actionListViewAdapter = new ArrayAdapter < Action > ( this , R . layout . text_view_for_poi_listview_mediumtextsize , ruleToEdit . getActionSet ( ) ) ;
}
cmdTriggerAdd . setOnClickListener ( new OnClickListener ( )
{
@Override
public void onClick ( View v )
{
hideKeyboard ( ) ;
newTrigger = new Trigger ( ) ;
2021-12-18 02:43:04 +01:00
AlertDialog dia = getTriggerTypeDialog ( context ) ;
if ( Miscellaneous . isDarkModeEnabled ( ActivityManageRule . this ) )
dia . getListView ( ) . setBackgroundColor ( getResources ( ) . getColor ( R . color . darkScreenBackgroundColor ) ) ;
dia . show ( ) ;
2021-02-16 13:42:49 +01:00
}
} ) ;
cmdActionAdd . setOnClickListener ( new OnClickListener ( )
{
@Override
public void onClick ( View v )
{
hideKeyboard ( ) ;
2021-12-18 02:43:04 +01:00
AlertDialog dia = getActionTypeDialog ( ) ;
if ( Miscellaneous . isDarkModeEnabled ( ActivityManageRule . this ) )
dia . getListView ( ) . setBackgroundColor ( getResources ( ) . getColor ( R . color . darkScreenBackgroundColor ) ) ;
dia . show ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-03-18 23:37:21 +01:00
} ) ;
2021-02-16 13:42:49 +01:00
cmdSaveRule . setOnClickListener ( new OnClickListener ( )
2021-12-09 18:03:00 +01:00
{
2021-02-16 13:42:49 +01:00
@Override
public void onClick ( View v )
{
if ( newRule )
{
Miscellaneous . logEvent ( " i " , " Rule " , " Will create a new rule. " , 3 ) ;
loadFormValuesToVariable ( ) ;
if ( ruleToEdit . create ( context ) )
{
ActivityPermissions . getRequiredPermissions ( false ) ;
finish ( ) ;
}
else
2021-02-17 22:27:53 +01:00
Toast . makeText ( ActivityManageRule . this , getResources ( ) . getString ( R . string . errorWritingConfig ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
else
{
Miscellaneous . logEvent ( " i " , " Rule " , " Will change an existing rule. " , 3 ) ;
loadFormValuesToVariable ( ) ;
if ( ruleToEdit . change ( context ) )
{
ActivityPermissions . getRequiredPermissions ( false ) ;
finish ( ) ;
}
else
2021-02-17 22:27:53 +01:00
Toast . makeText ( ActivityManageRule . this , getResources ( ) . getString ( R . string . errorWritingConfig ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
}
} ) ;
triggerListView . setClickable ( true ) ;
actionListView . setClickable ( true ) ;
triggerListView . setOnItemLongClickListener ( new OnItemLongClickListener ( )
{
@Override
public boolean onItemLongClick ( AdapterView < ? > arg0 , View arg1 , int arg2 , long arg3 )
{
getTriggerDeleteDialog ( context , ( Trigger ) triggerListView . getItemAtPosition ( arg2 ) ) . show ( ) ;
return false ;
}
} ) ;
triggerListView . setOnItemClickListener ( new OnItemClickListener ( )
{
@Override
public void onItemClick ( AdapterView < ? > arg0 , View arg1 , int arg2 , long arg3 )
{
editIndex = arg2 ;
Trigger selectedTrigger = ( Trigger ) triggerListView . getItemAtPosition ( arg2 ) ;
switch ( selectedTrigger . getTriggerType ( ) )
{
case timeFrame :
2021-03-29 16:36:21 +02:00
Intent timeFrameEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerTimeFrame . class ) ;
2022-04-03 14:46:28 +02:00
timeFrameEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
timeFrameEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
2021-02-16 13:42:49 +01:00
startActivityForResult ( timeFrameEditor , requestCodeTriggerTimeframeEdit ) ;
break ;
case bluetoothConnection :
2021-03-29 16:36:21 +02:00
ActivityManageTriggerBluetooth . editedBluetoothTrigger = selectedTrigger ;
Intent bluetoothEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerBluetooth . class ) ;
2021-02-16 13:42:49 +01:00
startActivityForResult ( bluetoothEditor , requestCodeTriggerBluetoothEdit ) ;
break ;
2021-03-28 20:33:44 +02:00
case notification :
ActivityManageTriggerNotification . editedNotificationTrigger = selectedTrigger ;
Intent notificationEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerNotification . class ) ;
notificationEditor . putExtra ( " edit " , true ) ;
2022-01-10 23:00:36 +01:00
startActivityForResult ( notificationEditor , requestCodeTriggerNotificationEdit ) ;
2021-03-28 20:33:44 +02:00
break ;
2021-05-14 13:00:25 +02:00
case phoneCall :
ActivityManageTriggerPhoneCall . editedPhoneCallTrigger = selectedTrigger ;
Intent phoneCallEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerPhoneCall . class ) ;
phoneCallEditor . putExtra ( " edit " , true ) ;
startActivityForResult ( phoneCallEditor , requestCodeTriggerPhoneCallEdit ) ;
break ;
2022-01-04 17:51:27 +01:00
case profileActive :
Intent profileActiveEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerProfile . class ) ;
profileActiveEditor . putExtra ( ActivityManageRule . intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
profileActiveEditor . putExtra ( ActivityManageRule . intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
startActivityForResult ( profileActiveEditor , requestCodeTriggerProfileEdit ) ;
break ;
2021-05-16 14:27:54 +02:00
case wifiConnection :
Intent wifiEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerWifi . class ) ;
wifiEditor . putExtra ( " edit " , true ) ;
2022-01-09 21:43:49 +01:00
wifiEditor . putExtra ( ActivityManageTriggerWifi . intentNameWifiState , selectedTrigger . getTriggerParameter ( ) ) ;
wifiEditor . putExtra ( ActivityManageTriggerWifi . intentNameWifiName , selectedTrigger . getTriggerParameter2 ( ) ) ;
2021-05-16 14:27:54 +02:00
startActivityForResult ( wifiEditor , requestCodeTriggerWifiEdit ) ;
break ;
2021-12-11 14:15:05 +01:00
case deviceOrientation :
Intent devicePositionEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerDeviceOrientation . class ) ;
2021-12-09 18:03:00 +01:00
devicePositionEditor . putExtra ( ActivityManageRule . intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
2021-12-11 14:15:05 +01:00
devicePositionEditor . putExtra ( ActivityManageTriggerDeviceOrientation . vectorFieldName , selectedTrigger . getTriggerParameter2 ( ) ) ;
2021-12-12 20:03:53 +01:00
startActivityForResult ( devicePositionEditor , requestCodeTriggerDeviceOrientationEdit ) ;
2021-11-28 20:01:58 +01:00
break ;
2022-05-22 17:31:55 +02:00
case broadcastReceived :
Intent broadcastEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerBroadcast . class ) ;
broadcastEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
broadcastEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
startActivityForResult ( broadcastEditor , requestCodeTriggerBroadcastReceivedEdit ) ;
break ;
2022-06-04 02:44:26 +02:00
case tethering :
Intent tetheringEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerTethering . class ) ;
tetheringEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
2022-08-18 23:32:57 +02:00
tetheringEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
2022-06-04 02:44:26 +02:00
startActivityForResult ( tetheringEditor , requestCodeTriggerTetheringEdit ) ;
break ;
2022-07-24 19:53:45 +02:00
case subSystemState :
Intent subSystemStateEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerSubSystemState . class ) ;
subSystemStateEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
subSystemStateEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
startActivityForResult ( subSystemStateEditor , requestCodeTriggerSubSystemStateEdit ) ;
break ;
2022-10-09 17:14:02 +02:00
case checkVariable :
Intent variableStateEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerCheckVariable . class ) ;
variableStateEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
variableStateEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
startActivityForResult ( variableStateEditor , requestCodeTriggerCheckVariableEdit ) ;
break ;
2023-12-25 11:57:55 +01:00
case calendarEvent :
Intent calendarStateEditor = new Intent ( ActivityManageRule . this , ActivityManageTriggerCalendar . class ) ;
calendarStateEditor . putExtra ( intentNameTriggerParameter1 , selectedTrigger . getTriggerParameter ( ) ) ;
calendarStateEditor . putExtra ( intentNameTriggerParameter2 , selectedTrigger . getTriggerParameter2 ( ) ) ;
startActivityForResult ( calendarStateEditor , requestCodeTriggerCalendarEventEdit ) ;
break ;
2021-02-16 13:42:49 +01:00
default :
2022-01-04 17:51:27 +01:00
break ;
2021-02-16 13:42:49 +01:00
}
}
} ) ;
triggerListView . setOnTouchListener ( new OnTouchListener ( )
{
@Override
public boolean onTouch ( View v , MotionEvent event )
{
v . getParent ( ) . requestDisallowInterceptTouchEvent ( true ) ;
return false ;
}
} ) ;
actionListView . setOnItemLongClickListener ( new OnItemLongClickListener ( )
{
public boolean onItemLongClick ( AdapterView < ? > arg0 , View arg1 , int arg2 , long arg3 )
{
getActionDeleteDialog ( context , ( Action ) actionListView . getItemAtPosition ( arg2 ) ) . show ( ) ;
return false ;
}
} ) ;
actionListView . setOnItemClickListener ( new OnItemClickListener ( )
{
// editing triggers
@Override
public void onItemClick ( AdapterView < ? > arg0 , View arg1 , int arg2 , long arg3 )
{
editIndex = arg2 ;
Action a = ( Action ) actionListView . getItemAtPosition ( arg2 ) ;
switch ( a . getAction ( ) )
{
case startOtherActivity :
2021-03-29 16:36:21 +02:00
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionStartActivity . class ) ;
2022-06-13 23:15:25 +02:00
intent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
intent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
2021-02-16 13:42:49 +01:00
startActivityForResult ( intent , requestCodeActionStartActivityEdit ) ;
break ;
case triggerUrl :
2021-03-29 16:36:21 +02:00
Intent activityEditTriggerUrlIntent = new Intent ( ActivityManageRule . this , ActivityManageActionTriggerUrl . class ) ;
2024-01-06 17:25:27 +01:00
// ActivityManageActionTriggerUrl.resultingAction = a;
// ActivityManageActionTriggerUrl.resultingAction.setParentRule(ruleToEdit);
// activityEditTriggerUrlIntent.putExtra("edit", true);
activityEditTriggerUrlIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
activityEditTriggerUrlIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
2021-02-16 13:42:49 +01:00
startActivityForResult ( activityEditTriggerUrlIntent , requestCodeActionTriggerUrlEdit ) ;
break ;
case speakText :
2021-03-29 16:36:21 +02:00
Intent activitySpeakTextIntent = new Intent ( ActivityManageRule . this , ActivityManageActionSpeakText . class ) ;
ActivityManageActionSpeakText . resultingAction = a ;
2021-02-16 13:42:49 +01:00
activitySpeakTextIntent . putExtra ( " edit " , true ) ;
startActivityForResult ( activitySpeakTextIntent , requestCodeActionSpeakTextEdit ) ;
break ;
case sendTextMessage :
2021-03-29 16:36:21 +02:00
Intent activitySendTextMessageIntent = new Intent ( ActivityManageRule . this , ActivityManageActionSendTextMessage . class ) ;
ActivityManageActionSendTextMessage . resultingAction = a ;
2021-02-16 13:42:49 +01:00
activitySendTextMessageIntent . putExtra ( " edit " , true ) ;
2021-09-02 17:56:17 +02:00
startActivityForResult ( activitySendTextMessageIntent , requestCodeActionSendTextMessageEdit ) ;
2021-02-16 13:42:49 +01:00
break ;
case setScreenBrightness :
2021-03-29 16:36:21 +02:00
Intent activityEditScreenBrightnessIntent = new Intent ( ActivityManageRule . this , ActivityManageActionBrightnessSetting . class ) ;
2022-01-09 15:22:03 +01:00
activityEditScreenBrightnessIntent . putExtra ( ActivityManageActionBrightnessSetting . intentNameAutoBrightness , a . getParameter1 ( ) ) ;
activityEditScreenBrightnessIntent . putExtra ( ActivityManageActionBrightnessSetting . intentNameBrightnessValue , Integer . parseInt ( a . getParameter2 ( ) ) ) ;
2021-02-16 13:42:49 +01:00
startActivityForResult ( activityEditScreenBrightnessIntent , requestCodeActionScreenBrightnessEdit ) ;
break ;
2021-07-04 15:53:24 +02:00
case vibrate :
Intent activityEditVibrateIntent = new Intent ( ActivityManageRule . this , ActivityManageActionVibrate . class ) ;
activityEditVibrateIntent . putExtra ( " vibratePattern " , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditVibrateIntent , requestCodeActionVibrateEdit ) ;
break ;
2022-05-29 02:42:12 +02:00
case sendBroadcast :
Intent activityEditSendBroadcastIntent = new Intent ( ActivityManageRule . this , ActivityManageActionSendBroadcast . class ) ;
activityEditSendBroadcastIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditSendBroadcastIntent , requestCodeActionSendBroadcastEdit ) ;
break ;
2022-07-02 01:38:39 +02:00
case wakelock :
Intent activityEditWakeLockIntent = new Intent ( ActivityManageRule . this , ActivityManageActionWakeLock . class ) ;
activityEditWakeLockIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
activityEditWakeLockIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditWakeLockIntent , requestCodeActionWakeLockEdit ) ;
break ;
2022-05-29 20:14:50 +02:00
case runExecutable :
Intent activityEditRunExecutableIntent = new Intent ( ActivityManageRule . this , ActivityManageActionRunExecutable . class ) ;
activityEditRunExecutableIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
activityEditRunExecutableIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditRunExecutableIntent , requestCodeActionRunExecutableEdit ) ;
break ;
2022-10-03 13:22:25 +02:00
case startPhoneCall :
2022-10-02 23:26:27 +02:00
Intent activityEditMakePhoneCallIntent = new Intent ( ActivityManageRule . this , ActivityManageActionMakePhoneCall . class ) ;
2022-10-02 18:59:54 +02:00
activityEditMakePhoneCallIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
activityEditMakePhoneCallIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditMakePhoneCallIntent , requestCodeActionMakePhoneCallEdit ) ;
break ;
2022-10-09 17:14:02 +02:00
case setVariable :
Intent activityEditSetVariableIntent = new Intent ( ActivityManageRule . this , ActivityManageActionSetVariable . class ) ;
activityEditSetVariableIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditSetVariableIntent , requestCodeActionSetVariableEdit ) ;
break ;
2022-06-01 22:36:30 +02:00
case setWifi :
Intent activityEditSetWifiIntent = new Intent ( ActivityManageRule . this , ActivityManageActionWifi . class ) ;
activityEditSetWifiIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
activityEditSetWifiIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditSetWifiIntent , requestCodeActionSetWifiEdit ) ;
break ;
2022-01-27 11:34:04 +01:00
case controlMediaPlayback :
Intent activityEditControlMediaIntent = new Intent ( ActivityManageRule . this , ActivityManageActionControlMedia . class ) ;
activityEditControlMediaIntent . putExtra ( ActivityManageRule . intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditControlMediaIntent , requestCodeActionControlMediaEdit ) ;
break ;
2022-01-09 15:22:03 +01:00
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 ;
2022-01-10 23:00:36 +01:00
case closeNotification :
Intent activityEditCloseNotificationIntent = new Intent ( ActivityManageRule . this , ActivityManageActionCloseNotification . class ) ;
activityEditCloseNotificationIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( activityEditCloseNotificationIntent , requestCodeActionCloseNotificationEdit ) ;
break ;
2021-03-28 20:33:44 +02:00
case playSound :
Intent actionPlaySoundIntent = new Intent ( context , ActivityManageActionPlaySound . class ) ;
actionPlaySoundIntent . putExtra ( " edit " , true ) ;
2021-12-12 20:03:53 +01:00
actionPlaySoundIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
actionPlaySoundIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
2021-03-28 20:33:44 +02:00
startActivityForResult ( actionPlaySoundIntent , requestCodeActionPlaySoundEdit ) ;
break ;
2023-03-12 23:57:54 +01:00
case copyToClipboard :
Intent actionCopyToClipboardIntent = new Intent ( context , ActivityManageActionCopyToClipboard . class ) ;
actionCopyToClipboardIntent . putExtra ( intentNameActionParameter1 , a . getParameter1 ( ) ) ;
actionCopyToClipboardIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
startActivityForResult ( actionCopyToClipboardIntent , requestCodeActionCopyTextToClipboardEdit ) ;
break ;
2023-12-19 23:52:28 +01:00
case setLocationService :
Intent actionSetLocationServiceIntent = new Intent ( context , ActivityManageActionLocationService . class ) ;
2023-12-20 23:54:36 +01:00
// actionSetLocationServiceIntent.putExtra(intentNameActionParameter1, a.getParameter1());
actionSetLocationServiceIntent . putExtra ( intentNameActionParameter2 , a . getParameter2 ( ) ) ;
2023-12-19 23:52:28 +01:00
startActivityForResult ( actionSetLocationServiceIntent , requestCodeActionSetLocationServiceEdit ) ;
break ;
2021-02-16 13:42:49 +01:00
default :
Miscellaneous . logEvent ( " w " , " Edit action " , " Editing of action type " + a . getAction ( ) . toString ( ) + " not implemented, yet. " , 4 ) ;
break ;
}
}
} ) ;
actionListView . setOnTouchListener ( new OnTouchListener ( )
{
@Override
public boolean onTouch ( View v , MotionEvent event )
{
v . getParent ( ) . requestDisallowInterceptTouchEvent ( true ) ;
return false ;
}
} ) ;
chkRuleToggle . setOnCheckedChangeListener ( new OnCheckedChangeListener ( )
{
private boolean guiEditing = false ;
@Override
public void onCheckedChanged ( CompoundButton buttonView , boolean isChecked )
{
if ( ! guiEditing )
if ( ! plausibilityCheck ( ) )
{
guiEditing = true ;
chkRuleToggle . setChecked ( false ) ;
guiEditing = false ;
2021-02-17 22:27:53 +01:00
Toast . makeText ( ActivityManageRule . this , getResources ( ) . getString ( R . string . toggleNotAllowed ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
}
} ) ;
imageHelpButton . setOnClickListener ( new OnClickListener ( )
{
@Override
public void onClick ( View v )
{
// Open help popup
2021-02-17 22:27:53 +01:00
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . whatsThis ) , getResources ( ) . getString ( R . string . helpTextToggable ) , ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
} ) ;
}
protected boolean plausibilityCheck ( )
{
boolean nfcFound = false ;
if ( chkRuleToggle . isChecked ( ) )
{
for ( Trigger trigger : ruleToEdit . getTriggerSet ( ) )
{
if ( trigger . getTriggerType ( ) . equals ( Trigger_Enum . nfcTag ) )
nfcFound = true ;
}
if ( ! nfcFound )
return false ;
}
return true ;
}
protected void loadFormValuesToVariable ( )
{
ruleToEdit . setName ( etRuleName . getText ( ) . toString ( ) ) ;
ruleToEdit . setRuleActive ( chkRuleActive . isChecked ( ) ) ;
ruleToEdit . setRuleToggle ( chkRuleToggle . isChecked ( ) ) ;
2021-11-13 02:17:36 +01:00
for ( Trigger t : ruleToEdit . getTriggerSet ( ) )
t . setParentRule ( ruleToEdit ) ;
for ( Action a : ruleToEdit . getActionSet ( ) )
a . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
}
private void loadVariablesIntoGui ( )
{
// Set all gui fields to the values of the to-be-edited-object
etRuleName . setText ( ruleToEdit . getName ( ) ) ;
chkRuleActive . setChecked ( ruleToEdit . isRuleActive ( ) ) ;
chkRuleToggle . setChecked ( ruleToEdit . isRuleToggle ( ) ) ;
refreshTriggerList ( ) ;
refreshActionList ( ) ;
}
private AlertDialog getTriggerTypeDialog ( final Context myContext )
{
final ArrayList < Item > items = new ArrayList < Item > ( ) ;
CharSequence [ ] types = Trigger . getTriggerTypesAsArray ( ) ;
CharSequence [ ] typesLong = Trigger . getTriggerTypesStringAsArray ( myContext ) ;
for ( int i = 0 ; i < types . length ; i + + )
{
if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . pointOfInterest . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . compass_small ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . timeFrame . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . alarm ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . charging . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . power ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . batteryLevel . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . battery ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . usb_host_connection . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . usb ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . speed . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . speed ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . noiseLevel . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . ear ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . wifiConnection . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . wifi ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . process_started_stopped . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . startprogram ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . airplaneMode . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . plane ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . roaming . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . roaming ) ) ;
2022-05-22 17:31:55 +02:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . broadcastReceived . toString ( ) ) )
2022-06-02 17:41:41 +02:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . megaphone ) ) ;
2021-02-16 13:42:49 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . phoneCall . toString ( ) ) )
{
2021-02-17 22:27:53 +01:00
if ( ActivityPermissions . isPermissionDeclaratedInManifest ( ActivityManageRule . this , " android.permission.SEND_SMS " ) )
2021-02-16 13:42:49 +01:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . phone ) ) ;
}
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . nfcTag . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . nfc ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . activityDetection . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . activitydetection ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . bluetoothConnection . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . bluetooth ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . headsetPlugged . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . headphone ) ) ;
2021-03-26 19:58:27 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . notification . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . notification ) ) ;
2021-12-11 14:15:05 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . deviceOrientation . toString ( ) ) )
2021-11-27 20:22:13 +01:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . smartphone ) ) ;
2022-01-04 17:51:27 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . profileActive . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . sound ) ) ;
2022-01-29 02:12:55 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . musicPlaying . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . sound ) ) ;
2022-01-21 20:57:42 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . screenState . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . smartphone ) ) ;
2022-02-06 20:12:11 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . deviceStarts . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . alarm ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . serviceStarts . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . alarm ) ) ;
2022-06-04 02:44:26 +02:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . tethering . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . router ) ) ;
2022-07-24 19:53:45 +02:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . subSystemState . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . subsystemstate ) ) ;
2023-12-28 00:25:55 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . checkVariable . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . variable ) ) ;
2023-12-25 11:57:55 +01:00
else if ( types [ i ] . toString ( ) . equals ( Trigger_Enum . calendarEvent . toString ( ) ) )
2023-12-27 13:33:09 +01:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . calendar ) ) ;
2021-02-16 13:42:49 +01:00
else
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . placeholder ) ) ;
}
2021-12-18 02:43:04 +01:00
ListAdapter adapter = new ArrayAdapter < Item > ( this , android . R . layout . select_dialog_item , android . R . id . text1 , items )
{
public View getView ( int position , View convertView , ViewGroup parent )
{
2023-12-25 11:57:55 +01:00
// User super class to create the View
2021-12-18 02:43:04 +01:00
View v = super . getView ( position , convertView , parent ) ;
2021-02-16 13:42:49 +01:00
2021-12-18 02:43:04 +01:00
TextView tv = ( TextView ) v . findViewById ( android . R . id . text1 ) ;
2021-02-16 13:42:49 +01:00
2023-12-25 11:57:55 +01:00
// Put the image on the TextView
2021-12-18 02:43:04 +01:00
tv . setCompoundDrawablesWithIntrinsicBounds ( items . get ( position ) . icon , 0 , 0 , 0 ) ;
2021-02-16 13:42:49 +01:00
2023-12-25 11:57:55 +01:00
// Add margin between image and text (support various screen densities)
2021-12-18 02:43:04 +01:00
int dp5 = ( int ) ( 5 * getResources ( ) . getDisplayMetrics ( ) . density + 0 . 5f ) ;
tv . setCompoundDrawablePadding ( dp5 ) ;
2021-02-16 13:42:49 +01:00
2021-12-18 02:43:04 +01:00
return v ;
}
} ;
2021-02-16 13:42:49 +01:00
2021-12-18 02:43:04 +01:00
AlertDialog . Builder builder = new AlertDialog . Builder ( this )
. setTitle ( getResources ( ) . getString ( R . string . selectTypeOfTrigger ) )
. setAdapter ( adapter , new DialogInterface . OnClickListener ( )
{
@RequiresApi ( api = Build . VERSION_CODES . KITKAT )
public void onClick ( DialogInterface dialog , int which )
{
triggerType = Trigger_Enum . values ( ) [ which ] ;
String [ ] booleanChoices = null ;
if ( triggerType = = Trigger_Enum . pointOfInterest )
{
if ( Miscellaneous . googleToBlameForLocation ( false ) )
2021-02-16 13:42:49 +01:00
{
2021-12-18 02:43:04 +01:00
ActivityMainScreen . openGoogleBlamingWindow ( ) ;
return ;
}
else
{
if ( PointOfInterest . getPointOfInterestCollection ( ) ! = null & & PointOfInterest . getPointOfInterestCollection ( ) . size ( ) > 0 )
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . entering ) , getResources ( ) . getString ( R . string . leaving ) } ;
2021-03-18 23:37:21 +01:00
else
{
2021-12-18 02:43:04 +01:00
Toast . makeText ( myContext , getResources ( ) . getString ( R . string . noPoisSpecified ) , Toast . LENGTH_LONG ) . show ( ) ;
return ;
2021-03-18 23:37:21 +01:00
}
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
}
else if ( triggerType = = Trigger_Enum . timeFrame )
{
newTrigger . setTriggerType ( Trigger_Enum . timeFrame ) ;
ActivityManageTriggerTimeFrame . editedTimeFrameTrigger = newTrigger ;
Intent timeFrameEditor = new Intent ( myContext , ActivityManageTriggerTimeFrame . class ) ;
startActivityForResult ( timeFrameEditor , requestCodeTriggerTimeframeAdd ) ;
return ;
}
2022-01-29 02:12:55 +01:00
else if ( triggerType = = Trigger_Enum . charging | | triggerType = = Trigger_Enum . musicPlaying )
2021-12-18 02:43:04 +01:00
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . started ) , getResources ( ) . getString ( R . string . stopped ) } ;
else if ( triggerType = = Trigger_Enum . usb_host_connection )
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . connected ) , getResources ( ) . getString ( R . string . disconnected ) } ;
2022-02-06 20:12:11 +01:00
else if ( triggerType = = Trigger_Enum . speed | | triggerType = = Trigger_Enum . noiseLevel | | triggerType = = Trigger_Enum . batteryLevel )
2021-12-18 02:43:04 +01:00
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . exceeds ) , getResources ( ) . getString ( R . string . dropsBelow ) } ;
else if ( triggerType = = Trigger_Enum . wifiConnection )
{
newTrigger . setTriggerType ( Trigger_Enum . wifiConnection ) ;
Intent wifiTriggerEditor = new Intent ( myContext , ActivityManageTriggerWifi . class ) ;
startActivityForResult ( wifiTriggerEditor , requestCodeTriggerWifiAdd ) ;
return ;
}
else if ( triggerType = = Trigger_Enum . deviceOrientation )
{
newTrigger . setTriggerType ( Trigger_Enum . deviceOrientation ) ;
Intent devicePositionTriggerEditor = new Intent ( myContext , ActivityManageTriggerDeviceOrientation . class ) ;
startActivityForResult ( devicePositionTriggerEditor , requestCodeTriggerDeviceOrientationAdd ) ;
return ;
}
else if ( triggerType = = Trigger_Enum . process_started_stopped )
2022-01-24 20:13:35 +01:00
{
2021-12-18 02:43:04 +01:00
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . started ) , getResources ( ) . getString ( R . string . stopped ) } ;
2022-01-24 20:13:35 +01:00
}
2021-12-18 02:43:04 +01:00
else if ( triggerType = = Trigger_Enum . notification )
{
newTrigger . setTriggerType ( Trigger_Enum . notification ) ;
Intent nfcEditor = new Intent ( myContext , ActivityManageTriggerNotification . class ) ;
startActivityForResult ( nfcEditor , requestCodeTriggerNotificationAdd ) ;
return ;
}
else if ( triggerType = = Trigger_Enum . airplaneMode )
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . activated ) , getResources ( ) . getString ( R . string . deactivated ) } ;
else if ( triggerType = = Trigger_Enum . roaming )
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . activated ) , getResources ( ) . getString ( R . string . deactivated ) } ;
else if ( triggerType = = Trigger_Enum . phoneCall )
{
newTrigger . setTriggerType ( Trigger_Enum . phoneCall ) ;
Intent phoneTriggerEditor = new Intent ( myContext , ActivityManageTriggerPhoneCall . class ) ;
startActivityForResult ( phoneTriggerEditor , requestCodeTriggerPhoneCallAdd ) ;
return ;
2022-01-04 17:51:27 +01:00
}
else if ( triggerType = = Trigger_Enum . profileActive )
{
2022-01-05 18:06:26 +01:00
if ( Profile . getProfileCollection ( ) . size ( ) > 0 )
{
newTrigger . setTriggerType ( Trigger_Enum . profileActive ) ;
Intent profileTriggerEditor = new Intent ( myContext , ActivityManageTriggerProfile . class ) ;
startActivityForResult ( profileTriggerEditor , requestCodeTriggerProfileAdd ) ;
return ;
}
else
{
Toast . makeText ( context , getResources ( ) . getString ( R . string . noProfilesCreateOneFirst ) , Toast . LENGTH_LONG ) . show ( ) ;
return ;
}
2021-12-18 02:43:04 +01:00
}
else if ( triggerType = = Trigger_Enum . activityDetection )
{
try
2021-02-16 13:42:49 +01:00
{
2021-12-18 02:43:04 +01:00
Method m = Miscellaneous . getClassMethodReflective ( activityDetectionClassPath , " isPlayServiceAvailable " ) ;
if ( m ! = null )
2021-02-16 13:42:49 +01:00
{
2021-12-18 02:43:04 +01:00
boolean available = ( Boolean ) m . invoke ( null ) ;
if ( available )
2021-02-16 20:24:12 +01:00
{
2021-12-18 02:43:04 +01:00
newTrigger . setTriggerType ( Trigger_Enum . activityDetection ) ;
getTriggerActivityDetectionDialog ( ) . show ( ) ;
2021-02-16 20:24:12 +01:00
}
2021-02-16 23:38:38 +01:00
else
2021-12-18 02:43:04 +01:00
Toast . makeText ( myContext , getResources ( ) . getString ( R . string . triggerOnlyAvailableIfPlayServicesInstalled ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
else
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . error ) , getResources ( ) . getString ( R . string . featureNotInFdroidVersion ) , ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
catch ( IllegalAccessException | InvocationTargetException e )
2021-02-16 13:42:49 +01:00
{
2022-01-04 17:51:27 +01:00
Miscellaneous . logEvent ( " w " , " ActivityDetection " , " Either play services are not available or the ActivityDetection classes are not. " + Log . getStackTraceString ( e ) , 4 ) ;
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
return ;
}
else if ( triggerType = = Trigger_Enum . nfcTag )
{
if ( NfcReceiver . checkNfcRequirements ( ActivityManageRule . this , true ) )
2021-02-16 13:42:49 +01:00
{
2021-12-18 02:43:04 +01:00
newTrigger . setTriggerType ( Trigger_Enum . nfcTag ) ;
Intent nfcEditor = new Intent ( myContext , ActivityManageTriggerNfc . class ) ;
startActivityForResult ( nfcEditor , requestCodeTriggerNfcTagAdd ) ;
2021-02-16 13:42:49 +01:00
return ;
}
2021-12-18 02:43:04 +01:00
}
else if ( triggerType = = Trigger_Enum . bluetoothConnection )
{
2022-06-11 13:25:13 +02:00
// if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH))
// //Miscellaneous.messageBox("Bluetooth", getResources().getString(R.string.deviceDoesNotHaveBluetooth), ActivityManageRule.this).show();
// Toast.makeText(ActivityManageRule.this, getResources().getString(R.string.deviceDoesNotHaveBluetooth), Toast.LENGTH_LONG).show();
2021-02-16 13:42:49 +01:00
2021-12-18 02:43:04 +01:00
newTrigger . setTriggerType ( Trigger_Enum . bluetoothConnection ) ;
ActivityManageTriggerBluetooth . editedBluetoothTrigger = newTrigger ;
Intent bluetoothEditor = new Intent ( myContext , ActivityManageTriggerBluetooth . class ) ;
startActivityForResult ( bluetoothEditor , requestCodeTriggerBluetoothAdd ) ;
2022-06-11 13:25:13 +02:00
2021-12-18 02:43:04 +01:00
return ;
}
2022-01-21 21:52:27 +01:00
else if ( triggerType = = Trigger_Enum . screenState )
{
newTrigger . setTriggerType ( Trigger_Enum . screenState ) ;
getTriggerScreenStateDialog ( ) . show ( ) ;
2022-05-26 18:26:49 +02:00
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . info ) , getResources ( ) . getString ( R . string . lockedCommentScreenMustBeOff ) , ActivityManageRule . this ) . show ( ) ;
2022-02-06 20:12:11 +01:00
return ;
}
2022-07-24 19:53:45 +02:00
/ * else if ( triggerType = = Trigger_Enum . deviceStarts )
2022-02-06 20:12:11 +01:00
{
newTrigger . setTriggerType ( Trigger_Enum . deviceStarts ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
return ;
2022-07-24 19:53:45 +02:00
} * /
else if ( triggerType = = Trigger_Enum . deviceStarts | | triggerType = = Trigger_Enum . serviceStarts )
2022-02-06 20:12:11 +01:00
{
2022-07-24 19:53:45 +02:00
// newTrigger.setTriggerType(Trigger_Enum.serviceStarts);
// ruleToEdit.getTriggerSet().add(newTrigger);
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . yes ) , getResources ( ) . getString ( R . string . no ) } ;
// refreshTriggerList();
// return;
2022-01-21 21:52:27 +01:00
}
2021-12-18 02:43:04 +01:00
else if ( triggerType = = Trigger_Enum . headsetPlugged )
booleanChoices = new String [ ] { getResources ( ) . getString ( R . string . connected ) , getResources ( ) . getString ( R . string . disconnected ) } ;
if ( triggerType = = Trigger_Enum . nfcTag )
{
if ( NfcReceiver . checkNfcRequirements ( ActivityManageRule . this , true ) )
2021-09-15 21:58:18 +02:00
getTriggerParameterDialog ( context , booleanChoices ) . show ( ) ;
2021-12-18 02:43:04 +01:00
}
2022-05-22 17:31:55 +02:00
else if ( triggerType = = Trigger_Enum . broadcastReceived )
{
newTrigger . setTriggerType ( Trigger_Enum . broadcastReceived ) ;
Intent broadcastTriggerEditor = new Intent ( myContext , ActivityManageTriggerBroadcast . class ) ;
startActivityForResult ( broadcastTriggerEditor , requestCodeTriggerBroadcastReceivedAdd ) ;
return ;
}
2022-06-04 02:44:26 +02:00
else if ( triggerType = = Trigger_Enum . tethering )
{
newTrigger . setTriggerType ( Trigger_Enum . tethering ) ;
Intent tetheringTriggerEditor = new Intent ( myContext , ActivityManageTriggerTethering . class ) ;
startActivityForResult ( tetheringTriggerEditor , requestCodeTriggerTetheringAdd ) ;
return ;
}
2022-07-24 19:53:45 +02:00
else if ( triggerType = = Trigger_Enum . subSystemState )
{
newTrigger . setTriggerType ( Trigger_Enum . subSystemState ) ;
Intent subSystemStateTriggerEditor = new Intent ( myContext , ActivityManageTriggerSubSystemState . class ) ;
startActivityForResult ( subSystemStateTriggerEditor , requestCodeTriggerSubSystemStateAdd ) ;
return ;
}
2022-10-09 17:14:02 +02:00
else if ( triggerType = = Trigger_Enum . checkVariable )
{
newTrigger . setTriggerType ( Trigger_Enum . checkVariable ) ;
Intent variableTriggerEditor = new Intent ( myContext , ActivityManageTriggerCheckVariable . class ) ;
startActivityForResult ( variableTriggerEditor , requestCodeTriggerCheckVariableAdd ) ;
return ;
}
2023-12-25 11:57:55 +01:00
else if ( triggerType = = Trigger_Enum . calendarEvent )
{
newTrigger . setTriggerType ( Trigger_Enum . calendarEvent ) ;
Intent calendarTriggerEditor = new Intent ( myContext , ActivityManageTriggerCalendar . class ) ;
startActivityForResult ( calendarTriggerEditor , requestCodeTriggerCalendarEventAdd ) ;
return ;
}
2021-12-18 02:43:04 +01:00
else
getTriggerParameterDialog ( context , booleanChoices ) . show ( ) ;
2022-01-24 20:13:35 +01:00
if ( triggerType . equals ( Trigger_Enum . process_started_stopped ) )
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . info ) , String . format ( getResources ( ) . getString ( R . string . featureCeasedToWorkLastWorkingAndroidVersion ) , " 7 " ) , ActivityManageRule . this ) . show ( ) ;
2021-12-18 02:43:04 +01:00
}
} ) ;
return builder . create ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
2021-09-15 21:58:18 +02:00
private AlertDialog getTriggerParameterDialog ( final Context myContext , final String [ ] choices )
2021-02-16 13:42:49 +01:00
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
2022-01-29 02:12:55 +01:00
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectParameters ) ) ;
2021-02-16 13:42:49 +01:00
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
if ( which = = 0 )
newTrigger . setTriggerParameter ( true ) ;
else
newTrigger . setTriggerParameter ( false ) ;
if ( triggerType = = Trigger_Enum . pointOfInterest )
{
ArrayList < String > choices = new ArrayList < String > ( ) ;
choices . add ( " < " + getResources ( ) . getString ( R . string . none ) + " > " ) ;
for ( String s : PointOfInterest . getNamesInArray ( ) )
choices . add ( s ) ;
getTriggerPoiDialog ( myContext , choices . toArray ( new String [ choices . size ( ) ] ) ) . show ( ) ;
}
else if ( triggerType = = Trigger_Enum . batteryLevel )
{
ArrayList < String > choicesList = new ArrayList < String > ( ) ;
for ( int i = 1 ; i < = 100 ; i + = 1 )
choicesList . add ( String . valueOf ( i ) + " % " ) ;
String [ ] choices = ( String [ ] ) choicesList . toArray ( new String [ choicesList . size ( ) ] ) ;
getTriggerBatteryDialog ( myContext , choices ) . show ( ) ;
}
else if ( triggerType = = Trigger_Enum . speed )
{
ArrayList < String > choicesList = new ArrayList < String > ( ) ;
for ( int i = 5 ; i < = 150 ; i + = 5 )
choicesList . add ( String . valueOf ( i ) + " km/h " ) ;
String [ ] choices = ( String [ ] ) choicesList . toArray ( new String [ choicesList . size ( ) ] ) ;
getTriggerSpeedDialog ( myContext , choices ) . show ( ) ;
}
else if ( triggerType = = Trigger_Enum . noiseLevel )
{
ArrayList < String > choicesList = new ArrayList < String > ( ) ;
for ( int i = 5 ; i < = 150 ; i + = 5 )
choicesList . add ( String . valueOf ( i ) + " dB " ) ;
String [ ] choices = ( String [ ] ) choicesList . toArray ( new String [ choicesList . size ( ) ] ) ;
getTriggerNoiseDialog ( myContext , choices ) . show ( ) ;
}
else if ( triggerType . equals ( Trigger_Enum . wifiConnection ) )
{
newTrigger . setTriggerType ( Trigger_Enum . wifiConnection ) ;
getTriggerWifiDialog ( myContext ) . show ( ) ;
}
else if ( triggerType . equals ( Trigger_Enum . process_started_stopped ) )
{
progressDialog = ProgressDialog . show ( myContext , null , getResources ( ) . getString ( R . string . gettingListOfInstalledApplications ) , true , false ) ;
newTrigger . setTriggerType ( Trigger_Enum . process_started_stopped ) ;
2021-02-17 22:27:53 +01:00
new GenerateApplicationSelectionsDialogTask ( ) . execute ( ActivityManageRule . this ) ;
2021-02-16 13:42:49 +01:00
}
else if ( triggerType . equals ( Trigger_Enum . phoneCall ) )
{
newTrigger . setTriggerType ( Trigger_Enum . phoneCall ) ;
getTriggerPhoneDirectionDialog ( myContext ) . show ( ) ;
}
else if ( triggerType . equals ( Trigger_Enum . headsetPlugged ) )
{
newTrigger . setTriggerType ( Trigger_Enum . headsetPlugged ) ;
getTriggerHeadphoneDialog ( myContext ) . show ( ) ;
}
else
{
newTrigger . setTriggerType ( triggerType ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
2022-07-11 22:56:43 +02:00
2021-02-16 13:42:49 +01:00
private AlertDialog getTriggerBatteryDialog ( final Context myContext , final String [ ] choices )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectBattery ) ) ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
try
{
triggerBattery = ( which + 1 ) ;
newTrigger . setTriggerType ( Trigger_Enum . batteryLevel ) ;
newTrigger . setBatteryLevel ( triggerBattery ) ;
2022-07-11 22:56:43 +02:00
newTrigger . setTriggerParameter2 ( String . valueOf ( triggerBattery ) ) ;
2021-02-16 13:42:49 +01:00
// Log.i("test", newTrigger.toString());
// Log.i("test", String.valueOf(newTrigger.getBatteryLevel()));
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
catch ( Exception e )
{
e . printStackTrace ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerSpeedDialog ( final Context myContext , final String [ ] choices )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectSpeed ) ) ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
try
{
triggerSpeed = ( which + 1 ) * 5 ;
newTrigger . setTriggerType ( Trigger_Enum . speed ) ;
newTrigger . setSpeed ( triggerSpeed ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
catch ( Exception e )
{
e . printStackTrace ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerNoiseDialog ( final Context myContext , final String [ ] choices )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectNoiseLevel ) ) ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
try
{
triggerNoise = ( which + 1 ) * 5 ;
newTrigger . setTriggerType ( Trigger_Enum . noiseLevel ) ;
newTrigger . setNoiseLevelDb ( Math . round ( triggerNoise ) ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
/ *
* Comment about the physical reference value .
* /
if ( ! Rule . isAnyRuleUsing ( Trigger_Enum . noiseLevel ) )
{
AlertDialog noiseHintDialog = Miscellaneous . messageBox ( myContext . getResources ( ) . getString ( R . string . hint ) , myContext . getResources ( ) . getString ( R . string . noiseDetectionHint ) , myContext ) ;
noiseHintDialog . show ( ) ;
Linkify . addLinks ( ( TextView ) noiseHintDialog . findViewById ( android . R . id . message ) , Linkify . ALL ) ;
// ((TextView)noiseHintDialog.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
}
}
catch ( Exception e )
{
e . printStackTrace ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerWifiDialog ( final Context myContext )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( myContext . getResources ( ) . getString ( R . string . wifiName ) ) ;
alertDialog . setMessage ( myContext . getResources ( ) . getString ( R . string . enterWifiName ) ) ;
// Set an EditText view to get user input
final EditText input = new EditText ( this ) ;
alertDialog . setView ( input ) ;
alertDialog . setPositiveButton ( " Ok " , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
2021-05-16 14:27:54 +02:00
// newTrigger.setWifiName(input.getText().toString());
2021-02-16 13:42:49 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
} ) ;
alertDialog . setNegativeButton ( myContext . getResources ( ) . getString ( R . string . cancel ) , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
// Canceled.
}
} ) ;
return alertDialog . create ( ) ;
}
private AlertDialog getTriggerPhoneDirectionDialog ( final Context myContext )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( myContext . getResources ( ) . getString ( R . string . phoneDirection ) ) ;
String [ ] choices = new String [ ] { myContext . getResources ( ) . getString ( R . string . any ) , myContext . getResources ( ) . getString ( R . string . incoming ) , myContext . getResources ( ) . getString ( R . string . outgoing ) } ;
alertDialog . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
newTrigger . setPhoneDirection ( which ) ;
2021-02-17 22:27:53 +01:00
getTriggerPhoneNumberDialog ( ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
} ) ;
return alertDialog . create ( ) ;
}
private AlertDialog getTriggerPhoneNumberDialog ( final Context myContext )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( myContext . getResources ( ) . getString ( R . string . phoneNumber ) ) ;
2022-10-02 23:26:27 +02:00
alertDialog . setMessage ( myContext . getResources ( ) . getString ( R . string . enterPhoneNumberBlankForAny ) ) ;
2021-02-16 13:42:49 +01:00
// Set an EditText view to get user input
final EditText input = new EditText ( this ) ;
input . setInputType ( InputType . TYPE_CLASS_PHONE ) ;
alertDialog . setView ( input ) ;
alertDialog . setPositiveButton ( " Ok " , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
String number = input . getText ( ) . toString ( ) ;
if ( number . length ( ) = = 0 )
number = " any " ;
newTrigger . setPhoneNumber ( number ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
} ) ;
alertDialog . setNegativeButton ( myContext . getResources ( ) . getString ( R . string . cancel ) , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
// Canceled.
}
} ) ;
return alertDialog . create ( ) ;
}
private AlertDialog getTriggerPoiDialog ( final Context myContext , final String [ ] choices )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectPoi ) ) ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
try
{
if ( which > 0 )
triggerPoi = PointOfInterest . getByName ( choices [ which ] ) ;
else
triggerPoi = null ;
newTrigger . setTriggerType ( Trigger_Enum . pointOfInterest ) ;
newTrigger . setPointOfInterest ( triggerPoi ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
catch ( Exception e )
{
e . printStackTrace ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerHeadphoneDialog ( final Context myContext )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . headphoneSelectType ) ) ;
alertDialogBuilder . setItems ( new String [ ] { myContext . getResources ( ) . getString ( R . string . headphoneSimple ) , myContext . getResources ( ) . getString ( R . string . headphoneMicrophone ) , myContext . getResources ( ) . getString ( R . string . headphoneAny ) } , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
try
{
newTrigger . setHeadphoneType ( which ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
catch ( Exception e )
{
e . printStackTrace ( ) ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
2022-01-21 21:52:27 +01:00
private AlertDialog getTriggerScreenStateDialog ( )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . selectDesiredState ) ) ;
String [ ] choices = {
Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . off ) ,
Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . on ) ,
2022-05-23 22:45:54 +02:00
Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . unlocked ) ,
2022-05-26 18:26:49 +02:00
Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . lockedWithoutSecurity ) ,
Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . lockedWithSecurity )
2022-01-21 21:52:27 +01:00
} ;
alertDialog . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
2022-05-27 20:21:13 +02:00
newTrigger . setTriggerParameter ( true ) ;
2022-01-21 21:52:27 +01:00
newTrigger . setTriggerParameter2 ( String . valueOf ( which ) ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
} ) ;
return alertDialog . create ( ) ;
}
2021-02-16 20:24:12 +01:00
@RequiresApi ( api = Build . VERSION_CODES . KITKAT )
2021-02-16 13:42:49 +01:00
private AlertDialog getTriggerActivityDetectionDialog ( )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( Miscellaneous . getAnyContext ( ) . getResources ( ) . getString ( R . string . selectTypeOfActivity ) ) ;
2021-02-16 20:24:12 +01:00
2021-02-16 23:38:38 +01:00
Method m = Miscellaneous . getClassMethodReflective ( activityDetectionClassPath , " getAllDescriptions " ) ;
2021-02-16 20:24:12 +01:00
if ( m ! = null )
{
String [ ] choices = new String [ 0 ] ;
try
2021-02-16 13:42:49 +01:00
{
2021-02-16 20:24:12 +01:00
choices = ( String [ ] ) m . invoke ( null ) ;
alertDialog . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
2021-02-16 23:38:38 +01:00
Method m = Miscellaneous . getClassMethodReflective ( activityDetectionClassPath , " getAllTypes " ) ;
2021-02-16 20:24:12 +01:00
if ( m ! = null )
{
try
{
2021-02-16 23:38:38 +01:00
int [ ] choices = ( int [ ] ) m . invoke ( null ) ;
2021-02-16 20:24:12 +01:00
newTrigger . setActivityDetectionType ( choices [ which ] ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
catch ( IllegalAccessException | InvocationTargetException e )
{
e . printStackTrace ( ) ;
}
}
}
} ) ;
2021-02-16 13:42:49 +01:00
}
2021-02-16 20:24:12 +01:00
catch ( IllegalAccessException | InvocationTargetException e )
{
e . printStackTrace ( ) ;
}
}
2021-02-16 13:42:49 +01:00
return alertDialog . create ( ) ;
2021-02-16 20:24:12 +01:00
}
2021-02-16 13:42:49 +01:00
2021-02-17 22:27:53 +01:00
private static class GenerateApplicationSelectionsDialogTask extends AsyncTask < ActivityManageRule , Void , String [ ] >
2021-02-16 13:42:49 +01:00
{
@Override
2021-02-17 22:27:53 +01:00
protected String [ ] doInBackground ( ActivityManageRule . . . params )
2021-02-16 13:42:49 +01:00
{
2021-03-29 16:36:21 +02:00
final String [ ] applicationArray = ActivityManageActionStartActivity . getApplicationNameListString ( params [ 0 ] ) ;
2021-02-16 13:42:49 +01:00
return applicationArray ;
}
@Override
protected void onPostExecute ( String [ ] result )
{
if ( progressDialog ! = null )
{
progressDialog . dismiss ( ) ;
progressDialog = null ;
}
2021-02-17 22:27:53 +01:00
ActivityManageRule . getInstance ( ) . showProcessDialog ( result ) ;
2021-02-16 13:42:49 +01:00
}
}
void showProcessDialog ( String [ ] programStrings )
{
2021-02-17 22:27:53 +01:00
getTriggerRunningProcessDialog1 ( ActivityManageRule . this , programStrings ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
private AlertDialog getTriggerRunningProcessDialog1 ( final Context myContext , final String [ ] applicationArray )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( myContext ) ;
alertDialogBuilder . setTitle ( myContext . getResources ( ) . getString ( R . string . selectApplication ) ) ;
alertDialogBuilder . setItems ( applicationArray , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
String applicationName = applicationArray [ which ] ;
getTriggerRunningProcessDialog2 ( myContext , applicationName ) . show ( ) ;
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerRunningProcessDialog2 ( final Context myContext , String applicationName )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( myContext ) ;
alertDialogBuilder . setTitle ( myContext . getResources ( ) . getString ( R . string . selectPackageOfApplication ) ) ;
2021-03-29 16:36:21 +02:00
final String [ ] packageArray = ActivityManageActionStartActivity . getPackageListString ( myContext , applicationName ) ;
2021-02-16 13:42:49 +01:00
alertDialogBuilder . setItems ( packageArray , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
String packageName = packageArray [ which ] ;
getTriggerRunningProcessDialog3 ( myContext , packageName ) . show ( ) ;
2021-02-17 22:27:53 +01:00
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . hint ) , getResources ( ) . getString ( R . string . chooseActivityHint ) , ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerRunningProcessDialog3 ( final Context myContext , final String packageName )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( myContext ) ;
alertDialogBuilder . setTitle ( myContext . getResources ( ) . getString ( R . string . selectActivityToBeStarted ) ) ;
2021-03-29 16:36:21 +02:00
final String activityArray [ ] = ActivityManageActionStartActivity . getActivityListForPackageName ( packageName ) ;
2021-02-16 13:42:49 +01:00
alertDialogBuilder . setItems ( activityArray , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
triggerProcess = activityArray [ which ] ;
newTrigger . setTriggerType ( Trigger_Enum . process_started_stopped ) ;
newTrigger . setProcessName ( triggerProcess ) ;
2022-01-22 02:20:34 +01:00
newTrigger . setTriggerParameter2 ( packageName + Trigger . triggerParameter2Split + triggerProcess ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
refreshTriggerList ( ) ;
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
@Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data )
{
super . onActivityResult ( requestCode , resultCode , data ) ;
if ( requestCode = = requestCodeActionTriggerUrlAdd )
{
if ( resultCode = = RESULT_OK )
{
2024-01-06 17:25:27 +01:00
newAction . setParentRule ( ruleToEdit ) ;
newAction . setAction ( Action_Enum . triggerUrl ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , true ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionTriggerUrlEdit )
{
if ( resultCode = = RESULT_OK )
{
2024-01-06 17:25:27 +01:00
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , true ) ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerTimeframeAdd )
{
//add TimeFrame
2021-03-29 16:36:21 +02:00
if ( resultCode = = RESULT_OK & & ActivityManageTriggerTimeFrame . editedTimeFrameTrigger ! = null )
2021-02-16 13:42:49 +01:00
{
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
else
Miscellaneous . logEvent ( " w " , " TimeFrameEdit " , " No timeframe returned. Assuming abort. " , 5 ) ;
}
else if ( requestCode = = requestCodeTriggerTimeframeEdit )
{
//edit TimeFrame
2022-04-03 14:46:28 +02:00
if ( resultCode = = RESULT_OK & & data . hasExtra ( intentNameTriggerParameter2 ) )
2021-12-19 14:47:46 +01:00
{
2022-04-03 14:46:28 +02:00
Trigger responseTimeFrame = new Trigger ( ) ;
responseTimeFrame . setTriggerType ( Trigger_Enum . timeFrame ) ;
responseTimeFrame . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
responseTimeFrame . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
responseTimeFrame . setTimeFrame ( new TimeFrame ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ) ;
responseTimeFrame . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , responseTimeFrame ) ;
2021-02-16 13:42:49 +01:00
this . refreshTriggerList ( ) ;
2021-12-19 14:47:46 +01:00
}
2021-02-16 13:42:49 +01:00
else
Miscellaneous . logEvent ( " w " , " TimeFrameEdit " , " No timeframe returned. Assuming abort. " , 5 ) ;
}
2021-05-16 14:27:54 +02:00
else if ( requestCode = = requestCodeTriggerWifiAdd )
{
if ( resultCode = = RESULT_OK )
{
2022-01-09 21:43:49 +01:00
newTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageTriggerWifi . intentNameWifiState , false ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageTriggerWifi . intentNameWifiName ) ) ;
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-05-16 14:27:54 +02:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerWifiEdit )
{
if ( resultCode = = RESULT_OK )
{
2021-11-07 02:09:09 +01:00
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . wifiConnection ) ;
2022-01-09 21:43:49 +01:00
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageTriggerWifi . intentNameWifiState , false ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageTriggerWifi . intentNameWifiName ) ) ;
2021-12-19 14:47:46 +01:00
editedTrigger . setParentRule ( ruleToEdit ) ;
2021-11-07 02:09:09 +01:00
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
2021-05-16 14:27:54 +02:00
this . refreshTriggerList ( ) ;
}
}
2021-02-16 13:42:49 +01:00
else if ( requestCode = = requestCodeActionStartActivityAdd )
{
// manage start of other activity
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
newAction . setParentRule ( ruleToEdit ) ;
2022-06-13 23:15:25 +02:00
newAction . setAction ( Action_Enum . startOtherActivity ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , true ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionStartActivityEdit )
{
// manage start of other activity
if ( resultCode = = RESULT_OK )
{
2022-06-13 23:15:25 +02:00
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , true ) ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerNfcTagAdd )
{
//add TimeFrame
2021-03-29 16:36:21 +02:00
if ( resultCode = = RESULT_OK & & ActivityManageTriggerNfc . generatedId ! = null )
2021-02-16 13:42:49 +01:00
{
2021-03-29 16:36:21 +02:00
newTrigger . setNfcTagId ( ActivityManageTriggerNfc . generatedId ) ;
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
else
Miscellaneous . logEvent ( " w " , " ActivityManageNfc " , " No nfc id returned. Assuming abort. " , 5 ) ;
}
2021-03-26 19:58:27 +01:00
else if ( requestCode = = requestCodeTriggerNotificationAdd )
{
//add notification
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
2021-03-27 14:11:39 +01:00
2022-01-09 21:43:49 +01:00
newTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageTriggerNotification . intentNameNotificationDirection , false ) ) ;
2021-03-27 14:11:39 +01:00
newTrigger . setTriggerParameter2 (
2022-01-09 21:43:49 +01:00
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationApp ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTitleDir ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTitle ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTextDir ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationText )
2021-03-27 14:11:39 +01:00
) ;
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-03-26 19:58:27 +01:00
this . refreshTriggerList ( ) ;
}
}
2022-01-10 23:00:36 +01:00
else if ( requestCode = = requestCodeTriggerNotificationEdit )
2021-03-28 20:33:44 +02:00
{
if ( resultCode = = RESULT_OK )
{
2022-05-29 15:13:30 +02:00
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . notification ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageTriggerNotification . intentNameNotificationDirection , false ) ) ;
editedTrigger . setTriggerParameter2 (
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationApp ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTitleDir ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTitle ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationTextDir ) + Trigger . triggerParameter2Split +
data . getStringExtra ( ActivityManageTriggerNotification . intentNameNotificationText )
) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
2021-03-28 20:33:44 +02:00
this . refreshTriggerList ( ) ;
}
}
2021-05-13 23:50:14 +02:00
else if ( requestCode = = requestCodeTriggerPhoneCallAdd )
{
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-05-13 23:50:14 +02:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
2022-05-22 17:31:55 +02:00
newTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
2021-05-13 23:50:14 +02:00
this . refreshTriggerList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerPhoneCallEdit )
{
if ( resultCode = = RESULT_OK )
{
newTrigger = ActivityManageTriggerPhoneCall . resultingTrigger ;
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-05-13 23:50:14 +02:00
this . refreshTriggerList ( ) ;
}
}
2021-02-16 13:42:49 +01:00
else if ( requestCode = = requestCodeActionSpeakTextAdd )
{
if ( resultCode = = RESULT_OK )
{
//add SpeakText
2021-12-19 14:47:46 +01:00
ActivityManageActionSpeakText . resultingAction . setParentRule ( ruleToEdit ) ;
2021-03-29 16:36:21 +02:00
ruleToEdit . getActionSet ( ) . add ( ActivityManageActionSpeakText . resultingAction ) ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionSpeakTextEdit )
{
if ( resultCode = = RESULT_OK )
{
2021-09-02 17:56:17 +02:00
//edit SpeakText
2021-12-19 14:47:46 +01:00
ActivityManageActionSpeakText . resultingAction . setParentRule ( ruleToEdit ) ;
2021-09-02 17:56:17 +02:00
newAction = ActivityManageActionSpeakText . resultingAction ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerBluetoothAdd )
{
//add bluetooth trigger
2021-03-29 16:36:21 +02:00
if ( resultCode = = RESULT_OK & & ActivityManageTriggerBluetooth . editedBluetoothTrigger ! = null )
2021-02-16 13:42:49 +01:00
{
2021-12-19 14:47:46 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
else
Miscellaneous . logEvent ( " w " , " BluetoothTriggerEdit " , " No bluetooth trigger returned. Assuming abort. " , 5 ) ;
}
else if ( requestCode = = requestCodeTriggerBluetoothEdit )
{
//edit bluetooth trigger
2021-03-29 16:36:21 +02:00
if ( resultCode = = RESULT_OK & & ActivityManageTriggerBluetooth . editedBluetoothTrigger ! = null )
2021-02-16 13:42:49 +01:00
{
2021-12-19 14:47:46 +01:00
ActivityManageTriggerBluetooth . editedBluetoothTrigger . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
this . refreshTriggerList ( ) ;
}
else
Miscellaneous . logEvent ( " w " , " BluetoothTriggerEdit " , " No bluetooth trigger returned. Assuming abort. " , 5 ) ;
}
else if ( requestCode = = requestCodeActionScreenBrightnessAdd )
{
if ( resultCode = = RESULT_OK )
{
2022-01-09 15:22:03 +01:00
newAction . setParameter1 ( data . getBooleanExtra ( ActivityManageActionBrightnessSetting . intentNameAutoBrightness , false ) ) ;
newAction . setParameter2 ( String . valueOf ( data . getIntExtra ( ActivityManageActionBrightnessSetting . intentNameBrightnessValue , 0 ) ) ) ;
2021-12-19 14:47:46 +01:00
newAction . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionScreenBrightnessEdit )
{
if ( resultCode = = RESULT_OK )
{
2022-06-13 23:15:25 +02:00
if ( data . hasExtra ( ActivityManageActionBrightnessSetting . intentNameAutoBrightness ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( ActivityManageActionBrightnessSetting . intentNameAutoBrightness , false ) ) ;
2021-02-16 13:42:49 +01:00
2022-06-13 23:15:25 +02:00
if ( data . hasExtra ( ActivityManageActionBrightnessSetting . intentNameBrightnessValue ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( String . valueOf ( data . getIntExtra ( ActivityManageActionBrightnessSetting . intentNameBrightnessValue , 0 ) ) ) ;
2021-02-16 13:42:49 +01:00
2021-12-19 14:47:46 +01:00
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
2021-02-16 13:42:49 +01:00
this . refreshActionList ( ) ;
}
}
2021-07-04 15:53:24 +02:00
else if ( requestCode = = requestCodeActionVibrateAdd )
{
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
newAction . setParentRule ( ruleToEdit ) ;
2021-07-04 15:53:24 +02:00
newAction . setParameter2 ( data . getStringExtra ( " vibratePattern " ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-05-29 02:42:12 +02:00
else if ( requestCode = = requestCodeActionSendBroadcastAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-05-29 20:14:50 +02:00
else if ( requestCode = = requestCodeActionRunExecutableAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-10-02 18:59:54 +02:00
else if ( requestCode = = requestCodeActionMakePhoneCallAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-10-09 17:14:02 +02:00
else if ( requestCode = = requestCodeActionSetVariableAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-07-02 01:38:39 +02:00
else if ( requestCode = = requestCodeActionWakeLockAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-01-27 11:34:04 +01:00
else if ( requestCode = = requestCodeActionControlMediaAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-06-01 22:36:30 +02:00
else if ( requestCode = = requestCodeActionSetWifiAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter1 ( data . getBooleanExtra ( ActivityManageRule . intentNameActionParameter1 , true ) ) ;
newAction . setParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2022-01-09 15:22:03 +01:00
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 ( ) ;
}
}
2022-01-10 23:00:36 +01:00
else if ( requestCode = = requestCodeActionCloseNotificationAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2021-07-04 15:53:24 +02:00
else if ( requestCode = = requestCodeActionVibrateEdit )
{
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
2021-07-04 15:53:24 +02:00
if ( data . hasExtra ( " vibratePattern " ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( " vibratePattern " ) ) ;
this . refreshActionList ( ) ;
}
}
2022-05-29 02:42:12 +02:00
else if ( requestCode = = requestCodeActionSendBroadcastEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
this . refreshActionList ( ) ;
}
}
2022-07-02 01:38:39 +02:00
else if ( requestCode = = requestCodeActionWakeLockEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , true ) ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
this . refreshActionList ( ) ;
}
}
2022-05-29 20:14:50 +02:00
else if ( requestCode = = requestCodeActionRunExecutableEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) & & data . hasExtra ( intentNameActionParameter2 ) )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
this . refreshActionList ( ) ;
}
}
2022-10-02 18:59:54 +02:00
else if ( requestCode = = requestCodeActionMakePhoneCallEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) & & data . hasExtra ( intentNameActionParameter2 ) )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
this . refreshActionList ( ) ;
}
}
2022-10-09 17:14:02 +02:00
else if ( requestCode = = requestCodeActionSetVariableEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
2023-02-12 23:57:37 +01:00
if ( data . hasExtra ( intentNameActionParameter2 ) )
2022-10-09 17:14:02 +02:00
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
this . refreshActionList ( ) ;
}
}
2022-06-01 22:36:30 +02:00
else if ( requestCode = = requestCodeActionSetWifiEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter1 ) & & data . hasExtra ( intentNameActionParameter2 ) )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
this . refreshActionList ( ) ;
}
}
2022-01-27 11:34:04 +01:00
else if ( requestCode = = requestCodeActionControlMediaEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
this . refreshActionList ( ) ;
}
}
2022-01-09 15:22:03 +01:00
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 ( ) ;
}
}
2022-01-10 23:00:36 +01:00
else if ( requestCode = = requestCodeActionCloseNotificationEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
this . refreshActionList ( ) ;
}
}
2021-03-28 23:23:29 +02:00
else if ( requestCode = = requestCodeActionPlaySoundAdd )
{
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
newAction . setParentRule ( ruleToEdit ) ;
2021-12-12 20:03:53 +01:00
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2021-03-28 23:23:29 +02:00
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionPlaySoundEdit )
{
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
2021-12-12 20:03:53 +01:00
if ( data . hasExtra ( intentNameActionParameter1 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
2021-03-28 23:23:29 +02:00
2021-12-12 20:03:53 +01:00
if ( data . hasExtra ( intentNameActionParameter2 ) )
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2021-03-28 23:23:29 +02:00
this . refreshActionList ( ) ;
}
}
2021-09-02 17:56:17 +02:00
else if ( requestCode = = requestCodeActionSendTextMessageAdd )
2021-02-16 13:42:49 +01:00
{
2021-09-02 17:56:17 +02:00
if ( resultCode = = RESULT_OK )
{
2021-12-19 14:47:46 +01:00
ActivityManageActionSendTextMessage . resultingAction . setParentRule ( ruleToEdit ) ;
2021-09-02 17:56:17 +02:00
ruleToEdit . getActionSet ( ) . add ( ActivityManageActionSendTextMessage . resultingAction ) ;
this . refreshActionList ( ) ;
}
2021-02-16 13:42:49 +01:00
}
2021-09-02 17:56:17 +02:00
else if ( requestCode = = requestCodeActionSendTextMessageEdit )
2021-02-16 13:42:49 +01:00
{
2021-09-02 17:56:17 +02:00
if ( resultCode = = RESULT_OK )
{
newAction = ActivityManageActionSendTextMessage . resultingAction ;
2021-12-19 14:47:46 +01:00
newAction . setParentRule ( ruleToEdit ) ;
2021-09-02 17:56:17 +02:00
//ruleToEdit.getActionSet().add(ActivityManageActionSendTextMessage.resultingAction);
this . refreshActionList ( ) ;
}
}
2021-12-12 20:03:53 +01:00
else if ( requestCode = = requestCodeTriggerDeviceOrientationAdd )
2021-11-28 20:01:58 +01:00
{
if ( resultCode = = RESULT_OK )
{
2021-12-12 20:03:53 +01:00
newTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
2021-12-11 14:15:05 +01:00
newTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageTriggerDeviceOrientation . vectorFieldName ) ) ;
2021-12-09 18:03:00 +01:00
newTrigger . setParentRule ( ruleToEdit ) ;
2021-11-28 20:01:58 +01:00
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2021-12-12 20:03:53 +01:00
else if ( requestCode = = requestCodeTriggerDeviceOrientationEdit )
2021-11-28 20:01:58 +01:00
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
2021-12-11 14:15:05 +01:00
editedTrigger . setTriggerType ( Trigger_Enum . deviceOrientation ) ;
2021-12-09 18:03:00 +01:00
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
2021-12-11 14:15:05 +01:00
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageTriggerDeviceOrientation . vectorFieldName ) ) ;
2021-12-09 18:03:00 +01:00
editedTrigger . setParentRule ( ruleToEdit ) ;
2021-11-28 20:01:58 +01:00
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-01-04 17:51:27 +01:00
else if ( requestCode = = requestCodeTriggerProfileAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameTriggerParameter2 ) ) ;
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerProfileEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . profileActive ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameTriggerParameter2 ) ) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
2022-05-22 17:31:55 +02:00
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerBroadcastReceivedAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameTriggerParameter2 ) ) ;
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
else if ( requestCode = = requestCodeTriggerBroadcastReceivedEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . broadcastReceived ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( ActivityManageRule . intentNameTriggerParameter1 , true ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( ActivityManageRule . intentNameTriggerParameter2 ) ) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
2022-01-04 17:51:27 +01:00
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-06-04 02:44:26 +02:00
else if ( requestCode = = requestCodeTriggerTetheringAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
2022-08-18 23:32:57 +02:00
newTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
2022-06-04 02:44:26 +02:00
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-07-24 19:53:45 +02:00
else if ( requestCode = = requestCodeTriggerSubSystemStateAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-10-09 17:14:02 +02:00
else if ( requestCode = = requestCodeTriggerCheckVariableAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2023-12-25 11:57:55 +01:00
else if ( requestCode = = requestCodeTriggerCalendarEventAdd )
{
if ( resultCode = = RESULT_OK )
{
newTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
newTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
newTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . add ( newTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-06-04 02:44:26 +02:00
else if ( requestCode = = requestCodeTriggerTetheringEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . tethering ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
2022-08-18 23:32:57 +02:00
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
2022-06-04 02:44:26 +02:00
editedTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-07-24 19:53:45 +02:00
else if ( requestCode = = requestCodeTriggerSubSystemStateEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . subSystemState ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2022-10-09 17:14:02 +02:00
else if ( requestCode = = requestCodeTriggerCheckVariableEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . checkVariable ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2023-12-25 11:57:55 +01:00
else if ( requestCode = = requestCodeTriggerCalendarEventEdit )
{
if ( resultCode = = RESULT_OK )
{
Trigger editedTrigger = new Trigger ( ) ;
editedTrigger . setTriggerType ( Trigger_Enum . calendarEvent ) ;
editedTrigger . setTriggerParameter ( data . getBooleanExtra ( intentNameTriggerParameter1 , true ) ) ;
editedTrigger . setTriggerParameter2 ( data . getStringExtra ( intentNameTriggerParameter2 ) ) ;
editedTrigger . setParentRule ( ruleToEdit ) ;
ruleToEdit . getTriggerSet ( ) . set ( editIndex , editedTrigger ) ;
this . refreshTriggerList ( ) ;
}
}
2023-03-12 23:57:54 +01:00
else if ( requestCode = = requestCodeActionCopyTextToClipboardAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
newAction . setParameter1 ( data . getBooleanExtra ( intentNameActionParameter1 , false ) ) ;
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
2023-03-15 23:27:27 +01:00
else if ( requestCode = = requestCodeActionCopyTextToClipboardEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
if ( data . hasExtra ( intentNameActionParameter2 ) )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
2023-12-19 23:52:28 +01:00
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionSetLocationServiceAdd )
{
if ( resultCode = = RESULT_OK )
{
newAction . setParentRule ( ruleToEdit ) ;
2023-12-20 23:54:36 +01:00
// newAction.setParameter1(data.getBooleanExtra(intentNameActionParameter1, false));
newAction . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
2023-12-19 23:52:28 +01:00
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
this . refreshActionList ( ) ;
}
}
else if ( requestCode = = requestCodeActionSetLocationServiceEdit )
{
if ( resultCode = = RESULT_OK )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParentRule ( ruleToEdit ) ;
2023-12-20 23:54:36 +01:00
// ruleToEdit.getActionSet().get(editIndex).setParameter1(data.getBooleanExtra(intentNameActionParameter1, false));
2023-12-19 23:52:28 +01:00
2023-12-20 23:54:36 +01:00
if ( data . hasExtra ( intentNameActionParameter2 ) )
{
ruleToEdit . getActionSet ( ) . get ( editIndex ) . setParameter2 ( data . getStringExtra ( intentNameActionParameter2 ) ) ;
}
2023-12-19 23:52:28 +01:00
2023-03-15 23:27:27 +01:00
this . refreshActionList ( ) ;
}
}
2021-02-16 13:42:49 +01:00
}
2021-12-18 02:43:04 +01:00
protected AlertDialog getActionTypeDialog ( )
2021-02-16 13:42:49 +01:00
{
final ArrayList < Item > items = new ArrayList < Item > ( ) ;
CharSequence [ ] types = Action . getActionTypesAsArray ( ) ;
CharSequence [ ] typesLong = Action . getActionTypesFullNameStringAsArray ( this ) ;
for ( int i = 0 ; i < types . length ; i + + )
{
if ( types [ i ] . toString ( ) . equals ( Action_Enum . setWifi . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . wifi ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setBluetooth . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . bluetooth ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setUsbTethering . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . router ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setWifiTethering . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . router ) ) ;
2021-11-13 14:48:56 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setBluetoothTethering . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . router ) ) ;
2021-02-16 13:42:49 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setDisplayRotation . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . displayrotation ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . waitBeforeNextAction . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . wait ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setAirplaneMode . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . plane ) ) ;
2021-12-08 19:57:27 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . turnScreenOnOrOff . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . smartphone ) ) ;
2021-02-16 13:42:49 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . changeSoundProfile . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . sound ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . triggerUrl . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . triggerurl ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . startOtherActivity . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . startprogram ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setDataConnection . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . dataconnection ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . speakText . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . talking ) ) ;
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . playMusic . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . tune ) ) ;
2022-01-24 20:13:35 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . controlMediaPlayback . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . tune ) ) ;
2021-02-16 13:42:49 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setScreenBrightness . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . brightness ) ) ;
2021-03-28 20:33:44 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . playSound . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . sound ) ) ;
2021-07-04 15:53:24 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . vibrate . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . vibrate ) ) ;
2022-01-09 22:42:47 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . createNotification . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . notification ) ) ;
2022-01-11 16:04:04 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . closeNotification . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . notification ) ) ;
2022-05-29 02:42:12 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . sendBroadcast . toString ( ) ) )
2022-06-02 17:41:41 +02:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . megaphone ) ) ;
2022-07-02 01:38:39 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . wakelock . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . coffee ) ) ;
2022-05-29 20:14:50 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . runExecutable . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . script ) ) ;
2022-10-03 13:22:25 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . startPhoneCall . toString ( ) ) )
2022-10-02 23:26:27 +02:00
{
if ( ActivityPermissions . isPermissionDeclaratedInManifest ( ActivityManageRule . this , Manifest . permission . CALL_PHONE ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . phone ) ) ;
}
2022-10-03 13:22:25 +02:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . stopPhoneCall . toString ( ) ) )
{
if ( ActivityPermissions . isPermissionDeclaratedInManifest ( ActivityManageRule . this , Manifest . permission . ANSWER_PHONE_CALLS ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . phone ) ) ;
}
2021-02-16 13:42:49 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . sendTextMessage . toString ( ) ) )
{
2021-09-15 21:58:18 +02:00
if ( ActivityPermissions . isPermissionDeclaratedInManifest ( ActivityManageRule . this , Manifest . permission . SEND_SMS ) )
2021-02-16 13:42:49 +01:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . message ) ) ;
}
2023-03-15 23:27:27 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . copyToClipboard . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . clipboard ) ) ;
2023-12-14 00:15:59 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . takeScreenshot . toString ( ) ) )
2023-12-16 13:52:18 +01:00
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . copier ) ) ;
2023-12-28 00:25:55 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setVariable . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . variable ) ) ;
2023-12-20 23:54:36 +01:00
else if ( types [ i ] . toString ( ) . equals ( Action_Enum . setLocationService . toString ( ) ) )
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . compass_small ) ) ;
2021-02-16 13:42:49 +01:00
else
items . add ( new Item ( typesLong [ i ] . toString ( ) , R . drawable . placeholder ) ) ;
}
2021-03-28 20:33:44 +02:00
ListAdapter adapter = new ArrayAdapter < Item > ( this , android . R . layout . select_dialog_item , android . R . id . text1 , items )
{
public View getView ( int position , View convertView , ViewGroup parent )
{
//User super class to create the View
View v = super . getView ( position , convertView , parent ) ;
2021-02-16 13:42:49 +01:00
2021-03-28 20:33:44 +02:00
TextView tv = ( TextView ) v . findViewById ( android . R . id . text1 ) ;
2021-02-16 13:42:49 +01:00
2021-03-28 20:33:44 +02:00
//Put the image on the TextView
tv . setCompoundDrawablesWithIntrinsicBounds ( items . get ( position ) . icon , 0 , 0 , 0 ) ;
2021-02-16 13:42:49 +01:00
2021-03-28 20:33:44 +02:00
//Add margin between image and text (support various screen densities)
int dp5 = ( int ) ( 5 * getResources ( ) . getDisplayMetrics ( ) . density + 0 . 5f ) ;
tv . setCompoundDrawablePadding ( dp5 ) ;
2021-02-16 13:42:49 +01:00
2021-03-28 20:33:44 +02:00
return v ;
}
} ;
AlertDialog . Builder builder = new AlertDialog . Builder ( this )
. setTitle ( getResources ( ) . getString ( R . string . selectTypeOfAction ) )
. setAdapter ( adapter , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int which )
{
newAction = new Action ( ) ;
if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . triggerUrl . toString ( ) ) )
{
//launch other activity to enter a url and parameters;
newAction . setAction ( Action_Enum . triggerUrl ) ;
2024-01-06 17:25:27 +01:00
// ActivityManageActionTriggerUrl.resultingAction = null;
2021-03-29 16:36:21 +02:00
Intent editTriggerIntent = new Intent ( context , ActivityManageActionTriggerUrl . class ) ;
2021-09-15 21:58:18 +02:00
startActivityForResult ( editTriggerIntent , requestCodeActionTriggerUrlAdd ) ;
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setWifi . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setWifi ) ;
2022-06-01 22:36:30 +02:00
Intent editSetWifiIntent = new Intent ( context , ActivityManageActionWifi . class ) ;
startActivityForResult ( editSetWifiIntent , requestCodeActionSetWifiAdd ) ;
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setBluetooth . toString ( ) ) )
{
if ( ! getPackageManager ( ) . hasSystemFeature ( PackageManager . FEATURE_BLUETOOTH ) )
Miscellaneous . messageBox ( " Bluetooth " , getResources ( ) . getString ( R . string . deviceDoesNotHaveBluetooth ) , ActivityManageRule . this ) . show ( ) ; ;
newAction . setAction ( Action_Enum . setBluetooth ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setUsbTethering . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setUsbTethering ) ;
2021-09-24 19:15:41 +02:00
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
2021-03-28 20:33:44 +02:00
if ( Build . VERSION . SDK_INT > Build . VERSION_CODES . GINGERBREAD_MR1 )
2021-05-13 18:37:34 +02:00
Miscellaneous . messageBox ( context . getResources ( ) . getString ( R . string . warning ) , context . getResources ( ) . getString ( R . string . usbTetheringFailForAboveGingerbread ) , context ) . show ( ) ;
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setWifiTethering . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setWifiTethering ) ;
2021-06-16 23:12:00 +02:00
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
2021-03-28 20:33:44 +02:00
}
2021-11-13 14:48:56 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setBluetoothTethering . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setBluetoothTethering ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
2021-11-26 19:26:42 +01:00
if ( ! getPackageManager ( ) . hasSystemFeature ( PackageManager . FEATURE_BLUETOOTH ) )
Miscellaneous . messageBox ( " Bluetooth " , getResources ( ) . getString ( R . string . deviceDoesNotHaveBluetooth ) , ActivityManageRule . this ) . show ( ) ; ;
if ( Build . VERSION . SDK_INT > Build . VERSION_CODES . O )
Miscellaneous . messageBox ( context . getResources ( ) . getString ( R . string . notice ) , context . getResources ( ) . getString ( R . string . btTetheringNotice ) , context ) . show ( ) ;
2021-11-13 14:48:56 +01:00
}
2021-03-28 20:33:44 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setDisplayRotation . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setDisplayRotation ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . changeSoundProfile . toString ( ) ) )
{
if ( Profile . getProfileCollection ( ) . size ( ) > 0 )
2021-02-16 13:42:49 +01:00
{
2021-03-28 20:33:44 +02:00
newAction . setAction ( Action_Enum . changeSoundProfile ) ;
getActionSoundProfileDialog ( context ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-03-28 20:33:44 +02:00
else
Toast . makeText ( context , getResources ( ) . getString ( R . string . noProfilesCreateOneFirst ) , Toast . LENGTH_LONG ) . show ( ) ;
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . startOtherActivity . toString ( ) ) )
{
newAction . setAction ( Action_Enum . startOtherActivity ) ;
2021-03-29 16:36:21 +02:00
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionStartActivity . class ) ;
2021-09-15 21:58:18 +02:00
startActivityForResult ( intent , requestCodeActionStartActivityAdd ) ;
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . waitBeforeNextAction . toString ( ) ) )
{
newAction . setAction ( Action_Enum . waitBeforeNextAction ) ;
getActionWaitBeforeNextActionDialog ( ActivityManageRule . this ) . show ( ) ;
}
2021-12-08 19:57:27 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . turnScreenOnOrOff . toString ( ) ) )
{
newAction . setAction ( Action_Enum . turnScreenOnOrOff ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
}
2021-03-28 20:33:44 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setAirplaneMode . toString ( ) ) )
{
2021-05-30 20:03:30 +02:00
newAction . setAction ( Action_Enum . setAirplaneMode ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
2021-03-28 20:33:44 +02:00
if ( Build . VERSION . SDK_INT > = 17 )
2021-02-16 13:42:49 +01:00
{
2021-03-28 20:33:44 +02:00
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . airplaneMode ) , getResources ( ) . getString ( R . string . rootExplanation ) , ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setDataConnection . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setDataConnection ) ;
getActionParameter1Dialog ( ActivityManageRule . this ) . show ( ) ;
Miscellaneous . messageBox ( getResources ( ) . getString ( R . string . actionDataConnection ) , getResources ( ) . getString ( R . string . rootExplanation ) , ActivityManageRule . this ) . show ( ) ;
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . speakText . toString ( ) ) )
{
//launch other activity to enter a url and parameters;
newAction . setAction ( Action_Enum . speakText ) ;
2021-03-29 16:36:21 +02:00
ActivityManageActionSpeakText . resultingAction = null ;
Intent editTriggerIntent = new Intent ( context , ActivityManageActionSpeakText . class ) ;
2021-09-15 21:58:18 +02:00
startActivityForResult ( editTriggerIntent , requestCodeActionSpeakTextAdd ) ;
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . sendTextMessage . toString ( ) ) )
{
2021-12-12 20:03:53 +01:00
if ( ActivityPermissions . isPermissionDeclaratedInManifest ( ActivityManageRule . this , Manifest . permission . SEND_SMS ) )
2021-02-16 13:42:49 +01:00
{
2021-03-28 20:33:44 +02:00
//launch other activity to enter parameters;
newAction . setAction ( Action_Enum . sendTextMessage ) ;
2021-03-29 16:36:21 +02:00
ActivityManageActionSendTextMessage . resultingAction = null ;
Intent editTriggerIntent = new Intent ( context , ActivityManageActionSendTextMessage . class ) ;
2021-07-04 15:53:24 +02:00
startActivityForResult ( editTriggerIntent , requestCodeActionSendTextMessageAdd ) ;
2021-02-16 13:42:49 +01:00
}
2021-03-28 20:33:44 +02:00
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . playMusic . toString ( ) ) )
{
newAction . setAction ( Action_Enum . playMusic ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
2021-07-04 15:53:24 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . vibrate . toString ( ) ) )
{
newAction . setAction ( Action_Enum . vibrate ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionVibrate . class ) ;
startActivityForResult ( intent , requestCodeActionVibrateAdd ) ;
}
2022-05-29 02:42:12 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . sendBroadcast . toString ( ) ) )
{
newAction . setAction ( Action_Enum . sendBroadcast ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionSendBroadcast . class ) ;
startActivityForResult ( intent , requestCodeActionSendBroadcastAdd ) ;
}
2022-05-29 20:14:50 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . runExecutable . toString ( ) ) )
{
newAction . setAction ( Action_Enum . runExecutable ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionRunExecutable . class ) ;
startActivityForResult ( intent , requestCodeActionRunExecutableAdd ) ;
}
2022-10-03 13:22:25 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . startPhoneCall . toString ( ) ) )
2022-10-02 18:59:54 +02:00
{
2022-10-03 13:22:25 +02:00
newAction . setAction ( Action_Enum . startPhoneCall ) ;
2022-10-02 23:26:27 +02:00
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionMakePhoneCall . class ) ;
2022-10-02 18:59:54 +02:00
startActivityForResult ( intent , requestCodeActionMakePhoneCallAdd ) ;
}
2022-10-09 17:14:02 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setVariable . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setVariable ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionSetVariable . class ) ;
startActivityForResult ( intent , requestCodeActionSetVariableAdd ) ;
}
2022-10-03 13:22:25 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . stopPhoneCall . toString ( ) ) )
{
newAction . setAction ( Action_Enum . stopPhoneCall ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
2022-07-02 01:38:39 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . wakelock . toString ( ) ) )
{
newAction . setAction ( Action_Enum . wakelock ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionWakeLock . class ) ;
startActivityForResult ( intent , requestCodeActionWakeLockAdd ) ;
}
2022-01-27 11:34:04 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . controlMediaPlayback . toString ( ) ) )
{
newAction . setAction ( Action_Enum . controlMediaPlayback ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionControlMedia . class ) ;
startActivityForResult ( intent , requestCodeActionControlMediaAdd ) ;
}
2022-01-09 15:22:03 +01:00
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 ) ;
}
2022-01-10 23:00:36 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . closeNotification . toString ( ) ) )
{
newAction . setAction ( Action_Enum . closeNotification ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionCloseNotification . class ) ;
startActivityForResult ( intent , requestCodeActionCloseNotificationAdd ) ;
}
2021-03-28 20:33:44 +02:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setScreenBrightness . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setScreenBrightness ) ;
2021-03-29 16:36:21 +02:00
Intent actionScreenBrightnessIntent = new Intent ( context , ActivityManageActionBrightnessSetting . class ) ;
2021-03-28 20:33:44 +02:00
startActivityForResult ( actionScreenBrightnessIntent , requestCodeActionScreenBrightnessAdd ) ;
}
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . playSound . toString ( ) ) )
{
newAction . setAction ( Action_Enum . playSound ) ;
Intent actionPlaySoundIntent = new Intent ( context , ActivityManageActionPlaySound . class ) ;
startActivityForResult ( actionPlaySoundIntent , requestCodeActionPlaySoundAdd ) ;
}
2023-03-12 23:57:54 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . copyToClipboard . toString ( ) ) )
{
newAction . setAction ( Action_Enum . copyToClipboard ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionCopyToClipboard . class ) ;
startActivityForResult ( intent , requestCodeActionCopyTextToClipboardAdd ) ;
}
2023-12-14 00:15:59 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . takeScreenshot . toString ( ) ) )
{
newAction . setAction ( Action_Enum . takeScreenshot ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
2023-12-19 23:52:28 +01:00
else if ( Action . getActionTypesAsArray ( ) [ which ] . toString ( ) . equals ( Action_Enum . setLocationService . toString ( ) ) )
{
newAction . setAction ( Action_Enum . setLocationService ) ;
Intent intent = new Intent ( ActivityManageRule . this , ActivityManageActionLocationService . class ) ;
startActivityForResult ( intent , requestCodeActionSetLocationServiceAdd ) ;
}
2021-03-28 20:33:44 +02:00
}
} ) ;
return builder . create ( ) ;
2021-02-16 13:42:49 +01:00
}
private AlertDialog getActionSoundProfileDialog ( final Context myContext )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . selectSoundProfile ) ) ;
final String [ ] choices ;
// choices = new String[]{"silent", "vibrate", "normal"};
ArrayList < String > list = Profile . getProfileCollectionString ( ) ;
choices = list . toArray ( new String [ list . size ( ) ] ) ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
newAction . setParameter2 ( choices [ which ] ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getTriggerDeleteDialog ( Context myContext , final Trigger triggerToBeDeleted )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . whatToDoWithTrigger ) ) ;
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
ruleToEdit . getTriggerSet ( ) . remove ( triggerToBeDeleted ) ;
refreshTriggerList ( ) ;
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getActionDeleteDialog ( Context myContext , final Action actionToBeDeleted )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( getResources ( ) . getString ( R . string . whatToDoWithAction ) ) ;
alertDialogBuilder . setItems ( new String [ ] { getResources ( ) . getString ( R . string . delete ) , getResources ( ) . getString ( R . string . moveUp ) , getResources ( ) . getString ( R . string . moveDown ) } , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
int positionOfSelected ;
switch ( which )
{
case 0 :
// Delete
if ( ruleToEdit . getActionSet ( ) . remove ( actionToBeDeleted ) )
{
refreshActionList ( ) ;
}
break ;
case 1 :
// Move up
positionOfSelected = ruleToEdit . getActionSet ( ) . indexOf ( actionToBeDeleted ) ;
if ( positionOfSelected > 0 )
{
Miscellaneous . logEvent ( " i " , " Swap " , " Swapping positions " + String . valueOf ( positionOfSelected ) + " and " + String . valueOf ( positionOfSelected - 1 ) , 4 ) ;
Collections . swap ( ruleToEdit . getActionSet ( ) , positionOfSelected , positionOfSelected - 1 ) ;
refreshActionList ( ) ;
}
else
{
// Is already at the top
2021-02-17 22:27:53 +01:00
Toast . makeText ( ActivityManageRule . this , getResources ( ) . getString ( R . string . cantMoveUp ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
break ;
case 2 :
// Move down
positionOfSelected = ruleToEdit . getActionSet ( ) . indexOf ( actionToBeDeleted ) ;
Miscellaneous . logEvent ( " i " , " Swap " , " Swapping positions " + String . valueOf ( positionOfSelected ) + " and " + String . valueOf ( positionOfSelected + 1 ) , 4 ) ;
if ( positionOfSelected < ruleToEdit . getActionSet ( ) . size ( ) - 1 )
{
Collections . swap ( ruleToEdit . getActionSet ( ) , positionOfSelected , positionOfSelected + 1 ) ;
refreshActionList ( ) ;
}
else
{
// Is already at the bottom
2021-02-17 22:27:53 +01:00
Toast . makeText ( ActivityManageRule . this , getResources ( ) . getString ( R . string . cantMoveDown ) , Toast . LENGTH_LONG ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
break ;
}
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
}
private AlertDialog getActionWaitBeforeNextActionDialog ( final Context myContext )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( myContext . getResources ( ) . getString ( R . string . waitBeforeNextAction ) ) ;
alertDialog . setMessage ( myContext . getResources ( ) . getString ( R . string . waitBeforeNextActionEnterValue ) ) ;
// Set an EditText view to get user input
final EditText input = new EditText ( this ) ;
input . setInputType ( InputType . TYPE_CLASS_NUMBER ) ;
alertDialog . setView ( input ) ;
alertDialog . setPositiveButton ( " Ok " , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
if ( input . getText ( ) . toString ( ) . length ( ) = = 0 | input . getText ( ) . toString ( ) . equals ( " 0 " ) | input . getText ( ) . toString ( ) . contains ( " , " ) | input . getText ( ) . toString ( ) . contains ( " . " ) )
{
2021-02-17 22:27:53 +01:00
Toast . makeText ( myContext , ActivityManageRule . this . getResources ( ) . getString ( R . string . enterAPositiveValidNonDecimalNumber ) , Toast . LENGTH_LONG ) . show ( ) ;
getActionWaitBeforeNextActionDialog ( ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
else
{
newAction . setParameter2 ( input . getText ( ) . toString ( ) ) ;
newAction . toString ( ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
}
} ) ;
alertDialog . setNegativeButton ( myContext . getResources ( ) . getString ( R . string . cancel ) , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
// Canceled.
}
} ) ;
return alertDialog . create ( ) ;
}
private AlertDialog getActionWakeupDeviceDialog ( final Context myContext )
{
AlertDialog . Builder alertDialog = new AlertDialog . Builder ( this ) ;
alertDialog . setTitle ( myContext . getResources ( ) . getString ( R . string . wakeupDevice ) ) ;
alertDialog . setMessage ( myContext . getResources ( ) . getString ( R . string . wakeupDeviceValue ) ) ;
// Set an EditText view to get user input
final EditText input = new EditText ( this ) ;
input . setInputType ( InputType . TYPE_CLASS_NUMBER ) ;
alertDialog . setView ( input ) ;
alertDialog . setPositiveButton ( " Ok " , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
if ( input . getText ( ) . toString ( ) . length ( ) = = 0 | input . getText ( ) . toString ( ) . contains ( " , " ) | input . getText ( ) . toString ( ) . contains ( " . " ) )
{
2021-02-17 22:27:53 +01:00
Toast . makeText ( myContext , ActivityManageRule . this . getResources ( ) . getString ( R . string . enterAPositiveValidNonDecimalNumber ) , Toast . LENGTH_LONG ) . show ( ) ;
getActionWakeupDeviceDialog ( ActivityManageRule . this ) . show ( ) ;
2021-02-16 13:42:49 +01:00
}
else
{
newAction . setParameter2 ( input . getText ( ) . toString ( ) ) ;
newAction . toString ( ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
}
} ) ;
alertDialog . setNegativeButton ( myContext . getResources ( ) . getString ( R . string . cancel ) , new DialogInterface . OnClickListener ( )
{
public void onClick ( DialogInterface dialog , int whichButton )
{
// Canceled.
}
} ) ;
return alertDialog . create ( ) ;
}
private AlertDialog getActionParameter1Dialog ( final Context myContext )
{
AlertDialog . Builder alertDialogBuilder = new AlertDialog . Builder ( context ) ;
alertDialogBuilder . setTitle ( myContext . getResources ( ) . getString ( R . string . selectToggleDirection ) ) ;
final String choices [ ] = { myContext . getString ( R . string . activate ) , myContext . getString ( R . string . deactivate ) } ;
alertDialogBuilder . setItems ( choices , new DialogInterface . OnClickListener ( )
{
@Override
public void onClick ( DialogInterface dialog , int which )
{
if ( which = = 0 )
newAction . setParameter1 ( true ) ;
else
newAction . setParameter1 ( false ) ;
ruleToEdit . getActionSet ( ) . add ( newAction ) ;
refreshActionList ( ) ;
}
} ) ;
AlertDialog alertDialog = alertDialogBuilder . create ( ) ;
return alertDialog ;
2022-01-24 20:13:35 +01:00
}
2021-02-16 13:42:49 +01:00
protected void refreshTriggerList ( )
{
Miscellaneous . logEvent ( " i " , " ListView " , " Attempting to update TriggerListView " , 4 ) ;
if ( triggerListView . getAdapter ( ) = = null )
{
triggerListView . setAdapter ( triggerListViewAdapter ) ;
}
triggerListViewAdapter . notifyDataSetChanged ( ) ;
}
protected void refreshActionList ( )
{
Miscellaneous . logEvent ( " i " , " ListView " , " Attempting to update ActionListView " , 4 ) ;
if ( actionListView . getAdapter ( ) = = null )
{
actionListView . setAdapter ( actionListViewAdapter ) ;
}
actionListViewAdapter . notifyDataSetChanged ( ) ;
}
public static class Item
{
public final String text ;
public final int icon ;
public Item ( String text , Integer icon )
{
this . text = text ;
this . icon = icon ;
}
@Override
public String toString ( ) {
return text ;
}
}
protected void hideKeyboard ( )
{
View view = this . getCurrentFocus ( ) ;
if ( view ! = null )
{
InputMethodManager imm = ( InputMethodManager ) getSystemService ( Context . INPUT_METHOD_SERVICE ) ;
imm . hideSoftInputFromWindow ( view . getWindowToken ( ) , 0 ) ;
}
}
2022-01-10 23:00:36 +01:00
}