qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
systemmessage.h
Go to the documentation of this file.
1 /*
2  Copyright © 2015-2021 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include <QObject>
23 #include <QDateTime>
24 #include <QString>
25 
26 #include <array>
27 
29 {
30  // DO NOT CHANGE ORDER
31  // These values are saved directly to the DB and read back, changing the
32  // order will break persistence!
33  fileSendFailed = 0,
39  cleared,
43  callEnd,
45 };
46 
48 {
49  using Args = std::array<QString, 4>;
51  QDateTime timestamp;
53 
54  QString toString() const
55  {
56  QString translated;
57  size_t numArgs = 0;
58 
59  switch (messageType) {
61  translated = QObject::tr("Failed to send file \"%1\"");
62  numArgs = 1;
63  break;
65  translated = QObject::tr("%1 has joined the group");
66  numArgs = 1;
67  break;
69  translated = QObject::tr("%1 has left the group");
70  numArgs = 1;
71  break;
73  translated = QObject::tr("%1 is now known as %2");
74  numArgs = 2;
75  break;
77  translated = QObject::tr("%1 has set the title to %2");
78  numArgs = 2;
79  break;
81  translated = QObject::tr("Cleared");
82  break;
84  translated = QObject::tr("Call with %1 ended unexpectedly. %2");
85  numArgs = 2;
86  break;
88  translated = QObject::tr("Call with %1 ended. %2");
89  numArgs = 2;
90  break;
92  translated = QObject::tr("%1 is now %2", "e.g. \"Dubslow is now online\"");
93  numArgs = 2;
94  break;
96  translated = QObject::tr("Calling %1");
97  numArgs = 1;
98  break;
100  translated = QObject::tr("%1 calling");
101  numArgs = 1;
102  break;
104  translated = QObject::tr("Message failed to send");
105  break;
106  }
107 
108  for (size_t i = 0; i < numArgs; ++i) {
109  translated = translated.arg(args[i]);
110  }
111 
112  return translated;
113  }
114 };
SystemMessageType::cleared
@ cleared
SystemMessageType
SystemMessageType
Definition: systemmessage.h:28
SystemMessage::timestamp
QDateTime timestamp
Definition: systemmessage.h:51
SystemMessageType::unexpectedCallEnd
@ unexpectedCallEnd
SystemMessage::args
Args args
Definition: systemmessage.h:52
SystemMessageType::messageSendFailed
@ messageSendFailed
SystemMessage
Definition: systemmessage.h:47
SystemMessage::Args
std::array< QString, 4 > Args
Definition: systemmessage.h:49
SystemMessage::toString
QString toString() const
Definition: systemmessage.h:54
SystemMessageType::callEnd
@ callEnd
SystemMessageType::fileSendFailed
@ fileSendFailed
SystemMessageType::titleChanged
@ titleChanged
SystemMessageType::peerNameChanged
@ peerNameChanged
SystemMessageType::outgoingCall
@ outgoingCall
SystemMessageType::userJoinedGroup
@ userJoinedGroup
SystemMessage::messageType
SystemMessageType messageType
Definition: systemmessage.h:50
SystemMessageType::peerStateChange
@ peerStateChange
SystemMessageType::userLeftGroup
@ userLeftGroup
SystemMessageType::incomingCall
@ incomingCall