use of com.eveningoutpost.dexdrip.Models.Reminder in project xDrip-plus by jamorham.
the class Reminders method showReminderDialog.
// TODO edit mode
private void showReminderDialog(View myitem, final Reminder reminder, int position) {
if ((dialog != null) && (dialog.isShowing()))
return;
final Activity activity = this;
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
dialogView = inflater.inflate(R.layout.reminder_new_dialog, null);
dialogBuilder.setView(dialogView);
// New Reminder title
final EditText titleEditText = (EditText) dialogView.findViewById(R.id.reminder_edit_new);
final EditText alternateEditText = (EditText) dialogView.findViewById(R.id.reminder_edit_alt_title);
final RadioButton rbday = (RadioButton) dialogView.findViewById(R.id.reminderDayButton);
final RadioButton rbhour = (RadioButton) dialogView.findViewById(R.id.reminderHourButton);
final RadioButton rbweek = (RadioButton) dialogView.findViewById(R.id.reminderWeekButton);
if (reminder == null) {
rbday.setChecked(PersistentStore.getBoolean("reminders-rbday"));
rbhour.setChecked(PersistentStore.getBoolean("reminders-rbhour"));
rbweek.setChecked(PersistentStore.getBoolean("reminders-rbweek"));
} else {
rbday.setChecked(reminder.isDaysPeriod());
rbhour.setChecked(reminder.isHoursPeriod());
rbweek.setChecked(reminder.isWeeksPeriod());
}
// first run if nothing set default to day
if (!rbday.isChecked() && !rbhour.isChecked() && !rbweek.isChecked()) {
rbday.setChecked(true);
}
titleEditText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// hide remove done button if no title present
try {
if (s.length() < 3) {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.INVISIBLE);
} else {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.VISIBLE);
}
} catch (NullPointerException e) {
// dialog not showing yet
}
}
});
reminderDaysEdt = (EditText) dialogView.findViewById(R.id.reminderRepeatDays);
final CheckBox repeatingCheckbox = (CheckBox) dialogView.findViewById(R.id.reminderRepeatcheckBox);
final CheckBox chimeOnlyCheckbox = (CheckBox) dialogView.findViewById(R.id.chimeonlycheckbox);
final CheckBox alternatingCheckbox = (CheckBox) dialogView.findViewById(R.id.alternatingcheckbox);
final CheckBox weekendsCheckbox = (CheckBox) dialogView.findViewById(R.id.weekEndsCheckbox);
final CheckBox weekdaysCheckbox = (CheckBox) dialogView.findViewById(R.id.weekDaysCheckbox);
final CheckBox megapriorityCheckbox = (CheckBox) dialogView.findViewById(R.id.highPriorityCheckbox);
final CheckBox homeOnlyCheckbox = (CheckBox) dialogView.findViewById(R.id.homeOnlyCheckbox);
final CheckBox speechCheckbox = (CheckBox) dialogView.findViewById(R.id.speakCheckbox);
final ImageButton swapButton = (ImageButton) dialogView.findViewById(R.id.reminderSwapButton);
if (reminder == null) {
repeatingCheckbox.setChecked(PersistentStore.getLong("reminders-last-repeating") != 2);
chimeOnlyCheckbox.setChecked(PersistentStore.getLong("reminders-last-chimeonly") == 1);
alternatingCheckbox.setChecked(PersistentStore.getLong("reminders-last-alternating") == 1);
// defaults to false
homeOnlyCheckbox.setChecked(false);
try {
reminderDaysEdt.setText(!PersistentStore.getString("reminders-last-number").equals("") ? Integer.toString(Integer.parseInt(PersistentStore.getString("reminders-last-number"))) : "1");
} catch (Exception e) {
//
}
} else {
selectedSound = reminder.sound_uri;
titleEditText.setText(reminder.title);
alternateEditText.setText(reminder.getAlternateTitle());
repeatingCheckbox.setChecked(reminder.repeating);
chimeOnlyCheckbox.setChecked(reminder.chime_only);
alternatingCheckbox.setChecked(reminder.alternating);
megapriorityCheckbox.setChecked(reminder.priority > MEGA_PRIORITY);
if (!reminder.weekdays && !reminder.weekends) {
// this shouldn't be possible so we think it pre-dates the current schema so fix it
reminder.weekdays = true;
reminder.weekends = true;
}
weekdaysCheckbox.setChecked(reminder.weekdays);
weekendsCheckbox.setChecked(reminder.weekends);
homeOnlyCheckbox.setChecked(reminder.homeonly);
speechCheckbox.setChecked(reminder.speak);
reminderDaysEdt.setText(Long.toString(reminder.periodInUnits()));
}
maskAlternatingCheckbox(repeatingCheckbox.isChecked(), alternatingCheckbox);
swapButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Editable swappage = alternateEditText.getText();
alternateEditText.setText(titleEditText.getText());
titleEditText.setText(swappage);
}
});
repeatingCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final String insert = chimeOnlyCheckbox.isChecked() ? xdrip.getAppContext().getString(R.string.sound_once) : xdrip.getAppContext().getString(R.string.alert_until_dismissed);
final String second_insert = isChecked ? xdrip.getAppContext().getString(R.string.and_then_repeat) + " " + JoH.niceTimeScalarNatural(getPeriod(rbday, rbhour, rbweek)) : xdrip.getAppContext().getString(R.string.will_not_repeat);
JoH.static_toast_long(xdrip.getAppContext().getString(R.string.reminder_will) + " " + insert + " " + second_insert);
maskAlternatingCheckbox(isChecked, alternatingCheckbox);
}
});
chimeOnlyCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final String insert = isChecked ? xdrip.getAppContext().getString(R.string.sound_once) : xdrip.getAppContext().getString(R.string.alert_until_dismissed);
final String second_insert = repeatingCheckbox.isChecked() ? xdrip.getAppContext().getString(R.string.and_then_repeat) + " " + JoH.niceTimeScalar(getPeriod(rbday, rbhour, rbweek)) : xdrip.getAppContext().getString(R.string.will_not_repeat);
JoH.static_toast_long(xdrip.getAppContext().getString(R.string.reminder_will) + " " + insert + " " + second_insert);
}
});
alternatingCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
alternateEditText.setVisibility(isChecked ? View.VISIBLE : View.GONE);
swapButton.setVisibility(isChecked ? View.VISIBLE : View.GONE);
final String insert = isChecked ? xdrip.getAppContext().getString(R.string.alternate_between_titles) + " " + JoH.niceTimeScalar(getPeriod(rbday, rbhour, rbweek)) : xdrip.getAppContext().getString(R.string.always_use_same_title);
JoH.static_toast_long(xdrip.getAppContext().getString(R.string.reminder_will) + " " + insert);
}
});
alternateEditText.setVisibility(alternatingCheckbox.isChecked() ? View.VISIBLE : View.GONE);
swapButton.setVisibility(alternatingCheckbox.isChecked() ? View.VISIBLE : View.GONE);
dialogBuilder.setTitle(((reminder == null) ? xdrip.getAppContext().getString(R.string.title_add_reminder) : xdrip.getAppContext().getString(R.string.title_edit_reminder)));
// dialogBuilder.setMessage("Enter text below");
dialogBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String reminder_title = titleEditText.getText().toString().trim();
Log.d(TAG, "Got reminder title: " + reminder_title);
// get and scale period
long period = getPeriod(rbday, rbhour, rbweek);
PersistentStore.setBoolean("reminders-rbday", rbday.isChecked());
PersistentStore.setBoolean("reminders-rbhour", rbhour.isChecked());
PersistentStore.setBoolean("reminders-rbweek", rbweek.isChecked());
Reminder new_reminder = reminder;
if (new_reminder == null) {
new_reminder = Reminder.create(reminder_title, period);
}
if (new_reminder != null) {
if (reminder != null) {
new_reminder.title = reminder_title;
new_reminder.period = period;
}
final String alternate_text = alternateEditText.getText().toString();
if (alternate_text.length() > 2) {
new_reminder.alternate_title = alternate_text;
}
new_reminder.sound_uri = selectedSound;
new_reminder.repeating = repeatingCheckbox.isChecked();
new_reminder.chime_only = chimeOnlyCheckbox.isChecked();
new_reminder.alternating = alternatingCheckbox.isChecked();
new_reminder.weekdays = weekdaysCheckbox.isChecked();
new_reminder.weekends = weekendsCheckbox.isChecked();
new_reminder.homeonly = homeOnlyCheckbox.isChecked();
new_reminder.speak = speechCheckbox.isChecked();
if ((new_reminder.priority > MEGA_PRIORITY) && (!megapriorityCheckbox.isChecked())) {
new_reminder.priority -= MEGA_PRIORITY;
} else if ((new_reminder.priority < MEGA_PRIORITY) && (megapriorityCheckbox.isChecked())) {
new_reminder.priority += MEGA_PRIORITY;
}
new_reminder.save();
freshen(new_reminder);
PersistentStore.setString("reminders-last-number", reminderDaysEdt.getText().toString());
PersistentStore.setLong("reminders-last-repeating", repeatingCheckbox.isChecked() ? 1 : 2);
PersistentStore.setLong("reminders-last-chimeonly", chimeOnlyCheckbox.isChecked() ? 1 : 2);
PersistentStore.setLong("reminders-last-alternating", alternatingCheckbox.isChecked() ? 1 : 2);
showcase(activity, Home.SHOWCASE_REMINDER2);
} else {
JoH.static_toast_long(xdrip.getAppContext().getString(R.string.something_went_wrong_reminder));
}
dialog = null;
dialogView = null;
}
});
dialogBuilder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog = null;
dialogView = null;
}
});
dialog = dialogBuilder.create();
titleEditText.setInputType(InputType.TYPE_CLASS_TEXT);
titleEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (dialog != null)
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
dialog.show();
if ((reminder != null) && (reminder.title.length() > 2)) {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.VISIBLE);
} else {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setVisibility(View.INVISIBLE);
}
}
Aggregations