project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/TeamlistFragment.java
changeset 7485 0481bd74267c
parent 7476 2fb781bbdd51
equal deleted inserted replaced
7482:d70a5b0d1190 7485:0481bd74267c
     1 package org.hedgewars.hedgeroid.netplay;
     1 package org.hedgewars.hedgeroid.netplay;
     2 
     2 
       
     3 import java.util.ArrayList;
       
     4 import java.util.Collection;
       
     5 import java.util.List;
       
     6 
     3 import org.hedgewars.hedgeroid.R;
     7 import org.hedgewars.hedgeroid.R;
       
     8 import org.hedgewars.hedgeroid.Datastructures.Team;
       
     9 import org.hedgewars.hedgeroid.Datastructures.TeamInGame;
     4 
    10 
       
    11 import android.database.DataSetObserver;
     5 import android.os.Bundle;
    12 import android.os.Bundle;
     6 import android.support.v4.app.ListFragment;
    13 import android.support.v4.app.ListFragment;
       
    14 import android.util.Pair;
     7 import android.view.LayoutInflater;
    15 import android.view.LayoutInflater;
     8 import android.view.View;
    16 import android.view.View;
       
    17 import android.view.View.OnClickListener;
     9 import android.view.ViewGroup;
    18 import android.view.ViewGroup;
       
    19 import android.widget.AdapterView.OnItemClickListener;
       
    20 import android.widget.AdapterView;
       
    21 import android.widget.Button;
    10 
    22 
    11 public class TeamlistFragment extends ListFragment {
    23 public class TeamlistFragment extends ListFragment implements OnItemClickListener {
    12 	private Netplay netplay;
    24 	private Netplay netplay;
    13 	private TeamlistAdapter adapter;
    25 	private TeamlistAdapter adapter;
    14 
    26 	private Button addTeamButton;
       
    27 	private DataSetObserver teamlistObserver;
       
    28 	
    15 	@Override
    29 	@Override
    16 	public void onCreate(Bundle savedInstanceState) {
    30 	public void onCreate(Bundle savedInstanceState) {
    17 		super.onCreate(savedInstanceState);
    31 		super.onCreate(savedInstanceState);
    18 		netplay = Netplay.getAppInstance(getActivity().getApplicationContext());
    32 		netplay = Netplay.getAppInstance(getActivity().getApplicationContext());
    19 		adapter = new TeamlistAdapter(getActivity());
    33 		adapter = new TeamlistAdapter(getActivity());
    22 	}
    36 	}
    23 
    37 
    24 	@Override
    38 	@Override
    25 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    39 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    26 			Bundle savedInstanceState) {
    40 			Bundle savedInstanceState) {
    27 		return inflater.inflate(R.layout.fragment_teamlist, container, false);
    41 		View v = inflater.inflate(R.layout.fragment_teamlist, container, false);
       
    42 		addTeamButton = (Button)v.findViewById(R.id.addTeamButton);
       
    43 		addTeamButton.setOnClickListener(new OnClickListener() {
       
    44 			public void onClick(View v) {
       
    45 				new TeamAddDialog(getCurrentTeamNames()).show(getFragmentManager(), "team_add_dialog");
       
    46 			}
       
    47 		});
       
    48 		
       
    49 		teamlistObserver = new DataSetObserver() {
       
    50 			@Override
       
    51 			public void onChanged() {
       
    52 				addTeamButton.setEnabled(netplay.roomTeamlist.getMap().size() < Team.maxNumberOfTeams);
       
    53 			}
       
    54 		};
       
    55 		netplay.roomTeamlist.registerObserver(teamlistObserver);
       
    56 		teamlistObserver.onChanged();
       
    57 		
       
    58 		return v;
    28 	}
    59 	}
    29 	
    60 	
    30 	@Override
    61 	@Override
    31 	public void onDestroy() {
    62 	public void onDestroy() {
    32 		super.onDestroy();
    63 		super.onDestroy();
    33 		adapter.invalidate();
    64 		adapter.invalidate();
       
    65 		netplay.roomTeamlist.unregisterObserver(teamlistObserver);
       
    66 	}
       
    67 
       
    68 	@Override
       
    69 	public void onActivityCreated(Bundle savedInstanceState) {
       
    70 		super.onActivityCreated(savedInstanceState);
       
    71 		getListView().setOnItemClickListener(this);
       
    72 	}
       
    73 	
       
    74 	private Collection<String> getCurrentTeamNames() {
       
    75 		List<String> names = new ArrayList<String>();
       
    76 		for(Pair<TeamInGame, Long> teamWithId : netplay.roomTeamlist.getMap().values()) {
       
    77 			names.add(teamWithId.first.team.name);
       
    78 		}
       
    79 		return names;
       
    80 	}
       
    81 	
       
    82 	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
       
    83 		netplay.sendRemoveTeam(adapter.getItem(position).team.name);
    34 	}
    84 	}
    35 }
    85 }