kemu: disable some functionality of QEMU is not installed at all

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
This commit is contained in:
Ivailo Monev 2017-08-02 13:41:24 +00:00
parent 3898fad667
commit 672e6937af
2 changed files with 11 additions and 3 deletions

View file

@ -33,7 +33,7 @@
#include "ui_kemu.h"
KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
: KXmlGuiWindow(parent, flags), m_kemuui(new Ui_KEmuWindow)
: KXmlGuiWindow(parent, flags), m_loading(false), m_installed(false), m_kemuui(new Ui_KEmuWindow)
{
m_kemuui->setupUi(this);
@ -94,6 +94,7 @@ KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
<< "qemu-system-xtensaeb";
foreach (const QString bin, qemuBins) {
if(!KStandardDirs::findExe(bin).isEmpty()) {
m_installed = true;
m_kemuui->systemComboBox->addItem(bin);
}
}
@ -112,6 +113,12 @@ KEmuMainWindow::KEmuMainWindow(QWidget *parent, Qt::WindowFlags flags)
m_kemuui->machinesList->listView()->keyboardSearch(lastSelected);
}
if(!m_installed) {
m_kemuui->startStopButton->setEnabled(false);
QMessageBox::critical(this, i18n("QEMU not available"), i18n("QEMU not available"));
return;
}
QFile kvmdev("/dev/kvm");
if (!kvmdev.exists()) {
const QString modprobeBin = KStandardDirs::findExe("modprobe");
@ -273,7 +280,7 @@ void KEmuMainWindow::machineChanged(QItemSelection ignored, QItemSelection ignor
QFile kvmdev("/dev/kvm");
m_kemuui->KVMCheckBox->setEnabled(kvmdev.exists());
m_kemuui->startStopButton->setEnabled(true);
m_kemuui->startStopButton->setEnabled(m_installed);
m_kemuui->groupBox->setEnabled(true);
if (m_machines.contains(machine)) {
kDebug() << "machine is running" << machine;

View file

@ -49,10 +49,11 @@ private slots:
private:
void updateStatus();
bool m_loading;
bool m_installed;
Ui_KEmuWindow *m_kemuui;
QSettings *m_settings;
QHash<QString,QProcess*> m_machines;
bool m_loading;
};
#endif // KEMUMAINWINDOW_H