/**
* 2012 Foxykeep (http://datadroid.foxykeep.com)
* <p>
* Licensed under the Beerware License : <br />
* As long as you retain this notice you can do whatever you want with this stuff. If we meet some
* day, and you think this stuff is worth it, you can buy me a beer in return
*/
package com.foxykeep.datadroidpoc.ui.feature;
import com.foxykeep.datadroid.requestmanager.Request;
import com.foxykeep.datadroid.requestmanager.RequestManager.RequestListener;
import com.foxykeep.datadroidpoc.R;
import com.foxykeep.datadroidpoc.data.requestmanager.PoCRequestFactory;
import com.foxykeep.datadroidpoc.dialogs.ConnectionErrorDialogFragment;
import com.foxykeep.datadroidpoc.dialogs.ConnectionErrorDialogFragment.ConnectionErrorDialogListener;
import com.foxykeep.datadroidpoc.ui.DataDroidActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
public final class AuthenticationActivity extends DataDroidActivity implements RequestListener,
OnClickListener, ConnectionErrorDialogListener {
private TextView mTVResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.authentication);
bindViews();
}
@Override
protected void onResume() {
super.onResume();
for (int i = 0; i < mRequestList.size(); i++) {
Request request = mRequestList.get(i);
if (mRequestManager.isRequestInProgress(request)) {
mRequestManager.addRequestListener(this, request);
setProgressBarIndeterminateVisibility(true);
} else {
mRequestManager.callListenerWithCachedData(this, request);
i--;
mRequestList.remove(request);
}
}
}
@Override
protected void onPause() {
super.onPause();
if (!mRequestList.isEmpty()) {
mRequestManager.removeRequestListener(this);
}
}
private void bindViews() {
((Button) findViewById(R.id.b_load)).setOnClickListener(this);
((Button) findViewById(R.id.b_load_with_authentication)).setOnClickListener(this);
mTVResult = (TextView) findViewById(R.id.tv_result);
}
private void callAuthenticationWSWithout() {
mTVResult.setText("");
setProgressBarIndeterminateVisibility(true);
Request request = PoCRequestFactory.authenticationRequest(false);
mRequestManager.execute(request, this);
mRequestList.add(request);
}
private void callAuthenticationWSWith() {
mTVResult.setText("");
setProgressBarIndeterminateVisibility(true);
Request request = PoCRequestFactory.authenticationRequest(true);
mRequestManager.execute(request, this);
mRequestList.add(request);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.b_load:
callAuthenticationWSWithout();
break;
case R.id.b_load_with_authentication:
callAuthenticationWSWith();
break;
}
}
@Override
public void onRequestFinished(Request request, Bundle resultData) {
if (mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
mRequestList.remove(request);
mTVResult.setText(resultData
.getString(PoCRequestFactory.BUNDLE_EXTRA_AUTHENTICATION_RESULT));
}
}
@Override
public void onRequestConnectionError(Request request, int statusCode) {
if (mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
mRequestList.remove(request);
ConnectionErrorDialogFragment.show(this, request, this);
}
}
@Override
public void onRequestDataError(Request request) {
if (mRequestList.contains(request)) {
setProgressBarIndeterminateVisibility(false);
mRequestList.remove(request);
showBadDataErrorDialog();
}
}
@Override
public void onRequestCustomError(Request request, Bundle resultData) {
// Never called.
}
@Override
public void connectionErrorDialogCancel(Request request) {}
@Override
public void connectionErrorDialogRetry(Request request) {
mRequestManager.execute(request, this);
mRequestList.add(request);
}
}