diff --git a/ScreenPlay/qml/Installed/ScreenPlayItem.qml b/ScreenPlay/qml/Installed/ScreenPlayItem.qml index ac5c389d..30134f4a 100644 --- a/ScreenPlay/qml/Installed/ScreenPlayItem.qml +++ b/ScreenPlay/qml/Installed/ScreenPlayItem.qml @@ -1,5 +1,6 @@ import QtQuick 2.9 import QtGraphicalEffects 1.0 +import QtQuick.Controls 2.3 Item { id: screenPlayItem @@ -9,11 +10,12 @@ Item { property string customTitle: "name here" property url absoluteStoragePath property string type + property bool hasMenuOpen: false onTypeChanged: { if (type === "widget") { icnType.source = "qrc:/assets/icons/icon_widgets.svg" - } else if(type === "qmlScene"){ - icnType.source = "qrc:/assets/icons/icon_scene.svg" + } else if (type === "qmlScene") { + icnType.source = "qrc:/assets/icons/icon_code.svg" } } @@ -125,15 +127,34 @@ Item { MouseArea { anchors.fill: parent hoverEnabled: true + + acceptedButtons: Qt.LeftButton | Qt.RightButton onEntered: { - screenPlayItem.state = "hover" + if (!hasMenuOpen) + screenPlayItem.state = "hover" } onExited: { - screenPlayItem.state = "visible" + if (!hasMenuOpen) + screenPlayItem.state = "visible" } onClicked: { - itemClicked(screenId, type) + if (mouse.button === Qt.LeftButton) { + itemClicked(screenId, type) + } else if (mouse.button === Qt.RightButton) { + contextMenu.popup() + hasMenuOpen = true + } + } + } + } + Menu { + id: contextMenu + onClosed: hasMenuOpen = false + MenuItem { + text: qsTr("Open containing folder") + onClicked: { + screenPlaySettings.openFolderInExplorer(absoluteStoragePath) } } } diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index dedac3b2..18d67d18 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -294,6 +294,17 @@ QString Settings::fixWindowsPath(QString url) return url.replace("/", "\\\\"); } +void Settings::openFolderInExplorer(QString url) +{ + QProcess explorer; + explorer.setProgram("explorer.exe"); + QStringList args; + args.append(QDir::toNativeSeparators(url)); + explorer.setArguments(args); + explorer.startDetached(); + +} + void Settings::removeWallpaperAt(int pos) { if (pos > 0 && pos > m_wallpapers.size()) diff --git a/ScreenPlay/src/settings.h b/ScreenPlay/src/settings.h index a4a8db31..b830cc37 100644 --- a/ScreenPlay/src/settings.h +++ b/ScreenPlay/src/settings.h @@ -54,6 +54,7 @@ public: Q_INVOKABLE void setPlayAll(bool isPlaying); Q_INVOKABLE QUrl getPreviewImageByMonitorID(QString id); Q_INVOKABLE QString fixWindowsPath(QString url); + Q_INVOKABLE void openFolderInExplorer(QString url); void loadActiveProfiles();