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;
}
/**
- * BroadcastReceiver that updates {@link #resultTextView}
- *
- * @author Marius Gavrilescu <marius@ieval.ro>
- */
- 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 <code>ResultCallback</code> that broadcasts a {@link #LOGIN_BROADCAST}
+ * Implementation of <code>ResultCallback</code> 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));
+ }
+ }
+ });
}
}
*/
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}
*/
* 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);
}
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);
}
@Override
protected void onPause() {
super.onPause();
- unregisterReceiver(loginReceiver);
LocalBroadcastManager.getInstance(this).unregisterReceiver(ongoingUpdateReceiver);
unbindService(connection);
}
return super.onOptionsItemSelected(item);
}
}
-}
\ No newline at end of file
+}