diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/BoardDelegate.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/BoardDelegate.java index a50435d9d..0ad45e233 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/BoardDelegate.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/BoardDelegate.java @@ -1068,7 +1068,8 @@ public class BoardDelegate extends DelegateBase case INVITE_SMS_DATA: int nMissing = (Integer)params[0]; SentInvitesInfo info = (SentInvitesInfo)params[1]; - launchPhoneNumberInvite( nMissing, info, RequestCode.SMS_DATA_INVITE_RESULT ); + launchPhoneNumberInvite( nMissing, info, InviteMeans.SMS_DATA, + RequestCode.SMS_DATA_INVITE_RESULT ); break; case ASKED_PHONE_STATE: @@ -1227,7 +1228,7 @@ public class BoardDelegate extends DelegateBase Action.INVITE_SMS_DATA, m_mySIS.nMissing, info ); break; case SMS_USER: // like an email invite, but we want the phone # - launchPhoneNumberInvite( m_mySIS.nMissing, info, + launchPhoneNumberInvite( m_mySIS.nMissing, info, means, RequestCode.SMS_USER_INVITE_RESULT ); break; case RELAY: @@ -1505,9 +1506,10 @@ public class BoardDelegate extends DelegateBase } private void launchPhoneNumberInvite( int nMissing, SentInvitesInfo info, - RequestCode code ) + InviteMeans means, RequestCode code ) { - SMSInviteDelegate.launchForResult( m_activity, nMissing, info, code ); + SMSInviteDelegate.launchForResult( m_activity, nMissing, info, + means, code ); } private void deleteAndClose() diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/InviteDelegate.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/InviteDelegate.java index ff4cfc8bf..05bb777b3 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/InviteDelegate.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/InviteDelegate.java @@ -132,6 +132,13 @@ abstract class InviteDelegate extends ListDelegateBase TextView descView = (TextView)findViewById( R.id.invite_desc ); descView.setText( descTxt ); + int extraID = getExtra(); + if ( 0 != extraID ) { + TextView extraView = (TextView)findViewById( R.id.invite_extra ); + extraView.setText( getString( extraID ) ); + extraView.setVisibility( View.VISIBLE ); + } + m_lv = (ListView)findViewById( android.R.id.list ); m_ev = (TextView)findViewById( android.R.id.empty ); if ( null != m_lv && null != m_ev && 0 != emptyMsgId ) { @@ -146,6 +153,9 @@ abstract class InviteDelegate extends ListDelegateBase // Children implement ... abstract void onChildAdded( View child, InviterItem item ); + // Implement this if you want to insert descriptive text + int getExtra() { return 0; } + // Subclasses are meant to call this protected void addButtonBar( int buttonBarId, int[] buttonBarItemIds ) { diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/SMSInviteDelegate.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/SMSInviteDelegate.java index 147abbd0f..cacc7c84e 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/SMSInviteDelegate.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/SMSInviteDelegate.java @@ -57,21 +57,25 @@ public class SMSInviteDelegate extends InviteDelegate { R.id.manual_add_button, R.id.button_clear, }; + private static final String INTENT_KEY_MEANS = "means"; private ArrayList m_phoneRecs; private boolean m_immobileConfirmed; private Activity m_activity; + private InviteMeans mMeans; public static void launchForResult( Activity activity, int nMissing, SentInvitesInfo info, + InviteMeans means, RequestCode requestCode ) { Intent intent = InviteDelegate .makeIntent( activity, SMSInviteActivity.class, - nMissing, info ); + nMissing, info ) + .putExtra( INTENT_KEY_MEANS, means.ordinal() ); if ( null != info ) { - String lastDev = info.getLastDev( InviteMeans.SMS_DATA ); + String lastDev = info.getLastDev( means ); intent.putExtra( INTENT_KEY_LASTDEV, lastDev ); } activity.startActivityForResult( intent, requestCode.ordinal() ); @@ -86,6 +90,7 @@ public class SMSInviteDelegate extends InviteDelegate { @Override protected void init( Bundle savedInstanceState ) { + mMeans = InviteMeans.values()[getIntent().getIntExtra(INTENT_KEY_MEANS, -1)]; String msg = getString( R.string.button_invite ); msg = getQuantityString( R.plurals.invite_sms_desc_fmt, m_nMissing, m_nMissing, msg ); @@ -98,6 +103,24 @@ public class SMSInviteDelegate extends InviteDelegate { askContactsPermission(); } + @Override + int getExtra() + { + int result = 0; + switch( mMeans ) { + case SMS_DATA: + result = R.string.invite_nbs_desc; + break; + case SMS_USER: + result = R.string.invite_sms_desc; + break; + default: + Assert.assertFalse( BuildConfig.DEBUG ); + break; + } + return result; + } + @Override protected void onBarButtonClicked( int id ) { diff --git a/xwords4/android/app/src/main/res/layout/inviter.xml b/xwords4/android/app/src/main/res/layout/inviter.xml index e42d6bb43..089b8921e 100644 --- a/xwords4/android/app/src/main/res/layout/inviter.xml +++ b/xwords4/android/app/src/main/res/layout/inviter.xml @@ -13,6 +13,14 @@ android:padding="8dp" /> + + Please check the %1$d phone numbers you want to invite to your new game, then tap \"%2$s\". + + + Your SMS messaging app will then be + launched with a message for you to send to the phone number + you\'ve selected. + + + A data message will then be + delivered to the device with that phone number. If CrossWords is + installed there and has the necessary permissions it will receive + the invitation and play can begin. + Please check the device you want to invite