Merge pull request #5979 from lemondrops/manager-5

Manager: Machine list context menu tweaks
This commit is contained in:
Miran Grča
2025-08-17 15:36:04 +02:00
committed by GitHub

View File

@@ -114,41 +114,6 @@ VMManagerMain::VMManagerMain(QWidget *parent) :
}); });
nameChangeAction.setEnabled(!selected_sysconfig->window_obscured); nameChangeAction.setEnabled(!selected_sysconfig->window_obscured);
QAction openSystemFolderAction(tr("&Open folder..."));
contextMenu.addAction(&openSystemFolderAction);
connect(&openSystemFolderAction, &QAction::triggered, [indexAt] {
if (const auto configDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString(); !configDir.isEmpty()) {
QDir dir(configDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction openPrinterFolderAction(tr("Open &printer tray..."));
contextMenu.addAction(&openPrinterFolderAction);
connect(&openPrinterFolderAction, &QAction::triggered, [indexAt] {
if (const auto printerDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/printer/"); !printerDir.isEmpty()) {
QDir dir(printerDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction openScreenshotsFolderAction(tr("Open screenshots &folder..."));
contextMenu.addAction(&openScreenshotsFolderAction);
connect(&openScreenshotsFolderAction, &QAction::triggered, [indexAt] {
if (const auto screenshotsDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/screenshots/"); !screenshotsDir.isEmpty()) {
QDir dir(screenshotsDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction setSystemIcon(tr("Set &icon...")); QAction setSystemIcon(tr("Set &icon..."));
contextMenu.addAction(&setSystemIcon); contextMenu.addAction(&setSystemIcon);
@@ -162,6 +127,8 @@ VMManagerMain::VMManagerMain(QWidget *parent) :
}); });
setSystemIcon.setEnabled(!selected_sysconfig->window_obscured); setSystemIcon.setEnabled(!selected_sysconfig->window_obscured);
contextMenu.addSeparator();
QAction cloneMachine(tr("C&lone...")); QAction cloneMachine(tr("C&lone..."));
contextMenu.addAction(&cloneMachine); contextMenu.addAction(&cloneMachine);
connect(&cloneMachine, &QAction::triggered, [this] { connect(&cloneMachine, &QAction::triggered, [this] {
@@ -325,6 +292,42 @@ illegal_chars:
contextMenu.addSeparator(); contextMenu.addSeparator();
QAction openSystemFolderAction(tr("&Open folder..."));
contextMenu.addAction(&openSystemFolderAction);
connect(&openSystemFolderAction, &QAction::triggered, [indexAt] {
if (const auto configDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString(); !configDir.isEmpty()) {
QDir dir(configDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction openPrinterFolderAction(tr("Open &printer tray..."));
contextMenu.addAction(&openPrinterFolderAction);
connect(&openPrinterFolderAction, &QAction::triggered, [indexAt] {
if (const auto printerDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/printer/"); !printerDir.isEmpty()) {
QDir dir(printerDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction openScreenshotsFolderAction(tr("Open screenshots &folder..."));
contextMenu.addAction(&openScreenshotsFolderAction);
connect(&openScreenshotsFolderAction, &QAction::triggered, [indexAt] {
if (const auto screenshotsDir = indexAt.data(VMManagerModel::Roles::ConfigDir).toString() + QString("/screenshots/"); !screenshotsDir.isEmpty()) {
QDir dir(screenshotsDir);
if (!dir.exists())
dir.mkpath(".");
QDesktopServices::openUrl(QUrl(QString("file:///") + dir.canonicalPath()));
}
});
QAction showRawConfigFile(tr("Show &config file")); QAction showRawConfigFile(tr("Show &config file"));
contextMenu.addAction(&showRawConfigFile); contextMenu.addAction(&showRawConfigFile);
connect(&showRawConfigFile, &QAction::triggered, [this, indexAt] { connect(&showRawConfigFile, &QAction::triggered, [this, indexAt] {
@@ -333,6 +336,14 @@ illegal_chars:
} }
}); });
contextMenu.exec(ui->listView->viewport()->mapToGlobal(pos));
} else {
QMenu contextMenu(tr("Context Menu"), ui->listView);
QAction newMachineAction(tr("New machine..."));
contextMenu.addAction(&newMachineAction);
connect(&newMachineAction, &QAction::triggered, this, &VMManagerMain::newMachineWizard);
contextMenu.exec(ui->listView->viewport()->mapToGlobal(pos)); contextMenu.exec(ui->listView->viewport()->mapToGlobal(pos));
} }
}); });