package org.yaxim.androidclient.dialogs; import java.util.List; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.view.LayoutInflater; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Spinner; import org.yaxim.androidclient.R; public class GroupNameView extends LinearLayout implements OnItemSelectedListener { private Context mContext; private List<String> mGroupList; private ArrayAdapter<String> mGroupAdapter; private Spinner mGroupSpinner; private EditText mNewGroupInput; private String mAddGroupString; private String mDefaultGroup; public GroupNameView(Context ctx, AttributeSet attrs) { super(ctx, attrs); ((LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) .inflate(R.layout.groupnameview, this); mContext = ctx; mGroupSpinner = (Spinner)findViewById(R.id.groupspinner); mNewGroupInput = (EditText)findViewById(R.id.newgroupinput); mAddGroupString = ctx.getString(R.string.addrosteritemaddgroupchoice); mDefaultGroup = ctx.getString(R.string.default_group); } public void setGroupList(List<String> groupList) { mGroupList = groupList; // replace the internal representation of the default group mGroupList.remove(""); mGroupList.add(0, mDefaultGroup); // add the string for "new group" mGroupList.add(mAddGroupString); // XXX mGroupAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, mGroupList); mGroupAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mGroupSpinner.setAdapter(mGroupAdapter); mGroupSpinner.setOnItemSelectedListener(this); } public String getGroupName() { String spinnerItem = mGroupSpinner.getSelectedItem().toString(); if (spinnerItem.equals(mDefaultGroup)) { // return internal representation return ""; } else if (spinnerItem.equals(mAddGroupString)) { return mNewGroupInput.getText().toString(); } else { return spinnerItem; } } void setInputVisibility(boolean vis) { Log.d("GroupNameView", "setInputVisibility: " + vis); mNewGroupInput.setVisibility(vis ? View.VISIBLE : View.GONE); mNewGroupInput.setEnabled(vis); } public void onItemSelected(AdapterView<?> view, View arg1, int arg2, long arg3) { Log.d("GroupNameView", "onItemSelected: " + view.getSelectedItem()); setInputVisibility(view.getSelectedItem().toString().equals(mAddGroupString)); } public void onNothingSelected(AdapterView<?> arg0) { // this event is ignored } }