feat: open containing folder

This commit is contained in:
Gary Wang 2022-01-21 16:48:43 +08:00
parent 00168a34f0
commit 9e1b10831a
4 changed files with 25 additions and 0 deletions

View File

@ -52,6 +52,7 @@ void ActionManager::setupAction(MainWindow *mainWindow)
CREATE_NEW_ACTION(mainWindow, actionToggleProtectMode);
CREATE_NEW_ACTION(mainWindow, actionSettings);
CREATE_NEW_ACTION(mainWindow, actionHelp);
CREATE_NEW_ACTION(mainWindow, actionLocateInFileManager);
CREATE_NEW_ACTION(mainWindow, actionProperties);
CREATE_NEW_ACTION(mainWindow, actionQuitApp);
@ -86,6 +87,7 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
actionToggleProtectMode->setText(QCoreApplication::translate("MainWindow", "Protected mode", nullptr));
actionSettings->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
actionHelp->setText(QCoreApplication::translate("MainWindow", "Help", nullptr));
actionLocateInFileManager->setText("Open Containing Folder"); // TODO: what should it called?
actionProperties->setText(QCoreApplication::translate("MainWindow", "Properties", nullptr));
actionQuitApp->setText(QCoreApplication::translate("MainWindow", "Quit", nullptr));
}

View File

@ -38,6 +38,7 @@ public:
QAction *actionToggleProtectMode;
QAction *actionSettings;
QAction *actionHelp;
QAction *actionLocateInFileManager;
QAction *actionProperties;
QAction *actionQuitApp;
};

View File

@ -29,6 +29,8 @@
#include <QTimer>
#include <QFileDialog>
#include <QStandardPaths>
#include <QProcess>
#include <QDesktopServices>
MainWindow::MainWindow(QWidget *parent)
: FramelessWindow(parent)
@ -437,6 +439,9 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
menu->addAction(helpAction);
if (currentFileUrl.isValid()) {
menu->addSeparator();
if (currentFileUrl.isLocalFile()) {
menu->addAction(m_am->actionLocateInFileManager);
}
menu->addAction(propertiesAction);
}
menu->exec(mapToGlobal(event->pos()));
@ -703,6 +708,22 @@ void MainWindow::on_actionProperties_triggered()
ad->deleteLater();
}
void MainWindow::on_actionLocateInFileManager_triggered()
{
QUrl currentFileUrl = currentImageFileUrl();
if (!currentFileUrl.isValid()) return;
QFileInfo fileInfo(currentFileUrl.toLocalFile());
if (!fileInfo.exists()) return;
#ifdef Q_OS_WIN
QProcess::startDetached("explorer", QStringList() << "/select," << QDir::toNativeSeparators(fileInfo.absoluteFilePath()));
#else
// maybe use https://www.freedesktop.org/wiki/Specifications/file-manager-interface/ for linux?
QDesktopServices::openUrl(QUrl::fromLocalFile(fileInfo.absolutePath()));
#endif // Q_OS_WIN
}
void MainWindow::on_actionQuitApp_triggered()
{
quitAppAction(false);

View File

@ -91,6 +91,7 @@ private slots:
void on_actionSettings_triggered();
void on_actionHelp_triggered();
void on_actionProperties_triggered();
void on_actionLocateInFileManager_triggered();
void on_actionQuitApp_triggered();
private: