Manager: Refactor the machine process stats system

and the statusbar text generation
This commit is contained in:
Alexander Babikov
2025-08-13 23:35:31 +05:00
parent babdab5eb7
commit 7167f76170
31 changed files with 350 additions and 112 deletions

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,17 +1086,26 @@ msgstr "In esecuzione"
msgid "Paused" msgid "Paused"
msgstr "In pausa" msgstr "In pausa"
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "In pausa (In attesa)" msgstr "In attesa"
msgid "Powered Off" msgid "Powered Off"
msgstr "Spento" msgstr "Spento"
msgid "waiting" msgid "%n running"
msgstr "in attesa" msgstr "%n in esecuzione"
msgid "total" msgid "%n paused"
msgstr "totale" msgstr "%n in pausa"
msgid "%n waiting"
msgstr "%n In attesa"
msgid "%1 total"
msgstr "%1 totale"
msgid "VMs: %1"
msgstr ""
msgid "System Directory:" msgid "System Directory:"
msgstr "Directory Sistema:" msgstr "Directory Sistema:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,17 +1086,26 @@ msgstr "Actief"
msgid "Paused" msgid "Paused"
msgstr "Gepauzeerd" msgstr "Gepauzeerd"
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "Gepauzeerd (aan het wachtend)" msgstr "aan het wachtend"
msgid "Powered Off" msgid "Powered Off"
msgstr "Sluit af" msgstr "Sluit af"
msgid "waiting" msgid "%n running"
msgstr "aan het wachten" msgstr "%n actief"
msgid "total" msgid "%n paused"
msgstr "totaal" msgstr "%n gepauzeerd"
msgid "%n waiting"
msgstr "%n aan het wachten"
msgid "%1 total"
msgstr "%1 totaal"
msgid "VMs: %1"
msgstr "VMs: %1"
msgid "System Directory:" msgid "System Directory:"
msgstr "Systeemmap:" msgstr "Systeemmap:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1087,16 +1087,25 @@ msgid "Paused"
msgstr "Pausado" msgstr "Pausado"
msgid "Paused (Waiting)" msgid "Paused (Waiting)"
msgstr "Pausado (Esperando)" msgstr "Esperando"
msgid "Powered Off" msgid "Powered Off"
msgstr "Desligado" msgstr "Desligado"
msgid "waiting" msgid "%n running"
msgstr "esperando" msgstr "%n rodando"
msgid "total" msgid "%n paused"
msgstr "total" msgstr "%n pausado"
msgid "%n waiting"
msgstr "%n esperando"
msgid "%1 total"
msgstr "%1 total"
msgid "VMs: %1"
msgstr ""
msgid "System Directory:" msgid "System Directory:"
msgstr "Diretório do Sistema:" msgstr "Diretório do Sistema:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1084,19 +1084,28 @@ msgid "Running"
msgstr "Работает" msgstr "Работает"
msgid "Paused" msgid "Paused"
msgstr "Приостановлено" msgstr "Приостановлена"
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "Приостановлено (Ожидание)"
msgid "Powered Off"
msgstr "Выключено"
msgid "waiting"
msgstr "Ожидание" msgstr "Ожидание"
msgid "total" msgid "Powered Off"
msgstr "Всего" msgstr "Выключена"
msgid "%n running"
msgstr "%n работает"
msgid "%n paused"
msgstr "%n приостановлено"
msgid "%n waiting"
msgstr "%n ожидает"
msgid "%1 total"
msgstr "всего %1"
msgid "VMs: %1"
msgstr "Машин: %1"
msgid "System Directory:" msgid "System Directory:"
msgstr "Системная папка:" msgstr "Системная папка:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -1086,17 +1086,26 @@ msgstr "正在运行"
msgid "Paused" msgid "Paused"
msgstr "已暂停" msgstr "已暂停"
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "暂停 (等待中)" msgstr "等待中"
msgid "Powered Off" msgid "Powered Off"
msgstr "已关机" msgstr "已关机"
msgid "waiting" msgid "%n running"
msgstr "等待中" msgstr "%n 正在运行"
msgid "total" msgid "%n paused"
msgstr "总计" msgstr "%n 已暂停"
msgid "%n waiting"
msgstr "%n 等待中"
msgid "%1 total"
msgstr "%1 总计"
msgid "VMs: %1"
msgstr ""
msgid "System Directory:" msgid "System Directory:"
msgstr "系统目录" msgstr "系统目录"

View File

@@ -1086,16 +1086,25 @@ msgstr ""
msgid "Paused" msgid "Paused"
msgstr "" msgstr ""
msgid "Paused (Waiting)" msgid "Waiting"
msgstr "" msgstr ""
msgid "Powered Off" msgid "Powered Off"
msgstr "" msgstr ""
msgid "waiting" msgid "%n running"
msgstr "" msgstr ""
msgid "total" msgid "%n paused"
msgstr ""
msgid "%n waiting"
msgstr ""
msgid "%1 total"
msgstr ""
msgid "VMs: %1"
msgstr "" msgstr ""
msgid "System Directory:" msgid "System Directory:"

View File

@@ -334,7 +334,7 @@ VMManagerDetails::updateProcessStatus() {
QString status_text = running ? QString status_text = running ?
QString("%1: PID %2").arg(tr("Running"), QString::number(sysconfig->process->processId())) : QString("%1: PID %2").arg(tr("Running"), QString::number(sysconfig->process->processId())) :
tr("Not running"); tr("Not running");
status_text.append(sysconfig->window_obscured ? QString(" (%1)").arg(tr("waiting")) : ""); status_text.append(sysconfig->window_obscured ? QString(" (%1)").arg(tr("Waiting")) : "");
ui->statusLabel->setText(status_text); ui->statusLabel->setText(status_text);
resetButton->setEnabled(running); resetButton->setEnabled(running);
stopButton->setEnabled(running); stopButton->setEnabled(running);

View File

@@ -369,7 +369,7 @@ illegal_chars:
// Set initial status bar after the event loop starts // Set initial status bar after the event loop starts
QTimer::singleShot(0, this, [this] { QTimer::singleShot(0, this, [this] {
emit updateStatusRight(totalCountString()); emit updateStatusRight(machineCountString());
}); });
#if EMU_BUILD_NUM != 0 #if EMU_BUILD_NUM != 0
@@ -698,10 +698,14 @@ VMManagerMain::getSearchCompletionList() const
} }
QString QString
VMManagerMain::totalCountString() const VMManagerMain::machineCountString(QString states) const
{ {
const auto count = vm_model->rowCount(QModelIndex()); const auto count = vm_model->rowCount(QModelIndex());
return QString("%1 %2").arg(QString::number(count), tr("total")); if (!states.isEmpty())
states.append(", ");
states.append(tr("%1 total").arg(count));
return tr("VMs: %1").arg(states);
} }
void void
@@ -713,14 +717,26 @@ VMManagerMain::modelDataChange()
QStringList stats; QStringList stats;
for (auto it = modelStats.constBegin(); it != modelStats.constEnd(); ++it) { for (auto it = modelStats.constBegin(); it != modelStats.constEnd(); ++it) {
const auto &key = it.key(); const auto &key = it.key();
stats.append(QString("%1 %2").arg(QString::number(modelStats[key]), key)); QString text = "";
switch (key) {
case VMManagerSystem::ProcessStatus::Running:
text = tr("%n running", "", modelStats[key]);
break;
case VMManagerSystem::ProcessStatus::Paused:
text = tr("%n paused", "", modelStats[key]);
break;
case VMManagerSystem::ProcessStatus::PausedWaiting:
case VMManagerSystem::ProcessStatus::RunningWaiting:
text = tr("%n waiting", "", modelStats[key]);
break;
default:
break;
}
if(!text.isEmpty())
stats.append(text);
} }
auto states = stats.join(", "); auto states = stats.join(", ");
if (!modelStats.isEmpty()) { emit updateStatusRight(machineCountString(states));
states.append(", ");
}
emit updateStatusRight(states + totalCountString());
} }
void void

View File

@@ -103,7 +103,7 @@ private:
void updateDisplayName(const QModelIndex &index); void updateDisplayName(const QModelIndex &index);
void loadSettings(); void loadSettings();
[[nodiscard]] bool currentSelectionIsValid() const; [[nodiscard]] bool currentSelectionIsValid() const;
[[nodiscard]] QString totalCountString() const; [[nodiscard]] QString machineCountString(QString states = "") const;
#if EMU_BUILD_NUM != 0 #if EMU_BUILD_NUM != 0
void backgroundUpdateCheckStart() const; void backgroundUpdateCheckStart() const;
#endif #endif

View File

@@ -167,15 +167,12 @@ VMManagerModel::updateDisplayName(const QModelIndex &index, const QString &newDi
machines.at(index.row())->setDisplayName(newDisplayName); machines.at(index.row())->setDisplayName(newDisplayName);
modelDataChanged(); modelDataChanged();
} }
QHash<QString, int> QMap<VMManagerSystem::ProcessStatus, int>
VMManagerModel::getProcessStats() VMManagerModel::getProcessStats()
{ {
QHash<QString, int> stats; QMap<VMManagerSystem::ProcessStatus, int> stats;
for (const auto& system: machines) { for (const auto& system: machines) {
if (system->getProcessStatus() != VMManagerSystem::ProcessStatus::Stopped) { stats[system->getProcessStatus()] += 1;
auto statusString = system->getProcessStatusString();
stats[statusString] += 1;
}
} }
return stats; return stats;
} }

View File

@@ -57,7 +57,7 @@ public:
QModelIndex getIndexForConfigFile(const QFileInfo& config_file); QModelIndex getIndexForConfigFile(const QFileInfo& config_file);
void reload(QWidget* parent = nullptr); void reload(QWidget* parent = nullptr);
void updateDisplayName(const QModelIndex &index, const QString &newDisplayName); void updateDisplayName(const QModelIndex &index, const QString &newDisplayName);
QHash <QString, int> getProcessStats(); QMap<VMManagerSystem::ProcessStatus, int> getProcessStats();
int getActiveMachineCount(); int getActiveMachineCount();
void refreshConfigs(); void refreshConfigs();
signals: signals:

View File

@@ -1175,7 +1175,7 @@ VMManagerSystem::processStatusToString(VMManagerSystem::ProcessStatus status)
return tr("Paused"); return tr("Paused");
case VMManagerSystem::ProcessStatus::PausedWaiting: case VMManagerSystem::ProcessStatus::PausedWaiting:
case VMManagerSystem::ProcessStatus::RunningWaiting: case VMManagerSystem::ProcessStatus::RunningWaiting:
return tr("Paused (Waiting)"); return QString("%1 (%2)").arg(tr("Paused"), tr("Waiting"));
default: default:
return tr("Unknown Status"); return tr("Unknown Status");
} }