X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Ffonbot%2FFonBotMainActivity.java;h=2c2a49d2b11b0087f39fbf819ff99e811bd9a9e1;hb=c7b1fdf5aa45b0459095e780d0929f8ddd80d8fb;hp=2ec56e2442d1e960378f9869a1b339f9c3b8a12e;hpb=2e5049c9c08b1989b4bfbbfbf479d83dbe2b75a9;p=fonbot.git diff --git a/src/ro/ieval/fonbot/FonBotMainActivity.java b/src/ro/ieval/fonbot/FonBotMainActivity.java index 2ec56e2..2c2a49d 100644 --- a/src/ro/ieval/fonbot/FonBotMainActivity.java +++ b/src/ro/ieval/fonbot/FonBotMainActivity.java @@ -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,52 +142,43 @@ public final class FonBotMainActivity extends ListActivity { } /** - * BroadcastReceiver that updates {@link #resultTextView} - * - * @author Marius Gavrilescu - */ - private final class LoginReceiver extends BroadcastReceiver { - @Override - public void onReceive(@Nullable final Context context, @Nullable final Intent intent) { - if(intent==null) - return; - resultTextView.setText(intent.getStringExtra(BroadcastResultCallback.EXTRA_RESPONSE_MESSAGE)); - final int responseCode=intent.getIntExtra(BroadcastResultCallback.EXTRA_RESPONSE_CODE, 0); - if(responseCode>=200&&responseCode<300) - resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tick, 0, 0); - else - resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.cross, 0, 0); - } - } - - /** - * Implementation of ResultCallback that broadcasts a {@link #LOGIN_BROADCAST} + * Implementation of ResultCallback that updates the {@link #resultTextView} * * @author Marius Gavrilescu */ - public final class BroadcastResultCallback implements ResultCallback{ - /** - * Extra: the response message - */ - public static final String EXTRA_RESPONSE_MESSAGE="response_message"; - /** - * Extra: the response code - */ - public static final String EXTRA_RESPONSE_CODE="response_code"; - + public final class UpdateResultCallback implements ResultCallback{ @Override public void onResult(final int responseCode, final String responseMessage, final InputStream inputStream) { - final Intent intent=new Intent(LOGIN_BROADCAST); - intent.putExtra(EXTRA_RESPONSE_MESSAGE, responseMessage); - intent.putExtra(EXTRA_RESPONSE_CODE, responseCode); - sendBroadcast(intent); + if(responseCode>=200 && responseCode<300) + updateResultTextView(responseMessage, false); + else + updateResultTextView(responseMessage, true); } @Override public void onError(final String error) { - final Intent intent=new Intent(LOGIN_BROADCAST); - intent.putExtra(EXTRA_RESPONSE_MESSAGE, error); - sendBroadcast(intent); + 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); + startService(new Intent(FonBotMainActivity.this, FonBotMainService.class)); + } + } + }); } } @@ -199,21 +191,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 HttpCallExecutableRunnable} 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); - /** - * The one instance of {@link BroadcastResultCallback} - */ - private final BroadcastResultCallback broadcastResultCallback=new BroadcastResultCallback(); + private final UpdateResultCallback updateResultCallback=new UpdateResultCallback(); /** * The one instance of {@link ServiceConnection} */ @@ -223,13 +203,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); } @@ -237,15 +219,15 @@ public final class FonBotMainActivity extends ListActivity { protected void onStart() { super.onStart(); resultTextView.setText(logging_in); + resultTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); new HttpCallExecutableRunnable("/ok", null, - toNonNull(getApplicationContext()), toNonNull(broadcastResultCallback)).execute(); + 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); } @@ -253,7 +235,6 @@ public final class FonBotMainActivity extends ListActivity { @Override protected void onPause() { super.onPause(); - unregisterReceiver(loginReceiver); LocalBroadcastManager.getInstance(this).unregisterReceiver(ongoingUpdateReceiver); unbindService(connection); } @@ -282,4 +263,4 @@ public final class FonBotMainActivity extends ListActivity { return super.onOptionsItemSelected(item); } } -} \ No newline at end of file +}