2015-01-27 10:43:49 -05:00
|
|
|
package com.fsck.k9.ui.messageview;
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
import android.app.Fragment;
|
|
|
|
import android.content.Context;
|
|
|
|
import android.util.AttributeSet;
|
|
|
|
import android.util.Log;
|
|
|
|
import android.util.TypedValue;
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
import android.view.View;
|
2015-01-27 11:33:50 -05:00
|
|
|
import android.widget.Button;
|
2015-01-27 10:43:49 -05:00
|
|
|
import android.widget.LinearLayout;
|
|
|
|
|
|
|
|
import com.fsck.k9.Account;
|
|
|
|
import com.fsck.k9.K9;
|
|
|
|
import com.fsck.k9.R;
|
|
|
|
import com.fsck.k9.crypto.PgpData;
|
2015-01-27 11:33:50 -05:00
|
|
|
import com.fsck.k9.mail.Flag;
|
2015-01-27 10:43:49 -05:00
|
|
|
import com.fsck.k9.mail.Message;
|
|
|
|
import com.fsck.k9.mail.MessagingException;
|
|
|
|
import com.fsck.k9.mailstore.MessageViewInfo;
|
|
|
|
import com.fsck.k9.mailstore.MessageViewInfo.MessageViewContainer;
|
|
|
|
import com.fsck.k9.view.MessageHeader;
|
|
|
|
|
|
|
|
|
|
|
|
public class MessageTopView extends LinearLayout {
|
|
|
|
|
|
|
|
private MessageHeader mHeaderContainer;
|
|
|
|
private LayoutInflater mInflater;
|
|
|
|
private LinearLayout containerViews;
|
|
|
|
private Fragment fragment;
|
2015-01-27 11:33:50 -05:00
|
|
|
private Button mDownloadRemainder;
|
|
|
|
private AttachmentViewCallback attachmentCallback;
|
2015-01-28 09:40:19 -05:00
|
|
|
private OpenPgpHeaderViewCallback openPgpHeaderViewCallback;
|
2015-01-27 10:43:49 -05:00
|
|
|
|
|
|
|
public MessageTopView(Context context, AttributeSet attrs) {
|
|
|
|
super(context, attrs);
|
|
|
|
}
|
|
|
|
|
2015-01-28 09:40:19 -05:00
|
|
|
public void initialize (Fragment fragment, AttachmentViewCallback attachmentCallback,
|
|
|
|
OpenPgpHeaderViewCallback openPgpHeaderViewCallback) {
|
2015-01-27 10:43:49 -05:00
|
|
|
this.fragment = fragment;
|
2015-01-27 11:33:50 -05:00
|
|
|
this.attachmentCallback = attachmentCallback;
|
2015-01-28 09:40:19 -05:00
|
|
|
this.openPgpHeaderViewCallback = openPgpHeaderViewCallback;
|
2015-01-27 10:43:49 -05:00
|
|
|
|
|
|
|
mHeaderContainer = (MessageHeader) findViewById(R.id.header_container);
|
|
|
|
// mHeaderContainer.setOnLayoutChangedListener(this);
|
|
|
|
mInflater = ((MessageViewFragment) fragment).getFragmentLayoutInflater();
|
|
|
|
|
|
|
|
TypedValue outValue = new TypedValue();
|
|
|
|
getContext().getTheme().resolveAttribute(R.attr.messageViewHeaderBackgroundColor, outValue, true);
|
|
|
|
mHeaderContainer.setBackgroundColor(outValue.data);
|
|
|
|
|
2015-01-27 11:33:50 -05:00
|
|
|
mDownloadRemainder = (Button) findViewById(R.id.download_remainder);
|
|
|
|
mDownloadRemainder.setVisibility(View.GONE);
|
|
|
|
|
2015-01-27 10:43:49 -05:00
|
|
|
containerViews = (LinearLayout) findViewById(R.id.message_containers);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void resetView() {
|
2015-01-27 11:33:50 -05:00
|
|
|
mDownloadRemainder.setVisibility(View.GONE);
|
2015-01-27 10:43:49 -05:00
|
|
|
containerViews.removeAllViews();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setMessage(Account account, MessageViewInfo messageViewInfo)
|
|
|
|
throws MessagingException {
|
|
|
|
resetView();
|
|
|
|
|
|
|
|
for (MessageViewContainer container : messageViewInfo.containers) {
|
|
|
|
MessageContainerView view = (MessageContainerView) mInflater.inflate(R.layout.message_container, null);
|
2015-01-28 12:11:38 -05:00
|
|
|
view.initialize(fragment, attachmentCallback, openPgpHeaderViewCallback,
|
|
|
|
!Account.NO_OPENPGP_PROVIDER.equals(account.getOpenPgpProvider()));
|
2015-01-27 10:43:49 -05:00
|
|
|
view.setMessage(container);
|
|
|
|
containerViews.addView(view);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetch the message header view. This is not the same as the message headers; this is the View shown at the top
|
|
|
|
* of messages.
|
|
|
|
* @return MessageHeader View.
|
|
|
|
*/
|
|
|
|
public MessageHeader getMessageHeaderView() {
|
|
|
|
return mHeaderContainer;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setHeaders(final Message message, Account account) {
|
|
|
|
try {
|
|
|
|
mHeaderContainer.populate(message, account);
|
|
|
|
mHeaderContainer.setVisibility(View.VISIBLE);
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception me) {
|
|
|
|
Log.e(K9.LOG_TAG, "setHeaders - error", me);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setOnToggleFlagClickListener(OnClickListener listener) {
|
|
|
|
mHeaderContainer.setOnFlagListener(listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void showAllHeaders() {
|
|
|
|
mHeaderContainer.onShowAdditionalHeaders();
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean additionalHeadersVisible() {
|
|
|
|
return mHeaderContainer.additionalHeadersVisible();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void resetHeaderView() {
|
|
|
|
mHeaderContainer.setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
|
2015-01-27 11:33:50 -05:00
|
|
|
public void setOnDownloadButtonClickListener(OnClickListener listener) {
|
|
|
|
mDownloadRemainder.setOnClickListener(listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void enableDownloadButton() {
|
|
|
|
mDownloadRemainder.setEnabled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void disableDownloadButton() {
|
|
|
|
mDownloadRemainder.setEnabled(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setShowDownloadButton(Message message) {
|
|
|
|
if (message.isSet(Flag.X_DOWNLOADED_FULL)) {
|
|
|
|
mDownloadRemainder.setVisibility(View.GONE);
|
|
|
|
} else {
|
|
|
|
mDownloadRemainder.setEnabled(true);
|
|
|
|
mDownloadRemainder.setVisibility(View.VISIBLE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-27 10:43:49 -05:00
|
|
|
}
|