diff --git a/panels/dock/taskmanager/taskmanager.cpp b/panels/dock/taskmanager/taskmanager.cpp index befc9df87..9cc19b09d 100644 --- a/panels/dock/taskmanager/taskmanager.cpp +++ b/panels/dock/taskmanager/taskmanager.cpp @@ -23,6 +23,8 @@ #include #include +#include +#include #include @@ -269,6 +271,13 @@ void TaskManager::handleWindowAdded(QPointer window) void TaskManager::dropFilesOnItem(const QString& itemId, const QStringList& urls) { + if (itemId == "dde-trash") { + qCDebug(taskManagerLog) << "dropFilesOnItem: dde-trash - moving files to trash:" << urls; + // 将文件移动到回收站 + moveFilesToTrash(urls); + return; + } + auto indexes = m_itemModel->match(m_itemModel->index(0, 0), TaskManager::ItemIdRole, itemId, 1, Qt::MatchExactly); if (indexes.isEmpty()) { return; @@ -282,6 +291,20 @@ void TaskManager::dropFilesOnItem(const QString& itemId, const QStringList& urls m_itemModel->requestOpenUrls(indexes.first(), urlList); } +void TaskManager::moveFilesToTrash(const QStringList& urls) +{ + // 将文件路径转换为本地路径并移动到回收站 + for (const QString& urlString : urls) { + QUrl url(urlString); + QString filePath = url.toLocalFile(); + if (DTrashManager::instance()->moveToTrash(filePath)) { + qCDebug(taskManagerLog) << "Successfully moved to trash:" << filePath; + } else { + qCWarning(taskManagerLog) << "Failed to move to trash:" << filePath; + } + } +} + void TaskManager::hideItemPreview() { m_windowMonitor->hideItemPreview(); diff --git a/panels/dock/taskmanager/taskmanager.h b/panels/dock/taskmanager/taskmanager.h index 145aad4d2..2fa3a4b1f 100644 --- a/panels/dock/taskmanager/taskmanager.h +++ b/panels/dock/taskmanager/taskmanager.h @@ -97,6 +97,9 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage Q_INVOKABLE void activateWindow(uint32_t windowID); Q_INVOKABLE void saveDockElementsOrder(const QStringList &appIds); +private: + void moveFilesToTrash(const QStringList& urls); + Q_SIGNALS: void dataModelChanged(); void windowSplitChanged();