use same dialog for all new networked games

This commit is contained in:
Eric House 2021-01-04 11:46:34 -08:00
parent 185abd2d04
commit 65ba8cef66
4 changed files with 56 additions and 55 deletions

View file

@ -867,15 +867,16 @@ public class GamesListDelegate extends ListDelegateBase
case GAMES_LIST_NEWGAME:
boolean solo = (Boolean)params[0];
boolean forceConfig = 2 <= params.length && (Boolean)params[1];
if ( !solo && !forceConfig && XwJNI.hasKnownPlayers() ) {
dialog = mkNewWithKnowns();
makeNotAgainBuilder( R.string.not_again_quicknetgame,
R.string.key_na_quicknetgame )
.setTitle( R.string.new_feature_title )
.show();
if ( solo ) {
dialog = mkNewSoloGameDialog();
} else {
dialog = mkNewGameDialog( solo );
dialog = mkNewNetGameDialog();
if ( XwJNI.hasKnownPlayers() ) {
makeNotAgainBuilder( R.string.not_again_quicknetgame,
R.string.key_na_quicknetgame )
.setTitle( R.string.new_feature_title )
.show();
}
}
break;
@ -917,23 +918,14 @@ public class GamesListDelegate extends ListDelegateBase
return dialog;
} // makeDialog
private Dialog mkNewGameDialog( boolean solo )
private Dialog mkNewSoloGameDialog()
{
final LinearLayout view = (LinearLayout)
LocUtils.inflate( m_activity, R.layout.msg_label_and_edit );
final EditWClear edit = (EditWClear)view.findViewById( R.id.edit );
edit.setText( GameUtils.makeDefaultName( m_activity ) );
boolean canDoDefaults = solo ||
0 < XWPrefs.getAddrTypes( m_activity ).size();
int iconResID = solo ? R.drawable.ic_sologame : R.drawable.ic_multigame;
int titleID = solo ? R.string.new_game : R.string.new_game_networked;
String msg = getString( canDoDefaults ? R.string.new_game_message
: R.string.new_game_message_nodflt );
if ( !solo ) {
msg += "\n\n" + getString( R.string.new_game_message_net );
}
String msg = getString( R.string.new_game_message );
TextView tmpEdit = (TextView)view.findViewById( R.id.msg );
tmpEdit.setText( msg );
@ -946,27 +938,25 @@ public class GamesListDelegate extends ListDelegateBase
AlertDialog.Builder ab = makeAlertBuilder()
.setView( view )
.setTitle( titleID )
.setIcon( iconResID )
.setTitle( R.string.new_game )
.setIcon( R.drawable.ic_sologame )
.setPositiveButton( R.string.newgame_configure_first, lstnr );
if ( canDoDefaults ) {
OnClickListener lstnr2 = new OnClickListener() {
public void onClick( DialogInterface dlg, int item ) {
String name = edit.getText().toString();
curThis().makeThenLaunchOrConfigure( name, false, false );
}
};
ab.setNegativeButton( R.string.use_defaults, lstnr2 );
}
OnClickListener lstnr2 = new OnClickListener() {
public void onClick( DialogInterface dlg, int item ) {
String name = edit.getText().toString();
curThis().makeThenLaunchOrConfigure( name, false, false );
}
};
ab.setNegativeButton( R.string.use_defaults, lstnr2 );
return ab.create();
}
private Dialog mkNewWithKnowns()
private Dialog mkNewNetGameDialog()
{
String[] names = XwJNI.kplr_getPlayers();
// String[] names = XwJNI.kplr_getPlayers();
final NewWithKnowns view = (NewWithKnowns)
LocUtils.inflate( m_activity, R.layout.new_game_with_knowns );
view.setNames( names, GameUtils.makeDefaultName( m_activity ) );
view.setGameName( GameUtils.makeDefaultName( m_activity ) );
AlertDialog.Builder ab = makeAlertBuilder()
.setView( view )
.setTitle( R.string.new_game_networked )

View file

@ -31,6 +31,7 @@ import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import org.eehouse.android.xw4.jni.XwJNI;
import org.eehouse.android.xw4.loc.LocUtils;
public class NewWithKnowns extends LinearLayout
@ -65,24 +66,33 @@ public class NewWithKnowns extends LinearLayout
mListener = listener;
}
void setNames( String[] knowns, String gameName )
void setGameName( String gameName )
{
mCurKnown = DBUtils.getStringFor( getContext(), KP_NAME_KEY,
knowns[0] );
ArrayAdapter<String> adapter = new
ArrayAdapter<String>( getContext(),
android.R.layout.simple_spinner_item,
knowns );
adapter.setDropDownViewResource( android.R.layout
.simple_spinner_dropdown_item );
mNamesSpinner = (Spinner)findViewById( R.id.names );
mNamesSpinner.setAdapter( adapter );
mNamesSpinner.setOnItemSelectedListener( this );
Assert.assertTrueNR( !TextUtils.isEmpty( mCurKnown ) );
for ( int ii = 0; ii < knowns.length; ++ii ) {
if ( knowns[ii].equals( mCurKnown ) ) {
mNamesSpinner.setSelection( ii );
break;
boolean hasKnowns = XwJNI.hasKnownPlayers();
if ( hasKnowns ) {
String[] knowns = XwJNI.kplr_getPlayers();
mCurKnown = DBUtils.getStringFor( getContext(), KP_NAME_KEY,
knowns[0] );
ArrayAdapter<String> adapter = new
ArrayAdapter<String>( getContext(),
android.R.layout.simple_spinner_item,
knowns );
adapter.setDropDownViewResource( android.R.layout
.simple_spinner_dropdown_item );
mNamesSpinner = (Spinner)findViewById( R.id.names );
mNamesSpinner.setAdapter( adapter );
mNamesSpinner.setOnItemSelectedListener( this );
Assert.assertTrueNR( !TextUtils.isEmpty( mCurKnown ) );
for ( int ii = 0; ii < knowns.length; ++ii ) {
if ( knowns[ii].equals( mCurKnown ) ) {
mNamesSpinner.setSelection( ii );
break;
}
}
} else {
int[] toHide = { R.id.radio_known, R.id.names, R.id.expl_known };
for ( int resID : toHide ) {
findViewById(resID).setVisibility( View.GONE );
}
}
@ -141,8 +151,10 @@ public class NewWithKnowns extends LinearLayout
private void onRadioChanged()
{
mNamesSpinner.setVisibility( mCurRadio == R.id.radio_known
? View.VISIBLE : View.GONE );
if ( null != mNamesSpinner ) {
mNamesSpinner.setVisibility( mCurRadio == R.id.radio_known
? View.VISIBLE : View.GONE );
}
Context context = getContext();
int resId = 0;

View file

@ -34,7 +34,8 @@
android:paddingLeft="32dp"
android:visibility="gone"
/>
<TextView android:text="@string/choose_expl_known"
<TextView android:id="@+id/expl_known"
android:text="@string/choose_expl_known"
style="@style/new_game_expl"
/>

View file

@ -2213,8 +2213,6 @@
first?</string>
<string name="new_game_message_nodflt">This game must be
configured before it can be opened.</string>
<string name="new_game_message_net">(You will have a chance to
invite other players after it is created.)</string>
<string name="use_defaults">Use defaults</string>
<string name="nplayers_prompt">Number on this device</string>
<plurals name="nplayers_fmt">