project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomlistFragment.java
changeset 7358 57a508884052
parent 7355 5673e95ef647
child 7444 2e31f114f57e
equal deleted inserted replaced
7355:5673e95ef647 7358:57a508884052
     1 package org.hedgewars.hedgeroid.netplay;
     1 package org.hedgewars.hedgeroid.netplay;
     2 
     2 
     3 import org.hedgewars.hedgeroid.R;
     3 import org.hedgewars.hedgeroid.R;
     4 import org.hedgewars.hedgeroid.netplay.NetplayService.NetplayBinder;
       
     5 
     4 
     6 import android.content.ComponentName;
       
     7 import android.content.Context;
       
     8 import android.content.Intent;
       
     9 import android.content.ServiceConnection;
       
    10 import android.os.Bundle;
     5 import android.os.Bundle;
    11 import android.os.CountDownTimer;
     6 import android.os.CountDownTimer;
    12 import android.os.IBinder;
       
    13 import android.support.v4.app.ListFragment;
     7 import android.support.v4.app.ListFragment;
    14 import android.view.LayoutInflater;
     8 import android.view.LayoutInflater;
    15 import android.view.Menu;
     9 import android.view.Menu;
    16 import android.view.MenuInflater;
    10 import android.view.MenuInflater;
    17 import android.view.MenuItem;
    11 import android.view.MenuItem;
    18 import android.view.View;
    12 import android.view.View;
    19 import android.view.ViewGroup;
    13 import android.view.ViewGroup;
       
    14 import android.widget.AdapterView;
    20 import android.widget.AdapterView.OnItemClickListener;
    15 import android.widget.AdapterView.OnItemClickListener;
    21 import android.widget.AdapterView;
       
    22 import android.widget.Toast;
    16 import android.widget.Toast;
    23 
    17 
    24 public class RoomlistFragment extends ListFragment implements OnItemClickListener {
    18 public class RoomlistFragment extends ListFragment implements OnItemClickListener {
    25 	private static final int AUTO_REFRESH_INTERVAL_MS = 15000;
    19 	private static final int AUTO_REFRESH_INTERVAL_MS = 15000;
    26 	
    20 	
    27 	private NetplayService service;
    21 	private Netplay netconn;
    28 	private RoomListAdapter adapter;
    22 	private RoomListAdapter adapter;
    29 	private CountDownTimer autoRefreshTimer = new CountDownTimer(Long.MAX_VALUE, AUTO_REFRESH_INTERVAL_MS) {
    23 	private CountDownTimer autoRefreshTimer = new CountDownTimer(Long.MAX_VALUE, AUTO_REFRESH_INTERVAL_MS) {
    30 		@Override
    24 		@Override
    31 		public void onTick(long millisUntilFinished) {
    25 		public void onTick(long millisUntilFinished) {
    32 			if(service != null && service.isConnected()) {
    26 			netconn.sendRoomlistRequest();
    33 				service.sendRoomlistRequest();
       
    34 			}
       
    35 		}
    27 		}
    36 		
    28 		
    37 		@Override
    29 		@Override
    38 		public void onFinish() { }
    30 		public void onFinish() { }
    39 	};
    31 	};
    40 
    32 
    41 	@Override
    33 	@Override
    42 	public void onCreate(Bundle savedInstanceState) {
    34 	public void onCreate(Bundle savedInstanceState) {
    43 		super.onCreate(savedInstanceState);
    35 		super.onCreate(savedInstanceState);
    44 		getActivity().bindService(new Intent(getActivity(), NetplayService.class), serviceConnection,
    36 		netconn = Netplay.getAppInstance(getActivity().getApplicationContext());
    45 	            Context.BIND_AUTO_CREATE);
       
    46 		adapter = new RoomListAdapter(getActivity());
    37 		adapter = new RoomListAdapter(getActivity());
       
    38 		adapter.setList(netconn.roomList);
    47 		setListAdapter(adapter);
    39 		setListAdapter(adapter);
    48 		setHasOptionsMenu(true);
    40 		setHasOptionsMenu(true);
    49 	}
    41 	}
    50 
    42 
    51 	@Override
    43 	@Override
    52 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    44 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    53 			Bundle savedInstanceState) {
    45 			Bundle savedInstanceState) {
    54 		View v = inflater.inflate(R.layout.lobby_rooms_fragment, container, false);
    46 		return inflater.inflate(R.layout.lobby_rooms_fragment, container, false);
    55 		return v;
       
    56 	}
    47 	}
    57 	
    48 	
    58 	@Override
    49 	@Override
    59 	public void onActivityCreated(Bundle savedInstanceState) {
    50 	public void onActivityCreated(Bundle savedInstanceState) {
    60 		super.onActivityCreated(savedInstanceState);
    51 		super.onActivityCreated(savedInstanceState);
    62 	}
    53 	}
    63 	
    54 	
    64 	@Override
    55 	@Override
    65 	public void onResume() {
    56 	public void onResume() {
    66 		super.onResume();
    57 		super.onResume();
    67 		if(service != null) {
    58 		autoRefreshTimer.start();
    68 			service.sendRoomlistRequest();
       
    69 			autoRefreshTimer.start();
       
    70 		}
       
    71 	}
    59 	}
    72 	
    60 	
    73 	@Override
    61 	@Override
    74 	public void onPause() {
    62 	public void onPause() {
    75 		super.onPause();
    63 		super.onPause();
    77 	}
    65 	}
    78 	
    66 	
    79 	@Override
    67 	@Override
    80 	public void onDestroy() {
    68 	public void onDestroy() {
    81 		super.onDestroy();
    69 		super.onDestroy();
    82 		getActivity().unbindService(serviceConnection);
    70 		adapter.invalidate();
    83 	}
    71 	}
    84 	
    72 	
    85 	@Override
    73 	@Override
    86 	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    74 	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    87 		super.onCreateOptionsMenu(menu, inflater);
    75 		super.onCreateOptionsMenu(menu, inflater);
    90 	
    78 	
    91 	@Override
    79 	@Override
    92 	public boolean onOptionsItemSelected(MenuItem item) {
    80 	public boolean onOptionsItemSelected(MenuItem item) {
    93 		switch(item.getItemId()) {
    81 		switch(item.getItemId()) {
    94 		case R.id.roomlist_refresh:
    82 		case R.id.roomlist_refresh:
    95 			if(service != null && service.isConnected()) {
    83 			netconn.sendRoomlistRequest();
    96 				service.sendRoomlistRequest();
       
    97 			}
       
    98 			return true;
    84 			return true;
    99 		default:
    85 		default:
   100 			return super.onOptionsItemSelected(item);
    86 			return super.onOptionsItemSelected(item);
   101 		}
    87 		}
   102 	}
    88 	}
   103 	
    89 	
   104 	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    90 	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   105 		Toast.makeText(getActivity(), R.string.not_implemented_yet, Toast.LENGTH_SHORT).show();
    91 		Toast.makeText(getActivity(), R.string.not_implemented_yet, Toast.LENGTH_SHORT).show();
   106 	}
    92 	}
   107 	
       
   108     private ServiceConnection serviceConnection = new ServiceConnection() {
       
   109         public void onServiceConnected(ComponentName className, IBinder binder) {
       
   110         	service = ((NetplayBinder) binder).getService();
       
   111         	adapter.setList(service.roomList);
       
   112         	autoRefreshTimer.start();
       
   113         }
       
   114 
       
   115         public void onServiceDisconnected(ComponentName className) {
       
   116         	// TODO navigate away
       
   117         	adapter.invalidate();
       
   118         	service = null;
       
   119         }
       
   120     };
       
   121 }
    93 }