private boolean parseZipFileGpxContent(final GPXParser parser, final Predicate<String> filenameMatcher, final int importStep, final @StringRes int stepText) throws IOException, ParserException {
        final ZipArchiveInputStream zisPass = new ZipArchiveInputStream(new BufferedInputStream(getInputStream()), ENCODING);
        try {
            int acceptedFiles = 0;
            int ignoredFiles = 0;
            for (ZipEntry zipEntry = zisPass.getNextZipEntry(); zipEntry != null; zipEntry = zisPass.getNextZipEntry()) {
                gpxFileName = zipEntry.getName();
                if (StringUtils.endsWithIgnoreCase(gpxFileName, FileUtils.GPX_FILE_EXTENSION)) {
                    if (filenameMatcher.test(gpxFileName)) {
                        final long size = zipEntry.getSize();
                        importStepHandler.sendMessage(importStepHandler.obtainMessage(importStep, stepText, (int) (size == -1 ? getZipFileSize(gpxFileName) : size), getSourceDisplayName()));
                        caches = parser.parse(new NoCloseInputStream(zisPass), progressHandler);
                        acceptedFiles++;
                    }
                } else {
                    ignoredFiles++;
                }
            }
            if (ignoredFiles == 0 || acceptedFiles > 0) {
                return true;
            }
        } finally {
            IOUtils.closeQuietly(zisPass);
        }
        return false;
    }
parse the zip archive for GPX files which match the criteria given in the filename matcher

@param parser          the GPXParser object
@param filenameMatcher pass true if the GPX file should be progressed in this run
@param importStep      the GPXImporter step
@param stepText        the description @StringRes which should be displayed
@return true if at least one file is a GPX
main/src/main/java/cgeo/geocaching/files/AbstractImportGpxZipThread.java