anchor.diff:  
   
   { ===== TAbListItem ========================================================= }
  +function TAbListItem.GetIsDirectory: Boolean;
  +begin
  +  Result := (ArchiveItem = nil) or ArchiveItem.IsDirectory;
  +end;
  +{ -------------------------------------------------------------------------- }
   function TAbListItem.GetIsEncrypted: Boolean;
   begin
     Result := (ArchiveItem <> nil) and ArchiveItem.IsEncrypted;
  
positive.code: { -------------------------------------------------------------------------- }
  procedure TAbCustomListView.UpdateView;
  var
    Col: TAbViewColumn;
    CurItem: TAbArchiveItem;
    DOSAttr: Integer;
    i: Integer;
    Item: TAbListItem;
    Filename, ColText: string;
    ColImage: Integer;
    sfi: SHFILEINFO;
  begin
    if (Items.Count = 0) and (FArchive = nil) then
      Exit;
    Items.BeginUpdate;
    try
      Items.Clear;
      if Assigned(FArchive) then begin
        for i := 0 to FArchive.Count - 1 do
          if FArchive[i].Action <> aaDelete then begin
            CurItem := FArchive[i];
            Filename := AbNormalizeFilename(CurItem.FileName);
            // Exclude unwanted items
            if FlatList then begin
              if CurItem.IsDirectory then
                Continue;
            end
            else if Path <> ExtractFileDir(Filename) then
              Continue;
            // Get file type information from the shell
            if CurItem.IsDirectory then
              DOSAttr := FILE_ATTRIBUTE_DIRECTORY
            else
              DOSAttr := FILE_ATTRIBUTE_NORMAL;
            SHGetFileInfo(PChar(ExtractFileName(Filename)), DOSAttr, sfi, sizeof(sfi),
              SHGFI_TYPENAME or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);
            // Create new item
            Item := Items.Add as TAbListItem;
            Item.ArchiveItem := FArchive[i];
            Item.IsDirectory := CurItem.IsDirectory;
            // Fill in columns
            Item.Caption := ExtractFileName(Filename);
            Item.ImageIndex := sfi.iIcon;
            Item.SubItems.Clear;
            for Col := Succ(Low(Col)) to High(Col) do
              if Col in FVisibleColumns then begin
                ColText := '';
                ColImage := -1;
                case Col of
                  vcFileType:
                    ColText := sfi.szTypeName;
                  vcLastModified:
                    ColText := FormatDateTime(ShortDateFormat + ' ' + LongTimeFormat,
                      CurItem.LastModTimeAsDateTime);
                  vcSize:
                    if not CurItem.IsDirectory then
                      ColText := FormatFloat('#,##0', CurItem.UncompressedSize);
                  vcRatio:
                    if not CurItem.IsDirectory then
                      if CurItem.UncompressedSize > 0 then
                        ColText := Format('%d%%',
                          [100 - Round(CurItem.CompressedSize * 100 / CurItem.UncompressedSize)])
                      else
                        ColText := '0%';
                  vcPacked:
                    if not CurItem.IsDirectory then
                      ColText := FormatFloat('#,##0', CurItem.CompressedSize);
                  vcCRC:
                    if not CurItem.IsDirectory then
                      ColText := IntToHex(CurItem.CRC32, 8);
                  vcAttributes:
                    begin
                      {$WARN SYMBOL_PLATFORM OFF}
                      if (faReadOnly and CurItem.ExternalFileAttributes) = faReadOnly then
                        ColText := ColText + AbReadOnlyS;
                      if (faHidden and CurItem.ExternalFileAttributes) = faHidden then
                        ColText := ColText + AbHiddenS;
                      if (faSysFile and CurItem.ExternalFileAttributes) = faSysFile then
                        ColText := ColText + AbSystemS;
                      if (faArchive and CurItem.ExternalFileAttributes) = faArchive then
                        ColText := ColText + AbArchivedS;
                      {$WARN SYMBOL_PLATFORM ON}
                    end;
                  vcEncrypted:
                    if CurItem.IsEncrypted then
                      ColText := '+';
                  vcMethod:
                    if CurItem is TAbZipItem then
                      ColText := ZipCompressionMethodToString(
                        TAbZipItem(CurItem).CompressionMethod);
                  vcPath:
                    ColText := ExtractFileDir(FileName);
                end;
                Item.SubItems.Add(ColText);
                Item.SubItemImages[Item.SubItems.Count - 1] := ColImage;
              end;
          end;
        CustomSort(TLVCompare(@TAbCustomListView.SortProc), LPARAM(Self));
      end;
  
negative.code: {*   only show items in the selected folder.             *}
  {*********************************************************}
  //TODO: Add to AbbreviaVCL packages
  //TODO: Tighten up component cooperation
  unit AbComCtrls;
  
  