package org.smartpaws.recycler.cards;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import org.smartpaws.R;
import org.smartpaws.notifications.AlarmService;
import org.smartpaws.objects.Event;
import org.smartpaws.recycler.ReminderRecyclerView;
import org.smartpaws.util.TimeUtils;
public class CardReminder extends RecyclerView.ViewHolder {
private AlarmService.Reminder reminder;
private View root;
private TextView titleView;
private TextView timeView;
private TextView minsView;
private ImageView closeIcon;
private AlertDialog dialog;
private int pos;
private ReminderRecyclerView parent;
public CardReminder(View root, final AlarmService.Reminder reminder, int pos, ReminderRecyclerView parent) {
super(root);
this.pos = pos;
this.parent = parent;
this.root = root;
this.titleView = (TextView) root.findViewById(R.id.card_reminder_title);
this.timeView = (TextView) root.findViewById(R.id.card_reminder_time);
this.minsView = (TextView) root.findViewById(R.id.card_reminder_mins_before);
this.closeIcon = (ImageView) root.findViewById(R.id.card_reminder_close);
setReminder(reminder);
this.dialog = buildDialog();
this.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.show();
}
});
}
public AlarmService.Reminder getReminder() {
return reminder;
}
public void setReminder(final AlarmService.Reminder reminder) {
this.reminder = reminder;
final Event event = reminder.getEvent();
final int minsBefore = reminder.getMinsBefore();
this.titleView.setText(event.getName());
this.timeView.setText(TimeUtils.formatEventTime(event.getDateStart(), event.getDuration()));
this.minsView.setText(getMinutesText(minsBefore));
this.closeIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlarmService.removeReminder(event);
parent.removeItem(CardReminder.this);
}
});
}
private String getMinutesText(int minsBefore) {
// TODO: Translations
String result;
int hoursBefore = minsBefore % 60;
if (hoursBefore == 0) {
int hours = (minsBefore / 60);
result = hours + " hour" + (hours > 1 ? "s" : "");
} else {
result = minsBefore + " minute" + (minsBefore > 1 ? "s" : "");
}
return result;
}
private AlertDialog buildDialog() {
AlertDialog.Builder rb = new AlertDialog.Builder(root.getContext());
rb.setTitle(R.string.set_reminder);
View rView = LayoutInflater.from(root.getContext()).inflate(R.layout.card_event_dialog_reminder, null);
final RadioGroup group = (RadioGroup) rView.findViewById(R.id.dialog_radio_group);
int minsTill = (int) ((reminder.getEvent().getDateStart().getTime() - System.currentTimeMillis()) / 60000);
rb.setPositiveButton(R.string.alert_done, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int id = group.getCheckedRadioButtonId();
Toast toast = null;
int minsBefore = -1;
switch (id) {
case R.id.dialog_radio_0: {
Toast.makeText(root.getContext(), R.string.reminder_removed, Toast.LENGTH_SHORT).show();
AlarmService.removeReminder(reminder.getEvent());
CardReminder.this.parent.removeItem(CardReminder.this);
return;
}
case R.id.dialog_radio_5: {
minsBefore = 5;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
case R.id.dialog_radio_10: {
minsBefore = 10;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
case R.id.dialog_radio_15: {
minsBefore = 15;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
case R.id.dialog_radio_30: {
minsBefore = 30;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
case R.id.dialog_radio_60: {
minsBefore = 60;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
case R.id.dialog_radio_120: {
minsBefore = 120;
toast = Toast.makeText(root.getContext(), R.string.reminder_updated, Toast.LENGTH_SHORT);
break;
}
}
AlarmService.setReminder(reminder.getEvent(), minsBefore, reminder.getRoom());
if (toast != null) toast.show();
CardReminder.this.minsView.setText(getMinutesText(minsBefore));
CardReminder.this.minsView.invalidate();
dialog.dismiss();
}
});
rb.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
rb.setView(rView);
return rb.create();
}
}