project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/TeamAddDialog.java
changeset 7485 0481bd74267c
equal deleted inserted replaced
7482:d70a5b0d1190 7485:0481bd74267c
       
     1 package org.hedgewars.hedgeroid.netplay;
       
     2 
       
     3 import java.util.ArrayList;
       
     4 import java.util.Collection;
       
     5 import java.util.Collections;
       
     6 import java.util.List;
       
     7 
       
     8 import org.hedgewars.hedgeroid.R;
       
     9 import org.hedgewars.hedgeroid.Datastructures.FrontendDataUtils;
       
    10 import org.hedgewars.hedgeroid.Datastructures.Team;
       
    11 
       
    12 import android.app.Activity;
       
    13 import android.app.AlertDialog;
       
    14 import android.app.Dialog;
       
    15 import android.content.DialogInterface;
       
    16 import android.content.DialogInterface.OnClickListener;
       
    17 import android.os.Bundle;
       
    18 import android.support.v4.app.DialogFragment;
       
    19 
       
    20 public class TeamAddDialog extends DialogFragment {
       
    21 	private static final String STATE_TEAMS_ALREADY_IN_GAME = "teamAlreadyInGame";
       
    22 	private ArrayList<String> teamsAlreadyInGame;
       
    23 	private List<Team> availableTeams;
       
    24 	private Listener listener;
       
    25 	
       
    26 	public static interface Listener {
       
    27 		void onTeamAddDialogSubmitted(Team newTeam);
       
    28 	}
       
    29 	
       
    30 	public TeamAddDialog() {
       
    31 		// Only for reflection-based instantiation by the framework
       
    32 	}
       
    33 	
       
    34 	TeamAddDialog(Collection<String> teamsAlreadyInGame) {
       
    35 		this.teamsAlreadyInGame = new ArrayList<String>(teamsAlreadyInGame);
       
    36 	}
       
    37 	
       
    38 	@Override
       
    39 	public void onAttach(Activity activity) {
       
    40 		super.onAttach(activity);
       
    41 		try {
       
    42 			listener = (Listener) activity;
       
    43 		} catch(ClassCastException e) {
       
    44 			throw new ClassCastException("Activity " + activity + " must implement TeamAddDialog.Listener to use TeamAddDialog.");
       
    45 		}
       
    46 	}
       
    47 	
       
    48 	@Override
       
    49 	public void onDetach() {
       
    50 		super.onDetach();
       
    51 		listener = null;
       
    52 	}
       
    53 	
       
    54 	@Override
       
    55 	public void onCreate(Bundle savedInstanceState) {
       
    56 		super.onCreate(savedInstanceState);
       
    57 		if(savedInstanceState != null) {
       
    58 			teamsAlreadyInGame = savedInstanceState.getStringArrayList(STATE_TEAMS_ALREADY_IN_GAME);
       
    59 		}
       
    60 		availableTeams = new ArrayList<Team>();
       
    61 		List<Team> teams = FrontendDataUtils.getTeams(getActivity());
       
    62 		for(Team team : teams) {
       
    63 			if(!teamsAlreadyInGame.contains(team.name)) {
       
    64 				availableTeams.add(team);
       
    65 			}
       
    66 		}
       
    67 		Collections.sort(availableTeams, Team.NAME_ORDER);
       
    68 	}
       
    69 	
       
    70 	@Override
       
    71 	public Dialog onCreateDialog(Bundle savedInstanceState) {
       
    72 		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
       
    73 		builder.setTitle(R.string.dialog_addteam_title);
       
    74 		builder.setIcon(R.drawable.human);
       
    75 		String[] teamNames = new String[availableTeams.size()];
       
    76 		for(int i=0; i<availableTeams.size(); i++) {
       
    77 			teamNames[i] = availableTeams.get(i).name;
       
    78 		}
       
    79 		builder.setItems(teamNames, new OnClickListener() {
       
    80 			public void onClick(DialogInterface dialog, int which) {
       
    81 				listener.onTeamAddDialogSubmitted(availableTeams.get(which));
       
    82 			}
       
    83 		});
       
    84 		return builder.create();
       
    85 	}
       
    86 	
       
    87 	@Override
       
    88 	public void onSaveInstanceState(Bundle outState) {
       
    89 		super.onSaveInstanceState(outState);
       
    90 		outState.putStringArrayList(STATE_TEAMS_ALREADY_IN_GAME, teamsAlreadyInGame);
       
    91 	}
       
    92 }