package com.door43.translationstudio.newui; import android.app.DialogFragment; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.TextView; import com.door43.translationstudio.AppContext; import com.door43.translationstudio.R; import com.door43.translationstudio.core.NativeSpeaker; import com.door43.translationstudio.core.TargetTranslation; import com.door43.translationstudio.dialogs.CustomAlertDialog; import com.door43.translationstudio.newui.legal.LegalDocumentActivity; import com.door43.widget.ViewUtil; import java.security.InvalidParameterException; /** * Created by joel on 2/19/2016. */ public class ContributorDialog extends DialogFragment { public static final java.lang.String ARG_NATIVE_SPEAKER = "native_speaker_name"; public static final java.lang.String ARG_TARGET_TRANSLATION = "target_translation_id"; private EditText mNameView; private Button mCancelButton; private Button mSaveButton; private TargetTranslation mTargetTranslation = null; private NativeSpeaker mNativeSpeaker = null; private TextView mTitleView; private View.OnClickListener mListener; private Button mDeleteButton; private CheckBox mAgreementCheck; private View mLicenseGroup; private Button mLicenseAgreementButton; private Button mStatementOfFaithButton; private Button mTranslationGuidelinesButton; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); View v = inflater.inflate(R.layout.dialog_native_speaker, container, false); // load target Bundle args = getArguments(); if(args != null) { String nativeSpeakerName = args.getString(ARG_NATIVE_SPEAKER, null); String targetTranslationId = args.getString(ARG_TARGET_TRANSLATION, null); mTargetTranslation = AppContext.getTranslator().getTargetTranslation(targetTranslationId); if(nativeSpeakerName != null && mTargetTranslation != null) { mNativeSpeaker = mTargetTranslation.getContributor(nativeSpeakerName); } } if(mTargetTranslation == null) { throw new InvalidParameterException("Missing the target translation parameter"); } mTitleView = (TextView)v.findViewById(R.id.title); mNameView = (EditText)v.findViewById(R.id.name); mCancelButton = (Button)v.findViewById(R.id.cancel_button); mSaveButton = (Button)v.findViewById(R.id.save_button); mDeleteButton = (Button)v.findViewById(R.id.delete_button); mAgreementCheck = (CheckBox)v.findViewById(R.id.agreement_check); mLicenseGroup = v.findViewById(R.id.license_group); mLicenseAgreementButton = (Button)v.findViewById(R.id.license_agreement_btn); mStatementOfFaithButton = (Button)v.findViewById(R.id.statement_of_faith_btn); mTranslationGuidelinesButton = (Button)v.findViewById(R.id.translation_guidelines_btn); if(mNativeSpeaker != null) { mNameView.setText(mNativeSpeaker.name); mTitleView.setText(R.string.edit_contributor); mDeleteButton.setVisibility(View.VISIBLE); mAgreementCheck.setEnabled(false); mAgreementCheck.setChecked(true); mLicenseGroup.setVisibility(View.GONE); } else { mTitleView.setText(R.string.add_contributor); mDeleteButton.setVisibility(View.GONE); mAgreementCheck.setEnabled(true); mAgreementCheck.setChecked(false); mLicenseGroup.setVisibility(View.VISIBLE); } mLicenseAgreementButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), LegalDocumentActivity.class); intent.putExtra(LegalDocumentActivity.ARG_RESOURCE, R.string.license); startActivity(intent); } }); mStatementOfFaithButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), LegalDocumentActivity.class); intent.putExtra(LegalDocumentActivity.ARG_RESOURCE, R.string.statement_of_faith); startActivity(intent); } }); mTranslationGuidelinesButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), LegalDocumentActivity.class); intent.putExtra(LegalDocumentActivity.ARG_RESOURCE, R.string.translation_guidlines); startActivity(intent); } }); mDeleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomAlertDialog.Create(getActivity()) .setTitle(R.string.delete_translator_title) .setMessageHtml(R.string.confirm_delete_translator) .setPositiveButton(R.string.confirm, new View.OnClickListener() { @Override public void onClick(View v) { mTargetTranslation.removeContributor(mNativeSpeaker); if(mListener != null) { mListener.onClick(v); } dismiss(); } } ) .setNegativeButton(R.string.title_cancel, null) .show("confirm-delete"); } }); mCancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); mSaveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = mNameView.getText().toString(); if(mAgreementCheck.isChecked() && !name.isEmpty()) { NativeSpeaker duplicate = mTargetTranslation.getContributor(name); if (duplicate != null) { if (mNativeSpeaker != null && mNativeSpeaker.equals(duplicate)) { // no change dismiss(); } else { Snackbar snack = Snackbar.make(v, R.string.duplicate_native_speaker, Snackbar.LENGTH_SHORT); ViewUtil.setSnackBarTextColor(snack, getResources().getColor(R.color.white)); snack.show(); } } else { mTargetTranslation.removeContributor(mNativeSpeaker); // remove old name mTargetTranslation.addContributor(new NativeSpeaker(name)); if (mListener != null) { mListener.onClick(v); } dismiss(); } } else { Snackbar snack = Snackbar.make(v, R.string.complete_required_fields, Snackbar.LENGTH_SHORT); ViewUtil.setSnackBarTextColor(snack, getResources().getColor(R.color.white)); snack.show(); } } }); return v; } /** * Sets the listener to be called when the dialog is submitted * @param listener */ public void setOnClickListener(View.OnClickListener listener) { mListener = listener; } }