X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FFonBotMainActivity.java;h=b879be0c203c1a2c90548d43f66e4cec730ce609;hb=079ea30606f31a88786a70feacff3184336a96b8;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..b879be0 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,15 @@ 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();
+ resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+ 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 +233,6 @@ public final class FonBotMainActivity extends ListActivity {
@Override
protected void onPause() {
super.onPause();
- unregisterReceiver(loginReceiver);
LocalBroadcastManager.getInstance(this).unregisterReceiver(ongoingUpdateReceiver);
unbindService(connection);
}
@@ -247,4 +261,4 @@ public final class FonBotMainActivity extends ListActivity {
return super.onOptionsItemSelected(item);
}
}
-}
\ No newline at end of file
+}