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

224 lines
6.8 KiB
Java

package com.jens.automation2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TimePicker;
import android.widget.Toast;
import org.apache.commons.lang3.StringUtils;
import java.sql.Time;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
public class ActivityManageTriggerTimeFrame extends Activity
{
Button bSaveTimeFrame;
TimePicker startPicker, stopPicker;
CheckBox checkMonday, checkTuesday, checkWednesday, checkThursday, checkFriday, checkSaturday, checkSunday, chkRepeat;
RadioButton radioTimeFrameEntering, radioTimeFrameLeaving;
EditText etRepeatEvery;
public static Trigger editedTimeFrameTrigger = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manage_trigger_timeframe);
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);
chkRepeat = (CheckBox)findViewById(R.id.chkRepeat);
etRepeatEvery = (EditText)findViewById(R.id.etRepeatEvery);
bSaveTimeFrame.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Time startTime = new Time(0);
startTime.setHours(startPicker.getCurrentHour());
startTime.setMinutes(startPicker.getCurrentMinute());
Time stopTime = new Time(0);
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;
}
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;
}
if(editedTimeFrameTrigger.getTimeFrame() == null)
{
// add new one
if(chkRepeat.isChecked())
editedTimeFrameTrigger.setTimeFrame(new TimeFrame(startTime, stopTime, dayList, Long.parseLong(etRepeatEvery.getText().toString())));
else
editedTimeFrameTrigger.setTimeFrame(new TimeFrame(startTime, stopTime, dayList, 0));
}
else
{
// edit one
editedTimeFrameTrigger.getTimeFrame().setTriggerTimeStart(startTime);
editedTimeFrameTrigger.getTimeFrame().setTriggerTimeStop(stopTime);
editedTimeFrameTrigger.getTimeFrame().getDayList().clear();
editedTimeFrameTrigger.getTimeFrame().setDayList(dayList);
if(chkRepeat.isChecked())
editedTimeFrameTrigger.getTimeFrame().setRepetition(Long.parseLong(etRepeatEvery.getText().toString()));
else
editedTimeFrameTrigger.getTimeFrame().setRepetition(0);
}
editedTimeFrameTrigger.setTriggerParameter(radioTimeFrameEntering.isChecked());
setResult(RESULT_OK);
finish();
}
});
chkRepeat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
etRepeatEvery.setEnabled(isChecked);
}
});
if(editedTimeFrameTrigger.getTimeFrame() != null)
loadVariableIntoGui();
}
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;
}
}
if(editedTimeFrameTrigger.getTimeFrame().getRepetition() > 0)
{
chkRepeat.setChecked(true);
etRepeatEvery.setText(String.valueOf(editedTimeFrameTrigger.getTimeFrame().getRepetition()));
}
}
}