package org.gscript.view; import java.util.ArrayList; import org.gscript.R; import org.gscript.data.ContentUri; import org.gscript.data.ScheduleProvider; import org.gscript.data.library.ItemConditions; import android.content.Context; import android.database.Cursor; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.CompoundButton.OnCheckedChangeListener; public class ItemConditionsView extends LinearLayout { ItemConditions mConditions = new ItemConditions(); public ItemConditionsView(Context context) { super(context); initView(); } public ItemConditionsView(Context context, ItemConditions conditions) { super(context); mConditions.putAll(conditions); initView(); } void initView() { final LayoutInflater inflater = LayoutInflater.from(getContext()); View view = inflater.inflate(R.layout.item_conditions, null, false); addView(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); final CheckBox checkBoxBoot = (CheckBox) findViewById(R.id.checkBoxConditionBoot); checkBoxBoot.setChecked(mConditions .containsKey(ItemConditions.CONDITION_BOOT)); checkBoxBoot.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { mConditions.put(ItemConditions.CONDITION_BOOT, "true"); } else { mConditions.remove(ItemConditions.CONDITION_BOOT); } } }); /* schedules */ final Spinner spinnerSchedule = (Spinner) findViewById(R.id.spinnerSchedule); String selectedId = mConditions .containsKey(ItemConditions.CONDITION_SCHEDULE) ? mConditions .get(ItemConditions.CONDITION_SCHEDULE) : ""; int selectedIndex = 0; final ArrayList<ScheduleItem> schedules = new ArrayList<ScheduleItem>(); schedules.add(new ScheduleItem("", "No schedule")); int index = 1; Cursor c = getContext().getContentResolver().query(ContentUri.URI_SCHEDULE, null, null, null, null); while(c.moveToNext()) { String scheduleId = String.valueOf(c.getInt(c.getColumnIndex(ScheduleProvider.COLUMN_ID))); String scheduleTitle = c.getString(c.getColumnIndex(ScheduleProvider.COLUMN_TITLE)); schedules.add(new ScheduleItem(scheduleId, scheduleTitle)); if(scheduleId.equals(selectedId)) { selectedIndex = index; } index++; } ArrayAdapter<ScheduleItem> adapter = new ArrayAdapter<ScheduleItem>( getContext(), android.R.layout.simple_spinner_item, schedules); spinnerSchedule.setAdapter(adapter); spinnerSchedule.setSelection(selectedIndex); spinnerSchedule .setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { if (pos == 0) { mConditions.remove(ItemConditions.CONDITION_SCHEDULE); } else { mConditions.put(ItemConditions.CONDITION_SCHEDULE, schedules.get(pos).id); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } public ItemConditions getConditions() { return mConditions; } class ScheduleItem { public ScheduleItem(String id, String title) { this.id = id; this.title = title; } @Override public String toString() { return title; } String id; String title; } }