Search in sources :

Example 1 with ComposePgpInlineDecider

use of com.fsck.k9.message.ComposePgpInlineDecider in project k-9 by k9mail.

the class RecipientPresenterTest method setUp.

@Before
public void setUp() throws Exception {
    Context context = ShadowApplication.getInstance().getApplicationContext();
    recipientMvpView = mock(RecipientMvpView.class);
    account = mock(Account.class);
    composePgpInlineDecider = mock(ComposePgpInlineDecider.class);
    replyToParser = mock(ReplyToParser.class);
    LoaderManager loaderManager = mock(LoaderManager.class);
    listener = mock(RecipientPresenter.RecipientsChangedListener.class);
    recipientPresenter = new RecipientPresenter(context, loaderManager, recipientMvpView, account, composePgpInlineDecider, replyToParser, listener);
    recipientPresenter.updateCryptoStatus();
}
Also used : Context(android.content.Context) Account(com.fsck.k9.Account) LoaderManager(android.app.LoaderManager) ComposePgpInlineDecider(com.fsck.k9.message.ComposePgpInlineDecider) ReplyToParser(com.fsck.k9.helper.ReplyToParser) Before(org.junit.Before)

Example 2 with ComposePgpInlineDecider

use of com.fsck.k9.message.ComposePgpInlineDecider in project k-9 by k9mail.

the class RecipientPresenterTest method initFromReplyToMessage_shouldCallComposePgpInlineDecider.

@Test
public void initFromReplyToMessage_shouldCallComposePgpInlineDecider() throws Exception {
    Message message = mock(Message.class);
    when(replyToParser.getRecipientsToReplyTo(message, account)).thenReturn(TO_ADDRESSES);
    recipientPresenter.initFromReplyToMessage(message, false);
    verify(composePgpInlineDecider).shouldReplyInline(message);
}
Also used : Message(com.fsck.k9.mail.Message) Test(org.junit.Test)

Example 3 with ComposePgpInlineDecider

use of com.fsck.k9.message.ComposePgpInlineDecider 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

ReplyToParser (com.fsck.k9.helper.ReplyToParser)2 ComposePgpInlineDecider (com.fsck.k9.message.ComposePgpInlineDecider)2 SuppressLint (android.annotation.SuppressLint)1 LoaderManager (android.app.LoaderManager)1 PendingIntent (android.app.PendingIntent)1 Context (android.content.Context)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 View (android.view.View)1 TextView (android.widget.TextView)1 Account (com.fsck.k9.Account)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 SimpleTextWatcher (com.fsck.k9.helper.SimpleTextWatcher)1 Message (com.fsck.k9.mail.Message)1