Index: sources/view/VAlert.cpp =================================================================== diff -u -rb5a7852d2637f7969680fbd3d2c821a6a74a8ccd -re92ad4dc0e95b4e4cc1408146fb48a6e33169d52 --- sources/view/VAlert.cpp (.../VAlert.cpp) (revision b5a7852d2637f7969680fbd3d2c821a6a74a8ccd) +++ sources/view/VAlert.cpp (.../VAlert.cpp) (revision e92ad4dc0e95b4e4cc1408146fb48a6e33169d52) @@ -24,18 +24,52 @@ connect(&_GuiController, SIGNAL(didAlertRequest(GuiAlertRequestData)), this, SLOT(onActionReceive(GuiAlertRequestData))); + connect(this, SIGNAL(didRequestShowAlert()), + this, SLOT(onUpdateAlertVisible())); + + connect(this, SIGNAL(didRequestShowAlert()), + this, SLOT(onUpdateAlertVisible())); + // outgoing connect(this, SIGNAL(didAlertResponse(GuiAlertResponseData)), &_GuiController, SLOT(doAlertResponse(GuiAlertResponseData))); + + startTimer(_timerInterval); } /*! + * \brief VAlert::onUpdateAlertVisible + * Updates the alert visible status + */ +void VAlert::onUpdateAlertVisible() +{ + _alertVisible = true; +} + +/*! + * \brief VAlert::timerEvent + * Repeatedly checks the queue for any new alerts to display + * Displays the next alert in the queue if no alert is visible + * \param event (QTimerEvent) - the timer event + */ +void VAlert::timerEvent(QTimerEvent *event) +{ + Q_UNUSED(event) + if (!_alertVisible && !_queue.isEmpty()) + { + showAlert(_queue.dequeue()); + } +} + +/*! * \brief VAlert::doUserAlertRequest - * Called when the user makes a request through an alert dialog + * Called when an alert is closed as the user has made a request through + * the alert dialog * \param confirmed - (bool) true if user confirms, false if they cancel */ void VAlert::doAlertResponse(const bool &confirmed) { + _alertVisible = false; GuiAlertResponseData data; data.id = alertID(); data.confirmed = confirmed; @@ -49,6 +83,19 @@ */ void VAlert::onActionReceive(const GuiAlertRequestData &request) { + if (_queue.size() > _maxQueueSize) + return; + + _queue.enqueue(request); +} + +/*! + * \brief VAlert::showAlert + * Updates the alert with the specified information + * \param request (GuiAlertRequestData) - the alert information + */ +void VAlert::showAlert(const GuiAlertRequestData &request) +{ alertID(request.id); title(request.title); description(request.description);