Newer
Older
timekeeper / app / src / main / java / nz / ac / otago / infosci / timekeeper / SettingsActivity.java
Mark George on 13 Sep 2019 2 KB Minor edits.
package nz.ac.otago.infosci.timekeeper;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;

import java.time.LocalTime;

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        final Button btnStart = findViewById(R.id.btnStart);
        final Button btnReset = findViewById(R.id.btnReset);
        final TimePicker timePicker = findViewById(R.id.timePicker);
        final CheckBox cbDimScreen = findViewById(R.id.cbDimScreen);

        final NumberPicker periodPicker = findViewById(R.id.periodPicker);
        periodPicker.setMinValue(1);
        periodPicker.setMaxValue(30);
        periodPicker.setValue(5);
        cbDimScreen.setChecked(true);

        // 12 hour clock
        timePicker.setIs24HourView(false);

        btnReset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // need to reset the clock, but so far the only way I have found to do this is recreate the entire activity...
                recreate();
            }
        });

        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int endHour = timePicker.getHour();
                int endMinutes = timePicker.getMinute();
                int updatePeriod = periodPicker.getValue();
                boolean dimScreen = cbDimScreen.isChecked();

                LocalTime end = LocalTime.of(endHour, endMinutes);

                if (end.isBefore(LocalTime.now())) {
                    Toast.makeText(SettingsActivity.this, "End time must be in the future", Toast.LENGTH_LONG).show();
                    return;
                }

                Intent it = new Intent(SettingsActivity.this, TimerActivity.class);
                it.putExtra("endHour", endHour);
                it.putExtra("endMinutes", endMinutes);
                it.putExtra("updatePeriod", updatePeriod);
                it.putExtra("dimScreen", dimScreen);
                SettingsActivity.this.startActivity(it);
            }
        });

        // force dark theme
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

    }

}