Skip to content

Commit

Permalink
fix: Unable to open multiple files with invalid links
Browse files Browse the repository at this point in the history
Clicking to confirm the deletion of invalid links will delete all files and prevent them from opening properly

Log: Open multiple files normally, open other files, delete only invalid links
Bug: https://pms.uniontech.com/bug-view-259909.html
  • Loading branch information
yang233000 committed Jun 25, 2024
1 parent 59e7bb3 commit e30061d
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 5 deletions.
7 changes: 7 additions & 0 deletions src/dfm-base/file/local/localfilehandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ bool LocalFileHandler::openFiles(const QList<QUrl> &fileUrls)

for (QUrl &fileUrl : urls) {
FileInfoPointer fileInfo = InfoFactory::create<FileInfo>(fileUrl);
QUrl sourceUrl = fileUrl;
QStringList targetList;
targetList.append(fileUrl.path());
FileInfoPointer fileInfoLink = fileInfo;
Expand All @@ -304,6 +305,7 @@ bool LocalFileHandler::openFiles(const QList<QUrl> &fileUrls)
d->lastEvent = DialogManagerInstance->showBreakSymlinkDialog(fileInfoLink->nameOf(
NameInfoType::kFileName),
fileInfo->urlOf(UrlInfoType::kUrl));
d->invalidPath << sourceUrl;
return d->lastEvent == DFMBASE_NAMESPACE::GlobalEventType::kUnknowType;
}
}
Expand Down Expand Up @@ -1206,6 +1208,11 @@ DFMIOErrorCode LocalFileHandler::errorCode()
return d->lastError.code();
}

QList<QUrl> LocalFileHandler::getInvalidPath()
{
return d->invalidPath;
}

GlobalEventType LocalFileHandler::lastEventType()
{
return d->lastEvent;
Expand Down
5 changes: 3 additions & 2 deletions src/dfm-base/file/local/localfilehandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,15 @@ class LocalFileHandler
bool deleteFile(const QUrl &url);
bool deleteFileRecursive(const QUrl &url);
bool setFileTime(const QUrl &url, const QDateTime &accessDateTime, const QDateTime &lastModifiedTime);

bool geturl();
bool renameFilesBatch(const QMap<QUrl, QUrl> &urls, QMap<QUrl, QUrl> &successUrls);
bool doHiddenFileRemind(const QString &name, bool *checkRule = nullptr);

QString defaultTerminalPath();
GlobalEventType lastEventType();
QString errorString();
DFMIOErrorCode errorCode();
QList<QUrl> getInvalidPath();


private:
QScopedPointer<LocalFileHandlerPrivate> d;
Expand Down
1 change: 1 addition & 0 deletions src/dfm-base/file/local/localfilehandler_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class LocalFileHandlerPrivate
LocalFileHandler *q { nullptr };
DFMIOError lastError;
GlobalEventType lastEvent = GlobalEventType::kUnknowType;
QList<QUrl> invalidPath;
};

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -869,12 +869,12 @@ bool FileOperationsEventReceiver::handleOperationOpenFiles(const quint64 windowI
DFMBASE_NAMESPACE::GlobalEventType lastEvent = fileHandler.lastEventType();
if (lastEvent != DFMBASE_NAMESPACE::GlobalEventType::kUnknowType) {
if (lastEvent == DFMBASE_NAMESPACE::GlobalEventType::kDeleteFiles)
dpfSignalDispatcher->publish(DFMBASE_NAMESPACE::GlobalEventType::kDeleteFiles, windowId, urls, AbstractJobHandler::JobFlag::kNoHint, nullptr);
dpfSignalDispatcher->publish(DFMBASE_NAMESPACE::GlobalEventType::kDeleteFiles, windowId, fileHandler.getInvalidPath(), AbstractJobHandler::JobFlag::kNoHint, nullptr);
else if (lastEvent == DFMBASE_NAMESPACE::GlobalEventType::kMoveToTrash)
dpfSignalDispatcher->publish(DFMBASE_NAMESPACE::GlobalEventType::kMoveToTrash, windowId, urls, AbstractJobHandler::JobFlag::kNoHint, nullptr);
dpfSignalDispatcher->publish(DFMBASE_NAMESPACE::GlobalEventType::kMoveToTrash, windowId, fileHandler.getInvalidPath(), AbstractJobHandler::JobFlag::kNoHint, nullptr);
} else {
// deal open file with custom dialog
dpfSlotChannel->push("dfmplugin_utils", "slot_OpenWith_ShowDialog", windowId, urls);
dpfSlotChannel->push("dfmplugin_utils", "slot_OpenWith_ShowDialog", windowId, fileHandler.getInvalidPath());
ok = true;
}
}
Expand Down

0 comments on commit e30061d

Please sign in to comment.