Search in sources :

Example 1 with QuotedMessagePresenter

use of com.fsck.k9.ui.compose.QuotedMessagePresenter in project k-9 by k9mail.

the class QuotedMessageMvpView method setOnClickPresenter.

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);
}
Also used : OnClickListener(android.view.View.OnClickListener) MessageWebView(com.fsck.k9.view.MessageWebView) View(android.view.View) WebView(android.webkit.WebView)

Example 2 with QuotedMessagePresenter

use of com.fsck.k9.ui.compose.QuotedMessagePresenter in project k-9 by k9mail.

the class MessageCompose method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (UpgradeDatabases.actionUpgradeDatabases(this, getIntent())) {
        finish();
        return;
    }
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    if (K9.getK9ComposerThemeSetting() != K9.Theme.USE_GLOBAL) {
        // theme the whole content according to the theme (except the action bar)
        ContextThemeWrapper themeContext = new ContextThemeWrapper(this, K9.getK9ThemeResourceId(K9.getK9ComposerTheme()));
        // this is the top level activity element, it has no root
        @SuppressLint("InflateParams") View v = LayoutInflater.from(themeContext).inflate(R.layout.message_compose, null);
        TypedValue outValue = new TypedValue();
        // background color needs to be forced
        themeContext.getTheme().resolveAttribute(R.attr.messageViewBackgroundColor, outValue, true);
        v.setBackgroundColor(outValue.data);
        setContentView(v);
    } else {
        setContentView(R.layout.message_compose);
    }
    initializeActionBar();
    // on api level 15, setContentView() shows the progress bar for some reason...
    setProgressBarIndeterminateVisibility(false);
    final Intent intent = getIntent();
    String messageReferenceString = intent.getStringExtra(EXTRA_MESSAGE_REFERENCE);
    relatedMessageReference = MessageReference.parse(messageReferenceString);
    final String accountUuid = (relatedMessageReference != null) ? relatedMessageReference.getAccountUuid() : intent.getStringExtra(EXTRA_ACCOUNT);
    account = Preferences.getPreferences(this).getAccount(accountUuid);
    if (account == null) {
        account = Preferences.getPreferences(this).getDefaultAccount();
    }
    if (account == null) {
        /*
             * There are no accounts set up. This should not have happened. Prompt the
             * user to set up an account as an acceptable bailout.
             */
        startActivity(new Intent(this, Accounts.class));
        changesMadeSinceLastSave = false;
        finish();
        return;
    }
    contacts = Contacts.getInstance(MessageCompose.this);
    chooseIdentityButton = (TextView) findViewById(R.id.identity);
    chooseIdentityButton.setOnClickListener(this);
    RecipientMvpView recipientMvpView = new RecipientMvpView(this);
    ComposePgpInlineDecider composePgpInlineDecider = new ComposePgpInlineDecider();
    recipientPresenter = new RecipientPresenter(getApplicationContext(), getLoaderManager(), recipientMvpView, account, composePgpInlineDecider, new ReplyToParser(), this);
    recipientPresenter.updateCryptoStatus();
    subjectView = (EditText) findViewById(R.id.subject);
    subjectView.getInputExtras(true).putBoolean("allowEmoji", true);
    EolConvertingEditText upperSignature = (EolConvertingEditText) findViewById(R.id.upper_signature);
    EolConvertingEditText lowerSignature = (EolConvertingEditText) findViewById(R.id.lower_signature);
    QuotedMessageMvpView quotedMessageMvpView = new QuotedMessageMvpView(this);
    quotedMessagePresenter = new QuotedMessagePresenter(this, quotedMessageMvpView, account);
    attachmentPresenter = new AttachmentPresenter(getApplicationContext(), attachmentMvpView, getLoaderManager(), this);
    messageContentView = (EolConvertingEditText) findViewById(R.id.message_content);
    messageContentView.getInputExtras(true).putBoolean("allowEmoji", true);
    attachmentsView = (LinearLayout) findViewById(R.id.attachments);
    TextWatcher draftNeedsChangingTextWatcher = new SimpleTextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            changesMadeSinceLastSave = true;
        }
    };
    TextWatcher signTextWatcher = new SimpleTextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            changesMadeSinceLastSave = true;
            signatureChanged = true;
        }
    };
    recipientMvpView.addTextChangedListener(draftNeedsChangingTextWatcher);
    quotedMessageMvpView.addTextChangedListener(draftNeedsChangingTextWatcher);
    subjectView.addTextChangedListener(draftNeedsChangingTextWatcher);
    messageContentView.addTextChangedListener(draftNeedsChangingTextWatcher);
    /*
         * We set this to invisible by default. Other methods will turn it back on if it's
         * needed.
         */
    quotedMessagePresenter.showOrHideQuotedText(QuotedTextMode.NONE);
    subjectView.setOnFocusChangeListener(this);
    messageContentView.setOnFocusChangeListener(this);
    if (savedInstanceState != null) {
        /*
             * This data gets used in onCreate, so grab it here instead of onRestoreInstanceState
             */
        relatedMessageProcessed = savedInstanceState.getBoolean(STATE_KEY_SOURCE_MESSAGE_PROCED, false);
    }
    if (initFromIntent(intent)) {
        action = Action.COMPOSE;
        changesMadeSinceLastSave = true;
    } else {
        String action = intent.getAction();
        if (ACTION_COMPOSE.equals(action)) {
            this.action = Action.COMPOSE;
        } else if (ACTION_REPLY.equals(action)) {
            this.action = Action.REPLY;
        } else if (ACTION_REPLY_ALL.equals(action)) {
            this.action = Action.REPLY_ALL;
        } else if (ACTION_FORWARD.equals(action)) {
            this.action = Action.FORWARD;
        } else if (ACTION_EDIT_DRAFT.equals(action)) {
            this.action = Action.EDIT_DRAFT;
        } else {
            // This shouldn't happen
            Timber.w("MessageCompose was started with an unsupported action");
            this.action = Action.COMPOSE;
        }
    }
    if (identity == null) {
        identity = account.getIdentity(0);
    }
    if (account.isSignatureBeforeQuotedText()) {
        signatureView = upperSignature;
        lowerSignature.setVisibility(View.GONE);
    } else {
        signatureView = lowerSignature;
        upperSignature.setVisibility(View.GONE);
    }
    updateSignature();
    signatureView.addTextChangedListener(signTextWatcher);
    if (!identity.getSignatureUse()) {
        signatureView.setVisibility(View.GONE);
    }
    requestReadReceipt = account.isMessageReadReceiptAlways();
    updateFrom();
    if (!relatedMessageProcessed) {
        if (action == Action.REPLY || action == Action.REPLY_ALL || action == Action.FORWARD || action == Action.EDIT_DRAFT) {
            messageLoaderHelper = new MessageLoaderHelper(this, getLoaderManager(), getFragmentManager(), messageLoaderCallbacks);
            internalMessageHandler.sendEmptyMessage(MSG_PROGRESS_ON);
            Parcelable cachedDecryptionResult = intent.getParcelableExtra(EXTRA_MESSAGE_DECRYPTION_RESULT);
            messageLoaderHelper.asyncStartOrResumeLoadingMessage(relatedMessageReference, cachedDecryptionResult);
        }
        if (action != Action.EDIT_DRAFT) {
            String alwaysBccString = account.getAlwaysBcc();
            if (!TextUtils.isEmpty(alwaysBccString)) {
                recipientPresenter.addBccAddresses(Address.parse(alwaysBccString));
            }
        }
    }
    if (action == Action.REPLY || action == Action.REPLY_ALL) {
        relatedMessageReference = relatedMessageReference.withModifiedFlag(Flag.ANSWERED);
    }
    if (action == Action.REPLY || action == Action.REPLY_ALL || action == Action.EDIT_DRAFT) {
        //change focus to message body.
        messageContentView.requestFocus();
    } else {
        // Explicitly set focus to "To:" input field (see issue 2998)
        recipientMvpView.requestFocusOnToField();
    }
    if (action == Action.FORWARD) {
        relatedMessageReference = relatedMessageReference.withModifiedFlag(Flag.FORWARDED);
    }
    updateMessageFormat();
    // Set font size of input controls
    int fontSize = K9.getFontSizes().getMessageComposeInput();
    recipientMvpView.setFontSizes(K9.getFontSizes(), fontSize);
    quotedMessageMvpView.setFontSizes(K9.getFontSizes(), fontSize);
    K9.getFontSizes().setViewTextSize(subjectView, fontSize);
    K9.getFontSizes().setViewTextSize(messageContentView, fontSize);
    K9.getFontSizes().setViewTextSize(signatureView, fontSize);
    updateMessageFormat();
    setTitle();
    currentMessageBuilder = (MessageBuilder) getLastNonConfigurationInstance();
    if (currentMessageBuilder != null) {
        setProgressBarIndeterminateVisibility(true);
        currentMessageBuilder.reattachCallback(this);
    }
}
Also used : ComposePgpInlineDecider(com.fsck.k9.message.ComposePgpInlineDecider) RecipientPresenter(com.fsck.k9.activity.compose.RecipientPresenter) EolConvertingEditText(com.fsck.k9.ui.EolConvertingEditText) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) Parcelable(android.os.Parcelable) QuotedMessageMvpView(com.fsck.k9.ui.compose.QuotedMessageMvpView) View(android.view.View) QuotedMessageMvpView(com.fsck.k9.ui.compose.QuotedMessageMvpView) TextView(android.widget.TextView) AttachmentMvpView(com.fsck.k9.activity.compose.AttachmentPresenter.AttachmentMvpView) RecipientMvpView(com.fsck.k9.activity.compose.RecipientMvpView) SuppressLint(android.annotation.SuppressLint) QuotedMessagePresenter(com.fsck.k9.ui.compose.QuotedMessagePresenter) ReplyToParser(com.fsck.k9.helper.ReplyToParser) SimpleTextWatcher(com.fsck.k9.helper.SimpleTextWatcher) ContextThemeWrapper(android.view.ContextThemeWrapper) SuppressLint(android.annotation.SuppressLint) RecipientMvpView(com.fsck.k9.activity.compose.RecipientMvpView) SimpleTextWatcher(com.fsck.k9.helper.SimpleTextWatcher) TextWatcher(android.text.TextWatcher) AttachmentPresenter(com.fsck.k9.activity.compose.AttachmentPresenter) TypedValue(android.util.TypedValue)

Aggregations

View (android.view.View)2 SuppressLint (android.annotation.SuppressLint)1 PendingIntent (android.app.PendingIntent)1 Intent (android.content.Intent)1 Parcelable (android.os.Parcelable)1 TextWatcher (android.text.TextWatcher)1 TypedValue (android.util.TypedValue)1 ContextThemeWrapper (android.view.ContextThemeWrapper)1 OnClickListener (android.view.View.OnClickListener)1 WebView (android.webkit.WebView)1 TextView (android.widget.TextView)1 AttachmentPresenter (com.fsck.k9.activity.compose.AttachmentPresenter)1 AttachmentMvpView (com.fsck.k9.activity.compose.AttachmentPresenter.AttachmentMvpView)1 RecipientMvpView (com.fsck.k9.activity.compose.RecipientMvpView)1 RecipientPresenter (com.fsck.k9.activity.compose.RecipientPresenter)1 ReplyToParser (com.fsck.k9.helper.ReplyToParser)1 SimpleTextWatcher (com.fsck.k9.helper.SimpleTextWatcher)1 ComposePgpInlineDecider (com.fsck.k9.message.ComposePgpInlineDecider)1 EolConvertingEditText (com.fsck.k9.ui.EolConvertingEditText)1 QuotedMessageMvpView (com.fsck.k9.ui.compose.QuotedMessageMvpView)1