package io.pivotal.arca.fragments;
import android.database.Cursor;
import android.view.View;
import android.widget.Toast;
import io.pivotal.arca.dispatcher.Error;
import io.pivotal.arca.dispatcher.QueryResult;
public class ArcaViewManager {
private final View mView;
private int mContentId = android.R.id.content;
private int mProgressId = android.R.id.progress;
private int mEmptyId = android.R.id.empty;
private int mListId = android.R.id.list;
public ArcaViewManager(final View view) {
mView = view;
}
public void setContentId(final int id) {
mContentId = id;
}
public void setProgressId(final int id) {
mProgressId = id;
}
public void setEmptyId(final int id) {
mEmptyId = id;
}
private View getView() {
return mView;
}
private View getContentView() {
final View content = getView().findViewById(mContentId);
return content != null ? content : getView().findViewById(mListId);
}
private View getProgressView() {
return getView().findViewById(mProgressId);
}
private View getEmptyView() {
return getView().findViewById(mEmptyId);
}
public void showContentView() {
if (getContentView() != null) getContentView().setVisibility(View.VISIBLE);
if (getProgressView() != null) getProgressView().setVisibility(View.INVISIBLE);
if (getEmptyView() != null) getEmptyView().setVisibility(View.INVISIBLE);
}
public void showProgressView() {
if (getContentView() != null) getContentView().setVisibility(View.INVISIBLE);
if (getProgressView() != null) getProgressView().setVisibility(View.VISIBLE);
if (getEmptyView() != null) getEmptyView().setVisibility(View.INVISIBLE);
}
public void showEmptyView() {
if (getContentView() != null) getContentView().setVisibility(View.INVISIBLE);
if (getProgressView() != null) getProgressView().setVisibility(View.INVISIBLE);
if (getEmptyView() != null) getEmptyView().setVisibility(View.VISIBLE);
}
public void showError(final Error error) {
final String message = String.format("%s", error.getMessage());
Toast.makeText(mView.getContext(), message, Toast.LENGTH_SHORT).show();
}
public void checkResult(final QueryResult result) {
final Cursor data = result.getData();
if (data != null && data.getCount() > 0) {
showContentView();
} else if (!result.isSyncing()) {
showEmptyView();
}
}
public void checkError(final Error error) {
if (error != null) {
showEmptyView();
showError(error);
}
}
}