diff -r 12fdfd2038d4 -r 641f11cdd319 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomlistFragment.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomlistFragment.java Sat Jul 21 14:56:52 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomlistFragment.java Mon Jul 23 00:17:06 2012 +0200 @@ -12,12 +12,17 @@ import android.os.IBinder; import android.support.v4.app.ListFragment; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.ListView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView; +import android.widget.Toast; -public class RoomlistFragment extends ListFragment { - private static final int AUTO_REFRESH_INTERVAL_MS = 10000; +public class RoomlistFragment extends ListFragment implements OnItemClickListener { + private static final int AUTO_REFRESH_INTERVAL_MS = 15000; private Netconn netconn; private RoomListAdapter adapter; @@ -40,6 +45,7 @@ Context.BIND_AUTO_CREATE); adapter = new RoomListAdapter(getActivity()); setListAdapter(adapter); + setHasOptionsMenu(true); } @Override @@ -50,6 +56,12 @@ } @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getListView().setOnItemClickListener(this); + } + + @Override public void onResume() { super.onResume(); if(netconn != null) { @@ -70,16 +82,39 @@ getActivity().unbindService(serviceConnection); } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.lobby_roomlist_options, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch(item.getItemId()) { + case R.id.roomlist_refresh: + if(netconn != null) { + netconn.sendRoomlistRequest(); + } + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + public void onItemClick(AdapterView parent, View view, int position, long id) { + Toast.makeText(getActivity(), R.string.not_implemented_yet, Toast.LENGTH_SHORT).show(); + } + private ServiceConnection serviceConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder binder) { netconn = ((NetplayBinder) binder).getNetconn(); - adapter.setList(netconn.roomList.getValues()); - netconn.roomList.observe(adapter); + adapter.setList(netconn.roomList); + autoRefreshTimer.start(); } public void onServiceDisconnected(ComponentName className) { // TODO navigate away - netconn.roomList.unobserve(adapter); + adapter.invalidate(); netconn = null; } };