/**
   * 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;
  }
Esempio n. 2
0
 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);
 }
Esempio n. 4
0
 @Override
 protected void setUp() throws Exception {
   super.setUp();
   photoManager = new PhotoManager();
   photoManager.setBaseDir("baseDir");
 }