disable reset button unless there's state to clear

Using a timer seemed easier than adding listeners on a bunch of fields.
This commit is contained in:
Eric House 2021-03-25 09:40:41 -07:00
parent ccd557658f
commit 59acc5d619
3 changed files with 41 additions and 3 deletions

View file

@ -25,6 +25,7 @@ import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -141,6 +142,7 @@ public class DictBrowseDelegate extends DelegateBase
private Spinner m_spinnerMax; private Spinner m_spinnerMax;
private boolean m_newAlertShown; private boolean m_newAlertShown;
private String m_desc; private String m_desc;
private Runnable mResetChecker;
private class DictListAdapter extends BaseAdapter private class DictListAdapter extends BaseAdapter
implements SectionIndexer { implements SectionIndexer {
@ -295,6 +297,7 @@ public class DictBrowseDelegate extends DelegateBase
{ {
scrapeBrowseState(); scrapeBrowseState();
storeBrowseState(); storeBrowseState();
enableResetChecker( false );
super.onPause(); super.onPause();
} }
@ -669,8 +672,9 @@ public class DictBrowseDelegate extends DelegateBase
private void setShowConfig() private void setShowConfig()
{ {
findViewById(R.id.config).setVisibility( m_browseState.m_expanded boolean expanded = m_browseState.m_expanded;
? View.VISIBLE : View.GONE ); findViewById(R.id.config).setVisibility( expanded ? View.VISIBLE : View.GONE );
enableResetChecker( expanded );
} }
private void setFindPats( PatDesc[] descs ) private void setFindPats( PatDesc[] descs )
@ -713,7 +717,6 @@ public class DictBrowseDelegate extends DelegateBase
simple_spinner_dropdown_item ); simple_spinner_dropdown_item );
spinner.setAdapter( adapter ); spinner.setAdapter( adapter );
spinner.setSelection( curVal - MIN_LEN ); spinner.setSelection( curVal - MIN_LEN );
// spinner.setOnItemSelectedListener( this );
} }
private void setUpSpinners() private void setUpSpinners()
@ -832,6 +835,35 @@ public class DictBrowseDelegate extends DelegateBase
} }
} }
final private static int sResetCheckMS = 500;
private void enableResetChecker( boolean enable )
{
DbgUtils.assertOnUIThread();
if ( !enable ) {
mResetChecker = null;
} else if ( null == mResetChecker ) {
final Handler handler = new Handler();
final Button resetButton = (Button)findViewById(R.id.button_reset);
mResetChecker = new Runnable() {
@Override
public void run() {
if ( null != mResetChecker ) {
int curMin = MIN_LEN + m_spinnerMin.getSelectedItemPosition();
int curMax = MIN_LEN + m_spinnerMax.getSelectedItemPosition();
boolean hasState = curMin != MIN_LEN || curMax != MAX_LEN;
for ( int ii = 0; !hasState && ii < m_rows.length; ++ii ) {
hasState = m_rows[ii].hasState();
}
resetButton.setEnabled( hasState );
handler.postDelayed( mResetChecker, sResetCheckMS );
}
}
};
handler.postDelayed( mResetChecker, sResetCheckMS );
}
}
private static void launch( Delegator delegator, Bundle bundle ) private static void launch( Delegator delegator, Bundle bundle )
{ {
delegator.addFragment( DictBrowseFrag.newInstance( delegator ), delegator.addFragment( DictBrowseFrag.newInstance( delegator ),

View file

@ -49,6 +49,11 @@ public class PatTableRow extends TableRow implements OnEditorActionListener {
void setOnEnterPressed( EnterPressed proc ) { mEnterProc = proc; } void setOnEnterPressed( EnterPressed proc ) { mEnterProc = proc; }
boolean hasState()
{
return 0 < mEdit.getText().length() || mCheck.isChecked();
}
@Override @Override
protected void onFinishInflate() protected void onFinishInflate()
{ {

View file

@ -123,6 +123,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:text="@string/button_reset" android:text="@string/button_reset"
android:enabled="false"
/> />
</LinearLayout> </LinearLayout>
<LinearLayout android:layout_height="wrap_content" <LinearLayout android:layout_height="wrap_content"