/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.Spinner;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSet;
import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService;
/**
* Control set dealing with random reminder settings
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class RandomReminderControlSet extends TaskEditControlSet {
/** default interval for spinner if date is unselected */
private final long DEFAULT_INTERVAL = DateUtilities.ONE_WEEK * 2;
private final CheckBox settingCheckbox;
private final Spinner periodSpinner;
private boolean periodSpinnerInitialized = false;
private final int[] hours;
public RandomReminderControlSet(Activity activity, View parentView, int layout) {
super(activity, layout);
settingCheckbox = (CheckBox) parentView.findViewById(R.id.reminder_random);
periodSpinner = (Spinner) parentView.findViewById(R.id.reminder_random_interval);
periodSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(periodSpinnerInitialized)
settingCheckbox.setChecked(true);
periodSpinnerInitialized = true;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// ignore
}
});
// create adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
activity, android.R.layout.simple_spinner_item,
activity.getResources().getStringArray(R.array.TEA_reminder_random));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
periodSpinner.setAdapter(adapter);
// create hour array
String[] hourStrings = activity.getResources().getStringArray(R.array.TEA_reminder_random_hours);
hours = new int[hourStrings.length];
for(int i = 0; i < hours.length; i++)
hours[i] = Integer.parseInt(hourStrings[i]);
}
@Override
protected void afterInflate() {
// Nothing to do here
}
@Override
protected void readFromTaskOnInitialize() {
long time = model.getValue(Task.REMINDER_PERIOD);
boolean enabled = time > 0;
if(time <= 0) {
time = DEFAULT_INTERVAL;
}
int i;
for(i = 0; i < hours.length - 1; i++)
if(hours[i] * DateUtilities.ONE_HOUR >= time)
break;
periodSpinner.setSelection(i);
settingCheckbox.setChecked(enabled);
}
@Override
protected String writeToModelAfterInitialized(Task task) {
if(settingCheckbox.isChecked()) {
int hourValue = hours[periodSpinner.getSelectedItemPosition()];
task.setValue(Task.REMINDER_PERIOD, hourValue * DateUtilities.ONE_HOUR);
if (task.getSetValues().containsKey(Task.REMINDER_PERIOD.name))
StatisticsService.reportEvent(StatisticsConstants.RANDOM_REMINDER_SAVED);
} else
task.setValue(Task.REMINDER_PERIOD, 0L);
return null;
}
public boolean hasRandomReminder() {
return settingCheckbox.isChecked();
}
}