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.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.util.TimeUtils; public class CardEvent extends RecyclerView.ViewHolder { private Event event; private View root; private TextView titleView; private TextView timeView; private TextView roomView; private AlertDialog dialog; public CardEvent(View root, Event event) { super(root); this.root = root; this.titleView = (TextView) root.findViewById(R.id.card_event_title); this.timeView = (TextView) root.findViewById(R.id.card_event_time); this.roomView = (TextView) root.findViewById(R.id.card_event_room); setEvent(event); } public void setEvent(final Event event) { this.event = event; this.titleView.setText(event.getName()); this.timeView.setText(TimeUtils.formatEventTime(event.getDateStart(), event.getDuration())); this.roomView.setText(event.getRoom().getName()); this.dialog = buildDialog(); this.root.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.show(); } }); } private AlertDialog buildDialog() { AlertDialog.Builder b = new AlertDialog.Builder(root.getContext()); b.setTitle(event.getName()); View dialogView = LayoutInflater.from(root.getContext()).inflate(R.layout.card_event_dialog, null); ((TextView) dialogView.findViewById(R.id.card_event_dialog_time)).setText(TimeUtils.formatEventTime(event.getDateStart(), event.getDuration())); ((TextView) dialogView.findViewById(R.id.card_event_dialog_room)).setText(event.getRoom().getName()); TextView descriptionView = ((TextView) dialogView.findViewById(R.id.card_event_dialog_description)); if (event.getDescription() == null || event.getDescription().trim().isEmpty()) { descriptionView.setVisibility(View.GONE); } else { descriptionView.setText(event.getDescription()); } b.setView(dialogView); b.setPositiveButton(R.string.alert_done, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialog.dismiss(); } }); b.setNeutralButton(R.string.set_reminder, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); 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) ((event.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: { minsBefore = 0; toast = Toast.makeText(root.getContext(), R.string.reminder_removed, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_5: { minsBefore = 5; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_10: { minsBefore = 10; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_15: { minsBefore = 15; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_30: { minsBefore = 30; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_60: { minsBefore = 60; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } case R.id.dialog_radio_120: { minsBefore = 120; toast = Toast.makeText(root.getContext(), R.string.reminder_set, Toast.LENGTH_SHORT); break; } } AlarmService.setReminder(event, minsBefore, event.getRoom().getName()); if (toast != null) toast.show(); dialog.dismiss(); } }); rb.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); rb.setView(rView); rb.show(); } }); return b.create(); } }