Manager: Warn on close when machines are running
This commit is contained in:
@@ -459,6 +459,12 @@ VMManagerMain::onPreferencesUpdated()
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
VMManagerMain::getActiveMachineCount()
|
||||
{
|
||||
return vm_model->getActiveMachineCount();
|
||||
}
|
||||
|
||||
#if EMU_BUILD_NUM != 0
|
||||
void
|
||||
VMManagerMain::backgroundUpdateCheckStart() const
|
||||
|
||||
@@ -77,6 +77,7 @@ public slots:
|
||||
#endif
|
||||
void modelDataChange();
|
||||
void onPreferencesUpdated();
|
||||
int getActiveMachineCount();
|
||||
|
||||
private:
|
||||
Ui::VMManagerMain *ui;
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <QLineEdit>
|
||||
#include <QStringListModel>
|
||||
#include <QCompleter>
|
||||
#include <QCloseEvent>
|
||||
#include <QDesktopServices>
|
||||
|
||||
VMManagerMainWindow::
|
||||
@@ -159,6 +160,15 @@ VMManagerMainWindow::saveSettings() const
|
||||
void
|
||||
VMManagerMainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
int running = vmm->getActiveMachineCount();
|
||||
if (running > 0) {
|
||||
QMessageBox warningbox(QMessageBox::Icon::Warning, tr("%1 VM Manager").arg(EMU_NAME), tr("%1 machine(s) are currently active. Are you sure you want to exit the VM manager anyway?").arg(running), QMessageBox::Yes | QMessageBox::No, this);
|
||||
warningbox.exec();
|
||||
if (warningbox.result() == QMessageBox::No) {
|
||||
event->ignore();
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveSettings();
|
||||
QMainWindow::closeEvent(event);
|
||||
}
|
||||
|
||||
@@ -161,3 +161,14 @@ VMManagerModel::getProcessStats()
|
||||
}
|
||||
return stats;
|
||||
}
|
||||
|
||||
int
|
||||
VMManagerModel::getActiveMachineCount()
|
||||
{
|
||||
int running = 0;
|
||||
for (const auto& system: machines) {
|
||||
if (system->getProcessStatus() != VMManagerSystem::ProcessStatus::Stopped)
|
||||
running++;
|
||||
}
|
||||
return running;
|
||||
}
|
||||
@@ -57,6 +57,7 @@ public:
|
||||
void reload(QWidget* parent = nullptr);
|
||||
void updateDisplayName(const QModelIndex &index, const QString &newDisplayName);
|
||||
QHash <QString, int> getProcessStats();
|
||||
int getActiveMachineCount();
|
||||
signals:
|
||||
void systemDataChanged();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user