mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-23 07:27:22 +01:00
use ProgressBar instead of Dialog for BT invite scans
I wanted to show progress, and it was just as easy to replace the deprecated ProgressDialog as to add a timer to the thing.
This commit is contained in:
parent
bdbd5bc1ee
commit
bfbf17252e
4 changed files with 66 additions and 7 deletions
|
@ -22,13 +22,14 @@ package org.eehouse.android.xw4;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.ProgressDialog;
|
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
|
||||||
import org.eehouse.android.xw4.DBUtils.SentInvitesInfo;
|
import org.eehouse.android.xw4.DBUtils.SentInvitesInfo;
|
||||||
import org.eehouse.android.xw4.DlgDelegate.Action;
|
import org.eehouse.android.xw4.DlgDelegate.Action;
|
||||||
|
@ -49,9 +50,11 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
R.id.button_clear,
|
R.id.button_clear,
|
||||||
};
|
};
|
||||||
private static final boolean ENABLE_FAKER = false;
|
private static final boolean ENABLE_FAKER = false;
|
||||||
|
private static final int SCAN_SECONDS = 5;
|
||||||
|
|
||||||
private Activity m_activity;
|
private Activity m_activity;
|
||||||
private ProgressDialog m_progress;
|
private ProgressBar mProgressBar;
|
||||||
|
private Handler m_handler = new Handler();
|
||||||
|
|
||||||
private static class Persisted implements Serializable {
|
private static class Persisted implements Serializable {
|
||||||
List<TwoStringPair> pairs;
|
List<TwoStringPair> pairs;
|
||||||
|
@ -173,7 +176,7 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
case SCAN_DONE:
|
case SCAN_DONE:
|
||||||
post( new Runnable() {
|
post( new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
m_progress.cancel();
|
killProgress();
|
||||||
|
|
||||||
if ( mPersisted.empty() ) {
|
if ( mPersisted.empty() ) {
|
||||||
makeNotAgainBuilder( R.string.not_again_emptybtscan,
|
makeNotAgainBuilder( R.string.not_again_emptybtscan,
|
||||||
|
@ -233,9 +236,8 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
int count = BTService.getPairedCount( m_activity );
|
int count = BTService.getPairedCount( m_activity );
|
||||||
if ( 0 < count ) {
|
if ( 0 < count ) {
|
||||||
String msg = getQuantityString( R.plurals.bt_scan_progress_fmt, count, count );
|
String msg = getQuantityString( R.plurals.bt_scan_progress_fmt, count, count );
|
||||||
m_progress = ProgressDialog.show( m_activity, msg, null, true, true );
|
startProgress( SCAN_SECONDS );
|
||||||
|
BTService.scan( m_activity, 1000 * SCAN_SECONDS );
|
||||||
BTService.scan( m_activity, 5000 );
|
|
||||||
} else {
|
} else {
|
||||||
makeConfirmThenBuilder( R.string.bt_no_devs,
|
makeConfirmThenBuilder( R.string.bt_no_devs,
|
||||||
Action.OPEN_BT_PREFS_ACTION )
|
Action.OPEN_BT_PREFS_ACTION )
|
||||||
|
@ -255,6 +257,39 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
tryEnable();
|
tryEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startProgress( int nSeconds )
|
||||||
|
{
|
||||||
|
mProgressBar = (ProgressBar)findViewById( R.id.progress );
|
||||||
|
mProgressBar.setProgress( 0 );
|
||||||
|
mProgressBar.setMax( nSeconds );
|
||||||
|
findViewById( R.id.progress_line ).setVisibility( View.VISIBLE );
|
||||||
|
incrementProgressIn( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void killProgress()
|
||||||
|
{
|
||||||
|
findViewById( R.id.progress_line ).setVisibility( View.GONE );
|
||||||
|
mProgressBar = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void incrementProgressIn( int inSeconds )
|
||||||
|
{
|
||||||
|
m_handler.postDelayed( new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if ( null != mProgressBar ) {
|
||||||
|
int curProgress = mProgressBar.getProgress();
|
||||||
|
if ( curProgress >= mProgressBar.getMax() ) {
|
||||||
|
killProgress(); // create illusion it's done
|
||||||
|
} else {
|
||||||
|
mProgressBar.setProgress( curProgress + 1, true );
|
||||||
|
incrementProgressIn( 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 1000 * inSeconds );
|
||||||
|
}
|
||||||
|
|
||||||
private void load()
|
private void load()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1403,7 +1403,7 @@ public class BTService extends XWService {
|
||||||
int timeout )
|
int timeout )
|
||||||
{
|
{
|
||||||
String name = socket.getRemoteDevice().getName();
|
String name = socket.getRemoteDevice().getName();
|
||||||
Log.w( TAG, "connect(%s) starting", name );
|
Log.w( TAG, "connect(%s, timeout=%d) starting", name, timeout );
|
||||||
// DbgUtils.logf( "connecting to %s to send cmd %s", name, cmd.toString() );
|
// DbgUtils.logf( "connecting to %s to send cmd %s", name, cmd.toString() );
|
||||||
// Docs say always call cancelDiscovery before trying to connect
|
// Docs say always call cancelDiscovery before trying to connect
|
||||||
m_adapter.cancelDiscovery();
|
m_adapter.cancelDiscovery();
|
||||||
|
|
|
@ -27,6 +27,27 @@
|
||||||
android:padding="20dp"
|
android:padding="20dp"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<LinearLayout android:id="@+id/progress_line"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:padding="5dp"
|
||||||
|
>
|
||||||
|
<TextView android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||||
|
android:text="@string/scan_progress_label"
|
||||||
|
android:paddingRight="5dp"
|
||||||
|
/>
|
||||||
|
<ProgressBar android:id="@+id/progress"
|
||||||
|
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:min="0"
|
||||||
|
/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<FrameLayout android:id="@+id/button_bar"
|
<FrameLayout android:id="@+id/button_bar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|
|
@ -1833,6 +1833,9 @@
|
||||||
<!-- In the Bluetooth invite device dialog, kick off a new scan of
|
<!-- In the Bluetooth invite device dialog, kick off a new scan of
|
||||||
nearby devices -->
|
nearby devices -->
|
||||||
<string name="button_scan">Rescan</string>
|
<string name="button_scan">Rescan</string>
|
||||||
|
<!-- Text to the left of the bluetooth-scanning progress bar in BT
|
||||||
|
invitation dialog -->
|
||||||
|
<string name="scan_progress_label">Scanning:</string>
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<string name="invite_progress_title">Connecting…</string>
|
<string name="invite_progress_title">Connecting…</string>
|
||||||
|
|
Loading…
Add table
Reference in a new issue