package com.fsck.k9.ui.compose; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ImageButton; import com.fsck.k9.FontSizes; import com.fsck.k9.R; import com.fsck.k9.activity.MessageCompose; import com.fsck.k9.message.html.HtmlConverter; import com.fsck.k9.mailstore.AttachmentResolver; import com.fsck.k9.message.QuotedTextMode; import com.fsck.k9.message.SimpleMessageFormat; import com.fsck.k9.ui.EolConvertingEditText; import com.fsck.k9.view.MessageWebView; public class QuotedMessageMvpView { private final Button mQuotedTextShow; private final View mQuotedTextBar; private final ImageButton mQuotedTextEdit; private final EolConvertingEditText mQuotedText; private final MessageWebView mQuotedHTML; private final EolConvertingEditText mMessageContentView; private final ImageButton mQuotedTextDelete; public QuotedMessageMvpView(MessageCompose messageCompose) { mQuotedTextShow = (Button) messageCompose.findViewById(R.id.quoted_text_show); mQuotedTextBar = messageCompose.findViewById(R.id.quoted_text_bar); mQuotedTextEdit = (ImageButton) messageCompose.findViewById(R.id.quoted_text_edit); mQuotedTextDelete = (ImageButton) messageCompose.findViewById(R.id.quoted_text_delete); mQuotedText = (EolConvertingEditText) messageCompose.findViewById(R.id.quoted_text); mQuotedText.getInputExtras(true).putBoolean("allowEmoji", true); mQuotedHTML = (MessageWebView) messageCompose.findViewById(R.id.quoted_html); mQuotedHTML.configure(); // Disable the ability to click links in the quoted HTML page. I think this is a nice feature, but if someone // feels this should be a preference (or should go away all together), I'm ok with that too. -achen 20101130 mQuotedHTML.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return true; } }); mMessageContentView = (EolConvertingEditText) messageCompose.findViewById(R.id.message_content); } public void setOnClickPresenter(final QuotedMessagePresenter presenter) { OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View view) { switch(view.getId()) { case R.id.quoted_text_show: presenter.onClickShowQuotedText(); break; case R.id.quoted_text_delete: presenter.onClickDeleteQuotedText(); break; case R.id.quoted_text_edit: presenter.onClickEditQuotedText(); break; } } }; mQuotedTextShow.setOnClickListener(onClickListener); mQuotedTextEdit.setOnClickListener(onClickListener); mQuotedTextDelete.setOnClickListener(onClickListener); } public void addTextChangedListener(TextWatcher draftNeedsChangingTextWatcher) { mQuotedText.addTextChangedListener(draftNeedsChangingTextWatcher); } public void showOrHideQuotedText(QuotedTextMode mode, SimpleMessageFormat quotedTextFormat) { switch (mode) { case NONE: { mQuotedTextShow.setVisibility(View.GONE); mQuotedTextBar.setVisibility(View.GONE); mQuotedText.setVisibility(View.GONE); mQuotedHTML.setVisibility(View.GONE); mQuotedTextEdit.setVisibility(View.GONE); break; } case HIDE: { mQuotedTextShow.setVisibility(View.VISIBLE); mQuotedTextBar.setVisibility(View.GONE); mQuotedText.setVisibility(View.GONE); mQuotedHTML.setVisibility(View.GONE); mQuotedTextEdit.setVisibility(View.GONE); break; } case SHOW: { mQuotedTextShow.setVisibility(View.GONE); mQuotedTextBar.setVisibility(View.VISIBLE); if (quotedTextFormat == SimpleMessageFormat.HTML) { mQuotedText.setVisibility(View.GONE); mQuotedHTML.setVisibility(View.VISIBLE); mQuotedTextEdit.setVisibility(View.VISIBLE); } else { mQuotedText.setVisibility(View.VISIBLE); mQuotedHTML.setVisibility(View.GONE); mQuotedTextEdit.setVisibility(View.GONE); } break; } } } public void setFontSizes(FontSizes mFontSizes, int fontSize) { mFontSizes.setViewTextSize(mQuotedText, fontSize); } public void setQuotedHtml(String quotedContent, AttachmentResolver attachmentResolver) { mQuotedHTML.displayHtmlContentWithInlineAttachments( HtmlConverter.wrapMessageContent(quotedContent), attachmentResolver, null); } public void setQuotedText(String quotedText) { mQuotedText.setCharacters(quotedText); } // TODO we shouldn't have to retrieve the state from the view here public String getQuotedText() { return mQuotedText.getCharacters(); } public void setMessageContentCharacters(String text) { mMessageContentView.setCharacters(text); } public void setMessageContentCursorPosition(int messageContentCursorPosition) { mMessageContentView.setSelection(messageContentCursorPosition); } }