project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/RoomPlayerlistFragment.java
changeset 7508 763d3961400b
parent 7476 2fb781bbdd51
child 7582 714310efad8f
equal deleted inserted replaced
7504:ed1d52c5aa94 7508:763d3961400b
       
     1 package org.hedgewars.hedgeroid;
       
     2 
       
     3 import org.hedgewars.hedgeroid.R;
       
     4 import org.hedgewars.hedgeroid.Datastructures.GameConfig;
       
     5 import org.hedgewars.hedgeroid.Datastructures.Player;
       
     6 import org.hedgewars.hedgeroid.Datastructures.PlayerInRoom;
       
     7 import org.hedgewars.hedgeroid.netplay.Netplay;
       
     8 import org.hedgewars.hedgeroid.netplay.RunGameListener;
       
     9 
       
    10 import android.content.Intent;
       
    11 import android.os.Bundle;
       
    12 import android.support.v4.app.ListFragment;
       
    13 import android.view.ContextMenu;
       
    14 import android.view.ContextMenu.ContextMenuInfo;
       
    15 import android.view.LayoutInflater;
       
    16 import android.view.MenuInflater;
       
    17 import android.view.MenuItem;
       
    18 import android.view.View;
       
    19 import android.view.ViewGroup;
       
    20 import android.widget.AdapterView;
       
    21 import android.widget.AdapterView.AdapterContextMenuInfo;
       
    22 import android.widget.AdapterView.OnItemClickListener;
       
    23 
       
    24 public class RoomPlayerlistFragment extends ListFragment implements OnItemClickListener, RunGameListener {
       
    25 	private Netplay netplay;
       
    26 	private RoomPlayerlistAdapter adapter;
       
    27 	
       
    28 	@Override
       
    29 	public void onCreate(Bundle savedInstanceState) {
       
    30 		super.onCreate(savedInstanceState);
       
    31 		netplay = Netplay.getAppInstance(getActivity().getApplicationContext());
       
    32 		netplay.registerRunGameListener(this);
       
    33 		adapter = new RoomPlayerlistAdapter();
       
    34 		adapter.setSource(netplay.roomPlayerlist);
       
    35 		setListAdapter(adapter);
       
    36 	}
       
    37 
       
    38 	@Override
       
    39 	public void onDestroy() {
       
    40 		super.onDestroy();
       
    41 		adapter.invalidate();
       
    42 		netplay.unregisterRunGameListener(this);
       
    43 	}
       
    44 	
       
    45 	@Override
       
    46 	public void onActivityCreated(Bundle savedInstanceState) {
       
    47 		super.onActivityCreated(savedInstanceState);
       
    48 		registerForContextMenu(getListView());
       
    49 		getListView().setOnItemClickListener(this);
       
    50 	}
       
    51 
       
    52 	@Override
       
    53 	public void onCreateContextMenu(ContextMenu menu, View v,
       
    54 			ContextMenuInfo menuInfo) {
       
    55 		super.onCreateContextMenu(menu, v, menuInfo);
       
    56 		AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
       
    57 		String playerName = adapter.getItem(info.position).player.name;
       
    58 		
       
    59 		MenuInflater inflater = getActivity().getMenuInflater();
       
    60 		inflater.inflate(R.menu.room_playerlist_context, menu);
       
    61 		if(netplay.isChief() && !playerName.equals(netplay.getPlayerName())) {
       
    62 			inflater.inflate(R.menu.room_playerlist_chief_context, menu);
       
    63 		}
       
    64 		menu.setHeaderIcon(R.drawable.human);
       
    65 		menu.setHeaderTitle(playerName);
       
    66 	}
       
    67 	
       
    68 	@Override
       
    69 	public boolean onContextItemSelected(MenuItem item) {
       
    70 		AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
       
    71 		PlayerInRoom player = adapter.getItem(info.position);
       
    72 		switch(item.getItemId()) {
       
    73 		case R.id.player_info:
       
    74 			netplay.sendPlayerInfoQuery(player.player.name);
       
    75 			return true;
       
    76 		case R.id.player_kick:
       
    77 			netplay.sendKick(player.player.name);
       
    78 			return true;
       
    79 		default:
       
    80 			return super.onContextItemSelected(item);
       
    81 		}
       
    82 	}
       
    83 	
       
    84 	@Override
       
    85 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
       
    86 			Bundle savedInstanceState) {
       
    87 		return inflater.inflate(R.layout.fragment_playerlist, container, false);
       
    88 	}
       
    89 	
       
    90 	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
       
    91 		Player player = adapter.getItem(position).player;
       
    92 		if(player.name.equals(netplay.getPlayerName())) {
       
    93 			netplay.sendToggleReady();
       
    94 		}
       
    95 	}
       
    96 	
       
    97 	// TODO this is really the wrong place for this...
       
    98 	public void runGame(GameConfig config) {
       
    99 		SDLActivity.startConfig = config;
       
   100 		SDLActivity.startNetgame = true;
       
   101 		startActivity(new Intent(getActivity().getApplicationContext(), SDLActivity.class));
       
   102 	}
       
   103 }