35 import android.view.View.OnClickListener; |
35 import android.view.View.OnClickListener; |
36 import android.view.ViewGroup; |
36 import android.view.ViewGroup; |
37 import android.widget.Button; |
37 import android.widget.Button; |
38 |
38 |
39 public class TeamlistFragment extends ListFragment implements TeamlistAdapter.Listener { |
39 public class TeamlistFragment extends ListFragment implements TeamlistAdapter.Listener { |
40 private TeamlistAdapter adapter; |
40 private TeamlistAdapter adapter; |
41 private Button addTeamButton; |
41 private Button addTeamButton; |
42 private RoomStateManager stateManager; |
42 private RoomStateManager stateManager; |
43 |
|
44 @Override |
|
45 public void onCreate(Bundle savedInstanceState) { |
|
46 super.onCreate(savedInstanceState); |
|
47 try { |
|
48 stateManager = ((RoomStateManager.Provider)getActivity()).getRoomStateManager(); |
|
49 } catch(ClassCastException e) { |
|
50 throw new RuntimeException("Hosting activity must implement RoomStateManager.Provider.", e); |
|
51 } |
|
52 adapter = new TeamlistAdapter(); |
|
53 adapter.updateTeamlist(stateManager.getTeams().values()); |
|
54 adapter.setColorHogcountEnabled(stateManager.getChiefStatus()); |
|
55 adapter.setListener(this); |
|
56 setListAdapter(adapter); |
|
57 stateManager.addListener(roomStateChangeListener); |
|
58 } |
|
59 |
43 |
60 @Override |
44 @Override |
61 public View onCreateView(LayoutInflater inflater, ViewGroup container, |
45 public void onCreate(Bundle savedInstanceState) { |
62 Bundle savedInstanceState) { |
46 super.onCreate(savedInstanceState); |
63 View v = inflater.inflate(R.layout.fragment_teamlist, container, false); |
47 try { |
64 addTeamButton = (Button)v.findViewById(R.id.addTeamButton); |
48 stateManager = ((RoomStateManager.Provider)getActivity()).getRoomStateManager(); |
65 addTeamButton.setOnClickListener(new OnClickListener() { |
49 } catch(ClassCastException e) { |
66 public void onClick(View v) { |
50 throw new RuntimeException("Hosting activity must implement RoomStateManager.Provider.", e); |
67 new TeamAddDialog(getCurrentTeamNames()).show(getFragmentManager(), "team_add_dialog"); |
51 } |
68 } |
52 adapter = new TeamlistAdapter(); |
69 }); |
53 adapter.updateTeamlist(stateManager.getTeams().values()); |
70 |
54 adapter.setColorHogcountEnabled(stateManager.getChiefStatus()); |
71 addTeamButton.setEnabled(stateManager.getTeams().size() < Team.maxNumberOfTeams); |
55 adapter.setListener(this); |
72 |
56 setListAdapter(adapter); |
73 return v; |
57 stateManager.addListener(roomStateChangeListener); |
74 } |
58 } |
75 |
|
76 @Override |
|
77 public void onDestroy() { |
|
78 super.onDestroy(); |
|
79 adapter.setListener(null); |
|
80 stateManager.removeListener(roomStateChangeListener); |
|
81 } |
|
82 |
59 |
83 private Collection<String> getCurrentTeamNames() { |
60 @Override |
84 List<String> names = new ArrayList<String>(); |
61 public View onCreateView(LayoutInflater inflater, ViewGroup container, |
85 for(TeamInGame team : stateManager.getTeams().values()) { |
62 Bundle savedInstanceState) { |
86 names.add(team.team.name); |
63 View v = inflater.inflate(R.layout.fragment_teamlist, container, false); |
87 } |
64 addTeamButton = (Button)v.findViewById(R.id.addTeamButton); |
88 return names; |
65 addTeamButton.setOnClickListener(new OnClickListener() { |
89 } |
66 public void onClick(View v) { |
90 |
67 new TeamAddDialog(getCurrentTeamNames()).show(getFragmentManager(), "team_add_dialog"); |
91 public void onColorClicked(TeamInGame team) { |
68 } |
92 stateManager.changeTeamColorIndex(team.team.name, (team.ingameAttribs.colorIndex+1)%TeamIngameAttributes.TEAM_COLORS.length); |
69 }); |
93 } |
70 |
94 |
71 addTeamButton.setEnabled(stateManager.getTeams().size() < Team.maxNumberOfTeams); |
95 public void onHogcountClicked(TeamInGame team) { |
72 |
96 int newHogCount = team.ingameAttribs.hogCount+1; |
73 return v; |
97 if(newHogCount>Team.HEDGEHOGS_PER_TEAM) { |
74 } |
98 newHogCount = 1; |
75 |
99 } |
76 @Override |
100 stateManager.changeTeamHogCount(team.team.name, newHogCount); |
77 public void onDestroy() { |
101 } |
78 super.onDestroy(); |
102 |
79 adapter.setListener(null); |
103 public void onTeamClicked(TeamInGame team) { |
80 stateManager.removeListener(roomStateChangeListener); |
104 stateManager.requestRemoveTeam(team.team.name); |
81 } |
105 } |
82 |
106 |
83 private Collection<String> getCurrentTeamNames() { |
107 private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.ListenerAdapter() { |
84 List<String> names = new ArrayList<String>(); |
108 @Override |
85 for(TeamInGame team : stateManager.getTeams().values()) { |
109 public void onChiefStatusChanged(boolean isChief) { |
86 names.add(team.team.name); |
110 adapter.setColorHogcountEnabled(isChief); |
87 } |
111 }; |
88 return names; |
112 |
89 } |
113 @Override |
90 |
114 public void onTeamsChanged(Map<String, TeamInGame> teams) { |
91 public void onColorClicked(TeamInGame team) { |
115 adapter.updateTeamlist(teams.values()); |
92 stateManager.changeTeamColorIndex(team.team.name, (team.ingameAttribs.colorIndex+1)%TeamIngameAttributes.TEAM_COLORS.length); |
116 addTeamButton.setEnabled(teams.size() < Team.maxNumberOfTeams); |
93 } |
117 }; |
94 |
118 }; |
95 public void onHogcountClicked(TeamInGame team) { |
|
96 int newHogCount = team.ingameAttribs.hogCount+1; |
|
97 if(newHogCount>Team.HEDGEHOGS_PER_TEAM) { |
|
98 newHogCount = 1; |
|
99 } |
|
100 stateManager.changeTeamHogCount(team.team.name, newHogCount); |
|
101 } |
|
102 |
|
103 public void onTeamClicked(TeamInGame team) { |
|
104 stateManager.requestRemoveTeam(team.team.name); |
|
105 } |
|
106 |
|
107 private final RoomStateManager.Listener roomStateChangeListener = new RoomStateManager.ListenerAdapter() { |
|
108 @Override |
|
109 public void onChiefStatusChanged(boolean isChief) { |
|
110 adapter.setColorHogcountEnabled(isChief); |
|
111 }; |
|
112 |
|
113 @Override |
|
114 public void onTeamsChanged(Map<String, TeamInGame> teams) { |
|
115 adapter.updateTeamlist(teams.values()); |
|
116 addTeamButton.setEnabled(teams.size() < Team.maxNumberOfTeams); |
|
117 }; |
|
118 }; |
119 } |
119 } |