package de.andlabs.teleporter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import android.app.ListActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.BaseAdapter; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ListAdapter; import android.widget.ProgressBar; import android.widget.SeekBar; import android.widget.SlidingDrawer; import android.widget.SeekBar.OnSeekBarChangeListener; import com.commonsware.cwac.endless.EndlessAdapter; public class RidesActivity extends ListActivity implements OnSeekBarChangeListener { private ArrayList<Ride> rides; private SeekBar fun; private SeekBar eco; private SeekBar fast; private SeekBar green; private SeekBar social; private SharedPreferences priorities; private QueryMultiplexer multiplexer; private RotateAnimation rotate; private ProgressBar progress; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rides); // some mock rides rides = new ArrayList<Ride>(); Place o = new Place(); o.type = Place.TYPE_ADDRESS; o.name = "Droidcamp - Dahlem Cube"; o.address = "Takustraße 39, Berlin"; o.lat = 52457577; o.lon = 13292519; Place d = new Place(); d.type = Place.TYPE_ADDRESS; d.name = "C-Base Raumstation"; d.address = "Rungestr 20, Berlin"; d.lat = 52512288; d.lon = 13419910; multiplexer = new QueryMultiplexer(this, o, d); ((ImageButton)findViewById(R.id.close)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((SlidingDrawer)findViewById(R.id.priorities)).animateClose(); } }); rotate = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotate.setDuration(600); rotate.setRepeatMode(Animation.RESTART); rotate.setRepeatCount(Animation.INFINITE); progress = new ProgressBar(this); LayoutParams params = new FrameLayout.LayoutParams(this,null); progress.setLayoutParams(params); setListAdapter(new BaseAdapter() { @Override public View getView(int position, View view, ViewGroup parent) { if (view == null) view = getLayoutInflater().inflate(R.layout.rideview, parent, false); if (position < multiplexer.rides.size()) { ((RideView)view).setRide((Ride) multiplexer.rides.get(position)); return view; } else { multiplexer.searchLater(); return progress; } } @Override public long getItemId(int position) { if (position < multiplexer.rides.size()) return multiplexer.rides.get(position).hashCode(); else return 2342; } @Override public Object getItem(int position) { return multiplexer.rides.get(position); } @Override public int getCount() { return multiplexer.rides.size()+1; } @Override public boolean hasStableIds() { return false; } @Override public int getItemViewType(int position) { if (position < multiplexer.rides.size()) return 0; else return 1; } @Override public int getViewTypeCount() { return 2; } }); fun = ((SeekBar)findViewById(R.id.fun)); eco = ((SeekBar)findViewById(R.id.eco)); fast = ((SeekBar)findViewById(R.id.fast)); green = ((SeekBar)findViewById(R.id.green)); social = ((SeekBar)findViewById(R.id.social)); fun.setOnSeekBarChangeListener(this); eco.setOnSeekBarChangeListener(this); fast.setOnSeekBarChangeListener(this); green.setOnSeekBarChangeListener(this); social.setOnSeekBarChangeListener(this); priorities = getSharedPreferences("priorities", MODE_PRIVATE); fun.setProgress(priorities.getInt("fun", 0)); eco.setProgress(priorities.getInt("eco", 0)); fast.setProgress(priorities.getInt("fast", 0)); green.setProgress(priorities.getInt("green", 0)); social.setProgress(priorities.getInt("social", 0)); multiplexer.sort(); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { Log.d("aha", "changed "+progress); priorities.edit().putInt((String)seekBar.getTag(), progress).commit(); multiplexer.sort(); getListView().invalidateViews(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.search: onSearchRequested(); break; case R.id.settings: ((SlidingDrawer)findViewById(R.id.priorities)).animateOpen(); break; case R.id.feedback: LogCollector.feedback(this, "flo@andlabs.de", "bla bla"); break; } return super.onOptionsItemSelected(item); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} public void datasetChanged() { getListView().invalidateViews(); } }