diff -r 5673e95ef647 -r 57a508884052 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerlistFragment.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerlistFragment.java Tue Jul 24 16:57:48 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerlistFragment.java Thu Jul 26 11:01:32 2012 +0200 @@ -1,37 +1,39 @@ package org.hedgewars.hedgeroid.netplay; import org.hedgewars.hedgeroid.R; -import org.hedgewars.hedgeroid.netplay.NetplayService.NetplayBinder; -import android.content.ComponentName; -import android.content.Intent; -import android.content.ServiceConnection; import android.os.Bundle; -import android.os.IBinder; import android.support.v4.app.ListFragment; import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.view.ContextMenu.ContextMenuInfo; +import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.Toast; -import android.widget.AdapterView.AdapterContextMenuInfo; public class PlayerlistFragment extends ListFragment { - private NetplayService netplayService; + private Netplay netconn; private PlayerListAdapter playerListAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getActivity().bindService(new Intent(getActivity(), NetplayService.class), serviceConnection, 0); + netconn = Netplay.getAppInstance(getActivity().getApplicationContext()); playerListAdapter = new PlayerListAdapter(getActivity()); + playerListAdapter.setList(Netplay.getAppInstance(getActivity().getApplicationContext()).playerList); setListAdapter(playerListAdapter); } @Override + public void onDestroy() { + super.onDestroy(); + playerListAdapter.invalidate(); + } + + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); registerForContextMenu(getListView()); @@ -41,8 +43,11 @@ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); + AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo; MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.lobby_playerlist_context, menu); + menu.setHeaderIcon(R.drawable.human); + menu.setHeaderTitle(playerListAdapter.getItem(info.position).name); } @Override @@ -51,9 +56,7 @@ switch(item.getItemId()) { case R.id.player_info: Player p = playerListAdapter.getItem(info.position); - if(netplayService != null) { - netplayService.sendPlayerInfoQuery(p.name); - } + netconn.sendPlayerInfoQuery(p.name); return true; case R.id.player_follow: Toast.makeText(getActivity(), R.string.not_implemented_yet, Toast.LENGTH_SHORT).show(); @@ -64,27 +67,8 @@ } @Override - public void onDestroy() { - super.onDestroy(); - getActivity().unbindService(serviceConnection); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.lobby_players_fragment, container, false); } - - private ServiceConnection serviceConnection = new ServiceConnection() { - public void onServiceConnected(ComponentName className, IBinder binder) { - netplayService = ((NetplayBinder) binder).getService(); - playerListAdapter.setList(netplayService.playerList); - } - - public void onServiceDisconnected(ComponentName className) { - // TODO navigate away - playerListAdapter.invalidate(); - netplayService = null; - } - }; }