mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 00:24:13 +02:00
fix openDirectory
This commit is contained in:
parent
31b3f0e8f1
commit
0e4ea4aff2
4 changed files with 29 additions and 8 deletions
|
@ -2443,6 +2443,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
|||
DependencyManager::get<TabletScriptingInterface>()->preloadSounds();
|
||||
DependencyManager::get<Keyboard>()->createKeyboard();
|
||||
|
||||
FileDialogHelper::setOpenDirectoryOperator([this](const QString& path) { openDirectory(path); });
|
||||
QDesktopServices::setUrlHandler("file", this, "showUrlHandler");
|
||||
QDesktopServices::setUrlHandler("", this, "showUrlHandler");
|
||||
auto drives = QDir::drives();
|
||||
|
@ -9272,6 +9273,26 @@ QString Application::getGraphicsCardType() {
|
|||
return GPUIdent::getInstance()->getName();
|
||||
}
|
||||
|
||||
void Application::openDirectory(const QString& path) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "openDirectory", Q_ARG(const QString&, path));
|
||||
return;
|
||||
}
|
||||
|
||||
QString dirPath = path;
|
||||
const QString FILE_SCHEME = "file:///";
|
||||
if (dirPath.startsWith(FILE_SCHEME)) {
|
||||
dirPath.remove(0, FILE_SCHEME.length());
|
||||
}
|
||||
QFileInfo fileInfo(dirPath);
|
||||
if (fileInfo.isDir()) {
|
||||
auto scheme = QUrl(path).scheme();
|
||||
QDesktopServices::unsetUrlHandler(scheme);
|
||||
QDesktopServices::openUrl(path);
|
||||
QDesktopServices::setUrlHandler(scheme, this, "showUrlHandler");
|
||||
}
|
||||
}
|
||||
|
||||
void Application::showUrlHandler(const QUrl& url) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
QMetaObject::invokeMethod(this, "showUrlHandler", Q_ARG(const QUrl&, url));
|
||||
|
|
|
@ -345,6 +345,8 @@ public:
|
|||
void toggleAwayMode();
|
||||
#endif
|
||||
|
||||
void openDirectory(const QString& path);
|
||||
|
||||
signals:
|
||||
void svoImportRequested(const QString& url);
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <QtCore/QRegularExpression>
|
||||
#include <QDesktopServices>
|
||||
|
||||
std::function<void(const QString&)> FileDialogHelper::_openDirectoryOperator = nullptr;
|
||||
|
||||
QUrl FileDialogHelper::home() {
|
||||
return pathToUrl(QStandardPaths::standardLocations(QStandardPaths::HomeLocation)[0]);
|
||||
|
@ -111,14 +112,8 @@ QStringList FileDialogHelper::drives() {
|
|||
}
|
||||
|
||||
void FileDialogHelper::openDirectory(const QString& path) {
|
||||
QString dirPath = path;
|
||||
const QString FILE_SCHEME = "file://";
|
||||
if (dirPath.startsWith(FILE_SCHEME)) {
|
||||
dirPath.remove(0, FILE_SCHEME.length());
|
||||
}
|
||||
QFileInfo fileInfo(dirPath);
|
||||
if (fileInfo.isDir()) {
|
||||
QDesktopServices::openUrl(path);
|
||||
if (_openDirectoryOperator) {
|
||||
_openDirectoryOperator(path);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QUrl>
|
||||
|
||||
#include <functional>
|
||||
|
||||
class FileDialogHelper : public QObject {
|
||||
Q_OBJECT
|
||||
|
@ -62,6 +63,7 @@ public:
|
|||
Q_INVOKABLE QUrl saveHelper(const QString& saveText, const QUrl& currentFolder, const QStringList& selectionFilters);
|
||||
Q_INVOKABLE QList<QUrl> urlToList(const QUrl& url);
|
||||
|
||||
static void setOpenDirectoryOperator(std::function<void(const QString&)> openDirectoryOperator) { _openDirectoryOperator = openDirectoryOperator; }
|
||||
Q_INVOKABLE void openDirectory(const QString& path);
|
||||
|
||||
Q_INVOKABLE void monitorDirectory(const QString& path);
|
||||
|
@ -72,6 +74,7 @@ signals:
|
|||
private:
|
||||
QFileSystemWatcher _fsWatcher;
|
||||
QString _fsWatcherPath;
|
||||
static std::function<void(const QString&)> _openDirectoryOperator;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue