UI: Check QML engine load's result.

This commit is contained in:
Nodir Temirkhodjaev 2017-09-10 11:52:38 +05:00
parent 1e770b3417
commit d598f9a131
2 changed files with 12 additions and 3 deletions

View File

@ -91,7 +91,7 @@ void FortManager::setupTrayIcon()
updateTrayMenu(); updateTrayMenu();
} }
void FortManager::setupEngine() bool FortManager::setupEngine()
{ {
m_engine = new QQmlApplicationEngine(this); m_engine = new QQmlApplicationEngine(this);
@ -101,6 +101,11 @@ void FortManager::setupEngine()
m_engine->load(QUrl("qrc:/qml/main.qml")); m_engine->load(QUrl("qrc:/qml/main.qml"));
if (m_engine->rootObjects().isEmpty()) {
showErrorBox("Cannot setup QML Engine");
return false;
}
m_appWindow = qobject_cast<QWindow *>( m_appWindow = qobject_cast<QWindow *>(
m_engine->rootObjects().first()); m_engine->rootObjects().first());
Q_ASSERT(m_appWindow); Q_ASSERT(m_appWindow);
@ -109,6 +114,8 @@ void FortManager::setupEngine()
QTimer::singleShot(100, [this]() { QTimer::singleShot(100, [this]() {
m_appWindow->resize(1024, 768); m_appWindow->resize(1024, 768);
}); });
return true;
} }
void FortManager::showTrayIcon() void FortManager::showTrayIcon()
@ -122,6 +129,8 @@ void FortManager::showWindow()
setupEngine(); setupEngine();
} }
if (!m_appWindow) return;
if (m_firewallConfToEdit == nullConf()) { if (m_firewallConfToEdit == nullConf()) {
setFirewallConfToEdit(cloneConf(*m_firewallConf)); setFirewallConfToEdit(cloneConf(*m_firewallConf));
} }
@ -155,7 +164,7 @@ void FortManager::exit(int retcode)
void FortManager::showErrorBox(const QString &text) void FortManager::showErrorBox(const QString &text)
{ {
QMessageBox::critical(&m_window, QString(), text); QMessageBox::warning(&m_window, QString(), text);
} }
bool FortManager::saveConf(bool onlyFlags) bool FortManager::saveConf(bool onlyFlags)

View File

@ -63,7 +63,7 @@ private:
bool setupDriver(); bool setupDriver();
void setupTrayIcon(); void setupTrayIcon();
void setupEngine(); bool setupEngine();
bool loadSettings(FirewallConf *conf); bool loadSettings(FirewallConf *conf);
bool saveSettings(FirewallConf *newConf, bool onlyFlags = false); bool saveSettings(FirewallConf *newConf, bool onlyFlags = false);