/* Daily Panel * * Copyright (c) 2019-2024 The OSCAR Team * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of the source code * for more details. */ #include "notifyMessageBox.h" #define TEST_MACROS_ENABLEDoff #include int defaultTimeoutSeconds = 6 ; //QString defaultTimeoutMessage = QObject::tr("Notifcation expires in %1 seconds.\nTo Dismiss: Press Escape or Enter."); //QString timeoutStoppedMessage = QObject::tr("Timer Stopped.\nTo Dismiss: Press Escape or Enter."); QString defaultTimeoutMessage = QObject::tr("Notifcation expires in %1 seconds."); QString timeoutStoppedMessage = QObject::tr(""); NotifyMessageBox::NotifyMessageBox(const QString& title, const QString& message, int timeoutSeconds, const QString& timeoutMessage, QWidget* parent) : QObject(parent), m_title(title), m_message(message), m_timeoutSeconds(timeoutSeconds), m_timeoutMessage(timeoutMessage), m_state(nmb_init) { if (timeoutSecondssetFont(boldFont); m_msgBox->setWindowTitle(m_title); m_msgBox->setText(m_message); #ifndef STOPTIMER m_msgBox->setStandardButtons(QMessageBox::Ok); #else // Set action as the default button QPushButton *terminateB = m_msgBox->addButton("Dismiss", QMessageBox::RejectRole); m_msgBox->setDefaultButton(terminateB); connect(m_msgBox, SIGNAL(rejected()), this, SLOT(onTerminate())); if (m_state == nmb_stopped) { m_msgBox->setInformativeText(timeoutStoppedMessage); } else { m_msgBox->setInformativeText(m_timeoutMessage.arg(m_timeoutSeconds)); m_msgBox->addButton("Stop Timer", QMessageBox::AcceptRole); m_msgBox->setEscapeButton(QMessageBox::Cancel); connect(m_msgBox, SIGNAL(accepted()), this, SLOT(onStop())); } #endif m_msgBox->show(); m_msgBox->raise(); } #if defined(STOPTIMER) void NotifyMessageBox::onStop() { m_msgBox->close(); m_state = nmb_stopped; setupMessageBox(); } void NotifyMessageBox::onTerminate() { releaseResources(); } #endif void NotifyMessageBox::onTimeout() { switch (m_state) { case nmb_init: m_timer->setInterval(1000); setupMessageBox(); m_state = nmb_running; break; case nmb_running: m_timer->setInterval(1000); m_timeoutSeconds--; if (m_timeoutSeconds == 0) { m_state = nmb_stopped; releaseResources(); } else { m_msgBox->setInformativeText(m_timeoutMessage.arg(m_timeoutSeconds)); } break; default: case nmb_stopped: break; } } void NotifyMessageBox::setupTimer() { #if defined(STOPTIMER) m_timer = new QTimer(this); m_timer->setInterval(1); m_timer->setSingleShot(false); connect(m_timer, &QTimer::timeout, this, &NotifyMessageBox::onTimeout); m_timer->start(); #endif } void NotifyMessageBox::releaseResources() { m_msgBox->close(); #if defined(STOPTIMER) m_timer->deleteLater(); #endif } NotifyMessageBox* createNotifyMessageBox( const QString& title, const QString& message, int timeoutSeconds, const QString& timeoutMessage, QWidget* parent) { NotifyMessageBox* msgBox = new NotifyMessageBox(title, message, timeoutSeconds, timeoutMessage, parent); return msgBox; } NotifyMessageBox* createNotifyMessageBox ( QWidget* parent , const QString& title, const QString& message, int timeoutSeconds , const QString& timeoutMessage ) { return createNotifyMessageBox(title, message, timeoutSeconds, timeoutMessage, parent); }; #if 0 NotifyMessageBox* createNotifyMessageBox ( QWidget* parent , const QString& title, const QString& message, enum QMessageBox::Icon msgIcon, int timeoutSeconds , const QString& timeoutMessage ) { return createNotifyMessageBox(title, message, timeoutSeconds, timeoutMessage, parent); }; #endif