package com.arcao.trackables.ui.fragment;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.arcao.trackables.R;
import com.arcao.trackables.internal.di.HasComponent;
import com.arcao.trackables.internal.di.component.WelcomeActivityComponent;
import com.arcao.trackables.ui.WelcomeActivity;
import com.arcao.trackables.ui.task.AfterLoginTask;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class AfterLoginFragment extends Fragment implements AfterLoginTask.TaskListener, HasComponent<WelcomeActivityComponent> {
private static final String STATE__PROGRESS_STATE = "STATE__PROGRESS_STATE";
@InjectView(R.id.progressMessage)
protected TextView mProgressMessage;
private AfterLoginTask mTask;
private ProgressState lastProgressState;
public static Fragment newInstance() {
return new AfterLoginFragment();
}
public WelcomeActivityComponent component() {
return ((WelcomeActivity)getActivity()).component();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
component().inject(this);
mTask = new AfterLoginTask(this);
component().inject(mTask);
mTask.execute();
}
@Override
public void onDestroy() {
super.onDestroy();
if (mTask != null)
mTask.cancel(true);
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE__PROGRESS_STATE, lastProgressState.ordinal());
super.onSaveInstanceState(outState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_after_login, container, false);
ButterKnife.inject(this, view);
ProgressState state = ProgressState.RETRIEVE_TRACKABLES;
if (savedInstanceState != null) {
state = ProgressState.values()[savedInstanceState.getInt(STATE__PROGRESS_STATE, state.ordinal())];
}
onProgressStateChanged(state);
return view;
}
@Override
public void onProgressStateChanged(ProgressState state) {
lastProgressState = state;
int resMessage;
switch (state) {
default:
case RETRIEVE_TRACKABLES:
resMessage = R.string.login_progress_retrieve_trackables;
break;
case RETRIEVE_TRACKABLE_TRAVELS:
resMessage = R.string.login_progress_retrieve_trackable_travels;
break;
case RETRIEVE_GEOCACHES:
resMessage = R.string.login_progress_retrieve_geocaches;
break;
}
mProgressMessage.setText(resMessage);
}
@Override
public void onTaskFinished(Intent errorIntent) {
WelcomeActivity activity = (WelcomeActivity) getActivity();
if (activity == null)
return;
if (errorIntent == null) {
activity.switchTo(WelcomeActivity.WelcomeState.FINISHED);
}
else {
activity.showError(errorIntent);
}
}
}