use of com.fsck.k9.activity.compose.RecipientPresenter 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();
}
use of com.fsck.k9.activity.compose.RecipientPresenter 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);
setLayout(R.layout.message_compose);
ViewStub contentContainer = findViewById(R.id.message_compose_content);
sizeFormatter = new SizeFormatter(getResources());
ThemeManager themeManager = getThemeManager();
int messageComposeThemeResourceId = themeManager.getMessageComposeThemeResourceId();
ContextThemeWrapper themeContext = new ContextThemeWrapper(this, messageComposeThemeResourceId);
LayoutInflater themedLayoutInflater = LayoutInflater.from(themeContext);
contentContainer.setLayoutInflater(themedLayoutInflater);
View contentView = contentContainer.inflate();
// background color needs to be forced
// TODO: Change themes to use appropriate background colors that don't need overriding.
TypedValue outValue = new TypedValue();
themeContext.getTheme().resolveAttribute(R.attr.messageViewBackgroundColor, outValue, true);
contentView.setBackgroundColor(outValue.data);
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);
if (accountUuid != null) {
account = preferences.getAccount(accountUuid);
}
if (account == null) {
account = preferences.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.
*/
MessageList.launch(this);
changesMadeSinceLastSave = false;
finish();
return;
}
contacts = Contacts.getInstance(MessageCompose.this);
chooseIdentityButton = findViewById(R.id.identity);
chooseIdentityButton.setOnClickListener(this);
ReplyToView replyToView = new ReplyToView(this);
replyToPresenter = new ReplyToPresenter(replyToView);
RecipientMvpView recipientMvpView = new RecipientMvpView(this);
ComposePgpInlineDecider composePgpInlineDecider = new ComposePgpInlineDecider();
ComposePgpEnableByDefaultDecider composePgpEnableByDefaultDecider = new ComposePgpEnableByDefaultDecider();
OpenPgpApiManager openPgpApiManager = new OpenPgpApiManager(getApplicationContext(), this);
recipientPresenter = new RecipientPresenter(getApplicationContext(), getSupportLoaderManager(), openPgpApiManager, recipientMvpView, account, composePgpInlineDecider, composePgpEnableByDefaultDecider, AutocryptStatusInteractor.getInstance(), new ReplyToParser(), DI.get(AutocryptDraftStateHeaderParser.class));
recipientPresenter.asyncUpdateCryptoStatus();
subjectView = findViewById(R.id.subject);
subjectView.getInputExtras(true).putBoolean("allowEmoji", true);
EditText upperSignature = findViewById(R.id.upper_signature);
EditText lowerSignature = findViewById(R.id.lower_signature);
QuotedMessageMvpView quotedMessageMvpView = new QuotedMessageMvpView(this);
quotedMessagePresenter = new QuotedMessagePresenter(this, quotedMessageMvpView, account);
attachmentPresenter = new AttachmentPresenter(getApplicationContext(), attachmentMvpView, getSupportLoaderManager(), this);
messageContentView = findViewById(R.id.message_content);
messageContentView.getInputExtras(true).putBoolean("allowEmoji", true);
attachmentsView = 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;
}
};
replyToView.addTextChangedListener(draftNeedsChangingTextWatcher);
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_FORWARD_AS_ATTACHMENT.equals(action)) {
this.action = Action.FORWARD_AS_ATTACHMENT;
} 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.isMessageReadReceipt();
updateFrom();
replyToPresenter.setIdentity(identity);
if (!relatedMessageProcessed) {
if (action == Action.REPLY || action == Action.REPLY_ALL || action == Action.FORWARD || action == Action.FORWARD_AS_ATTACHMENT || action == Action.EDIT_DRAFT) {
messageLoaderHelper = messageLoaderHelperFactory.createForMessageCompose(this, getSupportLoaderManager(), getSupportFragmentManager(), messageLoaderCallbacks);
internalMessageHandler.sendEmptyMessage(MSG_PROGRESS_ON);
if (action == Action.FORWARD_AS_ATTACHMENT) {
messageLoaderHelper.asyncStartOrResumeLoadingMessageMetadata(relatedMessageReference);
} else {
Parcelable cachedDecryptionResult = intent.getParcelableExtra(EXTRA_MESSAGE_DECRYPTION_RESULT);
messageLoaderHelper.asyncStartOrResumeLoadingMessage(relatedMessageReference, cachedDecryptionResult);
}
}
}
if (action == Action.REPLY || action == Action.REPLY_ALL) {
relatedFlag = Flag.ANSWERED;
} else if (action == Action.FORWARD || action == Action.FORWARD_AS_ATTACHMENT) {
relatedFlag = Flag.FORWARDED;
}
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();
}
updateMessageFormat();
// Set font size of input controls
int fontSize = K9.getFontSizes().getMessageComposeInput();
replyToView.setFontSizes(K9.getFontSizes(), fontSize);
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) getLastCustomNonConfigurationInstance();
if (currentMessageBuilder != null) {
setProgressBarIndeterminateVisibility(true);
currentMessageBuilder.reattachCallback(this);
}
if (savedInstanceState == null) {
checkAndRequestPermissions();
}
}
use of com.fsck.k9.activity.compose.RecipientPresenter in project k-9 by k9mail.
the class AttachmentPresenter method onClickAddAttachment.
public void onClickAddAttachment(RecipientPresenter recipientPresenter) {
ComposeCryptoStatus currentCachedCryptoStatus = recipientPresenter.getCurrentCachedCryptoStatus();
if (currentCachedCryptoStatus == null) {
return;
}
AttachErrorState maybeAttachErrorState = currentCachedCryptoStatus.getAttachErrorStateOrNull();
if (maybeAttachErrorState != null) {
recipientPresenter.showPgpAttachError(maybeAttachErrorState);
return;
}
attachmentMvpView.showPickAttachmentDialog(REQUEST_CODE_ATTACHMENT_URI);
}
Aggregations