mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-05-24 19:02:16 +02:00
hide actions if not available
Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com>
This commit is contained in:
parent
cd3db28fce
commit
7c60f375f3
@ -209,12 +209,25 @@ 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();
|
||||||
|
|
||||||
ui->actionCreateInstanceShortcut->setMenu(shortcutInstanceMenu);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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,55 +1634,59 @@ void MainWindow::createInstanceShortcut(QString shortcutFilePath) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionCreateInstanceShortcutOther_triggered() {
|
void MainWindow::on_actionCreateInstanceShortcutOther_triggered()
|
||||||
if (!m_selectedInstance)
|
{
|
||||||
return;
|
if (!m_selectedInstance)
|
||||||
|
|
||||||
QString defaultedDir = FS::getDesktopDir();
|
|
||||||
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
|
|
||||||
QString extension = ".desktop";
|
|
||||||
#elif defined(Q_OS_WINDOWS)
|
|
||||||
QString extension = ".lnk";
|
|
||||||
#else
|
|
||||||
QString extension = "";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QString shortcutFilePath = FS::PathCombine(defaultedDir, FS::RemoveInvalidFilenameChars(m_selectedInstance->name()) + extension);
|
|
||||||
QFileDialog fileDialog;
|
|
||||||
// workaround to make sure the portal file dialog opens in the desktop directory
|
|
||||||
fileDialog.setDirectoryUrl(defaultedDir);
|
|
||||||
|
|
||||||
shortcutFilePath = fileDialog.getSaveFileName(this, tr("Create Shortcut"), shortcutFilePath, tr("Desktop Entries") + " (*" + extension + ")");
|
|
||||||
if (shortcutFilePath.isEmpty())
|
|
||||||
return; // file dialog canceled by user
|
|
||||||
|
|
||||||
createInstanceShortcut(shortcutFilePath);
|
|
||||||
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::on_actionCreateInstanceShortcut_triggered() {
|
|
||||||
if(!m_selectedInstance)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(DesktopServices::isFlatpak())
|
QString defaultedDir = FS::getDesktopDir();
|
||||||
|
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
|
||||||
|
QString extension = ".desktop";
|
||||||
|
#elif defined(Q_OS_WINDOWS)
|
||||||
|
QString extension = ".lnk";
|
||||||
|
#else
|
||||||
|
QString extension = "";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QString shortcutFilePath = FS::PathCombine(defaultedDir, FS::RemoveInvalidFilenameChars(m_selectedInstance->name()) + extension);
|
||||||
|
QFileDialog fileDialog;
|
||||||
|
// workaround to make sure the portal file dialog opens in the desktop directory
|
||||||
|
fileDialog.setDirectoryUrl(defaultedDir);
|
||||||
|
|
||||||
|
shortcutFilePath =
|
||||||
|
fileDialog.getSaveFileName(this, tr("Create Shortcut"), shortcutFilePath, tr("Desktop Entries") + " (*" + extension + ")");
|
||||||
|
if (shortcutFilePath.isEmpty())
|
||||||
|
return; // file dialog canceled by user
|
||||||
|
|
||||||
|
createInstanceShortcut(shortcutFilePath);
|
||||||
|
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionCreateInstanceShortcut_triggered()
|
||||||
|
{
|
||||||
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
|
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)
|
{
|
||||||
return;
|
if (!m_selectedInstance)
|
||||||
|
return;
|
||||||
|
|
||||||
QString desktopDir = FS::getDesktopDir();
|
QString desktopDir = FS::getDesktopDir();
|
||||||
if (desktopDir.isEmpty()) {
|
if (desktopDir.isEmpty()) {
|
||||||
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find desktop?!"));
|
QMessageBox::critical(this, tr("Create instance shortcut"), tr("Couldn't find desktop?!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString shortcutFilePath = FS::PathCombine(FS::getDesktopDir(), FS::RemoveInvalidFilenameChars(m_selectedInstance->name()));
|
QString shortcutFilePath = FS::PathCombine(FS::getDesktopDir(), FS::RemoveInvalidFilenameChars(m_selectedInstance->name()));
|
||||||
createInstanceShortcut(shortcutFilePath);
|
createInstanceShortcut(shortcutFilePath);
|
||||||
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
|
QMessageBox::information(this, tr("Create instance shortcut"), tr("Created a shortcut to this instance on your desktop!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionCreateInstanceShortcutApplications_triggered()
|
void MainWindow::on_actionCreateInstanceShortcutApplications_triggered()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user