X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FFonBotMainActivity.java;h=d7581fab0c7fab8875263c2e78271f924b72a8d8;hb=6b9507db27500572e4366b3f23eefeea079a9d8f;hp=7ef45b849c485400cfc83276141a1fdb382ab67a;hpb=d13f1533daefa5353d59d79f804931777a3aace6;p=fonbot.git diff --git a/src/ro/ieval/fonbot/FonBotMainActivity.java b/src/ro/ieval/fonbot/FonBotMainActivity.java index 7ef45b8..d7581fa 100644 --- a/src/ro/ieval/fonbot/FonBotMainActivity.java +++ b/src/ro/ieval/fonbot/FonBotMainActivity.java @@ -3,11 +3,11 @@ package ro.ieval.fonbot; import static ro.ieval.fonbot.R.string.logging_in; import static ro.ieval.fonbot.Utils.toNonNull; -import java.util.Collections; - +import java.io.InputStream; import org.eclipse.jdt.annotation.Nullable; import ro.ieval.fonbot.FonBotMainService.Binder; +import ro.ieval.fonbot.HttpCallExecutableRunnable.ResultCallback; import ro.ieval.fonbot.Utils.OngoingEvent; import android.app.ListActivity; import android.content.BroadcastReceiver; @@ -16,6 +16,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; import android.support.v4.content.LocalBroadcastManager; import android.view.LayoutInflater; @@ -141,21 +142,41 @@ public final class FonBotMainActivity extends ListActivity { } /** - * BroadcastReceiver that updates {@link #resultTextView} + * Implementation of ResultCallback that updates the {@link #resultTextView} * - * @author Marius Gavrilescu + * @author Marius Gavrilescu */ - private final class LoginReceiver extends BroadcastReceiver { + public final class UpdateResultCallback implements ResultCallback{ @Override - public void onReceive(@Nullable final Context context, @Nullable final Intent intent) { - if(intent==null) - return; - resultTextView.setText(intent.getStringExtra(SendHttpMessageAsyncTask.EXTRA_RESPONSE_MESSAGE)); - final int responseCode=intent.getIntExtra(SendHttpMessageAsyncTask.EXTRA_RESPONSE_CODE, 0); - if(responseCode>=200&&responseCode<300) - resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tick, 0, 0); + public void onResult(final int responseCode, final String responseMessage, final InputStream inputStream) { + if(responseCode>=200 && responseCode<300) + updateResultTextView(responseMessage, false); else - resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.cross, 0, 0); + updateResultTextView(responseMessage, true); + } + + @Override + public void onError(final String error) { + updateResultTextView(error, true); + } + + /** + * Update the {@link #resultTextView}. + * + * @param message new text for the TextView + * @param error true if the text is an error message, false otherwise + */ + private void updateResultTextView(final String message, final boolean error){ + handler.post(new Runnable() { + @Override + public void run() { + resultTextView.setText(message); + if(error) + resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.cross, 0, 0); + else + resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tick, 0, 0); + } + }); } } @@ -168,17 +189,9 @@ public final class FonBotMainActivity extends ListActivity { */ private static final IntentFilter ONGOING_UPDATE_FILTER=new IntentFilter(FonBotMainService.ACTION_ONGOING_UPDATE); /** - * The one instance of {@link LoginReceiver} + * The one instance of {@link UpdateResultCallback} */ - private final BroadcastReceiver loginReceiver=new LoginReceiver(); - /** - * The broadcast sent by {@link SendHttpMessageAsyncTask} when logging in. - */ - private static final String LOGIN_BROADCAST="ro.ieval.fonbot.LOGIN_RESULT"; - /** - * IntentFilter for {@link #loginReceiver} - */ - private static final IntentFilter LOGIN_FILTER=new IntentFilter(LOGIN_BROADCAST); + private final UpdateResultCallback updateResultCallback=new UpdateResultCallback(); /** * The one instance of {@link ServiceConnection} */ @@ -188,13 +201,15 @@ public final class FonBotMainActivity extends ListActivity { * TextView that tells the user whether logging in failed or succeded. */ private TextView resultTextView; + /** Handler instance */ + private Handler handler; @Override protected void onCreate(@Nullable final Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); - + handler=new Handler(); resultTextView=(TextView) findViewById(R.id.resultTextView); } @@ -202,15 +217,14 @@ public final class FonBotMainActivity extends ListActivity { protected void onStart() { super.onStart(); resultTextView.setText(logging_in); - new SendHttpMessageAsyncTask("/ok", toNonNull(Collections.
emptySet()), - LOGIN_BROADCAST,this).execute(); + new HttpCallExecutableRunnable("/ok", null, + toNonNull(getApplicationContext()), toNonNull(updateResultCallback), false).execute(); connection.refreshAdapter(); } @Override protected void onResume() { super.onResume(); - registerReceiver(loginReceiver, LOGIN_FILTER); LocalBroadcastManager.getInstance(this).registerReceiver(ongoingUpdateReceiver, ONGOING_UPDATE_FILTER); bindService(new Intent(this, FonBotMainService.class), connection, 0); } @@ -218,7 +232,6 @@ public final class FonBotMainActivity extends ListActivity { @Override protected void onPause() { super.onPause(); - unregisterReceiver(loginReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(ongoingUpdateReceiver); unbindService(connection); }