1 package org.hedgewars.hedgeroid.netplay; |
|
2 |
|
3 import java.util.ArrayList; |
|
4 import java.util.Collection; |
|
5 import java.util.List; |
|
6 |
|
7 import org.hedgewars.hedgeroid.R; |
|
8 import org.hedgewars.hedgeroid.Datastructures.Team; |
|
9 import org.hedgewars.hedgeroid.Datastructures.TeamInGame; |
|
10 |
|
11 import android.database.DataSetObserver; |
|
12 import android.os.Bundle; |
|
13 import android.support.v4.app.ListFragment; |
|
14 import android.util.Pair; |
|
15 import android.view.LayoutInflater; |
|
16 import android.view.View; |
|
17 import android.view.View.OnClickListener; |
|
18 import android.view.ViewGroup; |
|
19 import android.widget.AdapterView.OnItemClickListener; |
|
20 import android.widget.AdapterView; |
|
21 import android.widget.Button; |
|
22 |
|
23 public class TeamlistFragment extends ListFragment implements OnItemClickListener { |
|
24 private Netplay netplay; |
|
25 private TeamlistAdapter adapter; |
|
26 private Button addTeamButton; |
|
27 private DataSetObserver teamlistObserver; |
|
28 |
|
29 @Override |
|
30 public void onCreate(Bundle savedInstanceState) { |
|
31 super.onCreate(savedInstanceState); |
|
32 netplay = Netplay.getAppInstance(getActivity().getApplicationContext()); |
|
33 adapter = new TeamlistAdapter(getActivity()); |
|
34 adapter.setSource(netplay.roomTeamlist); |
|
35 setListAdapter(adapter); |
|
36 } |
|
37 |
|
38 @Override |
|
39 public View onCreateView(LayoutInflater inflater, ViewGroup container, |
|
40 Bundle savedInstanceState) { |
|
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; |
|
59 } |
|
60 |
|
61 @Override |
|
62 public void onDestroy() { |
|
63 super.onDestroy(); |
|
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); |
|
84 } |
|
85 } |
|