mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-06 20:45:54 +01:00
make known-player stuff conditional
and ifdefs to C and BuildConfig flag to java so the feature can be hidden in release builds until it's ready.
This commit is contained in:
parent
b3fa1edda5
commit
49909c84d6
11 changed files with 72 additions and 21 deletions
|
@ -86,6 +86,7 @@ android {
|
||||||
buildConfigField "boolean", "ATTACH_SUPPORTED", "false"
|
buildConfigField "boolean", "ATTACH_SUPPORTED", "false"
|
||||||
buildConfigField "boolean", "OFFER_MQTT", "true"
|
buildConfigField "boolean", "OFFER_MQTT", "true"
|
||||||
buildConfigField "boolean", "NON_RELEASE", "DEBUG || !IS_TAGGED_BUILD"
|
buildConfigField "boolean", "NON_RELEASE", "DEBUG || !IS_TAGGED_BUILD"
|
||||||
|
buildConfigField "boolean", "HAVE_KNOWN_PLAYERS", "false"
|
||||||
}
|
}
|
||||||
|
|
||||||
xw4NoSMS {
|
xw4NoSMS {
|
||||||
|
@ -135,6 +136,8 @@ android {
|
||||||
resValue "string", "nfc_aid", "$NFC_AID_XW4d"
|
resValue "string", "nfc_aid", "$NFC_AID_XW4d"
|
||||||
externalNativeBuild.ndkBuild.cFlags += ['-DVARIANT_xw4d']
|
externalNativeBuild.ndkBuild.cFlags += ['-DVARIANT_xw4d']
|
||||||
externalNativeBuild.ndkBuild.arguments += ['XW_BT_UUID=' + XWD_UUID]
|
externalNativeBuild.ndkBuild.arguments += ['XW_BT_UUID=' + XWD_UUID]
|
||||||
|
externalNativeBuild.ndkBuild.cFlags += ['-DXWFEATURE_KNOWNPLAYERS']
|
||||||
|
buildConfigField "boolean", "HAVE_KNOWN_PLAYERS", "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
xw4dNoSMS {
|
xw4dNoSMS {
|
||||||
|
@ -152,6 +155,8 @@ android {
|
||||||
resValue "string", "nfc_aid", "$NFC_AID_XW4d"
|
resValue "string", "nfc_aid", "$NFC_AID_XW4d"
|
||||||
externalNativeBuild.ndkBuild.cFlags += ['-DVARIANT_xw4dNoSMS']
|
externalNativeBuild.ndkBuild.cFlags += ['-DVARIANT_xw4dNoSMS']
|
||||||
externalNativeBuild.ndkBuild.arguments += ['XW_BT_UUID=' + XWD_UUID]
|
externalNativeBuild.ndkBuild.arguments += ['XW_BT_UUID=' + XWD_UUID]
|
||||||
|
externalNativeBuild.ndkBuild.cFlags += ['-DXWFEATURE_KNOWNPLAYERS']
|
||||||
|
buildConfigField "boolean", "HAVE_KNOWN_PLAYERS", "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
xw4SMS {
|
xw4SMS {
|
||||||
|
|
|
@ -60,12 +60,17 @@ public class InviteView extends ScrollView
|
||||||
{
|
{
|
||||||
Context context = getContext();
|
Context context = getContext();
|
||||||
|
|
||||||
mIsWho = null != players && 0 < players.length;
|
boolean showWho = null != players && 0 < players.length;
|
||||||
|
|
||||||
// top/horizontal group first
|
// top/horizontal group or title first
|
||||||
|
if ( showWho ) {
|
||||||
mGroupTab = (RadioGroup)findViewById( R.id.group_tab );
|
mGroupTab = (RadioGroup)findViewById( R.id.group_tab );
|
||||||
mGroupTab.check(mIsWho ? R.id.radio_who : R.id.radio_how );
|
mGroupTab.check( R.id.radio_who );
|
||||||
mGroupTab.setOnCheckedChangeListener( this );
|
mGroupTab.setOnCheckedChangeListener( this );
|
||||||
|
mGroupTab.setVisibility( View.VISIBLE );
|
||||||
|
} else {
|
||||||
|
findViewById( R.id.title_tab ).setVisibility( View.VISIBLE );
|
||||||
|
}
|
||||||
|
|
||||||
mGroupHow = (RadioGroup)findViewById( R.id.group_how );
|
mGroupHow = (RadioGroup)findViewById( R.id.group_how );
|
||||||
mGroupHow.setOnCheckedChangeListener( this );
|
mGroupHow.setOnCheckedChangeListener( this );
|
||||||
|
@ -77,9 +82,9 @@ public class InviteView extends ScrollView
|
||||||
mHowMeans.put( button, means );
|
mHowMeans.put( button, means );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( showWho ) {
|
||||||
mGroupWho = (RadioGroup)findViewById( R.id.group_who );
|
mGroupWho = (RadioGroup)findViewById( R.id.group_who );
|
||||||
mGroupWho.setOnCheckedChangeListener( this );
|
mGroupWho.setOnCheckedChangeListener( this );
|
||||||
if ( mIsWho ) {
|
|
||||||
for ( String player : players ) {
|
for ( String player : players ) {
|
||||||
RadioButton button = new RadioButton( context );
|
RadioButton button = new RadioButton( context );
|
||||||
button.setText( player );
|
button.setText( player );
|
||||||
|
@ -87,6 +92,7 @@ public class InviteView extends ScrollView
|
||||||
mWhoPlayers.put( button, player );
|
mWhoPlayers.put( button, player );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mIsWho = showWho;
|
||||||
showWhoOrHow();
|
showWhoOrHow();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
@ -146,7 +152,9 @@ public class InviteView extends ScrollView
|
||||||
|
|
||||||
private void showWhoOrHow()
|
private void showWhoOrHow()
|
||||||
{
|
{
|
||||||
|
if ( null != mGroupWho ) {
|
||||||
mGroupWho.setVisibility( mIsWho ? View.VISIBLE : View.INVISIBLE );
|
mGroupWho.setVisibility( mIsWho ? View.VISIBLE : View.INVISIBLE );
|
||||||
|
}
|
||||||
mGroupHow.setVisibility( mIsWho ? View.INVISIBLE : View.VISIBLE );
|
mGroupHow.setVisibility( mIsWho ? View.INVISIBLE : View.VISIBLE );
|
||||||
|
|
||||||
boolean showEmpty = mIsWho && 0 == mWhoPlayers.size();
|
boolean showEmpty = mIsWho && 0 == mWhoPlayers.size();
|
||||||
|
|
|
@ -173,12 +173,16 @@ public class XwJNI {
|
||||||
|
|
||||||
public static String[] kplr_getPlayers()
|
public static String[] kplr_getPlayers()
|
||||||
{
|
{
|
||||||
return kplr_getPlayers( getJNI().m_ptrGlobals );
|
return BuildConfig.HAVE_KNOWN_PLAYERS
|
||||||
|
? kplr_getPlayers( getJNI().m_ptrGlobals )
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CommsAddrRec kplr_getAddr( String name )
|
public static CommsAddrRec kplr_getAddr( String name )
|
||||||
{
|
{
|
||||||
return kplr_getAddr( getJNI().m_ptrGlobals, name );
|
return BuildConfig.HAVE_KNOWN_PLAYERS
|
||||||
|
? kplr_getAddr( getJNI().m_ptrGlobals, name )
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void cleanGlobals()
|
private static void cleanGlobals()
|
||||||
|
|
|
@ -13,11 +13,21 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
>
|
>
|
||||||
|
|
||||||
|
<!-- One of these next two will be unhidden -->
|
||||||
|
<TextView android:id="@+id/title_tab"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/how_tab"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:visibility="gone"
|
||||||
|
/>
|
||||||
|
|
||||||
<RadioGroup android:id="@+id/group_tab"
|
<RadioGroup android:id="@+id/group_tab"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:visibility="gone"
|
||||||
>
|
>
|
||||||
<RadioButton android:id="@+id/radio_who"
|
<RadioButton android:id="@+id/radio_who"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
|
@ -1023,7 +1023,13 @@
|
||||||
<string name="invite_choice_nfc">NFC (“Android beaming”)</string>
|
<string name="invite_choice_nfc">NFC (“Android beaming”)</string>
|
||||||
<string name="invite_choice_relay">Internet/Relay</string>
|
<string name="invite_choice_relay">Internet/Relay</string>
|
||||||
<string name="invite_choice_p2p">Wifi Direct</string>
|
<string name="invite_choice_p2p">Wifi Direct</string>
|
||||||
<string name="invite_choice_title">Inviting players</string>
|
<string name="invite_choice_title">Inviting a Player</string>
|
||||||
|
|
||||||
|
<!-- Text above choices for how to send invitations == ONLY WHEN
|
||||||
|
there's no choice between how and who. Replaces the how?/who?
|
||||||
|
choice radio group. -->
|
||||||
|
<string name="how_tab">Send invitation how?</string>
|
||||||
|
|
||||||
<!-- Radio button in invite choices dialog for list of previous opponents -->
|
<!-- Radio button in invite choices dialog for list of previous opponents -->
|
||||||
<string name="radio_who">Who?</string>
|
<string name="radio_who">Who?</string>
|
||||||
<!-- Text shown only when there are not any previous opponents to invite -->
|
<!-- Text shown only when there are not any previous opponents to invite -->
|
||||||
|
@ -2375,7 +2381,7 @@
|
||||||
when chosen -->
|
when chosen -->
|
||||||
<string name="not_again_clip_expl_fmt">The “%1$s” option copies an
|
<string name="not_again_clip_expl_fmt">The “%1$s” option copies an
|
||||||
invitation URL to the clipboard. Paste it into the app of your
|
invitation URL to the clipboard. Paste it into the app of your
|
||||||
choice and send it to your friend.</string>
|
choice and share it with a friend.</string>
|
||||||
<string name="confirm_clear_chat">Are you sure you want to delete
|
<string name="confirm_clear_chat">Are you sure you want to delete
|
||||||
all chat history for this game?\n\n(This action cannot be
|
all chat history for this game?\n\n(This action cannot be
|
||||||
undone.)</string>
|
undone.)</string>
|
||||||
|
|
|
@ -771,6 +771,7 @@ Java_org_eehouse_android_xw4_jni_XwJNI_dvc_1parseMQTTPacket
|
||||||
DVC_HEADER_END();
|
DVC_HEADER_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
JNIEXPORT jobjectArray JNICALL
|
JNIEXPORT jobjectArray JNICALL
|
||||||
Java_org_eehouse_android_xw4_jni_XwJNI_kplr_1getPlayers
|
Java_org_eehouse_android_xw4_jni_XwJNI_kplr_1getPlayers
|
||||||
( JNIEnv* env, jclass C, jlong jniGlobalPtr )
|
( JNIEnv* env, jclass C, jlong jniGlobalPtr )
|
||||||
|
@ -806,6 +807,7 @@ Java_org_eehouse_android_xw4_jni_XwJNI_kplr_1getAddr
|
||||||
DVC_HEADER_END();
|
DVC_HEADER_END();
|
||||||
return jaddr;
|
return jaddr;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
JNIEXPORT jbyteArray JNICALL
|
JNIEXPORT jbyteArray JNICALL
|
||||||
Java_org_eehouse_android_xw4_jni_XwJNI_gi_1to_1stream
|
Java_org_eehouse_android_xw4_jni_XwJNI_gi_1to_1stream
|
||||||
|
|
|
@ -2595,6 +2595,7 @@ comms_isConnected( const CommsCtxt* const comms )
|
||||||
void
|
void
|
||||||
comms_gatherPlayers( CommsCtxt* comms, XWEnv xwe )
|
comms_gatherPlayers( CommsCtxt* comms, XWEnv xwe )
|
||||||
{
|
{
|
||||||
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
LOG_FUNC();
|
LOG_FUNC();
|
||||||
if ( 0 == (comms->flags & FLAG_HARVEST_DONE) ) {
|
if ( 0 == (comms->flags & FLAG_HARVEST_DONE) ) {
|
||||||
CommsAddrRec addrs[4] = {{0}};
|
CommsAddrRec addrs[4] = {{0}};
|
||||||
|
@ -2607,6 +2608,10 @@ comms_gatherPlayers( CommsCtxt* comms, XWEnv xwe )
|
||||||
// comms->flags |= FLAG_HARVEST_DONE;
|
// comms->flags |= FLAG_HARVEST_DONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
XP_USE( comms );
|
||||||
|
XP_USE( xwe );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RELAY_VIA_HTTP
|
#ifdef RELAY_VIA_HTTP
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
/* -*- compile-command: "cd ../linux && make MEMDEBUG=TRUE -j3"; -*- */
|
/* -*- compile-command: "cd ../linux && make MEMDEBUG=TRUE -j3"; -*- */
|
||||||
/*
|
/*
|
||||||
* Copyright 2001 - 2020 by Eric House (xwords@eehouse.org). All rights
|
* Copyright 2020 by Eric House (xwords@eehouse.org). All rights reserved.
|
||||||
* reserved.
|
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -23,6 +22,8 @@
|
||||||
#include "comms.h"
|
#include "comms.h"
|
||||||
#include "dbgutil.h"
|
#include "dbgutil.h"
|
||||||
|
|
||||||
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
|
|
||||||
typedef struct _KnownPlayer {
|
typedef struct _KnownPlayer {
|
||||||
struct _KnownPlayer* next;
|
struct _KnownPlayer* next;
|
||||||
XP_UCHAR* name;
|
XP_UCHAR* name;
|
||||||
|
@ -230,3 +231,4 @@ kplr_cleanup( XW_DUtilCtxt* dutil )
|
||||||
XP_FREEP( dutil->mpool, state );
|
XP_FREEP( dutil->mpool, state );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
/* XP_UCHAR** knpl_listPlayers( XW_DUtilCtxt* dctxt, uint_t* nNames ); */
|
/* XP_UCHAR** knpl_listPlayers( XW_DUtilCtxt* dctxt, uint_t* nNames ); */
|
||||||
/* void knpl_freePlayers( XW_DUtilCtxt* dctxt, XP_UCHAR** names ); */
|
/* void knpl_freePlayers( XW_DUtilCtxt* dctxt, XP_UCHAR** names ); */
|
||||||
|
|
||||||
|
# ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
void kplr_cleanup( XW_DUtilCtxt* dutil );
|
void kplr_cleanup( XW_DUtilCtxt* dutil );
|
||||||
|
|
||||||
XP_Bool kplr_havePlayers( XW_DUtilCtxt* dutil, XWEnv xwe );
|
XP_Bool kplr_havePlayers( XW_DUtilCtxt* dutil, XWEnv xwe );
|
||||||
|
@ -38,5 +39,7 @@ XP_Bool kplr_getAddr( XW_DUtilCtxt* dutil, XWEnv xwe, const XP_UCHAR* name,
|
||||||
|
|
||||||
XP_Bool kplr_addAddrs( XW_DUtilCtxt* dutil, XWEnv xwe, const CurGameInfo* gi,
|
XP_Bool kplr_addAddrs( XW_DUtilCtxt* dutil, XWEnv xwe, const CurGameInfo* gi,
|
||||||
CommsAddrRec addrs[], XP_U16 nAddrs );
|
CommsAddrRec addrs[], XP_U16 nAddrs );
|
||||||
|
# else
|
||||||
|
# define kplr_cleanup( dutil )
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -166,6 +166,7 @@ DEFINES += -DXWFEATURE_DIRECTIP
|
||||||
DEFINES += -DXWFEATURE_SLOW_ROBOT -DXWFEATURE_ROBOTPHONIES
|
DEFINES += -DXWFEATURE_SLOW_ROBOT -DXWFEATURE_ROBOTPHONIES
|
||||||
|
|
||||||
DEFINES += -DXWFEATURE_DEVICE
|
DEFINES += -DXWFEATURE_DEVICE
|
||||||
|
DEFINES += -DXWFEATURE_KNOWNPLAYERS
|
||||||
|
|
||||||
# Support device-to-device connection via UDP, e.g. using wifi on a
|
# Support device-to-device connection via UDP, e.g. using wifi on a
|
||||||
# LAN or where the host/server isn't behind a firewall.
|
# LAN or where the host/server isn't behind a firewall.
|
||||||
|
|
|
@ -56,8 +56,9 @@ typedef struct _GtkInviteState {
|
||||||
|
|
||||||
GtkWidget* mqttDevID;
|
GtkWidget* mqttDevID;
|
||||||
|
|
||||||
/* Known players */
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
GtkWidget* knownsCombo;
|
GtkWidget* knownsCombo;
|
||||||
|
#endif
|
||||||
|
|
||||||
GtkWidget* bgScanButton;
|
GtkWidget* bgScanButton;
|
||||||
GtkWidget* okButton;
|
GtkWidget* okButton;
|
||||||
|
@ -99,10 +100,13 @@ handle_ok( GtkWidget* XP_UNUSED(widget), gpointer closure )
|
||||||
PageData* data = &state->pageData[curPage];
|
PageData* data = &state->pageData[curPage];
|
||||||
CommsConnType conType = data->pageType;
|
CommsConnType conType = data->pageType;
|
||||||
|
|
||||||
if ( COMMS_CONN_NONE == conType ) {
|
if ( 0 ) {
|
||||||
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
|
} else if ( COMMS_CONN_NONE == conType ) {
|
||||||
gchar* name =
|
gchar* name =
|
||||||
gtk_combo_box_text_get_active_text( GTK_COMBO_BOX_TEXT(state->knownsCombo) );
|
gtk_combo_box_text_get_active_text( GTK_COMBO_BOX_TEXT(state->knownsCombo) );
|
||||||
kplr_getAddr( state->dutil, NULL_XWE, name, state->addr );
|
kplr_getAddr( state->dutil, NULL_XWE, name, state->addr );
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
addr_addType( state->addr, conType );
|
addr_addType( state->addr, conType );
|
||||||
switch ( conType ) {
|
switch ( conType ) {
|
||||||
|
@ -271,7 +275,7 @@ makeSMSPage( GtkInviteState* state, PageData* data )
|
||||||
return vbox;
|
return vbox;
|
||||||
} /* makeBTPage */
|
} /* makeBTPage */
|
||||||
|
|
||||||
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
makeKnownsPage( GtkInviteState* state, PageData* data )
|
makeKnownsPage( GtkInviteState* state, PageData* data )
|
||||||
{
|
{
|
||||||
|
@ -301,6 +305,7 @@ makeKnownsPage( GtkInviteState* state, PageData* data )
|
||||||
|
|
||||||
return vbox;
|
return vbox;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static GtkWidget*
|
static GtkWidget*
|
||||||
makeMQTTPage( GtkInviteState* state, PageData* data )
|
makeMQTTPage( GtkInviteState* state, PageData* data )
|
||||||
|
@ -376,14 +381,14 @@ gtkInviteDlg( GtkGameGlobals* globals, CommsAddrRec* addr,
|
||||||
G_CALLBACK(onPageChanged), &state );
|
G_CALLBACK(onPageChanged), &state );
|
||||||
|
|
||||||
PageData* data;
|
PageData* data;
|
||||||
|
#ifdef XWFEATURE_KNOWNPLAYERS
|
||||||
if ( kplr_havePlayers( state.dutil, NULL_XWE ) ) {
|
if ( kplr_havePlayers( state.dutil, NULL_XWE ) ) {
|
||||||
data = getNextData( &state, COMMS_CONN_NONE, "Knowns" );
|
data = getNextData( &state, COMMS_CONN_NONE, "Knowns" );
|
||||||
(void)gtk_notebook_append_page( GTK_NOTEBOOK(state.notebook),
|
(void)gtk_notebook_append_page( GTK_NOTEBOOK(state.notebook),
|
||||||
makeKnownsPage( &state, data ),
|
makeKnownsPage( &state, data ),
|
||||||
data->label );
|
data->label );
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
data = getNextData( &state, COMMS_CONN_MQTT, "MQTT" );
|
data = getNextData( &state, COMMS_CONN_MQTT, "MQTT" );
|
||||||
(void)gtk_notebook_append_page( GTK_NOTEBOOK(state.notebook),
|
(void)gtk_notebook_append_page( GTK_NOTEBOOK(state.notebook),
|
||||||
makeMQTTPage( &state, data ),
|
makeMQTTPage( &state, data ),
|
||||||
|
|
Loading…
Add table
Reference in a new issue