Automation/app/src/main/java/com/jens/automation2/ActivityManageTriggerTimeFrame.java

261 lines
8.4 KiB
Java
Raw Normal View History

2021-02-16 13:42:49 +01:00
package com.jens.automation2;
import android.app.Activity;
import android.content.Intent;
2021-02-16 13:42:49 +01:00
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
2021-11-07 17:29:00 +01:00
import android.widget.CompoundButton;
import android.widget.EditText;
2021-02-16 13:42:49 +01:00
import android.widget.RadioButton;
2022-05-21 13:34:44 +02:00
import android.widget.TextView;
2021-02-16 13:42:49 +01:00
import android.widget.TimePicker;
import android.widget.Toast;
2021-11-07 17:29:00 +01:00
import org.apache.commons.lang3.StringUtils;
2021-02-16 13:42:49 +01:00
import java.sql.Time;
import java.util.ArrayList;
import java.util.Calendar;
2021-03-29 16:36:21 +02:00
public class ActivityManageTriggerTimeFrame extends Activity
2021-02-16 13:42:49 +01:00
{
Button bSaveTimeFrame;
TimePicker startPicker, stopPicker;
2021-11-07 17:29:00 +01:00
CheckBox checkMonday, checkTuesday, checkWednesday, checkThursday, checkFriday, checkSaturday, checkSunday, chkRepeat;
2021-02-16 13:42:49 +01:00
RadioButton radioTimeFrameEntering, radioTimeFrameLeaving;
2021-11-07 17:29:00 +01:00
EditText etRepeatEvery;
2022-05-21 13:34:44 +02:00
TextView tvDaysHint;
2021-02-16 13:42:49 +01:00
static Trigger editedTimeFrameTrigger = null;
2021-02-16 13:42:49 +01:00
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
2021-05-13 18:37:34 +02:00
setContentView(R.layout.activity_manage_trigger_timeframe);
2021-02-16 13:42:49 +01:00
startPicker = (TimePicker)findViewById(R.id.tpTimeFrameStart);
stopPicker = (TimePicker)findViewById(R.id.tpTimeFrameStop);
startPicker.setIs24HourView(true);
stopPicker.setIs24HourView(true);
bSaveTimeFrame = (Button)findViewById(R.id.bSaveTimeFrame);
checkMonday = (CheckBox)findViewById(R.id.checkMonday);
checkTuesday = (CheckBox)findViewById(R.id.checkTuesday);
checkWednesday = (CheckBox)findViewById(R.id.checkWednesday);
checkThursday = (CheckBox)findViewById(R.id.checkThursday);
checkFriday = (CheckBox)findViewById(R.id.checkFriday);
checkSaturday = (CheckBox)findViewById(R.id.checkSaturday);
checkSunday = (CheckBox)findViewById(R.id.checkSunday);
radioTimeFrameEntering = (RadioButton)findViewById(R.id.radioTimeFrameEntering);
radioTimeFrameLeaving = (RadioButton)findViewById(R.id.radioTimeFrameLeaving);
2021-11-07 17:29:00 +01:00
chkRepeat = (CheckBox)findViewById(R.id.chkRepeat);
etRepeatEvery = (EditText)findViewById(R.id.etRepeatEvery);
2022-05-21 13:34:44 +02:00
tvDaysHint = (TextView)findViewById(R.id.tvDaysHint);
2021-11-07 17:29:00 +01:00
2021-02-16 13:42:49 +01:00
bSaveTimeFrame.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
2022-05-26 18:47:30 +02:00
TimeObject startTime = new TimeObject();
2021-02-16 13:42:49 +01:00
startTime.setHours(startPicker.getCurrentHour());
startTime.setMinutes(startPicker.getCurrentMinute());
2022-05-26 18:47:30 +02:00
TimeObject stopTime = new TimeObject();
2021-02-16 13:42:49 +01:00
stopTime.setHours(stopPicker.getCurrentHour());
stopTime.setMinutes(stopPicker.getCurrentMinute());
ArrayList<Integer> dayList = new ArrayList<Integer>();
if(checkMonday.isChecked())
dayList.add(Calendar.MONDAY);
if(checkTuesday.isChecked())
dayList.add(Calendar.TUESDAY);
if(checkWednesday.isChecked())
dayList.add(Calendar.WEDNESDAY);
if(checkThursday.isChecked())
dayList.add(Calendar.THURSDAY);
if(checkFriday.isChecked())
dayList.add(Calendar.FRIDAY);
if(checkSaturday.isChecked())
dayList.add(Calendar.SATURDAY);
if(checkSunday.isChecked())
dayList.add(Calendar.SUNDAY);
if(
!checkMonday.isChecked()
&&
!checkTuesday.isChecked()
&&
!checkWednesday.isChecked()
&&
!checkThursday.isChecked()
&&
!checkFriday.isChecked()
&&
!checkSaturday.isChecked()
&&
!checkSunday.isChecked()
)
{
Toast.makeText(getBaseContext(), getResources().getString(R.string.selectOneDay), Toast.LENGTH_LONG).show();
return;
2021-11-07 17:29:00 +01:00
}
boolean goOn = false;
if(chkRepeat.isChecked())
{
if(!StringUtils.isEmpty(etRepeatEvery.getText().toString()))
{
try
{
long value = Long.parseLong(etRepeatEvery.getText().toString());
if(value > 0)
{
goOn = true;
}
}
catch(Exception e)
{
}
}
}
else
goOn = true;
if(!goOn)
{
Toast.makeText(getBaseContext(), getResources().getString(R.string.enterRepetitionTime), Toast.LENGTH_LONG).show();
return;
}
2021-02-16 13:42:49 +01:00
if(editedTimeFrameTrigger.getTimeFrame() == null)
2021-11-07 17:29:00 +01:00
{
2021-02-16 13:42:49 +01:00
// add new one
2021-11-07 17:29:00 +01:00
if(chkRepeat.isChecked())
editedTimeFrameTrigger.setTimeFrame(new TimeFrame(startTime, stopTime, dayList, Long.parseLong(etRepeatEvery.getText().toString())));
else
editedTimeFrameTrigger.setTimeFrame(new TimeFrame(startTime, stopTime, dayList, 0));
}
2021-02-16 13:42:49 +01:00
else
{
// edit one
editedTimeFrameTrigger.getTimeFrame().setTriggerTimeStart(startTime);
editedTimeFrameTrigger.getTimeFrame().setTriggerTimeStop(stopTime);
editedTimeFrameTrigger.getTimeFrame().getDayList().clear();
editedTimeFrameTrigger.getTimeFrame().setDayList(dayList);
2021-11-07 17:29:00 +01:00
if(chkRepeat.isChecked())
editedTimeFrameTrigger.getTimeFrame().setRepetition(Long.parseLong(etRepeatEvery.getText().toString()));
else
editedTimeFrameTrigger.getTimeFrame().setRepetition(0);
2021-02-16 13:42:49 +01:00
}
editedTimeFrameTrigger.setTriggerParameter(radioTimeFrameEntering.isChecked());
editedTimeFrameTrigger.setTriggerParameter2(editedTimeFrameTrigger.getTimeFrame().toTriggerParameter2String());
Intent response = new Intent();
response.putExtra(ActivityManageRule.intentNameTriggerParameter1, editedTimeFrameTrigger.getTriggerParameter());
response.putExtra(ActivityManageRule.intentNameTriggerParameter2, editedTimeFrameTrigger.getTriggerParameter2());
setResult(RESULT_OK, response);
2021-02-16 13:42:49 +01:00
finish();
}
});
2021-11-07 17:29:00 +01:00
chkRepeat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
etRepeatEvery.setEnabled(isChecked);
}
});
if(getIntent().hasExtra(ActivityManageRule.intentNameTriggerParameter2))
{
editedTimeFrameTrigger = new Trigger();
editedTimeFrameTrigger.setTriggerParameter(getIntent().getBooleanExtra(ActivityManageRule.intentNameTriggerParameter1, true));
editedTimeFrameTrigger.setTriggerParameter2(getIntent().getStringExtra(ActivityManageRule.intentNameTriggerParameter2));
editedTimeFrameTrigger.setTimeFrame(new TimeFrame(editedTimeFrameTrigger.getTriggerParameter2()));
2021-02-16 13:42:49 +01:00
loadVariableIntoGui();
}
2022-05-21 13:34:44 +02:00
TimePicker.OnTimeChangedListener pickerListener = new TimePicker.OnTimeChangedListener()
{
@Override
public void onTimeChanged(TimePicker timePicker, int i, int i1)
{
if(
startPicker.getCurrentHour() > stopPicker.getCurrentHour()
||
(
startPicker.getCurrentHour() == stopPicker.getCurrentHour()
&&
startPicker.getCurrentMinute() >= stopPicker.getCurrentMinute()
)
)
tvDaysHint.setText(getResources().getString(R.string.timeFrameDaysHint));
else
tvDaysHint.setText("");
}
};
startPicker.setOnTimeChangedListener(pickerListener);
stopPicker.setOnTimeChangedListener(pickerListener);
// Perform check once
pickerListener.onTimeChanged(null, 0, 0);
2021-02-16 13:42:49 +01:00
}
private void loadVariableIntoGui()
{
startPicker.setCurrentHour(editedTimeFrameTrigger.getTimeFrame().getTriggerTimeStart().getHours());
startPicker.setCurrentMinute(editedTimeFrameTrigger.getTimeFrame().getTriggerTimeStart().getMinutes());
stopPicker.setCurrentHour(editedTimeFrameTrigger.getTimeFrame().getTriggerTimeStop().getHours());
stopPicker.setCurrentMinute(editedTimeFrameTrigger.getTimeFrame().getTriggerTimeStop().getMinutes());
radioTimeFrameEntering.setChecked(editedTimeFrameTrigger.getTriggerParameter());
radioTimeFrameLeaving.setChecked(!editedTimeFrameTrigger.getTriggerParameter());
for(int day : editedTimeFrameTrigger.getTimeFrame().getDayList())
{
switch(day)
{
case Calendar.MONDAY:
checkMonday.setChecked(true);
break;
case Calendar.TUESDAY:
checkTuesday.setChecked(true);
break;
case Calendar.WEDNESDAY:
checkWednesday.setChecked(true);
break;
case Calendar.THURSDAY:
checkThursday.setChecked(true);
break;
case Calendar.FRIDAY:
checkFriday.setChecked(true);
break;
case Calendar.SATURDAY:
checkSaturday.setChecked(true);
break;
case Calendar.SUNDAY:
checkSunday.setChecked(true);
break;
default:
Miscellaneous.logEvent("w", "TimeFrame", "Daylist contains invalid day: " + String.valueOf(day), 4);
break;
}
}
2021-11-07 17:29:00 +01:00
if(editedTimeFrameTrigger.getTimeFrame().getRepetition() > 0)
{
chkRepeat.setChecked(true);
etRepeatEvery.setText(String.valueOf(editedTimeFrameTrigger.getTimeFrame().getRepetition()));
}
2021-02-16 13:42:49 +01:00
}
}