package com.quran.labs.androidquran.ui.fragment;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import com.quran.labs.androidquran.R;
import com.quran.labs.androidquran.common.LocalTranslation;
import com.quran.labs.androidquran.common.QuranAyahInfo;
import com.quran.labs.androidquran.data.VerseRange;
import com.quran.labs.androidquran.presenter.translation.InlineTranslationPresenter;
import com.quran.labs.androidquran.ui.PagerActivity;
import com.quran.labs.androidquran.ui.util.TranslationsSpinnerAdapter;
import com.quran.labs.androidquran.util.QuranSettings;
import com.quran.labs.androidquran.widgets.InlineTranslationView;
import com.quran.labs.androidquran.widgets.QuranSpinner;
import java.util.List;
import javax.inject.Inject;
public class AyahTranslationFragment extends AyahActionFragment
implements InlineTranslationPresenter.TranslationScreen {
private ProgressBar progressBar;
private InlineTranslationView translationView;
private View emptyState;
private View translationControls;
private QuranSpinner translator;
private TranslationsSpinnerAdapter translationAdapter;
private List<LocalTranslation> translations;
@Inject QuranSettings quranSettings;
@Inject InlineTranslationPresenter translationPresenter;
@Override
public void onAttach(Context context) {
super.onAttach(context);
((PagerActivity) getActivity()).getPagerActivityComponent().inject(this);
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(
R.layout.translation_panel, container, false);
translator = (QuranSpinner) view.findViewById(R.id.translator);
translationView = (InlineTranslationView) view.findViewById(R.id.translation_view);
progressBar = (ProgressBar) view.findViewById(R.id.progress);
emptyState = view.findViewById(R.id.empty_state);
translationControls = view.findViewById(R.id.controls);
final View next = translationControls.findViewById(R.id.next_ayah);
next.setOnClickListener(onClickListener);
final View prev = translationControls.findViewById(R.id.previous_ayah);
prev.setOnClickListener(onClickListener);
final Button getTranslations =
(Button) view.findViewById(R.id.get_translations_button);
getTranslations.setOnClickListener(onClickListener);
return view;
}
@Override
public void onResume() {
// currently needs to be before we call super.onResume
translationPresenter.bind(this);
super.onResume();
}
@Override
public void onPause() {
translationPresenter.unbind(this);
super.onPause();
}
private View.OnClickListener onClickListener = v -> {
final Activity activity = getActivity();
if (activity instanceof PagerActivity) {
final PagerActivity pagerActivity = (PagerActivity) activity;
switch (v.getId()) {
case R.id.get_translations_button:
pagerActivity.startTranslationManager();
break;
case R.id.next_ayah:
pagerActivity.nextAyah();
break;
case R.id.previous_ayah:
pagerActivity.previousAyah();
break;
}
}
};
public void refreshView() {
if (start == null || end == null) { return; }
final Activity activity = getActivity();
if (activity instanceof PagerActivity) {
PagerActivity pagerActivity = (PagerActivity) activity;
if (translations == null) {
translations = pagerActivity.getTranslations();
}
if (translations == null || translations.size() == 0) {
progressBar.setVisibility(View.GONE);
emptyState.setVisibility(View.VISIBLE);
translationControls.setVisibility(View.GONE);
return;
}
if (translationAdapter == null) {
translationAdapter = new TranslationsSpinnerAdapter(activity,
R.layout.translation_ab_spinner_item,
pagerActivity.getTranslationNames(),
translations,
quranSettings.getActiveTranslations(),
selectedItems -> {
quranSettings.setActiveTranslations(selectedItems);
refreshView();
});
translator.setAdapter(translationAdapter);
}
if (start.equals(end)) {
translationControls.setVisibility(View.VISIBLE);
} else {
translationControls.setVisibility(View.GONE);
}
VerseRange verseRange = new VerseRange(start.sura, start.ayah, end.sura, end.ayah);
translationPresenter.refresh(verseRange);
}
}
@Override
public void setVerses(@NonNull String[] translations, @NonNull List<QuranAyahInfo> verses) {
progressBar.setVisibility(View.GONE);
if (verses.size() > 0) {
emptyState.setVisibility(View.GONE);
translationView.setAyahs(translations, verses);
} else {
emptyState.setVisibility(View.VISIBLE);
}
}
}