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();
}
}