package com.door43.translationstudio.newui.translate; import android.app.DialogFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import com.door43.translationstudio.R; import com.door43.translationstudio.core.Library; import com.door43.translationstudio.core.SourceTranslation; import com.door43.translationstudio.core.TargetTranslation; import com.door43.translationstudio.core.Translator; import com.door43.translationstudio.AppContext; import java.util.ArrayList; import java.util.List; /** * Created by joel on 9/15/2015. */ public class ChooseSourceTranslationDialog extends DialogFragment { public static final String ARG_TARGET_TRANSLATION_ID = "arg_target_translation_id"; private Translator mTranslator; private TargetTranslation mTargetTranslation; private OnClickListener mListener; private ChooseSourceTranslationAdapter mAdapter; private Library mLibrary; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); View v = inflater.inflate(R.layout.dialog_choose_source_translation, container, false); mTranslator = AppContext.getTranslator(); mLibrary = AppContext.getLibrary(); Bundle args = getArguments(); if(args == null) { dismiss(); } else { String targetTranslationId = args.getString(ARG_TARGET_TRANSLATION_ID, null); mTargetTranslation = mTranslator.getTargetTranslation(targetTranslationId); if(mTargetTranslation == null) { // missing target translation dismiss(); } } EditText searchView = (EditText) v.findViewById(R.id.search_text); searchView.setHint(R.string.choose_source_translations); searchView.setEnabled(false); ImageButton searchBackButton = (ImageButton) v.findViewById(R.id.search_back_button); searchBackButton.setVisibility(View.GONE); ImageView searchIcon = (ImageView) v.findViewById(R.id.search_mag_icon); // TODO: set up search mAdapter = new ChooseSourceTranslationAdapter(getActivity()); // add selected String[] sourceTranslationIds = AppContext.getOpenSourceTranslationIds(mTargetTranslation.getId()); for(String id:sourceTranslationIds) { SourceTranslation sourceTranslation = mLibrary.getSourceTranslation(id); if(sourceTranslation != null) { String title = sourceTranslation.getSourceLanguageTitle() + " - " + sourceTranslation.getResourceTitle(); mAdapter.addItem(new ChooseSourceTranslationAdapter.ViewItem(title, sourceTranslation.getId(), true)); } } // add available (duplicates are filtered by the adapter) SourceTranslation[] availableSourceTranslations = mLibrary.getSourceTranslations(mTargetTranslation.getProjectId()); for(SourceTranslation sourceTranslation:availableSourceTranslations) { String title = sourceTranslation.getSourceLanguageTitle() + " - " + sourceTranslation.getResourceTitle(); mAdapter.addItem(new ChooseSourceTranslationAdapter.ViewItem(title, sourceTranslation.getId(), false)); } mAdapter.sort(); ListView listView = (ListView) v.findViewById(R.id.list); listView.setAdapter(mAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(mAdapter.getItemViewType(position) == ChooseSourceTranslationAdapter.TYPE_ITEM) { ChooseSourceTranslationAdapter.ViewItem item = mAdapter.getItem(position); if(item.selected) { mAdapter.deselect(position); } else { mAdapter.select(position); } mAdapter.sort(); } } }); Button cancelButton = (Button) v.findViewById(R.id.cancelButton); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mListener != null) { mListener.onCancelTabsDialog(mTargetTranslation.getId()); } dismiss(); } }); Button confirmButton = (Button) v.findViewById(R.id.confirmButton); confirmButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // collect selected source translations int count = mAdapter.getCount(); List<String> sourceTranslationIds = new ArrayList<>(); for(int i = 0; i < count; i ++) { if(mAdapter.getItemViewType(i) == ChooseSourceTranslationAdapter.TYPE_ITEM) { ChooseSourceTranslationAdapter.ViewItem item = mAdapter.getItem(i); if(item.selected) { sourceTranslationIds.add(item.id); } } } if(mListener != null) { mListener.onConfirmTabsDialog(mTargetTranslation.getId(), sourceTranslationIds.toArray(new String[sourceTranslationIds.size()])); } dismiss(); } }); return v; } /** * Assigns a listener for this dialog * @param listener */ public void setOnClickListener(OnClickListener listener) { mListener = listener; } public interface OnClickListener { void onCancelTabsDialog(String targetTranslationId); void onConfirmTabsDialog(String targetTranslationId, String[] sourceTranslationIds); } }