From 65ba8cef6688dbb9c9479bbcf43c13ad094b1f8b Mon Sep 17 00:00:00 2001 From: Eric House Date: Mon, 4 Jan 2021 11:46:34 -0800 Subject: [PATCH] use same dialog for all new networked games --- .../android/xw4/GamesListDelegate.java | 56 ++++++++----------- .../eehouse/android/xw4/NewWithKnowns.java | 50 ++++++++++------- .../main/res/layout/new_game_with_knowns.xml | 3 +- .../app/src/main/res/values/strings.xml | 2 - 4 files changed, 56 insertions(+), 55 deletions(-) diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/GamesListDelegate.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/GamesListDelegate.java index 049a93bc4..e44d8f8ab 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/GamesListDelegate.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/GamesListDelegate.java @@ -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 ) diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/NewWithKnowns.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/NewWithKnowns.java index 8413ef565..fb0a00921 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/NewWithKnowns.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/NewWithKnowns.java @@ -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 adapter = new - ArrayAdapter( 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 adapter = new + ArrayAdapter( 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; diff --git a/xwords4/android/app/src/main/res/layout/new_game_with_knowns.xml b/xwords4/android/app/src/main/res/layout/new_game_with_knowns.xml index f11825cb3..6744ecedc 100644 --- a/xwords4/android/app/src/main/res/layout/new_game_with_knowns.xml +++ b/xwords4/android/app/src/main/res/layout/new_game_with_knowns.xml @@ -34,7 +34,8 @@ android:paddingLeft="32dp" android:visibility="gone" /> - diff --git a/xwords4/android/app/src/main/res/values/strings.xml b/xwords4/android/app/src/main/res/values/strings.xml index 48e03f308..350b1c8a5 100644 --- a/xwords4/android/app/src/main/res/values/strings.xml +++ b/xwords4/android/app/src/main/res/values/strings.xml @@ -2213,8 +2213,6 @@ first? This game must be configured before it can be opened. - (You will have a chance to - invite other players after it is created.) Use defaults Number on this device