show Known Player name in button

Got tired of it not being clear what the button was going to do
This commit is contained in:
Eric House 2020-10-25 14:58:19 -07:00
parent 71d5127782
commit 57d93273c9
4 changed files with 60 additions and 19 deletions

View file

@ -458,9 +458,6 @@ public class BTUtils {
PacketAccumulator pa = pas.get( dev ); PacketAccumulator pa = pas.get( dev );
try { try {
pa.join(); pa.join();
if ( 0 < pa.getResponseCount() ) {
callListeners( dev );
}
} catch ( InterruptedException ex ) { } catch ( InterruptedException ex ) {
Assert.failDbg(); Assert.failDbg();
} }
@ -560,9 +557,11 @@ public class BTUtils {
private volatile boolean mExitWhenEmpty = false; private volatile boolean mExitWhenEmpty = false;
private BluetoothAdapter mAdapter; private BluetoothAdapter mAdapter;
private BTHelper mHelper; private BTHelper mHelper;
private boolean mPostOnResponse;
PacketAccumulator( String addr ) { this(addr, 20000); } PacketAccumulator( String addr ) { this(addr, 20000); }
// Ping case -- used only once
PacketAccumulator( String addr, int timeoutMS ) PacketAccumulator( String addr, int timeoutMS )
{ {
Assert.assertTrue( !TextUtils.isEmpty(addr) ); Assert.assertTrue( !TextUtils.isEmpty(addr) );
@ -575,6 +574,7 @@ public class BTUtils {
mAdapter = getAdapterIf(); mAdapter = getAdapterIf();
Assert.assertTrueNR( null != mAdapter ); Assert.assertTrueNR( null != mAdapter );
mHelper = new BTHelper( mName, mAddr ); mHelper = new BTHelper( mName, mAddr );
mPostOnResponse = true;
start(); start();
} }
@ -614,11 +614,6 @@ public class BTUtils {
return this; return this;
} }
int getResponseCount()
{
return mResponseCount;
}
void addInvite( NetLaunchInfo nli ) void addInvite( NetLaunchInfo nli )
{ {
try { try {
@ -825,6 +820,9 @@ public class BTUtils {
mName, dos ); mName, dos );
nDone += writeAndCheck( socket, dos ); nDone += writeAndCheck( socket, dos );
updateStatusOut( true ); updateStatusOut( true );
if ( mPostOnResponse ) {
callListeners( socket.getRemoteDevice() );
}
} }
} catch ( IOException ioe ) { } catch ( IOException ioe ) {
Log.e( TAG, "PacketAccumulator.run(): ioe: %s", Log.e( TAG, "PacketAccumulator.run(): ioe: %s",

View file

@ -965,6 +965,7 @@ public class GamesListDelegate extends ListDelegateBase
private Dialog mkNewWithKnowns() private Dialog mkNewWithKnowns()
{ {
String[] names = XwJNI.kplr_getPlayers(); String[] names = XwJNI.kplr_getPlayers();
final String[] nameRef = {null};
final NewWithKnowns view = (NewWithKnowns) final NewWithKnowns view = (NewWithKnowns)
LocUtils.inflate( m_activity, R.layout.new_game_with_knowns ); LocUtils.inflate( m_activity, R.layout.new_game_with_knowns );
view.setNames( names, GameUtils.makeDefaultName( m_activity ) ); view.setNames( names, GameUtils.makeDefaultName( m_activity ) );
@ -972,11 +973,11 @@ public class GamesListDelegate extends ListDelegateBase
.setView( view ) .setView( view )
.setTitle( R.string.new_game_networked ) .setTitle( R.string.new_game_networked )
.setIcon( R.drawable.ic_multigame ) .setIcon( R.drawable.ic_multigame )
.setPositiveButton( R.string.play, new OnClickListener() { .setPositiveButton( "" /* can't be empty*/, new OnClickListener() {
@Override @Override
public void onClick( DialogInterface dlg, int item ) { public void onClick( DialogInterface dlg, int item ) {
String player = view.getSelPlayer(); Assert.assertTrueNR( null != nameRef[0] );
CommsAddrRec addr = XwJNI.kplr_getAddr( player ); CommsAddrRec addr = XwJNI.kplr_getAddr( nameRef[0] );
if ( null != addr ) { if ( null != addr ) {
launchLikeRematch( addr, view.gameName() ); launchLikeRematch( addr, view.gameName() );
} }
@ -991,7 +992,22 @@ public class GamesListDelegate extends ListDelegateBase
} ) } )
; ;
return ab.create(); final AlertDialog dialog = ab.create();
view.setOnNameChangeListener( new NewWithKnowns.OnNameChangeListener() {
@Override
public void onNewName( String name ) {
nameRef[0] = name;
Button button = dialog.getButton( DialogInterface.BUTTON_POSITIVE );
if ( null != button ) {
String msg = getString( R.string.invite_player_fmt, name );
button.setText( msg );
} else {
Log.e( TAG, "Button still null" );
}
}
} );
return dialog;
} }
private void enableMoveGroupButton( DialogInterface dlgi ) private void enableMoveGroupButton( DialogInterface dlgi )

View file

@ -21,18 +21,34 @@ package org.eehouse.android.xw4;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView;
public class NewWithKnowns extends LinearLayout { public class NewWithKnowns extends LinearLayout implements OnItemSelectedListener
{
public interface OnNameChangeListener {
void onNewName( String name );
}
private OnNameChangeListener mListener;
public NewWithKnowns( Context cx, AttributeSet as ) public NewWithKnowns( Context cx, AttributeSet as )
{ {
super( cx, as ); super( cx, as );
} }
void setOnNameChangeListener( OnNameChangeListener listener )
{
Assert.assertTrueNR( null == mListener );
mListener = listener;
}
void setNames( String[] knowns, String gameName ) void setNames( String[] knowns, String gameName )
{ {
ArrayAdapter<String> adapter = new ArrayAdapter<String> adapter = new
@ -43,20 +59,29 @@ public class NewWithKnowns extends LinearLayout {
.simple_spinner_dropdown_item ); .simple_spinner_dropdown_item );
Spinner spinner = (Spinner)findViewById( R.id.names ); Spinner spinner = (Spinner)findViewById( R.id.names );
spinner.setAdapter( adapter ); spinner.setAdapter( adapter );
spinner.setOnItemSelectedListener( this );
EditText et = (EditText)findViewById( R.id.name_edit ); EditText et = (EditText)findViewById( R.id.name_edit );
et.setText( gameName ); et.setText( gameName );
} }
String getSelPlayer()
{
Spinner spinner = (Spinner)findViewById( R.id.names );
return spinner.getSelectedItem().toString();
}
String gameName() String gameName()
{ {
EditText et = (EditText)findViewById( R.id.name_edit ); EditText et = (EditText)findViewById( R.id.name_edit );
return et.getText().toString(); return et.getText().toString();
} }
@Override
public void onItemSelected( AdapterView<?> parent, View view,
int pos, long id )
{
OnNameChangeListener listener = mListener;
if ( null != listener && view instanceof TextView ) {
TextView tv = (TextView)view;
listener.onNewName( tv.getText().toString() );
}
}
@Override
public void onNothingSelected( AdapterView<?> parent ) {}
} }

View file

@ -1007,6 +1007,8 @@
it immediately because an email or messaging app will be it immediately because an email or messaging app will be
launched to send your invitation. --> launched to send your invitation. -->
<string name="newgame_invite">Invite now</string> <string name="newgame_invite">Invite now</string>
<!-- Button offering to invite Known Player to a new game -->
<string name="invite_player_fmt">Invite %1$s</string>
<string name="newgame_invite_more">More info</string> <string name="newgame_invite_more">More info</string>
<string name="newgame_drop_relay">Drop Relay</string> <string name="newgame_drop_relay">Drop Relay</string>