package com.fsck.k9.fragment; import java.util.List; import android.database.Cursor; import android.text.TextUtils; import com.fsck.k9.Account; import com.fsck.k9.Preferences; import com.fsck.k9.activity.MessageReference; import com.fsck.k9.helper.Utility; import com.fsck.k9.mail.Address; import com.fsck.k9.mail.Folder; import com.fsck.k9.mail.MessagingException; import com.fsck.k9.mailstore.LocalFolder; import com.fsck.k9.mailstore.LocalStore; import timber.log.Timber; import static com.fsck.k9.fragment.MLFProjectionInfo.SENDER_LIST_COLUMN; public class MlfUtils { static LocalFolder getOpenFolder(String folderName, Account account) throws MessagingException { LocalStore localStore = account.getLocalStore(); LocalFolder localFolder = localStore.getFolder(folderName); localFolder.open(Folder.OPEN_MODE_RO); return localFolder; } static void setLastSelectedFolderName(Preferences preferences, List<MessageReference> messages, String destFolderName) { try { MessageReference firstMsg = messages.get(0); Account account = preferences.getAccount(firstMsg.getAccountUuid()); LocalFolder firstMsgFolder = MlfUtils.getOpenFolder(firstMsg.getFolderName(), account); firstMsgFolder.setLastSelectedFolderName(destFolderName); } catch (MessagingException e) { Timber.e(e, "Error getting folder for setLastSelectedFolderName()"); } } static String getSenderAddressFromCursor(Cursor cursor) { String fromList = cursor.getString(SENDER_LIST_COLUMN); Address[] fromAddrs = Address.unpack(fromList); return (fromAddrs.length > 0) ? fromAddrs[0].getAddress() : null; } static String buildSubject(String subjectFromCursor, String emptySubject, int threadCount) { String subject = subjectFromCursor; if (TextUtils.isEmpty(subject)) { return emptySubject; } else if (threadCount > 1) { // If this is a thread, strip the RE/FW from the subject. "Be like Outlook." return Utility.stripSubject(subject); } return subject; } }