/** * Constructs an actual list for this Adapter using {@link #mEntryMap}. Also tries to fetch a * cached photo for each contact entry (other than separators), or request another thread to get * one from directories. */ private List<RecipientEntry> constructEntryList( LinkedHashMap<Long, List<RecipientEntry>> entryMap, List<RecipientEntry> nonAggregatedEntries) { final List<RecipientEntry> entries = new ArrayList<RecipientEntry>(); int validEntryCount = 0; for (Map.Entry<Long, List<RecipientEntry>> mapEntry : entryMap.entrySet()) { final List<RecipientEntry> entryList = mapEntry.getValue(); final int size = entryList.size(); for (int i = 0; i < size; i++) { RecipientEntry entry = entryList.get(i); entries.add(entry); mPhotoManager.populatePhotoBytesAsync(entry, this); if (entry.getDestinationType() != SUGGESTED_ENTRY_DESTINATION_TYPE) { // Will trim array later validEntryCount++; } } if (validEntryCount > mPreferredMaxResultCount) { break; } } if (validEntryCount <= mPreferredMaxResultCount) { for (RecipientEntry entry : nonAggregatedEntries) { if (validEntryCount > mPreferredMaxResultCount) { break; } entries.add(entry); mPhotoManager.populatePhotoBytesAsync(entry, this); validEntryCount++; } } // Now remove suggestion entries (present in local or external directories) for (int i = entries.size() - 1; i >= 0; i--) { RecipientEntry e1 = entries.get(i); if (e1.getDestination() == null) { continue; } for (int j = i - 1; j >= 0; j--) { RecipientEntry e2 = entries.get(j); if (e2.getDestination() == null) { continue; } if (e1.getDestination().equals(e2.getDestination())) { entries.remove(j); } } } if (entries.size() > mPreferredMaxResultCount) { return entries.subList(0, mPreferredMaxResultCount); } return entries; }
public void test1() { File f = new File("baseDir"); f = new File(f, "000\\000\\012\\345"); assertEquals(f, photoManager.getEntityDir((long) 12345)); }
protected void fetchPhoto(final RecipientEntry entry, PhotoManager.PhotoManagerCallback cb) { mPhotoManager.populatePhotoBytesAsync(entry, cb); }
@Override protected void setUp() throws Exception { super.setUp(); photoManager = new PhotoManager(); photoManager.setBaseDir("baseDir"); }