hide actions if not available

Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com>
This commit is contained in:
sshcrack 2024-10-25 14:15:04 +02:00
parent cd3db28fce
commit 7c60f375f3
No known key found for this signature in database
GPG Key ID: 1DA55560745A2F13

View File

@ -209,13 +209,26 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
exportInstanceMenu->addAction(ui->actionExportInstanceFlamePack); exportInstanceMenu->addAction(ui->actionExportInstanceFlamePack);
ui->actionExportInstance->setMenu(exportInstanceMenu); ui->actionExportInstance->setMenu(exportInstanceMenu);
auto shortcutInstanceMenu = new QMenu(this); QList<QAction*> shortcutActions = { ui->actionCreateInstanceShortcutOther };
shortcutInstanceMenu->addAction(ui->actionCreateInstanceShortcutDesktop); if (!DesktopServices::isFlatpak()) {
shortcutInstanceMenu->addAction(ui->actionCreateInstanceShortcutApplications); QString desktopDir = FS::getDesktopDir();
shortcutInstanceMenu->addAction(ui->actionCreateInstanceShortcutOther); QString applicationDir = FS::getApplicationsDir();
if(!applicationDir.isEmpty())
shortcutActions.push_front(ui->actionCreateInstanceShortcutApplications);
if(!desktopDir.isEmpty())
shortcutActions.push_front(ui->actionCreateInstanceShortcutDesktop);
}
if(shortcutActions.length() > 1) {
auto shortcutInstanceMenu = new QMenu(this);
for(auto action : shortcutActions)
shortcutInstanceMenu->addAction(action);
ui->actionCreateInstanceShortcut->setMenu(shortcutInstanceMenu); ui->actionCreateInstanceShortcut->setMenu(shortcutInstanceMenu);
} }
}
// hide, disable and show stuff // hide, disable and show stuff
{ {
@ -242,11 +255,6 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
} }
ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED); ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED);
bool isFlatpak = DesktopServices::isFlatpak();
ui->actionCreateInstanceShortcutDesktop->setEnabled(isFlatpak);
ui->actionCreateInstanceShortcutApplications->setEnabled(isFlatpak);
} }
// add the toolbar toggles to the view menu // add the toolbar toggles to the view menu
@ -1503,8 +1511,9 @@ void MainWindow::on_actionKillInstance_triggered()
} }
} }
void MainWindow::createInstanceShortcut(QString shortcutFilePath) { void MainWindow::createInstanceShortcut(QString shortcutFilePath)
if(!m_selectedInstance) {
if (!m_selectedInstance)
return; return;
QString appPath = QApplication::applicationFilePath(); QString appPath = QApplication::applicationFilePath();
@ -1625,7 +1634,8 @@ void MainWindow::createInstanceShortcut(QString shortcutFilePath) {
} }
} }
void MainWindow::on_actionCreateInstanceShortcutOther_triggered() { void MainWindow::on_actionCreateInstanceShortcutOther_triggered()
{
if (!m_selectedInstance) if (!m_selectedInstance)
return; return;
@ -1643,7 +1653,8 @@ void MainWindow::on_actionCreateInstanceShortcutOther_triggered() {
// workaround to make sure the portal file dialog opens in the desktop directory // workaround to make sure the portal file dialog opens in the desktop directory
fileDialog.setDirectoryUrl(defaultedDir); fileDialog.setDirectoryUrl(defaultedDir);
shortcutFilePath = fileDialog.getSaveFileName(this, tr("Create Shortcut"), shortcutFilePath, tr("Desktop Entries") + " (*" + extension + ")"); shortcutFilePath =
fileDialog.getSaveFileName(this, tr("Create Shortcut"), shortcutFilePath, tr("Desktop Entries") + " (*" + extension + ")");
if (shortcutFilePath.isEmpty()) if (shortcutFilePath.isEmpty())
return; // file dialog canceled by user return; // file dialog canceled by user
@ -1651,17 +1662,19 @@ void MainWindow::on_actionCreateInstanceShortcutOther_triggered() {
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!")); QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!"));
} }
void MainWindow::on_actionCreateInstanceShortcut_triggered() { void MainWindow::on_actionCreateInstanceShortcut_triggered()
if(!m_selectedInstance) {
if (!m_selectedInstance)
return; return;
if(DesktopServices::isFlatpak()) if (DesktopServices::isFlatpak())
on_actionCreateInstanceShortcutOther_triggered(); on_actionCreateInstanceShortcutOther_triggered();
else else
on_actionCreateInstanceShortcutDesktop_triggered(); on_actionCreateInstanceShortcutDesktop_triggered();
} }
void MainWindow::on_actionCreateInstanceShortcutDesktop_triggered() { void MainWindow::on_actionCreateInstanceShortcutDesktop_triggered()
{
if (!m_selectedInstance) if (!m_selectedInstance)
return; return;