diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2022-03-20 09:58:04 +0100 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2022-03-20 10:00:25 +0100 |
commit | ccdd9e6784c1aaee8ebb35f192dae647895c67bc (patch) | |
tree | 2ec8164d4b6f504adc3f2d441f4c20a0e77ad8e7 | |
parent | c21d10cb33e0d123d4b53acdc28e73002d240634 (diff) | |
download | rockbox-ccdd9e6784c1aaee8ebb35f192dae647895c67bc.tar.gz rockbox-ccdd9e6784c1aaee8ebb35f192dae647895c67bc.zip |
rbutil: Fix TTS "waiting for engine" appearing randomly.
QProgressDialog shows / hides itself automatically based on the progress
value set, so calling hide() directly doesn't prevent the dialog from
showing itself.
Change the logic to set a value instead. Fixes the progress dialog
sometimes appearing in situations where it wasn't used at all.
Change-Id: Ifef063f31b7f888bb74f180dea0679e81cc5c8fe
-rw-r--r-- | utils/rbutilqt/base/encttssettings.h | 3 | ||||
-rw-r--r-- | utils/rbutilqt/base/ttsfestival.cpp | 6 | ||||
-rw-r--r-- | utils/rbutilqt/encttscfggui.cpp | 33 | ||||
-rw-r--r-- | utils/rbutilqt/encttscfggui.h | 6 |
4 files changed, 24 insertions, 24 deletions
diff --git a/utils/rbutilqt/base/encttssettings.h b/utils/rbutilqt/base/encttssettings.h index 1258d81d57..ef3e5728b5 100644 --- a/utils/rbutilqt/base/encttssettings.h +++ b/utils/rbutilqt/base/encttssettings.h | |||
@@ -108,8 +108,7 @@ public: | |||
108 | virtual void saveSettings() = 0; | 108 | virtual void saveSettings() = 0; |
109 | 109 | ||
110 | signals: | 110 | signals: |
111 | void busy(); // emit this if a operation takes time | 111 | void busy(bool show); // emit this if a operation takes time |
112 | void busyEnd(); // emit this at the end of a busy section | ||
113 | 112 | ||
114 | protected: | 113 | protected: |
115 | //! Child class should fill in the setttingsList | 114 | //! Child class should fill in the setttingsList |
diff --git a/utils/rbutilqt/base/ttsfestival.cpp b/utils/rbutilqt/base/ttsfestival.cpp index fbb8166a9a..fce1d8cb3e 100644 --- a/utils/rbutilqt/base/ttsfestival.cpp +++ b/utils/rbutilqt/base/ttsfestival.cpp | |||
@@ -336,14 +336,14 @@ QString TTSFestival::queryServer(QString query, int timeout) | |||
336 | return ""; | 336 | return ""; |
337 | 337 | ||
338 | // this operation could take some time | 338 | // this operation could take some time |
339 | emit busy(); | 339 | emit busy(true); |
340 | 340 | ||
341 | LOG_INFO() << "queryServer with" << query; | 341 | LOG_INFO() << "queryServer with" << query; |
342 | 342 | ||
343 | if (!ensureServerRunning()) | 343 | if (!ensureServerRunning()) |
344 | { | 344 | { |
345 | LOG_ERROR() << "queryServer: ensureServerRunning failed"; | 345 | LOG_ERROR() << "queryServer: ensureServerRunning failed"; |
346 | emit busyEnd(); | 346 | emit busy(false); |
347 | return ""; | 347 | return ""; |
348 | } | 348 | } |
349 | 349 | ||
@@ -391,7 +391,7 @@ QString TTSFestival::queryServer(QString query, int timeout) | |||
391 | while(QDateTime::currentDateTime() < tmpEndTime) | 391 | while(QDateTime::currentDateTime() < tmpEndTime) |
392 | QCoreApplication::processEvents(QEventLoop::AllEvents); | 392 | QCoreApplication::processEvents(QEventLoop::AllEvents); |
393 | } | 393 | } |
394 | emit busyEnd(); | 394 | emit busy(false); |
395 | socket.disconnectFromHost(); | 395 | socket.disconnectFromHost(); |
396 | 396 | ||
397 | if(response == "nil") | 397 | if(response == "nil") |
diff --git a/utils/rbutilqt/encttscfggui.cpp b/utils/rbutilqt/encttscfggui.cpp index cd2cf24f5b..e0f203bc1c 100644 --- a/utils/rbutilqt/encttscfggui.cpp +++ b/utils/rbutilqt/encttscfggui.cpp | |||
@@ -40,14 +40,14 @@ EncTtsCfgGui::EncTtsCfgGui(QDialog* parent, EncTtsSettingInterface* iface, QStri | |||
40 | m_busyCnt(0) | 40 | m_busyCnt(0) |
41 | { | 41 | { |
42 | // create a busy Dialog | 42 | // create a busy Dialog |
43 | m_busyDlg= new QProgressDialog("", "", 0, 0,this); | 43 | m_busyDlg= new QProgressDialog("", "", 0, 1, this); |
44 | m_busyDlg->setWindowTitle(tr("Waiting for engine...")); | 44 | m_busyDlg->setWindowTitle(tr("Waiting for engine...")); |
45 | m_busyDlg->setModal(true); | 45 | m_busyDlg->setModal(true); |
46 | m_busyDlg->setLabel(nullptr); | 46 | m_busyDlg->setLabel(nullptr); |
47 | m_busyDlg->setCancelButton(nullptr); | 47 | m_busyDlg->setCancelButton(nullptr); |
48 | m_busyDlg->hide(); | 48 | m_busyDlg->setMinimumDuration(100); |
49 | connect(iface, &EncTtsSettingInterface::busy, this, &EncTtsCfgGui::showBusy); | 49 | m_busyDlg->setValue(1); |
50 | connect(iface, &EncTtsSettingInterface::busyEnd, this, &EncTtsCfgGui::hideBusy); | 50 | connect(iface, &EncTtsSettingInterface::busy, this, &EncTtsCfgGui::busyDialog); |
51 | 51 | ||
52 | //setup the window | 52 | //setup the window |
53 | setWindowTitle(name); | 53 | setWindowTitle(name); |
@@ -279,18 +279,21 @@ QWidget* EncTtsCfgGui::createButton(EncTtsSetting* setting) | |||
279 | } | 279 | } |
280 | 280 | ||
281 | 281 | ||
282 | void EncTtsCfgGui::showBusy() | 282 | void EncTtsCfgGui::busyDialog(bool show) |
283 | { | 283 | { |
284 | if(m_busyCnt == 0) m_busyDlg->show(); | 284 | if(show) |
285 | 285 | { | |
286 | m_busyCnt++; | 286 | m_busyDlg->setValue(0); |
287 | } | 287 | m_busyCnt++; |
288 | 288 | } | |
289 | void EncTtsCfgGui::hideBusy() | 289 | else |
290 | { | 290 | { |
291 | m_busyCnt--; | 291 | m_busyDlg->setValue(1); |
292 | 292 | if(m_busyCnt > 0) | |
293 | if(m_busyCnt == 0) m_busyDlg->hide(); | 293 | { |
294 | m_busyCnt--; | ||
295 | } | ||
296 | } | ||
294 | } | 297 | } |
295 | 298 | ||
296 | 299 | ||
diff --git a/utils/rbutilqt/encttscfggui.h b/utils/rbutilqt/encttscfggui.h index bf9f08a384..109aebd399 100644 --- a/utils/rbutilqt/encttscfggui.h +++ b/utils/rbutilqt/encttscfggui.h | |||
@@ -40,10 +40,8 @@ private slots: | |||
40 | void accept(void); | 40 | void accept(void); |
41 | //! close window and dont save configuration | 41 | //! close window and dont save configuration |
42 | void reject(void); | 42 | void reject(void); |
43 | //! shows a busy dialog. counts calls. | 43 | //! show / hide the busy dialog, counts calls |
44 | void showBusy(); | 44 | void busyDialog(bool show); |
45 | //! hides the busy dialog, counts calls | ||
46 | void hideBusy(); | ||
47 | 45 | ||
48 | private: | 46 | private: |
49 | //! creates all dynamic window content | 47 | //! creates all dynamic window content |