rewrite EventActivity to kotlin
This commit is contained in:
parent
3119013ec4
commit
a8cffc36b1
|
@ -1,396 +0,0 @@
|
|||
package com.simplemobiletools.calendar.activities;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.TimePickerDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.AppCompatSpinner;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import com.simplemobiletools.calendar.Constants;
|
||||
import com.simplemobiletools.calendar.DBHelper;
|
||||
import com.simplemobiletools.calendar.Formatter;
|
||||
import com.simplemobiletools.calendar.R;
|
||||
import com.simplemobiletools.calendar.Utils;
|
||||
import com.simplemobiletools.calendar.fragments.DayFragment;
|
||||
import com.simplemobiletools.calendar.models.Event;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.DateTimeZone;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnCheckedChanged;
|
||||
import butterknife.OnClick;
|
||||
import butterknife.OnItemSelected;
|
||||
|
||||
public class EventActivity extends SimpleActivity implements DBHelper.DBOperationsListener {
|
||||
@BindView(R.id.event_start_date) TextView mStartDate;
|
||||
@BindView(R.id.event_start_time) TextView mStartTime;
|
||||
@BindView(R.id.event_end_date) TextView mEndDate;
|
||||
@BindView(R.id.event_end_time) TextView mEndTime;
|
||||
@BindView(R.id.event_title) EditText mTitleET;
|
||||
@BindView(R.id.event_description) EditText mDescriptionET;
|
||||
@BindView(R.id.event_reminder_other) EditText mReminderOtherET;
|
||||
@BindView(R.id.event_reminder) AppCompatSpinner mReminder;
|
||||
@BindView(R.id.event_repetition) AppCompatSpinner mRepetition;
|
||||
@BindView(R.id.event_end_checkbox) CheckBox mEndCheckbox;
|
||||
|
||||
private static DateTime mEventStartDateTime;
|
||||
private static DateTime mEventEndDateTime;
|
||||
private static Event mEvent;
|
||||
private static boolean mWasReminderInit;
|
||||
private static boolean mWasEndDateSet;
|
||||
private static boolean mWasEndTimeSet;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_event);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
final Intent intent = getIntent();
|
||||
if (intent == null)
|
||||
return;
|
||||
|
||||
mWasReminderInit = false;
|
||||
final Event event = (Event) intent.getSerializableExtra(Constants.EVENT);
|
||||
if (event != null) {
|
||||
mEvent = event;
|
||||
setupEditEvent();
|
||||
} else {
|
||||
mEvent = new Event();
|
||||
final String dayCode = intent.getStringExtra(Constants.DAY_CODE);
|
||||
if (dayCode == null || dayCode.isEmpty())
|
||||
return;
|
||||
|
||||
setupNewEvent(dayCode);
|
||||
}
|
||||
|
||||
updateStartDate();
|
||||
updateStartTime();
|
||||
updateEndDate();
|
||||
updateEndTime();
|
||||
setupReminder();
|
||||
setupRepetition();
|
||||
setupEndCheckbox();
|
||||
|
||||
mWasEndDateSet = (event != null);
|
||||
mWasEndTimeSet = (event != null);
|
||||
}
|
||||
|
||||
private void setupEditEvent() {
|
||||
setTitle(getResources().getString(R.string.edit_event));
|
||||
mEventStartDateTime = Formatter.getDateTimeFromTS(mEvent.getStartTS());
|
||||
mEventEndDateTime = Formatter.getDateTimeFromTS(mEvent.getEndTS());
|
||||
mEndCheckbox.setChecked(!mEventStartDateTime.equals(mEventEndDateTime));
|
||||
mTitleET.setText(mEvent.getTitle());
|
||||
mDescriptionET.setText(mEvent.getDescription());
|
||||
hideKeyboard();
|
||||
}
|
||||
|
||||
private void setupNewEvent(String dayCode) {
|
||||
setTitle(getResources().getString(R.string.new_event));
|
||||
mEventStartDateTime = Formatter.getDateTimeFromCode(dayCode).withZoneRetainFields(DateTimeZone.getDefault()).withHourOfDay(13);
|
||||
mEventEndDateTime = mEventStartDateTime;
|
||||
}
|
||||
|
||||
private void hideKeyboard() {
|
||||
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
|
||||
}
|
||||
|
||||
private void showKeyboard(EditText et) {
|
||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
|
||||
}
|
||||
|
||||
private void setupReminder() {
|
||||
switch (mEvent.getReminderMinutes()) {
|
||||
case -1:
|
||||
mReminder.setSelection(0);
|
||||
break;
|
||||
case 0:
|
||||
mReminder.setSelection(1);
|
||||
break;
|
||||
default:
|
||||
mReminder.setSelection(2);
|
||||
mReminderOtherET.setVisibility(View.VISIBLE);
|
||||
mReminderOtherET.setText(String.valueOf(mEvent.getReminderMinutes()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void setupRepetition() {
|
||||
switch (mEvent.getRepeatInterval()) {
|
||||
case Constants.DAY:
|
||||
mRepetition.setSelection(1);
|
||||
break;
|
||||
case Constants.WEEK:
|
||||
mRepetition.setSelection(2);
|
||||
break;
|
||||
case Constants.MONTH:
|
||||
mRepetition.setSelection(3);
|
||||
break;
|
||||
case Constants.YEAR:
|
||||
mRepetition.setSelection(4);
|
||||
break;
|
||||
default:
|
||||
mRepetition.setSelection(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void setupEndCheckbox() {
|
||||
mEndCheckbox.setTextColor(mStartDate.getCurrentTextColor());
|
||||
}
|
||||
|
||||
@OnCheckedChanged(R.id.event_end_checkbox)
|
||||
public void checkChanged(boolean isChecked) {
|
||||
mEndDate.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
||||
mEndTime.setVisibility(isChecked ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
@OnItemSelected(R.id.event_reminder)
|
||||
public void handleReminder() {
|
||||
if (!mWasReminderInit) {
|
||||
mWasReminderInit = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (mReminder.getSelectedItemPosition() == mReminder.getCount() - 1) {
|
||||
mReminderOtherET.setVisibility(View.VISIBLE);
|
||||
mReminderOtherET.requestFocus();
|
||||
showKeyboard(mReminderOtherET);
|
||||
} else {
|
||||
mReminderOtherET.setVisibility(View.GONE);
|
||||
hideKeyboard();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_event, menu);
|
||||
final MenuItem item = menu.findItem(R.id.delete);
|
||||
if (mEvent.getId() == 0) {
|
||||
item.setVisible(false);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.delete:
|
||||
deleteEvent();
|
||||
return true;
|
||||
case R.id.save:
|
||||
saveEvent();
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteEvent() {
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(DayFragment.Companion.getDELETED_ID(), mEvent.getId());
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
}
|
||||
|
||||
private void saveEvent() {
|
||||
final String title = mTitleET.getText().toString().trim();
|
||||
if (title.isEmpty()) {
|
||||
Utils.showToast(getApplicationContext(), R.string.title_empty);
|
||||
mTitleET.requestFocus();
|
||||
return;
|
||||
}
|
||||
|
||||
final int startTS = (int) (mEventStartDateTime.getMillis() / 1000);
|
||||
final int endTS = (int) (mEventEndDateTime.getMillis() / 1000);
|
||||
|
||||
if (mEndCheckbox.isChecked() && startTS > endTS) {
|
||||
Utils.showToast(getApplicationContext(), R.string.end_before_start);
|
||||
return;
|
||||
}
|
||||
|
||||
final DBHelper dbHelper = new DBHelper(getApplicationContext(), this);
|
||||
final String description = mDescriptionET.getText().toString().trim();
|
||||
mEvent.setStartTS(startTS);
|
||||
mEvent.setEndTS(mEndCheckbox.isChecked() ? endTS : startTS);
|
||||
mEvent.setTitle(title);
|
||||
mEvent.setDescription(description);
|
||||
mEvent.setReminderMinutes(getReminderMinutes());
|
||||
mEvent.setRepeatInterval(getRepeatInterval());
|
||||
if (mEvent.getId() == 0) {
|
||||
dbHelper.insert(mEvent);
|
||||
} else {
|
||||
dbHelper.update(mEvent);
|
||||
}
|
||||
}
|
||||
|
||||
private int getReminderMinutes() {
|
||||
switch (mReminder.getSelectedItemPosition()) {
|
||||
case 0:
|
||||
return -1;
|
||||
case 1:
|
||||
return 0;
|
||||
default:
|
||||
final String value = mReminderOtherET.getText().toString().trim();
|
||||
if (value.isEmpty())
|
||||
return 0;
|
||||
|
||||
return Integer.valueOf(value);
|
||||
}
|
||||
}
|
||||
|
||||
private int getRepeatInterval() {
|
||||
switch (mRepetition.getSelectedItemPosition()) {
|
||||
case 1:
|
||||
return Constants.DAY;
|
||||
case 2:
|
||||
return Constants.WEEK;
|
||||
case 3:
|
||||
return Constants.MONTH;
|
||||
case 4:
|
||||
return Constants.YEAR;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStartDate() {
|
||||
mStartDate.setText(Formatter.getEventDate(getApplicationContext(), mEventStartDateTime));
|
||||
}
|
||||
|
||||
private void updateStartTime() {
|
||||
mStartTime.setText(Formatter.getEventTime(mEventStartDateTime));
|
||||
}
|
||||
|
||||
private void updateEndDate() {
|
||||
mEndDate.setText(Formatter.getEventDate(getApplicationContext(), mEventEndDateTime));
|
||||
}
|
||||
|
||||
private void updateEndTime() {
|
||||
mEndTime.setText(Formatter.getEventTime(mEventEndDateTime));
|
||||
}
|
||||
|
||||
@OnClick(R.id.event_start_date)
|
||||
public void startDateClicked(View view) {
|
||||
new DatePickerDialog(this, startDateSetListener, mEventStartDateTime.getYear(), mEventStartDateTime.getMonthOfYear() - 1,
|
||||
mEventStartDateTime.getDayOfMonth()).show();
|
||||
}
|
||||
|
||||
@OnClick(R.id.event_start_time)
|
||||
public void startTimeClicked(View view) {
|
||||
new TimePickerDialog(this, startTimeSetListener, mEventStartDateTime.getHourOfDay(), mEventStartDateTime.getMinuteOfHour(), true)
|
||||
.show();
|
||||
}
|
||||
|
||||
@OnClick(R.id.event_end_date)
|
||||
public void endDateClicked(View view) {
|
||||
new DatePickerDialog(this, endDateSetListener, mEventEndDateTime.getYear(), mEventEndDateTime.getMonthOfYear() - 1,
|
||||
mEventEndDateTime.getDayOfMonth()).show();
|
||||
}
|
||||
|
||||
@OnClick(R.id.event_end_time)
|
||||
public void endTimeClicked(View view) {
|
||||
new TimePickerDialog(this, endTimeSetListener, mEventEndDateTime.getHourOfDay(), mEventEndDateTime.getMinuteOfHour(), true).show();
|
||||
}
|
||||
|
||||
private final DatePickerDialog.OnDateSetListener startDateSetListener = new DatePickerDialog.OnDateSetListener() {
|
||||
@Override
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
dateSet(year, monthOfYear, dayOfMonth, true);
|
||||
if (!mWasEndDateSet) {
|
||||
dateSet(year, monthOfYear, dayOfMonth, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private TimePickerDialog.OnTimeSetListener startTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
|
||||
@Override
|
||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||
timeSet(hourOfDay, minute, true);
|
||||
if (!mWasEndTimeSet) {
|
||||
timeSet(hourOfDay, minute, false);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private DatePickerDialog.OnDateSetListener endDateSetListener = new DatePickerDialog.OnDateSetListener() {
|
||||
@Override
|
||||
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
||||
dateSet(year, monthOfYear, dayOfMonth, false);
|
||||
}
|
||||
};
|
||||
|
||||
private TimePickerDialog.OnTimeSetListener endTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
|
||||
@Override
|
||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||
timeSet(hourOfDay, minute, false);
|
||||
}
|
||||
};
|
||||
|
||||
private void dateSet(int year, int month, int day, boolean isStart) {
|
||||
if (isStart) {
|
||||
mEventStartDateTime = mEventStartDateTime.withYear(year).withMonthOfYear(month + 1).withDayOfMonth(day);
|
||||
updateStartDate();
|
||||
} else {
|
||||
mEventEndDateTime = mEventEndDateTime.withYear(year).withMonthOfYear(month + 1).withDayOfMonth(day);
|
||||
updateEndDate();
|
||||
mWasEndDateSet = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void timeSet(int hours, int minutes, boolean isStart) {
|
||||
if (isStart) {
|
||||
mEventStartDateTime = mEventStartDateTime.withHourOfDay(hours).withMinuteOfHour(minutes);
|
||||
updateStartTime();
|
||||
} else {
|
||||
mEventEndDateTime = mEventEndDateTime.withHourOfDay(hours).withMinuteOfHour(minutes);
|
||||
updateEndTime();
|
||||
mWasEndTimeSet = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eventInserted(Event event) {
|
||||
if (DateTime.now().isAfter(mEventStartDateTime.getMillis())) {
|
||||
Utils.showToast(getApplicationContext(), R.string.past_event_added);
|
||||
} else {
|
||||
Utils.showToast(getApplicationContext(), R.string.event_added);
|
||||
}
|
||||
Utils.scheduleNotification(getApplicationContext(), event);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eventUpdated(Event event) {
|
||||
Utils.scheduleNotification(getApplicationContext(), event);
|
||||
Utils.showToast(getApplicationContext(), R.string.event_updated);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void eventsDeleted(int cnt) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void gotEvents(List<Event> events) {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,336 @@
|
|||
package com.simplemobiletools.calendar.activities
|
||||
|
||||
import android.app.Activity
|
||||
import android.app.DatePickerDialog
|
||||
import android.app.TimePickerDialog
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.AdapterView
|
||||
import android.widget.EditText
|
||||
import com.simplemobiletools.calendar.*
|
||||
import com.simplemobiletools.calendar.fragments.DayFragment
|
||||
import com.simplemobiletools.calendar.models.Event
|
||||
import kotlinx.android.synthetic.main.activity_event.*
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.DateTimeZone
|
||||
|
||||
class EventActivity : SimpleActivity(), DBHelper.DBOperationsListener {
|
||||
private var mWasReminderInit: Boolean = false
|
||||
private var mWasEndDateSet: Boolean = false
|
||||
private var mWasEndTimeSet: Boolean = false
|
||||
|
||||
lateinit var mEventStartDateTime: DateTime
|
||||
lateinit var mEventEndDateTime: DateTime
|
||||
lateinit var mEvent: Event
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_event)
|
||||
|
||||
val intent = intent ?: return
|
||||
|
||||
mWasReminderInit = false
|
||||
val event = intent.getSerializableExtra(Constants.EVENT) as Event?
|
||||
if (event != null) {
|
||||
mEvent = event
|
||||
setupEditEvent()
|
||||
} else {
|
||||
mEvent = Event()
|
||||
val dayCode = intent.getStringExtra(Constants.DAY_CODE)
|
||||
if (dayCode == null || dayCode.isEmpty())
|
||||
return
|
||||
|
||||
setupNewEvent(dayCode)
|
||||
}
|
||||
|
||||
updateStartDate()
|
||||
updateStartTime()
|
||||
updateEndDate()
|
||||
updateEndTime()
|
||||
setupReminder()
|
||||
setupRepetition()
|
||||
setupEndCheckbox()
|
||||
|
||||
mWasEndDateSet = event != null
|
||||
mWasEndTimeSet = event != null
|
||||
|
||||
event_start_date.setOnClickListener { setupStartDate() }
|
||||
event_start_time.setOnClickListener { setupStartTime() }
|
||||
event_end_date.setOnClickListener { setupEndDate() }
|
||||
event_end_time.setOnClickListener { setupEndTime() }
|
||||
|
||||
event_end_checkbox.setOnCheckedChangeListener { compoundButton, isChecked -> endCheckboxChecked(isChecked) }
|
||||
|
||||
event_reminder.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onNothingSelected(p0: AdapterView<*>?) {
|
||||
}
|
||||
|
||||
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
|
||||
reminderItemSelected()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupEditEvent() {
|
||||
title = resources.getString(R.string.edit_event)
|
||||
mEventStartDateTime = Formatter.getDateTimeFromTS(mEvent.startTS)
|
||||
mEventEndDateTime = Formatter.getDateTimeFromTS(mEvent.endTS)
|
||||
event_end_checkbox.isChecked = mEventStartDateTime != mEventEndDateTime
|
||||
event_title.setText(mEvent.title)
|
||||
event_description.setText(mEvent.description)
|
||||
hideKeyboard()
|
||||
}
|
||||
|
||||
private fun setupNewEvent(dayCode: String) {
|
||||
title = resources.getString(R.string.new_event)
|
||||
mEventStartDateTime = Formatter.getDateTimeFromCode(dayCode).withZoneRetainFields(DateTimeZone.getDefault()).withHourOfDay(13)
|
||||
mEventEndDateTime = mEventStartDateTime
|
||||
}
|
||||
|
||||
private fun hideKeyboard() {
|
||||
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
|
||||
}
|
||||
|
||||
private fun showKeyboard(et: EditText) {
|
||||
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT)
|
||||
}
|
||||
|
||||
private fun setupReminder() {
|
||||
when (mEvent.reminderMinutes) {
|
||||
-1 -> event_reminder.setSelection(0)
|
||||
0 -> event_reminder.setSelection(1)
|
||||
else -> {
|
||||
event_reminder.setSelection(2)
|
||||
event_reminder_other.visibility = View.VISIBLE
|
||||
event_reminder_other.setText(mEvent.reminderMinutes.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupRepetition() {
|
||||
when (mEvent.repeatInterval) {
|
||||
Constants.DAY -> event_repetition.setSelection(1)
|
||||
Constants.WEEK -> event_repetition.setSelection(2)
|
||||
Constants.MONTH -> event_repetition.setSelection(3)
|
||||
Constants.YEAR -> event_repetition.setSelection(4)
|
||||
else -> event_repetition.setSelection(0)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupEndCheckbox() {
|
||||
event_end_checkbox.setTextColor(event_start_date.currentTextColor)
|
||||
}
|
||||
|
||||
fun endCheckboxChecked(isChecked: Boolean) {
|
||||
event_end_date.visibility = if (isChecked) View.VISIBLE else View.GONE
|
||||
event_end_time.visibility = if (isChecked) View.VISIBLE else View.GONE
|
||||
}
|
||||
|
||||
fun reminderItemSelected() {
|
||||
if (!mWasReminderInit) {
|
||||
mWasReminderInit = true
|
||||
return
|
||||
}
|
||||
|
||||
if (event_reminder.selectedItemPosition == event_reminder.count - 1) {
|
||||
event_reminder_other.visibility = View.VISIBLE
|
||||
event_reminder_other.requestFocus()
|
||||
showKeyboard(event_reminder_other)
|
||||
} else {
|
||||
event_reminder_other.visibility = View.GONE
|
||||
hideKeyboard()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_event, menu)
|
||||
val item = menu.findItem(R.id.delete)
|
||||
if (mEvent.id == 0) {
|
||||
item.isVisible = false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.delete -> {
|
||||
deleteEvent()
|
||||
return true
|
||||
}
|
||||
R.id.save -> {
|
||||
saveEvent()
|
||||
return true
|
||||
}
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteEvent() {
|
||||
val intent = Intent()
|
||||
intent.putExtra(DayFragment.DELETED_ID, mEvent.id)
|
||||
setResult(Activity.RESULT_OK, intent)
|
||||
finish()
|
||||
}
|
||||
|
||||
private fun saveEvent() {
|
||||
val title = event_title.text.toString().trim { it <= ' ' }
|
||||
if (title.isEmpty()) {
|
||||
Utils.showToast(applicationContext, R.string.title_empty)
|
||||
event_title.requestFocus()
|
||||
return
|
||||
}
|
||||
|
||||
val startTS = (mEventStartDateTime.millis / 1000).toInt()
|
||||
val endTS = (mEventEndDateTime.millis / 1000).toInt()
|
||||
|
||||
if (event_end_checkbox.isChecked && startTS > endTS) {
|
||||
Utils.showToast(applicationContext, R.string.end_before_start)
|
||||
return
|
||||
}
|
||||
|
||||
val dbHelper = DBHelper(applicationContext, this)
|
||||
val description = event_description.text.toString().trim { it <= ' ' }
|
||||
mEvent.startTS = startTS
|
||||
mEvent.endTS = if (event_end_checkbox.isChecked) endTS else startTS
|
||||
mEvent.title = title
|
||||
mEvent.description = description
|
||||
mEvent.reminderMinutes = reminderMinutes
|
||||
mEvent.repeatInterval = repeatInterval
|
||||
if (mEvent.id == 0) {
|
||||
dbHelper.insert(mEvent)
|
||||
} else {
|
||||
dbHelper.update(mEvent)
|
||||
}
|
||||
}
|
||||
|
||||
private val reminderMinutes: Int
|
||||
get() {
|
||||
when (event_reminder.selectedItemPosition) {
|
||||
0 -> return -1
|
||||
1 -> return 0
|
||||
else -> {
|
||||
val value = event_reminder_other.text.toString().trim { it <= ' ' }
|
||||
if (value.isEmpty())
|
||||
return 0
|
||||
|
||||
return Integer.valueOf(value)!!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val repeatInterval: Int
|
||||
get() {
|
||||
when (event_repetition.selectedItemPosition) {
|
||||
1 -> return Constants.DAY
|
||||
2 -> return Constants.WEEK
|
||||
3 -> return Constants.MONTH
|
||||
4 -> return Constants.YEAR
|
||||
else -> return 0
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateStartDate() {
|
||||
event_start_date.text = Formatter.getEventDate(applicationContext, mEventStartDateTime)
|
||||
}
|
||||
|
||||
private fun updateStartTime() {
|
||||
event_start_time.text = Formatter.getEventTime(mEventStartDateTime)
|
||||
}
|
||||
|
||||
private fun updateEndDate() {
|
||||
event_end_date.text = Formatter.getEventDate(applicationContext, mEventEndDateTime)
|
||||
}
|
||||
|
||||
private fun updateEndTime() {
|
||||
event_end_time.text = Formatter.getEventTime(mEventEndDateTime)
|
||||
}
|
||||
|
||||
fun setupStartDate() {
|
||||
DatePickerDialog(this, startDateSetListener, mEventStartDateTime.year, mEventStartDateTime.monthOfYear - 1,
|
||||
mEventStartDateTime.dayOfMonth).show()
|
||||
}
|
||||
|
||||
fun setupStartTime() {
|
||||
TimePickerDialog(this, startTimeSetListener, mEventStartDateTime.hourOfDay, mEventStartDateTime.minuteOfHour, true).show()
|
||||
}
|
||||
|
||||
fun setupEndDate() {
|
||||
DatePickerDialog(this, endDateSetListener, mEventEndDateTime.year, mEventEndDateTime.monthOfYear - 1,
|
||||
mEventEndDateTime.dayOfMonth).show()
|
||||
}
|
||||
|
||||
fun setupEndTime() {
|
||||
TimePickerDialog(this, endTimeSetListener, mEventEndDateTime.hourOfDay, mEventEndDateTime.minuteOfHour, true).show()
|
||||
}
|
||||
|
||||
private val startDateSetListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
|
||||
dateSet(year, monthOfYear, dayOfMonth, true)
|
||||
if (!mWasEndDateSet) {
|
||||
dateSet(year, monthOfYear, dayOfMonth, false)
|
||||
}
|
||||
}
|
||||
|
||||
private val startTimeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute ->
|
||||
timeSet(hourOfDay, minute, true)
|
||||
if (!mWasEndTimeSet) {
|
||||
timeSet(hourOfDay, minute, false)
|
||||
}
|
||||
}
|
||||
|
||||
private val endDateSetListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth -> dateSet(year, monthOfYear, dayOfMonth, false) }
|
||||
|
||||
private val endTimeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute -> timeSet(hourOfDay, minute, false) }
|
||||
|
||||
private fun dateSet(year: Int, month: Int, day: Int, isStart: Boolean) {
|
||||
if (isStart) {
|
||||
mEventStartDateTime = mEventStartDateTime.withYear(year).withMonthOfYear(month + 1).withDayOfMonth(day)
|
||||
updateStartDate()
|
||||
} else {
|
||||
mEventEndDateTime = mEventEndDateTime.withYear(year).withMonthOfYear(month + 1).withDayOfMonth(day)
|
||||
updateEndDate()
|
||||
mWasEndDateSet = true
|
||||
}
|
||||
}
|
||||
|
||||
private fun timeSet(hours: Int, minutes: Int, isStart: Boolean) {
|
||||
if (isStart) {
|
||||
mEventStartDateTime = mEventStartDateTime.withHourOfDay(hours).withMinuteOfHour(minutes)
|
||||
updateStartTime()
|
||||
} else {
|
||||
mEventEndDateTime = mEventEndDateTime.withHourOfDay(hours).withMinuteOfHour(minutes)
|
||||
updateEndTime()
|
||||
mWasEndTimeSet = true
|
||||
}
|
||||
}
|
||||
|
||||
override fun eventInserted(event: Event) {
|
||||
if (DateTime.now().isAfter(mEventStartDateTime.millis)) {
|
||||
Utils.showToast(applicationContext, R.string.past_event_added)
|
||||
} else {
|
||||
Utils.showToast(applicationContext, R.string.event_added)
|
||||
}
|
||||
Utils.scheduleNotification(applicationContext, event)
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun eventUpdated(event: Event) {
|
||||
Utils.scheduleNotification(applicationContext, event)
|
||||
Utils.showToast(applicationContext, R.string.event_updated)
|
||||
finish()
|
||||
}
|
||||
|
||||
override fun eventsDeleted(cnt: Int) {
|
||||
|
||||
}
|
||||
|
||||
override fun gotEvents(events: MutableList<Event>) {
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue