From fc438a4bcf833c63d37607b6a6b96eb48ad34e6a Mon Sep 17 00:00:00 2001 From: Eric House Date: Tue, 14 Mar 2017 19:47:45 -0700 Subject: [PATCH] tweaks to tile picker Fix to auto-exit for blank- but not tray-picking and to not show Del button for blank case (dumb since we're exiting anyway.) --- .../eehouse/android/xw4/TilePickAlert.java | 35 +++++----- .../org/eehouse/android/xw4/TilePickView.java | 70 +++++++++++-------- .../app/src/main/res/values/strings.xml | 1 + 3 files changed, 60 insertions(+), 46 deletions(-) diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickAlert.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickAlert.java index e9af35b82..3b2af42aa 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickAlert.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickAlert.java @@ -106,25 +106,25 @@ public class TilePickAlert extends XWDialogFragment m_view = (TilePickView)LocUtils.inflate( activity, R.layout.tile_picker ); m_view.init( this, m_state, sis ); - DialogInterface.OnClickListener lstnr = - new DialogInterface.OnClickListener() { - @Override - public void onClick( DialogInterface dialog, int which ) { - onDonePressed(); - } - }; - m_dialog = LocUtils.makeAlertBuilder( activity ) + AlertDialog.Builder ab = LocUtils.makeAlertBuilder( activity ) .setTitle( String.format( "Pick %d", m_state.nToPick ) ) - .setView( m_view ) - .setPositiveButton( R.string.tilepick_all, lstnr ) - .create(); + .setView( m_view ); + if ( null != m_state.counts ) { + DialogInterface.OnClickListener lstnr = + new DialogInterface.OnClickListener() { + @Override + public void onClick( DialogInterface dialog, int which ) { + onDone(); + } + }; + ab.setPositiveButton( R.string.tilepick_all, lstnr ); + } + m_dialog = ab.create(); return m_dialog; } - // TilePickView.TilePickListener - @Override - public void onDonePressed() + private void onDone() { Activity activity = getActivity(); if ( activity instanceof DlgClickNotify ) { @@ -136,12 +136,15 @@ public class TilePickAlert extends XWDialogFragment dismiss(); } + // TilePickView.TilePickListener @Override public void onTilesChanged( int nToPick, int[] newTiles ) { m_selTiles = newTiles; - if ( null != m_dialog ) { - boolean done = nToPick == newTiles.length; + boolean done = nToPick == newTiles.length; + if ( done && null == m_state.counts ) { + onDone(); + } else if ( null != m_dialog ) { int msgID = done ? android.R.string.ok : R.string.tilepick_all; Button button = m_dialog.getButton( AlertDialog.BUTTON_POSITIVE ); button.setText( LocUtils.getString( getContext(), msgID ) ); diff --git a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickView.java b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickView.java index 64a31d5ce..0d1391e19 100644 --- a/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickView.java +++ b/xwords4/android/app/src/main/java/org/eehouse/android/xw4/TilePickView.java @@ -21,30 +21,22 @@ package org.eehouse.android.xw4; import android.text.TextUtils; -// import android.app.Dialog; import android.content.Context; -// import android.content.DialogInterface; -// import android.content.Intent; -// import android.net.Uri; import android.os.Bundle; import android.util.AttributeSet; -// import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; -// import android.widget.AdapterView; -// import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.LinearLayout; -// import android.widget.ListView; import android.widget.TextView; -// import junit.framework.Assert; - import org.eehouse.android.xw4.loc.LocUtils; import org.eehouse.android.xw4.TilePickAlert.TilePickState; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import junit.framework.Assert; @@ -54,14 +46,13 @@ public class TilePickView extends LinearLayout { private static final boolean SHOW_UNAVAIL = false; public interface TilePickListener { - void onDonePressed(); void onTilesChanged( int nToPick, int[] newTiles ); } private ArrayList m_pendingTiles; private TilePickListener m_listner; private TilePickState m_state; - private List