package com.ghostsq.commander.toolbuttons; import android.app.ListActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.commonsware.cwac.tlv.TouchListView; import com.ghostsq.commander.R; public class ToolButtonsProps extends ListActivity { public final String TAG = getClass().getName(); private ToolButtonsAdapter adapter = null; private ToolButtons array = new ToolButtons(); private TouchListView tlv; class ToolButtonsAdapter extends ArrayAdapter<ToolButton> { ToolButtonsAdapter() { super( ToolButtonsProps.this, R.layout.butrow, array ); } class ViewHolder { protected ToolButton tb; protected TextView label; protected CheckBox viscb; protected EditText caped; } public View getView( int position, View convertView, ViewGroup parent ) { try { ToolButton tb = array.get( position ); if( tb != null ) { View row = convertView; ViewHolder holder = null; if( row == null ) { LayoutInflater inflater = getLayoutInflater(); row = inflater.inflate( R.layout.butrow, parent, false ); // null ? final ViewHolder viewHolder$ = new ViewHolder(); viewHolder$.tb = tb; viewHolder$.label = (TextView)row.findViewById( R.id.tb_label ); viewHolder$.caped = (EditText)row.findViewById( R.id.tb_caption ); viewHolder$.caped.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged( Editable e ) { viewHolder$.tb.setCaption( viewHolder$.caped.getText().toString() ); } }); viewHolder$.viscb = (CheckBox)row.findViewById( R.id.tb_visible ); viewHolder$.viscb.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged( CompoundButton buttonView, boolean isChecked) { viewHolder$.tb.setVisible( buttonView.isChecked() ); } }); row.setTag( viewHolder$ ); holder = viewHolder$; } else { holder = (ViewHolder)row.getTag(); holder.tb = tb; } holder.label.setText( tb.getName( ToolButtonsProps.this ) ); holder.viscb.setChecked( tb.isVisible() ); holder.caped.setText( tb.getCaption() ); return row; } } catch( Exception e ) { Log.e( TAG, "position " + position, e ); } return null; } } @Override public void onCreate( Bundle bundle ) { super.onCreate( bundle ); setContentView( R.layout.tblist ); SharedPreferences shared_pref = PreferenceManager.getDefaultSharedPreferences( this ); array.restore( shared_pref, this ); tlv = (TouchListView)getListView(); adapter = new ToolButtonsAdapter(); setListAdapter(adapter); tlv.setDropListener(onDrop); tlv.setRemoveListener(onRemove); } @Override protected void onPause() { super.onPause(); Log.v( TAG, "onPause()" ); toLog(); SharedPreferences.Editor sp_edit = PreferenceManager.getDefaultSharedPreferences( this ).edit(); array.store( sp_edit ); sp_edit.commit(); } private TouchListView.DropListener onDrop = new TouchListView.DropListener() { @Override public void drop( int from, int to ) { ToolButton item = adapter.getItem( from ); adapter.remove( item ); adapter.insert( item, to ); } }; private TouchListView.RemoveListener onRemove = new TouchListView.RemoveListener() { @Override public void remove( int which ) { adapter.remove( adapter.getItem( which ) ); } }; public void toLog() { StringBuffer resb = new StringBuffer(); for( int i = 0; i < array.size(); i++ ) { resb.append( array.get( i ).getCaption() ); resb.append( "-" ); resb.append( array.get( i ).isVisible() ); resb.append( ", " ); } Log.v( TAG, resb.toString() ); } }