mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-30 13:12:25 -05:00
use interfaces, not implementions
This commit is contained in:
parent
dadf5e0865
commit
203dcfe2c3
@ -181,7 +181,7 @@ public class Account implements BaseAccount {
|
||||
private boolean mPushPollOnConnect;
|
||||
private boolean mNotifySync;
|
||||
private SortType mSortType;
|
||||
private HashMap<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
|
||||
private Map<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
|
||||
private ShowPictures mShowPictures;
|
||||
private boolean mIsSignatureBeforeQuotedText;
|
||||
private String mExpungePolicy = EXPUNGE_IMMEDIATELY;
|
||||
|
@ -5,6 +5,7 @@ import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
|
||||
@ -263,7 +264,7 @@ public class K9 extends Application {
|
||||
private static boolean mHideTimeZone = false;
|
||||
|
||||
private static SortType mSortType;
|
||||
private static HashMap<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
|
||||
private static Map<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
|
||||
|
||||
private static boolean sUseBackgroundAsUnreadIndicator = true;
|
||||
private static boolean sThreadedViewEnabled = true;
|
||||
|
@ -17,6 +17,8 @@
|
||||
package com.fsck.k9.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
@ -40,7 +42,7 @@ public class AccessibleEmailContentActivity extends ListActivity {
|
||||
Spanned parsedHtml = Html.fromHtml(htmlSource, null, null);
|
||||
String[] rawListItems = parsedHtml.toString().split("\n");
|
||||
|
||||
ArrayList<String> cleanedList = new ArrayList<String>();
|
||||
List<String> cleanedList = new ArrayList<String>();
|
||||
for (String rawListItem : rawListItems) {
|
||||
if (rawListItem.trim().length() > 0) {
|
||||
addToCleanedList(cleanedList, rawListItem);
|
||||
@ -53,7 +55,7 @@ public class AccessibleEmailContentActivity extends ListActivity {
|
||||
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems));
|
||||
}
|
||||
|
||||
private void addToCleanedList(ArrayList<String> cleanedList, String line) {
|
||||
private void addToCleanedList(List<String> cleanedList, String line) {
|
||||
if (line.length() < 80) {
|
||||
cleanedList.add(line);
|
||||
} else {
|
||||
|
@ -13,6 +13,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
@ -75,6 +76,7 @@ import com.fsck.k9.activity.setup.Prefs;
|
||||
import com.fsck.k9.activity.setup.WelcomeMessage;
|
||||
import com.fsck.k9.controller.MessagingController;
|
||||
import com.fsck.k9.helper.SizeFormatter;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.mail.AuthType;
|
||||
import com.fsck.k9.mail.ServerSettings;
|
||||
import com.fsck.k9.mail.Store;
|
||||
@ -120,9 +122,9 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
|
||||
private static final int DIALOG_RECREATE_ACCOUNT = 3;
|
||||
private static final int DIALOG_NO_FILE_MANAGER = 4;
|
||||
|
||||
private ConcurrentHashMap<String, AccountStats> accountStats = new ConcurrentHashMap<String, AccountStats>();
|
||||
private ConcurrentMap<String, AccountStats> accountStats = new ConcurrentHashMap<String, AccountStats>();
|
||||
|
||||
private ConcurrentHashMap<BaseAccount, String> pendingWork = new ConcurrentHashMap<BaseAccount, String>();
|
||||
private ConcurrentMap<BaseAccount, String> pendingWork = new ConcurrentHashMap<BaseAccount, String>();
|
||||
|
||||
private BaseAccount mSelectedContextAccount;
|
||||
private int mUnreadMessageCount = 0;
|
||||
@ -495,7 +497,7 @@ public class Accounts extends K9ListActivity implements OnItemClickListener {
|
||||
outState.putString(SELECTED_CONTEXT_ACCOUNT, mSelectedContextAccount.getUuid());
|
||||
}
|
||||
outState.putSerializable(STATE_UNREAD_COUNT, mUnreadMessageCount);
|
||||
outState.putSerializable(ACCOUNT_STATS, accountStats);
|
||||
outState.putSerializable(ACCOUNT_STATS, Utility.toSerializableConcurrentMap(accountStats));
|
||||
}
|
||||
|
||||
private StorageManager.StorageListener storageListener = new StorageManager.StorageListener() {
|
||||
|
@ -660,7 +660,7 @@ public class FolderList extends K9ListActivity {
|
||||
}
|
||||
|
||||
class FolderListAdapter extends BaseAdapter implements Filterable {
|
||||
private ArrayList<FolderInfoHolder> mFolders = new ArrayList<FolderInfoHolder>();
|
||||
private List<FolderInfoHolder> mFolders = new ArrayList<FolderInfoHolder>();
|
||||
private List<FolderInfoHolder> mFilteredFolders = Collections.unmodifiableList(mFolders);
|
||||
private Filter mFilter = new FolderListFilter();
|
||||
|
||||
@ -1176,7 +1176,7 @@ public class FolderList extends K9ListActivity {
|
||||
|
||||
Locale locale = Locale.getDefault();
|
||||
if ((searchTerm == null) || (searchTerm.length() == 0)) {
|
||||
ArrayList<FolderInfoHolder> list = new ArrayList<FolderInfoHolder>(mFolders);
|
||||
List<FolderInfoHolder> list = new ArrayList<FolderInfoHolder>(mFolders);
|
||||
results.values = list;
|
||||
results.count = list.size();
|
||||
} else {
|
||||
@ -1184,7 +1184,7 @@ public class FolderList extends K9ListActivity {
|
||||
final String[] words = searchTermString.split(" ");
|
||||
final int wordCount = words.length;
|
||||
|
||||
final ArrayList<FolderInfoHolder> newValues = new ArrayList<FolderInfoHolder>();
|
||||
final List<FolderInfoHolder> newValues = new ArrayList<FolderInfoHolder>();
|
||||
|
||||
for (final FolderInfoHolder value : mFolders) {
|
||||
if (value.displayName == null) {
|
||||
|
@ -29,7 +29,7 @@ public class FolderListFilter<T> extends Filter {
|
||||
/**
|
||||
* All folders.
|
||||
*/
|
||||
private ArrayList<T> mOriginalValues = null;
|
||||
private List<T> mOriginalValues = null;
|
||||
|
||||
/**
|
||||
* Create a filter for a list of folders.
|
||||
@ -62,7 +62,7 @@ public class FolderListFilter<T> extends Filter {
|
||||
|
||||
Locale locale = Locale.getDefault();
|
||||
if ((searchTerm == null) || (searchTerm.length() == 0)) {
|
||||
ArrayList<T> list = new ArrayList<T>(mOriginalValues);
|
||||
List<T> list = new ArrayList<T>(mOriginalValues);
|
||||
results.values = list;
|
||||
results.count = list.size();
|
||||
} else {
|
||||
@ -70,9 +70,9 @@ public class FolderListFilter<T> extends Filter {
|
||||
final String[] words = searchTermString.split(" ");
|
||||
final int wordCount = words.length;
|
||||
|
||||
final ArrayList<T> values = mOriginalValues;
|
||||
final List<T> values = mOriginalValues;
|
||||
|
||||
final ArrayList<T> newValues = new ArrayList<T>();
|
||||
final List<T> newValues = new ArrayList<T>();
|
||||
|
||||
for (final T value : values) {
|
||||
final String valueText = value.toString().toLowerCase(locale);
|
||||
|
@ -1013,7 +1013,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
||||
addAttachment(stream, type);
|
||||
}
|
||||
} else {
|
||||
ArrayList<Parcelable> list = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
|
||||
List<Parcelable> list = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
|
||||
if (list != null) {
|
||||
for (Parcelable parcelable : list) {
|
||||
Uri stream = (Uri) parcelable;
|
||||
@ -1155,7 +1155,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
ArrayList<Attachment> attachments = new ArrayList<Attachment>();
|
||||
List<Attachment> attachments = new ArrayList<Attachment>();
|
||||
for (int i = 0, count = mAttachments.getChildCount(); i < count; i++) {
|
||||
View view = mAttachments.getChildAt(i);
|
||||
Attachment attachment = (Attachment) view.getTag();
|
||||
@ -1164,7 +1164,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
||||
|
||||
outState.putInt(STATE_KEY_NUM_ATTACHMENTS_LOADING, mNumAttachmentsLoading);
|
||||
outState.putString(STATE_KEY_WAITING_FOR_ATTACHMENTS, mWaitingForAttachments.name());
|
||||
outState.putParcelableArrayList(STATE_KEY_ATTACHMENTS, attachments);
|
||||
outState.putParcelableArrayList(STATE_KEY_ATTACHMENTS, Utility.toArrayList(attachments));
|
||||
outState.putBoolean(STATE_KEY_CC_SHOWN, mCcWrapper.getVisibility() == View.VISIBLE);
|
||||
outState.putBoolean(STATE_KEY_BCC_SHOWN, mBccWrapper.getVisibility() == View.VISIBLE);
|
||||
outState.putSerializable(STATE_KEY_QUOTED_TEXT_MODE, mQuotedTextMode);
|
||||
@ -1199,7 +1199,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
||||
"\" from saved instance state", e);
|
||||
}
|
||||
|
||||
ArrayList<Attachment> attachments = savedInstanceState.getParcelableArrayList(STATE_KEY_ATTACHMENTS);
|
||||
List<Attachment> attachments = savedInstanceState.getParcelableArrayList(STATE_KEY_ATTACHMENTS);
|
||||
for (Attachment attachment : attachments) {
|
||||
addAttachmentView(attachment);
|
||||
if (attachment.loaderId > mMaxLoaderId) {
|
||||
@ -1808,7 +1808,7 @@ public class MessageCompose extends K9Activity implements OnClickListener,
|
||||
String[] emailsArray = null;
|
||||
if (mEncryptCheckbox.isChecked()) {
|
||||
// get emails as array
|
||||
ArrayList<String> emails = new ArrayList<String>();
|
||||
List<String> emails = new ArrayList<String>();
|
||||
|
||||
for (Address address : getRecipientAddresses()) {
|
||||
emails.add(address.getAddress());
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.fsck.k9.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@ -14,6 +15,7 @@ import com.fsck.k9.Account;
|
||||
import com.fsck.k9.K9;
|
||||
import com.fsck.k9.Preferences;
|
||||
import com.fsck.k9.R;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.service.NotificationActionService;
|
||||
|
||||
public class NotificationDeleteConfirmation extends Activity {
|
||||
@ -23,12 +25,12 @@ public class NotificationDeleteConfirmation extends Activity {
|
||||
private final static int DIALOG_CONFIRM = 1;
|
||||
|
||||
private Account mAccount;
|
||||
private ArrayList<MessageReference> mMessageRefs;
|
||||
private List<MessageReference> mMessageRefs;
|
||||
|
||||
public static PendingIntent getIntent(Context context, final Account account, final ArrayList<MessageReference> refs) {
|
||||
public static PendingIntent getIntent(Context context, final Account account, final List<MessageReference> refs) {
|
||||
Intent i = new Intent(context, NotificationDeleteConfirmation.class);
|
||||
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, refs);
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, Utility.toSerializableList(refs));
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
|
||||
return PendingIntent.getActivity(context, account.getAccountNumber(), i, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
@ -299,8 +299,8 @@ public class MessagingController implements Runnable {
|
||||
*
|
||||
* @return Message reference list
|
||||
*/
|
||||
public ArrayList<MessageReference> getAllMessageRefs() {
|
||||
ArrayList<MessageReference> refs = new ArrayList<MessageReference>();
|
||||
public List<MessageReference> getAllMessageRefs() {
|
||||
List<MessageReference> refs = new ArrayList<MessageReference>();
|
||||
for (Message m : messages) {
|
||||
refs.add(m.makeMessageReference());
|
||||
}
|
||||
@ -993,7 +993,7 @@ public class MessagingController implements Runnable {
|
||||
localFolder.open(Folder.OPEN_MODE_RW);
|
||||
localFolder.updateLastUid();
|
||||
Message[] localMessages = localFolder.getMessages(null);
|
||||
HashMap<String, Message> localUidMap = new HashMap<String, Message>();
|
||||
Map<String, Message> localUidMap = new HashMap<String, Message>();
|
||||
for (Message message : localMessages) {
|
||||
localUidMap.put(message.getUid(), message);
|
||||
}
|
||||
@ -1059,8 +1059,8 @@ public class MessagingController implements Runnable {
|
||||
}
|
||||
|
||||
Message[] remoteMessageArray = EMPTY_MESSAGE_ARRAY;
|
||||
final ArrayList<Message> remoteMessages = new ArrayList<Message>();
|
||||
HashMap<String, Message> remoteUidMap = new HashMap<String, Message>();
|
||||
final List<Message> remoteMessages = new ArrayList<Message>();
|
||||
Map<String, Message> remoteUidMap = new HashMap<String, Message>();
|
||||
|
||||
if (K9.DEBUG)
|
||||
Log.v(K9.LOG_TAG, "SYNC: Remote message count for folder " + folder + " is " + remoteMessageCount);
|
||||
@ -1117,7 +1117,7 @@ public class MessagingController implements Runnable {
|
||||
* Remove any messages that are in the local store but no longer on the remote store or are too old
|
||||
*/
|
||||
if (account.syncRemoteDeletions()) {
|
||||
ArrayList<Message> destroyMessages = new ArrayList<Message>();
|
||||
List<Message> destroyMessages = new ArrayList<Message>();
|
||||
for (Message localMessage : localMessages) {
|
||||
if (remoteUidMap.get(localMessage.getUid()) == null) {
|
||||
destroyMessages.add(localMessage);
|
||||
@ -1280,7 +1280,7 @@ public class MessagingController implements Runnable {
|
||||
Log.e(K9.LOG_TAG, "Unable to getUnreadMessageCount for account: " + account, e);
|
||||
}
|
||||
|
||||
ArrayList<Message> syncFlagMessages = new ArrayList<Message>();
|
||||
List<Message> syncFlagMessages = new ArrayList<Message>();
|
||||
List<Message> unsyncedMessages = new ArrayList<Message>();
|
||||
final AtomicInteger newMessages = new AtomicInteger(0);
|
||||
|
||||
@ -1300,8 +1300,8 @@ public class MessagingController implements Runnable {
|
||||
Log.d(K9.LOG_TAG, "SYNC: Have " + unsyncedMessages.size() + " unsynced messages");
|
||||
|
||||
messages.clear();
|
||||
final ArrayList<Message> largeMessages = new ArrayList<Message>();
|
||||
final ArrayList<Message> smallMessages = new ArrayList<Message>();
|
||||
final List<Message> largeMessages = new ArrayList<Message>();
|
||||
final List<Message> smallMessages = new ArrayList<Message>();
|
||||
if (!unsyncedMessages.isEmpty()) {
|
||||
|
||||
/*
|
||||
@ -1416,7 +1416,7 @@ public class MessagingController implements Runnable {
|
||||
final Folder remoteFolder,
|
||||
final Account account,
|
||||
final List<Message> unsyncedMessages,
|
||||
final ArrayList<Message> syncFlagMessages,
|
||||
final List<Message> syncFlagMessages,
|
||||
boolean flagSyncOnly) throws MessagingException {
|
||||
if (message.isSet(Flag.DELETED)) {
|
||||
syncFlagMessages.add(message);
|
||||
@ -1475,8 +1475,8 @@ public class MessagingController implements Runnable {
|
||||
private void fetchUnsyncedMessages(final Account account, final Folder remoteFolder,
|
||||
final LocalFolder localFolder,
|
||||
List<Message> unsyncedMessages,
|
||||
final ArrayList<Message> smallMessages,
|
||||
final ArrayList<Message> largeMessages,
|
||||
final List<Message> smallMessages,
|
||||
final List<Message> largeMessages,
|
||||
final AtomicInteger progress,
|
||||
final int todo,
|
||||
FetchProfile fp) throws MessagingException {
|
||||
@ -1611,7 +1611,7 @@ public class MessagingController implements Runnable {
|
||||
|
||||
private void downloadSmallMessages(final Account account, final Folder remoteFolder,
|
||||
final LocalFolder localFolder,
|
||||
ArrayList<Message> smallMessages,
|
||||
List<Message> smallMessages,
|
||||
final AtomicInteger progress,
|
||||
final int unreadBeforeStart,
|
||||
final AtomicInteger newMessages,
|
||||
@ -1690,7 +1690,7 @@ public class MessagingController implements Runnable {
|
||||
|
||||
private void downloadLargeMessages(final Account account, final Folder remoteFolder,
|
||||
final LocalFolder localFolder,
|
||||
ArrayList<Message> largeMessages,
|
||||
List<Message> largeMessages,
|
||||
final AtomicInteger progress,
|
||||
final int unreadBeforeStart,
|
||||
final AtomicInteger newMessages,
|
||||
@ -1815,7 +1815,7 @@ public class MessagingController implements Runnable {
|
||||
|
||||
private void refreshLocalMessageFlags(final Account account, final Folder remoteFolder,
|
||||
final LocalFolder localFolder,
|
||||
ArrayList<Message> syncFlagMessages,
|
||||
List<Message> syncFlagMessages,
|
||||
final AtomicInteger progress,
|
||||
final int todo
|
||||
) throws MessagingException {
|
||||
@ -1952,7 +1952,7 @@ public class MessagingController implements Runnable {
|
||||
|
||||
private void processPendingCommandsSynchronous(Account account) throws MessagingException {
|
||||
LocalStore localStore = account.getLocalStore();
|
||||
ArrayList<PendingCommand> commands = localStore.getPendingCommands();
|
||||
List<PendingCommand> commands = localStore.getPendingCommands();
|
||||
|
||||
int progress = 0;
|
||||
int todo = commands.size();
|
||||
@ -4863,7 +4863,7 @@ public class MessagingController implements Runnable {
|
||||
|
||||
String accountDescr = (account.getDescription() != null) ?
|
||||
account.getDescription() : account.getEmail();
|
||||
final ArrayList<MessageReference> allRefs = data.getAllMessageRefs();
|
||||
final List<MessageReference> allRefs = data.getAllMessageRefs();
|
||||
|
||||
if (platformSupportsExtendedNotifications() && !privacyModeEnabled) {
|
||||
if (newMessages > 1) {
|
||||
@ -5424,7 +5424,7 @@ public class MessagingController implements Runnable {
|
||||
return taccount.getDescription() + ":" + tfolderName;
|
||||
}
|
||||
static class MemorizingListener extends MessagingListener {
|
||||
HashMap<String, Memory> memories = new HashMap<String, Memory>(31);
|
||||
Map<String, Memory> memories = new HashMap<String, Memory>(31);
|
||||
|
||||
Memory getMemory(Account account, String folderName) {
|
||||
Memory memory = memories.get(getMemoryKey(account, folderName));
|
||||
|
@ -2995,8 +2995,8 @@ public class MessageListFragment extends Fragment implements OnItemClickListener
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
public ArrayList<MessageReference> getMessageReferences() {
|
||||
ArrayList<MessageReference> messageRefs = new ArrayList<MessageReference>();
|
||||
public List<MessageReference> getMessageReferences() {
|
||||
List<MessageReference> messageRefs = new ArrayList<MessageReference>();
|
||||
|
||||
for (int i = 0, len = mAdapter.getCount(); i < len; i++) {
|
||||
Cursor cursor = (Cursor) mAdapter.getItem(i);
|
||||
|
@ -13,6 +13,7 @@ import com.fsck.k9.K9;
|
||||
import com.fsck.k9.mail.Address;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Helper class to access the contacts stored on the device.
|
||||
@ -276,7 +277,7 @@ public class Contacts {
|
||||
*/
|
||||
public ContactItem extractInfoFromContactPickerIntent(final Intent intent) {
|
||||
Cursor cursor = null;
|
||||
ArrayList<String> email = new ArrayList<String>();
|
||||
List<String> email = new ArrayList<String>();
|
||||
|
||||
try {
|
||||
Uri result = intent.getData();
|
||||
|
@ -20,10 +20,13 @@ import com.fsck.k9.mail.filter.Base64;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.Serializable;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -704,4 +707,23 @@ public class Utility {
|
||||
}
|
||||
return sMainThreadHandler;
|
||||
}
|
||||
|
||||
public static <T> Serializable toSerializableList(List<T> list) {
|
||||
return list instanceof Serializable ?
|
||||
(Serializable) list :
|
||||
new ArrayList<T>(list);
|
||||
}
|
||||
|
||||
public static <T> ArrayList<T> toArrayList(List<T> list) {
|
||||
return list instanceof ArrayList ?
|
||||
(ArrayList<T>) list :
|
||||
new ArrayList<T>(list);
|
||||
}
|
||||
|
||||
|
||||
public static <T,U> Serializable toSerializableConcurrentMap(ConcurrentMap<T,U> list) {
|
||||
return list instanceof ConcurrentHashMap ?
|
||||
(ConcurrentHashMap<T,U>) list :
|
||||
new ConcurrentHashMap<T,U>(list);
|
||||
}
|
||||
}
|
||||
|
@ -315,7 +315,7 @@ public class Address {
|
||||
if (addressList == null) {
|
||||
return new Address[] { };
|
||||
}
|
||||
ArrayList<Address> addresses = new ArrayList<Address>();
|
||||
List<Address> addresses = new ArrayList<Address>();
|
||||
int length = addressList.length();
|
||||
int pairStartIndex = 0;
|
||||
int pairEndIndex = 0;
|
||||
|
@ -13,7 +13,7 @@ import com.fsck.k9.mail.internet.TextBody;
|
||||
public abstract class Multipart implements CompositeBody {
|
||||
private Part mParent;
|
||||
|
||||
private final ArrayList<BodyPart> mParts = new ArrayList<BodyPart>();
|
||||
private final List<BodyPart> mParts = new ArrayList<BodyPart>();
|
||||
|
||||
private String mContentType;
|
||||
|
||||
|
@ -3,7 +3,9 @@ package com.fsck.k9.mail;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
@ -33,19 +35,19 @@ public abstract class Store {
|
||||
/**
|
||||
* Remote stores indexed by Uri.
|
||||
*/
|
||||
private static HashMap<String, Store> sStores = new HashMap<String, Store>();
|
||||
private static Map<String, Store> sStores = new HashMap<String, Store>();
|
||||
|
||||
/**
|
||||
* Local stores indexed by UUID because the Uri may change due to migration to/from SD-card.
|
||||
*/
|
||||
private static ConcurrentHashMap<String, Store> sLocalStores = new ConcurrentHashMap<String, Store>();
|
||||
private static ConcurrentMap<String, Store> sLocalStores = new ConcurrentHashMap<String, Store>();
|
||||
|
||||
/**
|
||||
* Lock objects indexed by account UUID.
|
||||
*
|
||||
* @see #getLocalInstance(Account, Application)
|
||||
*/
|
||||
private static ConcurrentHashMap<String, Object> sAccountLocks = new ConcurrentHashMap<String, Object>();
|
||||
private static ConcurrentMap<String, Object> sAccountLocks = new ConcurrentHashMap<String, Object>();
|
||||
|
||||
/**
|
||||
* Get an instance of a remote mail store.
|
||||
|
@ -36,7 +36,7 @@ public class MimeHeader {
|
||||
HEADER_ANDROID_ATTACHMENT_STORE_DATA
|
||||
};
|
||||
|
||||
private ArrayList<Field> mFields = new ArrayList<Field>();
|
||||
private List<Field> mFields = new ArrayList<Field>();
|
||||
private String mCharset = null;
|
||||
|
||||
public void clear() {
|
||||
@ -72,7 +72,7 @@ public class MimeHeader {
|
||||
}
|
||||
|
||||
public String[] getHeader(String name) {
|
||||
ArrayList<String> values = new ArrayList<String>();
|
||||
List<String> values = new ArrayList<String>();
|
||||
for (Field field : mFields) {
|
||||
if (field.name.equalsIgnoreCase(name)) {
|
||||
values.add(field.value);
|
||||
@ -85,7 +85,7 @@ public class MimeHeader {
|
||||
}
|
||||
|
||||
public void removeHeader(String name) {
|
||||
ArrayList<Field> removeFields = new ArrayList<Field>();
|
||||
List<Field> removeFields = new ArrayList<Field>();
|
||||
for (Field field : mFields) {
|
||||
if (field.name.equalsIgnoreCase(name)) {
|
||||
removeFields.add(field);
|
||||
|
@ -1356,9 +1356,9 @@ public class ImapStore extends Store {
|
||||
private List<Message> search(ImapSearcher searcher, MessageRetrievalListener listener) throws MessagingException {
|
||||
|
||||
checkOpen(); //only need READ access
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
try {
|
||||
ArrayList<Long> uids = new ArrayList<Long>();
|
||||
List<Long> uids = new ArrayList<Long>();
|
||||
List<ImapResponse> responses = searcher.search(); //
|
||||
for (ImapResponse response : responses) {
|
||||
if (response.mTag == null) {
|
||||
@ -1403,11 +1403,11 @@ public class ImapStore extends Store {
|
||||
public Message[] getMessages(String[] uids, MessageRetrievalListener listener)
|
||||
throws MessagingException {
|
||||
checkOpen(); //only need READ access
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
try {
|
||||
if (uids == null) {
|
||||
List<ImapResponse> responses = executeSimpleCommand("UID SEARCH 1:* NOT DELETED");
|
||||
ArrayList<String> tempUids = new ArrayList<String>();
|
||||
List<String> tempUids = new ArrayList<String>();
|
||||
for (ImapResponse response : responses) {
|
||||
if (ImapResponseParser.equalsIgnoreCase(response.get(0), "SEARCH")) {
|
||||
for (int i = 1, count = response.size(); i < count; i++) {
|
||||
@ -1441,7 +1441,7 @@ public class ImapStore extends Store {
|
||||
}
|
||||
checkOpen(); //only need READ access
|
||||
List<String> uids = new ArrayList<String>(messages.length);
|
||||
HashMap<String, Message> messageMap = new HashMap<String, Message>();
|
||||
Map<String, Message> messageMap = new HashMap<String, Message>();
|
||||
for (Message msg : messages) {
|
||||
String uid = msg.getUid();
|
||||
uids.add(uid);
|
||||
@ -2089,7 +2089,7 @@ public class ImapStore extends Store {
|
||||
}
|
||||
|
||||
private String combineFlags(Flag[] flags) {
|
||||
ArrayList<String> flagNames = new ArrayList<String>();
|
||||
List<String> flagNames = new ArrayList<String>();
|
||||
for (Flag flag : flags) {
|
||||
if (flag == Flag.SEEN) {
|
||||
flagNames.add("\\Seen");
|
||||
@ -2733,10 +2733,10 @@ public class ImapStore extends Store {
|
||||
return response;
|
||||
}
|
||||
|
||||
protected ArrayList<ImapResponse> readStatusResponse(String tag,
|
||||
protected List<ImapResponse> readStatusResponse(String tag,
|
||||
String commandToLog, UntaggedHandler untaggedHandler)
|
||||
throws IOException, MessagingException {
|
||||
ArrayList<ImapResponse> responses = new ArrayList<ImapResponse>();
|
||||
List<ImapResponse> responses = new ArrayList<ImapResponse>();
|
||||
ImapResponse response;
|
||||
do {
|
||||
response = mParser.readResponse();
|
||||
@ -3552,9 +3552,9 @@ public class ImapStore extends Store {
|
||||
}
|
||||
|
||||
private static class FetchBodyCallback implements ImapResponseParser.IImapResponseCallback {
|
||||
private HashMap<String, Message> mMessageMap;
|
||||
private Map<String, Message> mMessageMap;
|
||||
|
||||
FetchBodyCallback(HashMap<String, Message> mesageMap) {
|
||||
FetchBodyCallback(Map<String, Message> mesageMap) {
|
||||
mMessageMap = mesageMap;
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ public class Pop3Store extends Store {
|
||||
private String mClientCertificateAlias;
|
||||
private AuthType mAuthType;
|
||||
private ConnectionSecurity mConnectionSecurity;
|
||||
private HashMap<String, Folder> mFolders = new HashMap<String, Folder>();
|
||||
private Map<String, Folder> mFolders = new HashMap<String, Folder>();
|
||||
private Pop3Capabilities mCapabilities;
|
||||
|
||||
/**
|
||||
@ -274,9 +274,9 @@ public class Pop3Store extends Store {
|
||||
private Socket mSocket;
|
||||
private InputStream mIn;
|
||||
private OutputStream mOut;
|
||||
private HashMap<String, Pop3Message> mUidToMsgMap = new HashMap<String, Pop3Message>();
|
||||
private HashMap<Integer, Pop3Message> mMsgNumToMsgMap = new HashMap<Integer, Pop3Message>();
|
||||
private HashMap<String, Integer> mUidToMsgNumMap = new HashMap<String, Integer>();
|
||||
private Map<String, Pop3Message> mUidToMsgMap = new HashMap<String, Pop3Message>();
|
||||
private Map<Integer, Pop3Message> mMsgNumToMsgMap = new HashMap<Integer, Pop3Message>();
|
||||
private Map<String, Integer> mUidToMsgNumMap = new HashMap<String, Integer>();
|
||||
private String mName;
|
||||
private int mMessageCount;
|
||||
|
||||
@ -577,7 +577,7 @@ public class Pop3Store extends Store {
|
||||
} catch (IOException ioe) {
|
||||
throw new MessagingException("getMessages", ioe);
|
||||
}
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
int i = 0;
|
||||
for (int msgNum = start; msgNum <= end; msgNum++) {
|
||||
Pop3Message message = mMsgNumToMsgMap.get(msgNum);
|
||||
@ -686,7 +686,7 @@ public class Pop3Store extends Store {
|
||||
}
|
||||
}
|
||||
|
||||
private void indexUids(ArrayList<String> uids)
|
||||
private void indexUids(List<String> uids)
|
||||
throws MessagingException, IOException {
|
||||
Set<String> unindexedUids = new HashSet<String>();
|
||||
for (String uid : uids) {
|
||||
@ -764,7 +764,7 @@ public class Pop3Store extends Store {
|
||||
if (messages == null || messages.length == 0) {
|
||||
return;
|
||||
}
|
||||
ArrayList<String> uids = new ArrayList<String>();
|
||||
List<String> uids = new ArrayList<String>();
|
||||
for (Message message : messages) {
|
||||
uids.add(message.getUid());
|
||||
}
|
||||
@ -988,7 +988,7 @@ public class Pop3Store extends Store {
|
||||
*/
|
||||
return;
|
||||
}
|
||||
ArrayList<String> uids = new ArrayList<String>();
|
||||
List<String> uids = new ArrayList<String>();
|
||||
try {
|
||||
for (Message message : messages) {
|
||||
uids.add(message.getUid());
|
||||
|
@ -293,7 +293,7 @@ public class WebDavStore extends Store {
|
||||
private String mCachedLoginUrl;
|
||||
|
||||
private Folder mSendFolder = null;
|
||||
private HashMap<String, WebDavFolder> mFolderList = new HashMap<String, WebDavFolder>();
|
||||
private Map<String, WebDavFolder> mFolderList = new HashMap<String, WebDavFolder>();
|
||||
|
||||
|
||||
public WebDavStore(Account account) throws MessagingException {
|
||||
@ -363,7 +363,7 @@ public class WebDavStore extends Store {
|
||||
|
||||
@Override
|
||||
public List <? extends Folder > getPersonalNamespaces(boolean forceListAll) throws MessagingException {
|
||||
LinkedList<Folder> folderList = new LinkedList<Folder>();
|
||||
List<Folder> folderList = new LinkedList<Folder>();
|
||||
/**
|
||||
* We have to check authentication here so we have the proper URL stored
|
||||
*/
|
||||
@ -373,13 +373,13 @@ public class WebDavStore extends Store {
|
||||
* Firstly we get the "special" folders list (inbox, outbox, etc)
|
||||
* and setup the account accordingly
|
||||
*/
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
DataSet dataset = new DataSet();
|
||||
headers.put("Depth", "0");
|
||||
headers.put("Brief", "t");
|
||||
dataset = processRequest(this.mUrl, "PROPFIND", getSpecialFoldersList(), headers);
|
||||
|
||||
HashMap<String, String> specialFoldersMap = dataset.getSpecialFolderToUrl();
|
||||
Map<String, String> specialFoldersMap = dataset.getSpecialFolderToUrl();
|
||||
String folderName = getFolderName(specialFoldersMap.get(DAV_MAIL_INBOX_FOLDER));
|
||||
if (folderName != null) {
|
||||
mAccount.setAutoExpandFolderName(folderName);
|
||||
@ -825,7 +825,7 @@ public class WebDavStore extends Store {
|
||||
request.setMethod("POST");
|
||||
|
||||
// Build the POST data.
|
||||
ArrayList<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
|
||||
List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
|
||||
pairs.add(new BasicNameValuePair("destination", mUrl));
|
||||
pairs.add(new BasicNameValuePair("username", mUsername));
|
||||
pairs.add(new BasicNameValuePair("password", mPassword));
|
||||
@ -1037,7 +1037,7 @@ public class WebDavStore extends Store {
|
||||
}
|
||||
|
||||
private InputStream sendRequest(String url, String method, StringEntity messageBody,
|
||||
HashMap<String, String> headers, boolean tryAuth)
|
||||
Map<String, String> headers, boolean tryAuth)
|
||||
throws MessagingException {
|
||||
InputStream istream = null;
|
||||
|
||||
@ -1115,12 +1115,12 @@ public class WebDavStore extends Store {
|
||||
* not all requests will need them. There are two signatures to support calls that don't require parsing of the
|
||||
* response.
|
||||
*/
|
||||
private DataSet processRequest(String url, String method, String messageBody, HashMap<String, String> headers)
|
||||
private DataSet processRequest(String url, String method, String messageBody, Map<String, String> headers)
|
||||
throws MessagingException {
|
||||
return processRequest(url, method, messageBody, headers, true);
|
||||
}
|
||||
|
||||
private DataSet processRequest(String url, String method, String messageBody, HashMap<String, String> headers,
|
||||
private DataSet processRequest(String url, String method, String messageBody, Map<String, String> headers,
|
||||
boolean needsParsing)
|
||||
throws MessagingException {
|
||||
DataSet dataset = new DataSet();
|
||||
@ -1294,8 +1294,8 @@ public class WebDavStore extends Store {
|
||||
uids[i] = messages[i].getUid();
|
||||
}
|
||||
String messageBody = "";
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
HashMap<String, String> uidToUrl = getMessageUrls(uids);
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> uidToUrl = getMessageUrls(uids);
|
||||
String[] urls = new String[uids.length];
|
||||
|
||||
for (int i = 0, count = uids.length; i < count; i++) {
|
||||
@ -1320,7 +1320,7 @@ public class WebDavStore extends Store {
|
||||
private int getMessageCount(boolean read) throws MessagingException {
|
||||
String isRead;
|
||||
int messageCount = 0;
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String messageBody;
|
||||
|
||||
if (read) {
|
||||
@ -1406,9 +1406,9 @@ public class WebDavStore extends Store {
|
||||
@Override
|
||||
public Message[] getMessages(int start, int end, Date earliestDate, MessageRetrievalListener listener)
|
||||
throws MessagingException {
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
String[] uids;
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
int uidsLength = -1;
|
||||
|
||||
String messageBody;
|
||||
@ -1434,7 +1434,7 @@ public class WebDavStore extends Store {
|
||||
DataSet dataset = processRequest(this.mFolderUrl, "SEARCH", messageBody, headers);
|
||||
|
||||
uids = dataset.getUids();
|
||||
HashMap<String, String> uidToUrl = dataset.getUidToUrl();
|
||||
Map<String, String> uidToUrl = dataset.getUidToUrl();
|
||||
uidsLength = uids.length;
|
||||
|
||||
for (int i = 0; i < uidsLength; i++) {
|
||||
@ -1460,7 +1460,7 @@ public class WebDavStore extends Store {
|
||||
|
||||
@Override
|
||||
public Message[] getMessages(String[] uids, MessageRetrievalListener listener) throws MessagingException {
|
||||
ArrayList<Message> messageList = new ArrayList<Message>();
|
||||
List<Message> messageList = new ArrayList<Message>();
|
||||
Message[] messages;
|
||||
|
||||
if (uids == null ||
|
||||
@ -1485,8 +1485,8 @@ public class WebDavStore extends Store {
|
||||
return messages;
|
||||
}
|
||||
|
||||
private HashMap<String, String> getMessageUrls(String[] uids) throws MessagingException {
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
private Map<String, String> getMessageUrls(String[] uids) throws MessagingException {
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String messageBody;
|
||||
|
||||
/** Retrieve and parse the XML entity for our messages */
|
||||
@ -1494,7 +1494,7 @@ public class WebDavStore extends Store {
|
||||
headers.put("Brief", "t");
|
||||
|
||||
DataSet dataset = processRequest(this.mFolderUrl, "SEARCH", messageBody, headers);
|
||||
HashMap<String, String> uidToUrl = dataset.getUidToUrl();
|
||||
Map<String, String> uidToUrl = dataset.getUidToUrl();
|
||||
|
||||
return uidToUrl;
|
||||
}
|
||||
@ -1650,7 +1650,7 @@ public class WebDavStore extends Store {
|
||||
* we do a series of medium calls instead of one large massive call or a large number of smaller calls.
|
||||
*/
|
||||
private void fetchFlags(Message[] startMessages, MessageRetrievalListener listener) throws MessagingException {
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String messageBody = "";
|
||||
Message[] messages = new Message[20];
|
||||
String[] uids;
|
||||
@ -1689,7 +1689,7 @@ public class WebDavStore extends Store {
|
||||
throw new MessagingException("Data Set from request was null");
|
||||
}
|
||||
|
||||
HashMap<String, Boolean> uidToReadStatus = dataset.getUidToRead();
|
||||
Map<String, Boolean> uidToReadStatus = dataset.getUidToRead();
|
||||
|
||||
for (int i = 0, count = messages.length; i < count; i++) {
|
||||
if (!(messages[i] instanceof WebDavMessage)) {
|
||||
@ -1720,7 +1720,7 @@ public class WebDavStore extends Store {
|
||||
*/
|
||||
private void fetchEnvelope(Message[] startMessages, MessageRetrievalListener listener)
|
||||
throws MessagingException {
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String messageBody = "";
|
||||
String[] uids;
|
||||
Message[] messages = new Message[10];
|
||||
@ -1802,8 +1802,8 @@ public class WebDavStore extends Store {
|
||||
|
||||
private void markServerMessagesRead(String[] uids, boolean read) throws MessagingException {
|
||||
String messageBody = "";
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
HashMap<String, String> uidToUrl = getMessageUrls(uids);
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> uidToUrl = getMessageUrls(uids);
|
||||
String[] urls = new String[uids.length];
|
||||
|
||||
for (int i = 0, count = uids.length; i < count; i++) {
|
||||
@ -1818,10 +1818,10 @@ public class WebDavStore extends Store {
|
||||
}
|
||||
|
||||
private void deleteServerMessages(String[] uids) throws MessagingException {
|
||||
HashMap<String, String> uidToUrl = getMessageUrls(uids);
|
||||
Map<String, String> uidToUrl = getMessageUrls(uids);
|
||||
|
||||
for (String uid : uids) {
|
||||
HashMap<String, String> headers = new HashMap<String, String>();
|
||||
Map<String, String> headers = new HashMap<String, String>();
|
||||
String url = uidToUrl.get(uid);
|
||||
String destinationUrl = generateDeleteUrl(url);
|
||||
|
||||
@ -2005,7 +2005,7 @@ public class WebDavStore extends Store {
|
||||
|
||||
public void setNewHeaders(ParsedMessageEnvelope envelope) throws MessagingException {
|
||||
String[] headers = envelope.getHeaderList();
|
||||
HashMap<String, String> messageHeaders = envelope.getMessageHeaders();
|
||||
Map<String, String> messageHeaders = envelope.getMessageHeaders();
|
||||
|
||||
for (String header : headers) {
|
||||
String headerValue = messageHeaders.get(header);
|
||||
@ -2107,8 +2107,8 @@ public class WebDavStore extends Store {
|
||||
|
||||
private boolean mReadStatus = false;
|
||||
private String mUid = "";
|
||||
private HashMap<String, String> mMessageHeaders = new HashMap<String, String>();
|
||||
private ArrayList<String> mHeaders = new ArrayList<String>();
|
||||
private Map<String, String> mMessageHeaders = new HashMap<String, String>();
|
||||
private List<String> mHeaders = new ArrayList<String>();
|
||||
|
||||
public void addHeader(String field, String value) {
|
||||
String headerName = HEADER_MAPPINGS.get(field);
|
||||
@ -2119,7 +2119,7 @@ public class WebDavStore extends Store {
|
||||
}
|
||||
}
|
||||
|
||||
public HashMap<String, String> getMessageHeaders() {
|
||||
public Map<String, String> getMessageHeaders() {
|
||||
return this.mMessageHeaders;
|
||||
}
|
||||
|
||||
@ -2151,9 +2151,9 @@ public class WebDavStore extends Store {
|
||||
* depending on the accessor calls made.
|
||||
*/
|
||||
public class DataSet {
|
||||
private HashMap<String, HashMap<String, String>> mData = new HashMap<String, HashMap<String, String>>();
|
||||
private Map<String, Map<String, String>> mData = new HashMap<String, Map<String, String>>();
|
||||
private StringBuilder mUid = new StringBuilder();
|
||||
private HashMap<String, String> mTempData = new HashMap<String, String>();
|
||||
private Map<String, String> mTempData = new HashMap<String, String>();
|
||||
|
||||
public void addValue(String value, String tagName) {
|
||||
if (tagName.equals("uid")) {
|
||||
@ -2185,9 +2185,9 @@ public class WebDavStore extends Store {
|
||||
/**
|
||||
* Returns a hashmap of special folder name => special folder url
|
||||
*/
|
||||
public HashMap<String, String> getSpecialFolderToUrl() {
|
||||
public Map<String, String> getSpecialFolderToUrl() {
|
||||
// We return the first (and only) map
|
||||
for (HashMap<String, String> folderMap : mData.values()) {
|
||||
for (Map<String, String> folderMap : mData.values()) {
|
||||
return folderMap;
|
||||
}
|
||||
return new HashMap<String, String>();
|
||||
@ -2196,11 +2196,11 @@ public class WebDavStore extends Store {
|
||||
/**
|
||||
* Returns a hashmap of Message UID => Message Url
|
||||
*/
|
||||
public HashMap<String, String> getUidToUrl() {
|
||||
HashMap<String, String> uidToUrl = new HashMap<String, String>();
|
||||
public Map<String, String> getUidToUrl() {
|
||||
Map<String, String> uidToUrl = new HashMap<String, String>();
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
HashMap<String, String> data = mData.get(uid);
|
||||
Map<String, String> data = mData.get(uid);
|
||||
String value = data.get("href");
|
||||
if (value != null &&
|
||||
!value.equals("")) {
|
||||
@ -2214,11 +2214,11 @@ public class WebDavStore extends Store {
|
||||
/**
|
||||
* Returns a hashmap of Message UID => Read Status
|
||||
*/
|
||||
public HashMap<String, Boolean> getUidToRead() {
|
||||
HashMap<String, Boolean> uidToRead = new HashMap<String, Boolean>();
|
||||
public Map<String, Boolean> getUidToRead() {
|
||||
Map<String, Boolean> uidToRead = new HashMap<String, Boolean>();
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
HashMap<String, String> data = mData.get(uid);
|
||||
Map<String, String> data = mData.get(uid);
|
||||
String readStatus = data.get("read");
|
||||
if (readStatus != null && !readStatus.equals("")) {
|
||||
Boolean value = !readStatus.equals("0");
|
||||
@ -2238,10 +2238,10 @@ public class WebDavStore extends Store {
|
||||
* Returns an array of all hrefs (urls) that were received
|
||||
*/
|
||||
public String[] getHrefs() {
|
||||
ArrayList<String> hrefs = new ArrayList<String>();
|
||||
List<String> hrefs = new ArrayList<String>();
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
HashMap<String, String> data = mData.get(uid);
|
||||
Map<String, String> data = mData.get(uid);
|
||||
String href = data.get("href");
|
||||
hrefs.add(href);
|
||||
}
|
||||
@ -2253,7 +2253,7 @@ public class WebDavStore extends Store {
|
||||
* Return an array of all Message UIDs that were received
|
||||
*/
|
||||
public String[] getUids() {
|
||||
ArrayList<String> uids = new ArrayList<String>();
|
||||
List<String> uids = new ArrayList<String>();
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
uids.add(uid);
|
||||
@ -2274,7 +2274,7 @@ public class WebDavStore extends Store {
|
||||
int messageCount = 0;
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
HashMap<String, String> data = mData.get(uid);
|
||||
Map<String, String> data = mData.get(uid);
|
||||
String count = data.get("visiblecount");
|
||||
|
||||
if (count != null &&
|
||||
@ -2288,14 +2288,14 @@ public class WebDavStore extends Store {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a HashMap of message UID => ParsedMessageEnvelope
|
||||
* Returns a Map of message UID => ParsedMessageEnvelope
|
||||
*/
|
||||
public HashMap<String, ParsedMessageEnvelope> getMessageEnvelopes() {
|
||||
HashMap<String, ParsedMessageEnvelope> envelopes = new HashMap<String, ParsedMessageEnvelope>();
|
||||
public Map<String, ParsedMessageEnvelope> getMessageEnvelopes() {
|
||||
Map<String, ParsedMessageEnvelope> envelopes = new HashMap<String, ParsedMessageEnvelope>();
|
||||
|
||||
for (String uid : mData.keySet()) {
|
||||
ParsedMessageEnvelope envelope = new ParsedMessageEnvelope();
|
||||
HashMap<String, String> data = mData.get(uid);
|
||||
Map<String, String> data = mData.get(uid);
|
||||
|
||||
if (data != null) {
|
||||
for (Map.Entry<String, String> entry : data.entrySet()) {
|
||||
|
@ -48,7 +48,7 @@ public class ImapUtility {
|
||||
* list is returned.
|
||||
*/
|
||||
public static List<String> getImapSequenceValues(String set) {
|
||||
ArrayList<String> list = new ArrayList<String>();
|
||||
List<String> list = new ArrayList<String>();
|
||||
if (set != null) {
|
||||
String[] setItems = set.split(",");
|
||||
for (String item : setItems) {
|
||||
@ -83,7 +83,7 @@ public class ImapUtility {
|
||||
* is returned.
|
||||
*/
|
||||
public static List<String> getImapRangeValues(String range) {
|
||||
ArrayList<String> list = new ArrayList<String>();
|
||||
List<String> list = new ArrayList<String>();
|
||||
try {
|
||||
if (range != null) {
|
||||
int colonPos = range.indexOf(':');
|
||||
|
@ -971,7 +971,7 @@ public class LocalFolder extends Folder implements Serializable {
|
||||
if (uids == null) {
|
||||
return getMessages(listener);
|
||||
}
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
for (String uid : uids) {
|
||||
Message message = getMessage(uid);
|
||||
if (message != null) {
|
||||
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import android.content.ContentValues;
|
||||
@ -492,7 +493,7 @@ public class LocalMessage extends MimeMessage {
|
||||
}
|
||||
|
||||
private void loadHeaders() throws UnavailableStorageException {
|
||||
ArrayList<LocalMessage> messages = new ArrayList<LocalMessage>();
|
||||
List<LocalMessage> messages = new ArrayList<LocalMessage>();
|
||||
messages.add(this);
|
||||
mHeadersLoaded = true; // set true before calling populate headers to stop recursion
|
||||
((LocalFolder) mFolder).populateHeaders(messages);
|
||||
|
@ -425,10 +425,10 @@ public class LocalStore extends Store implements Serializable {
|
||||
});
|
||||
}
|
||||
|
||||
public ArrayList<PendingCommand> getPendingCommands() throws UnavailableStorageException {
|
||||
return database.execute(false, new DbCallback<ArrayList<PendingCommand>>() {
|
||||
public List<PendingCommand> getPendingCommands() throws UnavailableStorageException {
|
||||
return database.execute(false, new DbCallback<List<PendingCommand>>() {
|
||||
@Override
|
||||
public ArrayList<PendingCommand> doDbWork(final SQLiteDatabase db) throws WrappedException {
|
||||
public List<PendingCommand> doDbWork(final SQLiteDatabase db) throws WrappedException {
|
||||
Cursor cursor = null;
|
||||
try {
|
||||
cursor = db.query("pending_commands",
|
||||
@ -438,7 +438,7 @@ public class LocalStore extends Store implements Serializable {
|
||||
null,
|
||||
null,
|
||||
"id ASC");
|
||||
ArrayList<PendingCommand> commands = new ArrayList<PendingCommand>();
|
||||
List<PendingCommand> commands = new ArrayList<PendingCommand>();
|
||||
while (cursor.moveToNext()) {
|
||||
PendingCommand command = new PendingCommand();
|
||||
command.mId = cursor.getLong(0);
|
||||
@ -559,7 +559,7 @@ public class LocalStore extends Store implements Serializable {
|
||||
final LocalFolder folder,
|
||||
final String queryString, final String[] placeHolders
|
||||
) throws MessagingException {
|
||||
final ArrayList<LocalMessage> messages = new ArrayList<LocalMessage>();
|
||||
final List<LocalMessage> messages = new ArrayList<LocalMessage>();
|
||||
final int j = database.execute(false, new DbCallback<Integer>() {
|
||||
@Override
|
||||
public Integer doDbWork(final SQLiteDatabase db) throws WrappedException {
|
||||
|
@ -256,7 +256,7 @@ public class SmtpTransport extends Transport {
|
||||
}
|
||||
}
|
||||
|
||||
HashMap<String,String> extensions = sendHello(localHost);
|
||||
Map<String,String> extensions = sendHello(localHost);
|
||||
|
||||
m8bitEncodingAllowed = extensions.containsKey("8BITMIME");
|
||||
|
||||
@ -419,7 +419,7 @@ public class SmtpTransport extends Transport {
|
||||
* @param host
|
||||
* The EHLO/HELO parameter as defined by the RFC.
|
||||
*
|
||||
* @return A (possibly empty) {@code HashMap<String,String>} of extensions (upper case) and
|
||||
* @return A (possibly empty) {@code Map<String,String>} of extensions (upper case) and
|
||||
* their parameters (possibly 0 length) as returned by the EHLO command
|
||||
*
|
||||
* @throws IOException
|
||||
@ -427,8 +427,8 @@ public class SmtpTransport extends Transport {
|
||||
* @throws MessagingException
|
||||
* In case of a malformed response.
|
||||
*/
|
||||
private HashMap<String,String> sendHello(String host) throws IOException, MessagingException {
|
||||
HashMap<String, String> extensions = new HashMap<String, String>();
|
||||
private Map<String,String> sendHello(String host) throws IOException, MessagingException {
|
||||
Map<String, String> extensions = new HashMap<String, String>();
|
||||
try {
|
||||
List<String> results = executeSimpleCommand("EHLO " + host);
|
||||
// Remove the EHLO greeting response
|
||||
@ -453,7 +453,7 @@ public class SmtpTransport extends Transport {
|
||||
|
||||
@Override
|
||||
public void sendMessage(Message message) throws MessagingException {
|
||||
ArrayList<Address> addresses = new ArrayList<Address>();
|
||||
List<Address> addresses = new ArrayList<Address>();
|
||||
{
|
||||
addresses.addAll(Arrays.asList(message.getRecipients(RecipientType.TO)));
|
||||
addresses.addAll(Arrays.asList(message.getRecipients(RecipientType.CC)));
|
||||
@ -461,12 +461,12 @@ public class SmtpTransport extends Transport {
|
||||
}
|
||||
message.setRecipients(RecipientType.BCC, null);
|
||||
|
||||
HashMap<String, ArrayList<String>> charsetAddressesMap =
|
||||
new HashMap<String, ArrayList<String>>();
|
||||
Map<String, List<String>> charsetAddressesMap =
|
||||
new HashMap<String, List<String>>();
|
||||
for (Address address : addresses) {
|
||||
String addressString = address.getAddress();
|
||||
String charset = MimeUtility.getCharsetFromAddress(addressString);
|
||||
ArrayList<String> addressesOfCharset = charsetAddressesMap.get(charset);
|
||||
List<String> addressesOfCharset = charsetAddressesMap.get(charset);
|
||||
if (addressesOfCharset == null) {
|
||||
addressesOfCharset = new ArrayList<String>();
|
||||
charsetAddressesMap.put(charset, addressesOfCharset);
|
||||
@ -474,16 +474,16 @@ public class SmtpTransport extends Transport {
|
||||
addressesOfCharset.add(addressString);
|
||||
}
|
||||
|
||||
for (Map.Entry<String, ArrayList<String>> charsetAddressesMapEntry :
|
||||
for (Map.Entry<String, List<String>> charsetAddressesMapEntry :
|
||||
charsetAddressesMap.entrySet()) {
|
||||
String charset = charsetAddressesMapEntry.getKey();
|
||||
ArrayList<String> addressesOfCharset = charsetAddressesMapEntry.getValue();
|
||||
List<String> addressesOfCharset = charsetAddressesMapEntry.getValue();
|
||||
message.setCharset(charset);
|
||||
sendMessageTo(addressesOfCharset, message);
|
||||
}
|
||||
}
|
||||
|
||||
private void sendMessageTo(ArrayList<String> addresses, Message message)
|
||||
private void sendMessageTo(List<String> addresses, Message message)
|
||||
throws MessagingException {
|
||||
boolean possibleSend = false;
|
||||
|
||||
|
@ -5,14 +5,15 @@ import com.fsck.k9.K9;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
public class Editor implements android.content.SharedPreferences.Editor {
|
||||
private Storage storage;
|
||||
private HashMap<String, String> changes = new HashMap<String, String>();
|
||||
private ArrayList<String> removals = new ArrayList<String>();
|
||||
private Map<String, String> changes = new HashMap<String, String>();
|
||||
private List<String> removals = new ArrayList<String>();
|
||||
private boolean removeAll = false;
|
||||
|
||||
Map<String, String> snapshot = new HashMap<String, String>();
|
||||
|
@ -15,16 +15,18 @@ import com.fsck.k9.helper.Utility;
|
||||
import java.net.URI;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class Storage implements SharedPreferences {
|
||||
private static ConcurrentHashMap<Context, Storage> storages =
|
||||
private static ConcurrentMap<Context, Storage> storages =
|
||||
new ConcurrentHashMap<Context, Storage>();
|
||||
|
||||
private volatile ConcurrentHashMap<String, String> storage = new ConcurrentHashMap<String, String>();
|
||||
private volatile ConcurrentMap<String, String> storage = new ConcurrentHashMap<String, String>();
|
||||
|
||||
private CopyOnWriteArrayList<OnSharedPreferenceChangeListener> listeners =
|
||||
new CopyOnWriteArrayList<OnSharedPreferenceChangeListener>();
|
||||
@ -32,11 +34,11 @@ public class Storage implements SharedPreferences {
|
||||
private int DB_VERSION = 2;
|
||||
private String DB_NAME = "preferences_storage";
|
||||
|
||||
private ThreadLocal<ConcurrentHashMap<String, String>> workingStorage
|
||||
= new ThreadLocal<ConcurrentHashMap<String, String>>();
|
||||
private ThreadLocal<ConcurrentMap<String, String>> workingStorage
|
||||
= new ThreadLocal<ConcurrentMap<String, String>>();
|
||||
private ThreadLocal<SQLiteDatabase> workingDB =
|
||||
new ThreadLocal<SQLiteDatabase>();
|
||||
private ThreadLocal<ArrayList<String>> workingChangedKeys = new ThreadLocal<ArrayList<String>>();
|
||||
private ThreadLocal<List<String>> workingChangedKeys = new ThreadLocal<List<String>>();
|
||||
|
||||
|
||||
private Context context = null;
|
||||
@ -202,7 +204,7 @@ public class Storage implements SharedPreferences {
|
||||
}
|
||||
|
||||
private void keyChange(String key) {
|
||||
ArrayList<String> changedKeys = workingChangedKeys.get();
|
||||
List<String> changedKeys = workingChangedKeys.get();
|
||||
if (!changedKeys.contains(key)) {
|
||||
changedKeys.add(key);
|
||||
}
|
||||
@ -259,14 +261,14 @@ public class Storage implements SharedPreferences {
|
||||
}
|
||||
|
||||
protected void doInTransaction(Runnable dbWork) {
|
||||
ConcurrentHashMap<String, String> newStorage = new ConcurrentHashMap<String, String>();
|
||||
ConcurrentMap<String, String> newStorage = new ConcurrentHashMap<String, String>();
|
||||
newStorage.putAll(storage);
|
||||
workingStorage.set(newStorage);
|
||||
|
||||
SQLiteDatabase mDb = openDB();
|
||||
workingDB.set(mDb);
|
||||
|
||||
ArrayList<String> changedKeys = new ArrayList<String>();
|
||||
List<String> changedKeys = new ArrayList<String>();
|
||||
workingChangedKeys.set(changedKeys);
|
||||
|
||||
mDb.beginTransaction();
|
||||
@ -294,7 +296,11 @@ public class Storage implements SharedPreferences {
|
||||
|
||||
//@Override
|
||||
public boolean contains(String key) {
|
||||
return storage.contains(key);
|
||||
// TODO this used to be ConcurrentHashMap#contains which is
|
||||
// actually containsValue. But looking at the usage of this method,
|
||||
// it's clear that containsKey is what's intended. Investigate if this
|
||||
// was a bug previously. Looks like it was only used once, when upgrading
|
||||
return storage.containsKey(key);
|
||||
}
|
||||
|
||||
//@Override
|
||||
|
@ -256,7 +256,7 @@ public class ConditionsTreeNode implements Parcelable {
|
||||
* @return List of all nodes in subtree in preorder.
|
||||
*/
|
||||
public List<ConditionsTreeNode> preorder() {
|
||||
ArrayList<ConditionsTreeNode> result = new ArrayList<ConditionsTreeNode>();
|
||||
List<ConditionsTreeNode> result = new ArrayList<ConditionsTreeNode>();
|
||||
Stack<ConditionsTreeNode> stack = new Stack<ConditionsTreeNode>();
|
||||
stack.push(this);
|
||||
|
||||
|
@ -252,7 +252,7 @@ public class LocalSearch implements SearchSpecification {
|
||||
* real searches because of possible extra conditions to a folder requirement.
|
||||
*/
|
||||
public List<String> getFolderNames() {
|
||||
ArrayList<String> results = new ArrayList<String>();
|
||||
List<String> results = new ArrayList<String>();
|
||||
for (ConditionsTreeNode node : mLeafSet) {
|
||||
if (node.mCondition.field == Searchfield.FOLDER &&
|
||||
node.mCondition.attribute == Attribute.EQUALS) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.fsck.k9.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fsck.k9.Account;
|
||||
import com.fsck.k9.K9;
|
||||
@ -8,6 +9,7 @@ import com.fsck.k9.Preferences;
|
||||
import com.fsck.k9.activity.MessageCompose;
|
||||
import com.fsck.k9.activity.MessageReference;
|
||||
import com.fsck.k9.controller.MessagingController;
|
||||
import com.fsck.k9.helper.Utility;
|
||||
import com.fsck.k9.mail.Flag;
|
||||
import com.fsck.k9.mail.Message;
|
||||
|
||||
@ -36,12 +38,12 @@ public class NotificationActionService extends CoreService {
|
||||
}
|
||||
|
||||
public static PendingIntent getReadAllMessagesIntent(Context context, final Account account,
|
||||
final ArrayList<MessageReference> refs) {
|
||||
final List<MessageReference> refs) {
|
||||
Intent i = new Intent(context, NotificationActionService.class);
|
||||
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, refs);
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, Utility.toSerializableList(refs));
|
||||
i.setAction(READ_ALL_ACTION);
|
||||
|
||||
|
||||
return PendingIntent.getService(context, account.getAccountNumber(), i, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
}
|
||||
|
||||
@ -54,10 +56,10 @@ public class NotificationActionService extends CoreService {
|
||||
}
|
||||
|
||||
public static Intent getDeleteAllMessagesIntent(Context context, final Account account,
|
||||
final ArrayList<MessageReference> refs) {
|
||||
final List<MessageReference> refs) {
|
||||
Intent i = new Intent(context, NotificationActionService.class);
|
||||
i.putExtra(EXTRA_ACCOUNT, account.getUuid());
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, refs);
|
||||
i.putExtra(EXTRA_MESSAGE_LIST, Utility.toSerializableList(refs));
|
||||
i.setAction(DELETE_ALL_ACTION);
|
||||
|
||||
return i;
|
||||
@ -77,7 +79,7 @@ public class NotificationActionService extends CoreService {
|
||||
if (K9.DEBUG)
|
||||
Log.i(K9.LOG_TAG, "NotificationActionService marking messages as read");
|
||||
|
||||
ArrayList<MessageReference> refs =
|
||||
List<MessageReference> refs =
|
||||
intent.getParcelableArrayListExtra(EXTRA_MESSAGE_LIST);
|
||||
for (MessageReference ref : refs) {
|
||||
controller.setFlag(account, ref.folderName, ref.uid, Flag.SEEN, true);
|
||||
@ -86,9 +88,9 @@ public class NotificationActionService extends CoreService {
|
||||
if (K9.DEBUG)
|
||||
Log.i(K9.LOG_TAG, "NotificationActionService deleting messages");
|
||||
|
||||
ArrayList<MessageReference> refs =
|
||||
List<MessageReference> refs =
|
||||
intent.getParcelableArrayListExtra(EXTRA_MESSAGE_LIST);
|
||||
ArrayList<Message> messages = new ArrayList<Message>();
|
||||
List<Message> messages = new ArrayList<Message>();
|
||||
|
||||
for (MessageReference ref : refs) {
|
||||
Message m = ref.restoreToLocalMessage(this);
|
||||
@ -121,7 +123,7 @@ public class NotificationActionService extends CoreService {
|
||||
} else {
|
||||
Log.w(K9.LOG_TAG, "Could not find account for notification action.");
|
||||
}
|
||||
|
||||
|
||||
return START_NOT_STICKY;
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import com.fsck.k9.helper.power.TracingPowerManager;
|
||||
import com.fsck.k9.helper.power.TracingPowerManager.TracingWakeLock;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PollService extends CoreService {
|
||||
private static String START_SERVICE = "com.fsck.k9.service.PollService.startService";
|
||||
@ -77,7 +78,7 @@ public class PollService extends CoreService {
|
||||
}
|
||||
|
||||
class Listener extends MessagingListener {
|
||||
HashMap<String, Integer> accountsChecked = new HashMap<String, Integer>();
|
||||
Map<String, Integer> accountsChecked = new HashMap<String, Integer>();
|
||||
private TracingWakeLock wakeLock = null;
|
||||
private int startId = -1;
|
||||
|
||||
|
@ -28,6 +28,7 @@ import android.webkit.WebView;
|
||||
import android.widget.ScrollView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A {@link ScrollView} that will never lock scrolling in a particular direction.
|
||||
@ -59,7 +60,7 @@ public class NonLockingScrollView extends ScrollView {
|
||||
/**
|
||||
* The list of children who should always receive touch events, and not have them intercepted.
|
||||
*/
|
||||
private final ArrayList<View> mChildrenNeedingAllTouches = new ArrayList<View>();
|
||||
private final List<View> mChildrenNeedingAllTouches = new ArrayList<View>();
|
||||
|
||||
private boolean mSkipWebViewScroll = true;
|
||||
|
||||
@ -122,7 +123,7 @@ public class NonLockingScrollView extends ScrollView {
|
||||
}
|
||||
|
||||
private final Rect sHitFrame = new Rect();
|
||||
private boolean isEventOverChild(MotionEvent ev, ArrayList<View> children) {
|
||||
private boolean isEventOverChild(MotionEvent ev, List<View> children) {
|
||||
final int actionIndex = ev.getActionIndex();
|
||||
final float x = ev.getX(actionIndex) + getScrollX();
|
||||
final float y = ev.getY(actionIndex) + getScrollY();
|
||||
|
Loading…
Reference in New Issue
Block a user