package com.door43.translationstudio.newui.home;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.door43.translationstudio.R;
import com.door43.translationstudio.core.TargetTranslation;
import com.door43.translationstudio.newui.BaseFragment;
import com.door43.translationstudio.AppContext;
import com.door43.translationstudio.newui.library.ServerLibraryFragment;
import org.eclipse.jgit.api.errors.GitAPIException;
import java.io.IOException;
/**
* Displays a list of target translations
*/
public class TargetTranslationListFragment extends BaseFragment implements TargetTranslationInfoDialog.OnDeleteListener {
private TargetTranslationAdapter mAdapter;
private OnItemClickListener mListener;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_target_translation_list, container, false);
ListView list = (ListView) rootView.findViewById(R.id.translationsList);
mAdapter = new TargetTranslationAdapter(getActivity());
mAdapter.setOnInfoClickListener(new TargetTranslationAdapter.OnInfoClickListener() {
@Override
public void onClick(String targetTranslationId) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("infoDialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
final TargetTranslation translation = AppContext.getTranslator().getTargetTranslation(targetTranslationId);
if(translation != null) {
TargetTranslationInfoDialog dialog = new TargetTranslationInfoDialog();
Bundle args = new Bundle();
args.putString(TargetTranslationInfoDialog.ARG_TARGET_TRANSLATION_ID, targetTranslationId);
dialog.setOnDeleteListener(TargetTranslationListFragment.this);
dialog.setArguments(args);
dialog.show(ft, "infoDialog");
} else {
reloadList();
}
}
});
list.setAdapter(mAdapter);
// open target translation
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mListener.onItemClick(mAdapter.getItem(position));
}
});
// attach to info dialogs
if(savedInstanceState != null) {
TargetTranslationInfoDialog dialog = (TargetTranslationInfoDialog) getFragmentManager().findFragmentByTag("infoDialog");
if(dialog != null) {
dialog.setOnDeleteListener(this);
}
}
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
this.mListener = (OnItemClickListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnItemClickListener");
}
}
/**
* Reloads the list of target translations
*/
public void reloadList() {
mAdapter.changeData(AppContext.getTranslator().getTargetTranslations());
}
@Override
public void onDeleteTargetTranslation(String targetTranslationId) {
mListener.onItemDeleted(targetTranslationId);
}
public interface OnItemClickListener {
void onItemDeleted(String targetTranslationId);
void onItemClick(TargetTranslation targetTranslation);
}
}