/* ============================================================ * SPDX-License-Identifier: GPL-3.0-only * Copyright (C) 2023 aqua * ============================================================ */ #include "fsview.hpp" #include #include FSView::FSView(QWidget *parent) : QTreeView(parent), model{new QFileSystemModel} { setModel(model); setRootPath(QDir::homePath()); connect(this, &QWidget::customContextMenuRequested, this, &FSView::contextMenu); setContextMenuPolicy(Qt::CustomContextMenu); } FSView::~FSView() { delete model; } void FSView::setRootPath(const QString &path) { model->setRootPath(path); setRootIndex(model->index(path)); } void FSView::contextMenu(const QPoint &pos) { const auto idx = indexAt(pos); if (idx.isValid()) { QMenu menu; if (model->isDir(idx)) { menu.addAction(tr("Set as root"), this, [this, idx]() { const auto path = model->filePath(idx); qDebug() << "set root path" << path; model->setRootPath(path); setRootIndex(idx); }); } else { menu.addAction(tr("Add to Playlist"), this, [this, idx]() { const auto url = QUrl::fromLocalFile(model->filePath(idx)); emit addLocalFile(url); }); } menu.exec(mapToGlobal(pos)); } }