mirror of https://github.com/moparisthebest/k-9
61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
package com.fsck.k9.ui.message;
|
|
|
|
|
|
import android.content.AsyncTaskLoader;
|
|
import android.content.Context;
|
|
import android.util.Log;
|
|
|
|
import com.fsck.k9.Account;
|
|
import com.fsck.k9.K9;
|
|
import com.fsck.k9.activity.MessageReference;
|
|
import com.fsck.k9.controller.MessagingController;
|
|
import com.fsck.k9.mail.MessagingException;
|
|
import com.fsck.k9.mailstore.LocalMessage;
|
|
|
|
|
|
public class LocalMessageLoader extends AsyncTaskLoader<LocalMessage> {
|
|
private final MessagingController controller;
|
|
private final Account account;
|
|
private final MessageReference messageReference;
|
|
private LocalMessage message;
|
|
|
|
public LocalMessageLoader(Context context, MessagingController controller, Account account,
|
|
MessageReference messageReference) {
|
|
super(context);
|
|
this.controller = controller;
|
|
this.account = account;
|
|
this.messageReference = messageReference;
|
|
}
|
|
|
|
@Override
|
|
protected void onStartLoading() {
|
|
if (message != null) {
|
|
super.deliverResult(message);
|
|
}
|
|
|
|
if (takeContentChanged() || message == null) {
|
|
forceLoad();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void deliverResult(LocalMessage message) {
|
|
this.message = message;
|
|
super.deliverResult(message);
|
|
}
|
|
|
|
@Override
|
|
public LocalMessage loadInBackground() {
|
|
try {
|
|
return loadMessageFromDatabase();
|
|
} catch (Exception e) {
|
|
Log.e(K9.LOG_TAG, "Error while loading message from database", e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private LocalMessage loadMessageFromDatabase() throws MessagingException {
|
|
return controller.loadMessage(account, messageReference.folderName, messageReference.uid);
|
|
}
|
|
}
|