package com.dozuki.ifixit.ui.guide.view;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.dozuki.ifixit.App;
import com.dozuki.ifixit.R;
import com.dozuki.ifixit.model.guide.Guide;
import com.dozuki.ifixit.model.user.LoginEvent;
import com.dozuki.ifixit.ui.BaseFragment;
import com.dozuki.ifixit.util.api.Api;
import com.dozuki.ifixit.util.api.ApiCall;
import com.dozuki.ifixit.util.api.ApiEvent;
import com.squareup.otto.Subscribe;
public class GuideConclusionFragment extends BaseFragment {
private static final String SAVED_GUIDE = "SAVED_GUIDE";
private Guide mGuide;
private Button mButton;
public static GuideConclusionFragment newInstance(Guide guide) {
GuideConclusionFragment frag = new GuideConclusionFragment();
Bundle args = new Bundle();
args.putSerializable(SAVED_GUIDE, guide);
frag.setArguments(args);
return frag;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mGuide = (Guide) getArguments().getSerializable(SAVED_GUIDE);
} else if (savedInstanceState != null && mGuide == null) {
mGuide = (Guide) savedInstanceState.getSerializable(SAVED_GUIDE);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.guide_conclusion, container, false);
((TextView) view.findViewById(R.id.guide_conclusion_text)).setText(Html.fromHtml(mGuide.getConclusion()));
mButton = (Button) view.findViewById(R.id.guide_completed_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Api.call(getActivity(), ApiCall.completeGuide(mGuide.getGuideid()));
mButton.setEnabled(false);
mButton.setText(R.string.completing);
}
});
setCompletedStatus(mGuide.getCompleted());
if (mGuide.isTeardown()) mButton.setVisibility(View.GONE);
return view;
}
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putSerializable(SAVED_GUIDE, mGuide);
}
@Subscribe
public void onGuideComplete(ApiEvent.CompleteGuide event) {
if (!event.hasError()) {
boolean completed = event.getResult();
mGuide.setCompleted(completed);
setCompletedStatus(completed);
} else {
// Reset the button to the current state.
setCompletedStatus(mGuide.getCompleted());
Api.getErrorDialog(getActivity(), event).show();
}
}
@Subscribe
public void onCancelLogin(LoginEvent.Cancel event) {
setCompletedStatus(false);
}
private void setCompletedStatus(boolean completed) {
mButton.setEnabled(!completed);
mButton.setText(completed ? R.string.completed :
(App.get().getSite().isIfixit() ? R.string.i_did_it_success : R.string.complete_this_guide));
}
}