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 } |