diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,8 @@ XmlGui ConfigWidgets TextEditor + Notifications + NotifyConfig ) find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,6 +12,17 @@ ecm_create_qm_loader(atelier_SRCS atelier) -target_link_libraries(atelier AtelierWidgets AtelierDialogs Atelier3D AtCore::AtCoreWidgets AtCore::AtCore KF5::XmlGui KF5::ConfigWidgets) +target_link_libraries(atelier + AtelierWidgets + AtelierDialogs + Atelier3D + AtCore::AtCoreWidgets + AtCore::AtCore + KF5::XmlGui + KF5::ConfigWidgets + KF5::NotifyConfig +) + +install(FILES atelier.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) install(TARGETS atelier RUNTIME DESTINATION bin) diff --git a/src/atelier.notifyrc b/src/atelier.notifyrc new file mode 100644 --- /dev/null +++ b/src/atelier.notifyrc @@ -0,0 +1,19 @@ +[Global] +IconName=atelier +Comment=Atelier Printer Host +Name=Atelier + +[Event/printerConnected] +Name=Printer Connected +Comment=Atelier successfully connected to your printer +Action=Popup + +[Event/printerDisconnected] +Name=Printer Disconnected +Comment=Atelier disconnected from your printer. +Action=Popup + +[Event/printerError] +Name=Error +Comment=An error has occurred, please check the logs for more info. +Action=Popup diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -18,6 +18,7 @@ */ #include #include +#include #include #include #include @@ -258,6 +259,11 @@ emit(profilesChanged()); }); + action = KStandardAction::configureNotifications(this, SLOT(configureNotifications()), actionCollection()); + action->setText(i18n("Configure Notifications...")); + connect(action, &QAction::triggered,[&]{ + KNotifyConfigWidget::configure(this); + }); action = actionCollection()->addAction(QStringLiteral("quit")); action->setIcon(QIcon::fromTheme("application-exit", QIcon(":/icon/exit"))); diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -16,6 +16,7 @@ Qt5::Widgets Qt5::SerialPort KF5::I18n + KF5::Notifications KF5::TextEditor Qt5::Charts Qt5::Multimedia diff --git a/src/widgets/atcoreinstancewidget.cpp b/src/widgets/atcoreinstancewidget.cpp --- a/src/widgets/atcoreinstancewidget.cpp +++ b/src/widgets/atcoreinstancewidget.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include "atcoreinstancewidget.h" @@ -394,6 +395,8 @@ } break; case AtCore::IDLE: { stateString = i18n("Connected to %1", m_core.serial()->portName()); + KNotification::event("printerConnected", i18n("Connected"), i18n("Connected to port %1 and using profile %2.", + m_core.serial()->portName(), m_comboProfile->currentText())); emit extruderCountChanged(m_core.extruderCount()); m_logWidget->appendLog(stateString); emit disableDisconnect(false); @@ -404,6 +407,8 @@ disconnect(&m_core, &AtCore::receivedMessage, m_logWidget, &LogWidget::appendRLog); disconnect(m_core.serial(), &SerialLayer::pushedCommand, m_logWidget, &LogWidget::appendSLog); m_logWidget->appendLog(i18n("Serial disconnected")); + KNotification::event("printerDisconnected", i18n("Disconnected"), + i18n("Disconnected from %1.", m_comboProfile->currentText())); m_core.setSerialTimerInterval(100); m_connectButton->setText(i18n("Connect")); m_connectButton->setIcon(QIcon::fromTheme("network-connect", QIcon(QString(":/%1/connect").arg(m_theme))));