BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
MessageService.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/utils/MessageService.cpp
6 //! @brief Implements MessageService class
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
17 #include <QObject>
18 #include <QSet>
19 
20 namespace {
21 const QString message_error_type = "Error";
22 const QString message_warning_type = "Warning";
23 } // namespace
24 
26 {
27  clear();
28 }
29 
31 {
32  for (auto message : m_messages)
33  delete message;
34 
35  m_messages.clear();
36 }
37 
38 void MessageService::send_message(QObject* sender, const QString& message_type,
39  const QString& description)
40 {
41  m_messages.append(new GUIMessage(sender, message_type, description));
42 }
43 
44 void MessageService::send_error(QObject* sender, const QString& description)
45 {
46  send_message(sender, message_error_type, description);
47 }
48 
49 void MessageService::send_warning(QObject* sender, const QString& description)
50 {
51  send_message(sender, message_warning_type, description);
52 }
53 
54 const QList<GUIMessage*> MessageService::messages() const
55 {
56  return m_messages;
57 }
58 
59 QStringList MessageService::senderList() const
60 {
61  QSet<QString> set;
62  for (auto message : messages())
63  set.insert(message->senderName());
64 
65 #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
66  return set.values();
67 #else
68  return set.toList();
69 #endif
70 }
71 
72 //! Reports number of messages of given type reported by the sender.
73 //! If message_type.isEmpty, count all messages of given sender.
74 
75 int MessageService::messageCount(const QObject* sender, const QString& message_type) const
76 {
77  int result(0);
78  for (auto message : messages())
79  if (sender && message->sender() == sender) {
80  if (message_type.isEmpty())
81  ++result;
82  else if (message->messageType() == message_type)
83  ++result;
84  } else if (sender == nullptr) {
85  if (message_type.isEmpty())
86  ++result;
87  else if (message->messageType() == message_type)
88  ++result;
89  }
90 
91  return result;
92 }
93 
94 //! Returns number of warnings for given sender.
95 //! If sender is nullptr, report total number of warnings.
96 
97 int MessageService::warningCount(const QObject* sender) const
98 {
99  return messageCount(sender, message_warning_type);
100 }
101 
102 //! Returns number of errors for given sender.
103 //! If sender is nullptr, report total number of errors.
104 
105 int MessageService::errorCount(const QObject* sender) const
106 {
107  return messageCount(sender, message_error_type);
108 }
109 
110 //! Returns multi-line string representing error messages of given sender.
111 
112 QStringList MessageService::errorDescriptionList(const QObject* sender) const
113 {
114  QStringList result;
115 
116  for (auto message : messages())
117  if (message->sender() == sender && message->messageType() == message_error_type)
118  result.push_back(message->messageDescription());
119 
120  return result;
121 }
Defines class GUIMessage.
Defines MessageService class.
void send_error(QObject *sender, const QString &description)
int messageCount(const QObject *sender, const QString &message_type="") const
Reports number of messages of given type reported by the sender.
void send_warning(QObject *sender, const QString &description)
virtual ~MessageService()
QList< GUIMessage * > m_messages
int errorCount(const QObject *sender=0) const
Returns number of errors for given sender.
int warningCount(const QObject *sender=0) const
Returns number of warnings for given sender.
QStringList errorDescriptionList(const QObject *sender=0) const
Returns multi-line string representing error messages of given sender.
void send_message(QObject *sender, const QString &message_type, const QString &description)
const QList< GUIMessage * > messages() const
QStringList senderList() const