bool CFileListView::eventFilter(QObject* target, QEvent* event) { QHeaderView * headerView = header(); if (target == headerView && event && event->type() == QEvent::Resize && headerView->count() == NumberOfColumns) { auto resizeEvent = dynamic_cast<QResizeEvent*>(event); assert_and_return_r(resizeEvent, false); float oldHeaderWidth = 0.0f; for (int i = 0; i < headerView->count(); ++i) oldHeaderWidth += (float)headerView->sectionSize(i); const float newHeaderWidth = (float)resizeEvent->size().width(); if (oldHeaderWidth <= 0.0f || newHeaderWidth <= 0.0f || oldHeaderWidth == newHeaderWidth) return false; std::vector<float> relativeColumnSizes(NumberOfColumns, 0.0f); for (int i = 0; i < headerView->count(); ++i) relativeColumnSizes[i] = headerView->sectionSize(i) / oldHeaderWidth; for (int i = 0; i < headerView->count(); ++i) headerView->resizeSection(i, (int)(newHeaderWidth * relativeColumnSizes[i] + 0.5f)); return false; } return QTreeView::eventFilter(target, event); }
bool CFileSystemWatcher::setPathToWatch(const QString& path) { std::lock_guard<std::recursive_mutex> locker(_pathMutex); assert_and_return_r(path.isEmpty() || QFileInfo(path).isDir(), false); _pathToWatch = path; return true; }
// Returns true if this object is a child of parent, either direct or indirect bool CFileSystemObject::isChildOf(const CFileSystemObject &parent) const { if (!isValid() || !parent.isValid()) return false; if (fullAbsolutePath().startsWith(parent.fullAbsolutePath(), caseSensitiveFilesystem() ? Qt::CaseSensitive : Qt::CaseInsensitive)) return true; if (!isSymLink() && !parent.isSymLink()) return false; const auto resolvedChildLink = isSymLink() ? symLinkTarget() : fullAbsolutePath(); const auto resolvedParentLink = parent.isSymLink() ? parent.symLinkTarget() : parent.fullAbsolutePath(); assert_and_return_r(!resolvedChildLink.isEmpty() && !resolvedParentLink.isEmpty(), false); return resolvedChildLink.startsWith(resolvedParentLink, caseSensitiveFilesystem() ? Qt::CaseSensitive : Qt::CaseInsensitive); }