package org.glucosio.android.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;
import org.glucosio.android.R;
import org.glucosio.android.activity.RemindersActivity;
import org.glucosio.android.db.Reminder;
import org.glucosio.android.tools.FormatDateTime;
import java.util.Calendar;
import java.util.List;
public class RemindersAdapter extends ArrayAdapter<Reminder> {
private Context context;
private List<Reminder> items;
private Calendar calendar;
private FormatDateTime formatDateTime;
public RemindersAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
public RemindersAdapter(Context context, int resource, List<Reminder> items) {
super(context, resource, items);
this.context = context;
this.items = items;
calendar = Calendar.getInstance();
formatDateTime = new FormatDateTime(context);
}
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.activity_reminder_item, parent, false);
}
LinearLayout rootView = (LinearLayout) v.findViewById(R.id.activity_reminders_root_view);
TextView timeTextView = (TextView) v.findViewById(R.id.activity_reminders_item_time);
TextView labelTextView = (TextView) v.findViewById(R.id.activity_reminders_label);
Switch activeSwitch = (Switch) v.findViewById(R.id.activity_reminders_item_enabled);
final Reminder reminder = items.get(position);
final long reminderId = reminder.getId();
calendar.setTime(reminder.getAlarmTime());
timeTextView.setText(formatDateTime.getTime(calendar));
labelTextView.setText(reminder.getLabel());
activeSwitch.setChecked(reminder.isActive());
activeSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Reminder updatedReminder = new Reminder(reminder.getId(), reminder.getAlarmTime(), reminder.getLabel(), reminder.getMetric(),
reminder.isOneTime(), reminder.isActive());
updatedReminder.setActive(b);
updateReminder(updatedReminder);
}
});
rootView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
showBottomSheetMenu(reminderId);
return true;
}
});
return v;
}
private void showBottomSheetMenu(long id) {
((RemindersActivity) context).showBottomSheetDialog(id);
}
private void updateReminder(Reminder reminder) {
// Should be always true.
// I HOPE...
if (context instanceof RemindersActivity) {
((RemindersActivity) context).updateReminder(reminder);
}
}
}