| Directory: | ./ |
|---|---|
| File: | src/MessageModelImpl.cpp |
| Date: | 2025-11-14 14:56:08 |
| Exec | Total | Coverage | |
|---|---|---|---|
| Lines: | 225 | 245 | 91.8% |
| Branches: | 326 | 624 | 52.2% |
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /***************************************************************************** | ||
| 2 | * | ||
| 3 | * Copyright (C) 2009 - 2022 Florian Pose <fp@igh.de> | ||
| 4 | * | ||
| 5 | * This file is part of the QtPdCom library. | ||
| 6 | * | ||
| 7 | * The QtPdCom library is free software: you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU Lesser General Public License as published by | ||
| 9 | * the Free Software Foundation, either version 3 of the License, or (at your | ||
| 10 | * option) any later version. | ||
| 11 | * | ||
| 12 | * The QtPdCom library is distributed in the hope that it will be useful, but | ||
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | ||
| 14 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | ||
| 15 | * License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU Lesser General Public License | ||
| 18 | * along with the QtPdCom Library. If not, see <http://www.gnu.org/licenses/>. | ||
| 19 | * | ||
| 20 | ****************************************************************************/ | ||
| 21 | |||
| 22 | #include "MessageModelImpl.h" | ||
| 23 | |||
| 24 | #include "MessageImpl.h" | ||
| 25 | #include "MessageItem.h" | ||
| 26 | |||
| 27 | #include <QDateTime> | ||
| 28 | #include <QFutureWatcher> | ||
| 29 | #include <QtPdCom1/Process.h> | ||
| 30 | |||
| 31 | using QtPdCom::MessageModel; | ||
| 32 | |||
| 33 | /****************************************************************************/ | ||
| 34 | |||
| 35 | /** Constructor. | ||
| 36 | */ | ||
| 37 | 14 | MessageModel::Impl::Impl(MessageModel *model): | |
| 38 | parent {model}, | ||
| 39 | announcedMessageItem {nullptr}, | ||
| 40 | messageManager {nullptr}, | ||
| 41 | rowLimit {1000}, | ||
| 42 | canFetchMore {false}, | ||
| 43 | historicSeqNo {0}, | ||
| 44 | 14 | lessThan {MessageItem::levelNoLessThan} | |
| 45 | 14 | {} | |
| 46 | |||
| 47 | /****************************************************************************/ | ||
| 48 | |||
| 49 | /** Destructor. | ||
| 50 | */ | ||
| 51 | 28 | MessageModel::Impl::~Impl() | |
| 52 | 28 | {} | |
| 53 | |||
| 54 | /****************************************************************************/ | ||
| 55 | |||
| 56 | /** Insert a message item. | ||
| 57 | */ | ||
| 58 | 27 | void MessageModel::Impl::insertItem(MessageItem *msgItem) | |
| 59 | { | ||
| 60 | 27 | int row = messageItemList.indexOf(msgItem); | |
| 61 | |||
| 62 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 25 times.
|
27 | if (row >= 0) { |
| 63 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
2 | parent->beginRemoveRows(QModelIndex(), row, row); |
| 64 | 2 | messageItemList.removeAt(row); | |
| 65 | 2 | parent->endRemoveRows(); | |
| 66 | } | ||
| 67 | |||
| 68 | 77 | row = (messageItemList.empty() | |
| 69 |
4/6✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 4 times.
✓ Branch 7 taken 7 times.
|
11 | or MessageItem::lessThan(msgItem, messageItemList.first())) |
| 70 |
2/2✓ Branch 0 taken 11 times.
✓ Branch 1 taken 16 times.
|
66 | ? 0 |
| 71 |
3/6✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
✓ Branch 6 taken 23 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
39 | : (std::lower_bound( |
| 72 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 23 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
31 | messageItemList.begin(), |
| 73 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 23 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
31 | messageItemList.end(), |
| 74 | msgItem, | ||
| 75 | lessThan) | ||
| 76 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 23 times.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
35 | - messageItemList.begin()); |
| 77 | |||
| 78 |
1/2✓ Branch 3 taken 27 times.
✗ Branch 4 not taken.
|
27 | parent->beginInsertRows(QModelIndex(), row, row); |
| 79 | 27 | messageItemList.insert(row, msgItem); | |
| 80 | 27 | parent->endInsertRows(); | |
| 81 | |||
| 82 | // Is this a candidate for the current/announced message? | ||
| 83 | // | ||
| 84 | // Announce this message as current message, if | ||
| 85 | // - there is either no message announced yet, | ||
| 86 | // - the message type is more important than the type of the announced one | ||
| 87 | // - the sequence number is earlier | ||
| 88 |
2/2✓ Branch 1 taken 17 times.
✓ Branch 2 taken 10 times.
|
54 | if (msgItem->isActive() |
| 89 |
4/4✓ Branch 0 taken 21 times.
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 6 times.
✓ Branch 3 taken 15 times.
|
44 | and (!announcedMessageItem |
| 90 |
2/2✓ Branch 2 taken 4 times.
✓ Branch 3 taken 2 times.
|
6 | or msgItem->getType() > announcedMessageItem->getType() |
| 91 |
2/2✓ Branch 2 taken 3 times.
✓ Branch 3 taken 1 times.
|
4 | or (msgItem->getType() == announcedMessageItem->getType() |
| 92 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
|
3 | and seqNoLessThan( |
| 93 | msgItem->seqNo, | ||
| 94 | 3 | announcedMessageItem->seqNo)))) { | |
| 95 | 17 | announcedMessageItem = msgItem; | |
| 96 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 97 |
4/8✓ Branch 3 taken 17 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 17 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 17 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 17 times.
✗ Branch 13 not taken.
|
34 | qDebug() << __func__ << "currentMessage" << msgItem |
| 98 |
1/2✓ Branch 5 taken 17 times.
✗ Branch 6 not taken.
|
34 | << msgItem->message; |
| 99 | #endif | ||
| 100 | 17 | emit parent->currentMessage(announcedMessageItem->message); | |
| 101 | } | ||
| 102 |
3/4✓ Branch 0 taken 6 times.
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6 times.
|
10 | else if (msgItem->resetTime and msgItem == announcedMessageItem) { |
| 103 | // search for a new message to announce | ||
| 104 | ✗ | announce(); | |
| 105 | } | ||
| 106 | 27 | } | |
| 107 | |||
| 108 | /****************************************************************************/ | ||
| 109 | |||
| 110 | /** Called from the PdCom interface, if a new message appears via | ||
| 111 | * processMessage() or in context of activeMessagesReply(). | ||
| 112 | */ | ||
| 113 | 25 | void MessageModel::Impl::addProcessMessage(const PdCom::Message &pdComMsg) | |
| 114 | { | ||
| 115 |
1/2✓ Branch 2 taken 25 times.
✗ Branch 3 not taken.
|
50 | QString path {QString::fromStdString(pdComMsg.path)}; |
| 116 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 117 |
4/8✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
|
25 | qDebug() << __func__ << "seqno" << pdComMsg.seqNo; |
| 118 | #endif | ||
| 119 | |||
| 120 |
2/4✓ Branch 1 taken 25 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
|
25 | Message *&msg = messageMap[path][pdComMsg.index]; |
| 121 |
2/2✓ Branch 0 taken 14 times.
✓ Branch 1 taken 11 times.
|
25 | if (!msg) { |
| 122 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 123 |
3/6✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
|
14 | qDebug() << __func__ << "not in map. creating new message."; |
| 124 | #endif | ||
| 125 |
2/4✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
|
14 | msg = new Message(); |
| 126 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
14 | msg->impl->fromPdComMessage(pdComMsg); |
| 127 | } | ||
| 128 | |||
| 129 | 25 | auto msgItem {msg->impl->currentItem}; | |
| 130 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 131 |
4/8✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 25 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
|
25 | qDebug() << __func__ << "msgItem" << msgItem; |
| 132 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 16 times.
|
25 | if (msgItem) { |
| 133 |
4/8✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 9 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 9 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 9 times.
✗ Branch 14 not taken.
|
9 | qDebug() << __func__ << "currentItem seqNo" << msgItem->seqNo; |
| 134 | } | ||
| 135 | #endif | ||
| 136 | |||
| 137 |
2/2✓ Branch 0 taken 17 times.
✓ Branch 1 taken 8 times.
|
25 | if (pdComMsg.level != PdCom::LogLevel::Reset) { // set |
| 138 | |||
| 139 |
2/2✓ Branch 1 taken 15 times.
✓ Branch 2 taken 2 times.
|
17 | if (not msg->impl->announced) { |
| 140 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | emit parent->anyMessage(msg); |
| 141 | 15 | msg->impl->announced = true; | |
| 142 | } | ||
| 143 | |||
| 144 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 15 times.
|
17 | if (msgItem) { |
| 145 | // already has current item | ||
| 146 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2 | if (!msgItem->seqNo) { |
| 147 | // Current item has zero seqNo -> from mixed mode. | ||
| 148 | // Just attach the seqNo. | ||
| 149 | 2 | msgItem->seqNo = pdComMsg.seqNo; | |
| 150 | } | ||
| 151 | ✗ | else if (msgItem->seqNo != pdComMsg.seqNo) { | |
| 152 | // Current item has different seqNo. | ||
| 153 | // Not ours, thus create a new one. | ||
| 154 | ✗ | msgItem = new MessageItem(msg, this, pdComMsg.time.count()); | |
| 155 | ✗ | msgItem->seqNo = pdComMsg.seqNo; | |
| 156 | } | ||
| 157 | } | ||
| 158 | else { // no current item | ||
| 159 |
2/4✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 15 times.
✗ Branch 6 not taken.
|
15 | msgItem = new MessageItem(msg, this, pdComMsg.time.count()); |
| 160 | 15 | msgItem->seqNo = pdComMsg.seqNo; | |
| 161 | 15 | msg->impl->currentItem = msgItem; | |
| 162 | } | ||
| 163 |
1/2✓ Branch 1 taken 17 times.
✗ Branch 2 not taken.
|
17 | insertItem(msgItem); |
| 164 | } | ||
| 165 | else { // reset | ||
| 166 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 167 |
4/8✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 8 times.
✗ Branch 14 not taken.
|
8 | qDebug() << __func__ << "reset msgItem" << msgItem; |
| 168 | #endif | ||
| 169 | 8 | msg->impl->announced = false; | |
| 170 | |||
| 171 |
2/2✓ Branch 0 taken 7 times.
✓ Branch 1 taken 1 times.
|
8 | if (msgItem) { |
| 172 | 7 | msgItem->resetTime = pdComMsg.time.count(); | |
| 173 | |||
| 174 | // notify views | ||
| 175 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | int row = messageItemList.indexOf(msgItem); |
| 176 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 177 |
4/8✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 7 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 7 times.
✗ Branch 14 not taken.
|
7 | qDebug() << __func__ << "reset row" << row; |
| 178 | #endif | ||
| 179 |
1/2✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
|
7 | if (row >= 0) { |
| 180 |
1/2✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
|
7 | QModelIndex idx0 = parent->index(row, 0); |
| 181 |
1/2✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
|
7 | QModelIndex idx1 = parent->index(row, 2); |
| 182 |
1/2✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
|
7 | emit parent->dataChanged(idx0, idx1); |
| 183 | } | ||
| 184 | 7 | msg->impl->currentItem = nullptr; | |
| 185 |
1/2✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
|
7 | if (msgItem == announcedMessageItem) { |
| 186 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | announce(); |
| 187 | } | ||
| 188 | } | ||
| 189 | } | ||
| 190 | 25 | } | |
| 191 | |||
| 192 | /****************************************************************************/ | ||
| 193 | |||
| 194 | /** Called from the PdCom interface, if a historic message appears via | ||
| 195 | * getMessageReply(). | ||
| 196 | */ | ||
| 197 | 6 | void MessageModel::Impl::addHistoricMessage( | |
| 198 | const PdCom::Message &pdComMsg, | ||
| 199 | const PdCom::Message &resetMsg) | ||
| 200 | { | ||
| 201 |
1/2✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
|
12 | QString path {QString::fromStdString(pdComMsg.path)}; |
| 202 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 203 |
4/8✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 6 times.
✗ Branch 14 not taken.
|
6 | qDebug() << __func__ << pdComMsg.seqNo << resetMsg.seqNo; |
| 204 | #endif | ||
| 205 | |||
| 206 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | Message *&msg = messageMap[path][pdComMsg.index]; |
| 207 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 2 times.
|
6 | if (!msg) { |
| 208 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | msg = new Message(); |
| 209 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
4 | msg->impl->fromPdComMessage(pdComMsg); |
| 210 | } | ||
| 211 | |||
| 212 |
2/4✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
|
6 | auto msgItem = new MessageItem(msg, this, pdComMsg.time.count()); |
| 213 | 6 | msgItem->seqNo = pdComMsg.seqNo; | |
| 214 | 6 | msgItem->resetTime = resetMsg.time.count(); | |
| 215 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | insertItem(msgItem); |
| 216 | 6 | } | |
| 217 | |||
| 218 | /****************************************************************************/ | ||
| 219 | |||
| 220 | /** Returns a wrapped version of a string. | ||
| 221 | */ | ||
| 222 | 35 | QString MessageModel::Impl::wrapText(const QString &text, unsigned int width) | |
| 223 | { | ||
| 224 | 35 | QString ret; | |
| 225 | int lineOffset, i; | ||
| 226 | |||
| 227 | 35 | lineOffset = 0; | |
| 228 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 35 times.
|
35 | while (lineOffset + (int) width < text.length()) { |
| 229 | // search last space before line end | ||
| 230 | ✗ | for (i = width; i >= 0; i--) { | |
| 231 | ✗ | if (text[lineOffset + i].isSpace()) { | |
| 232 | ✗ | break; // break at whitespace | |
| 233 | } | ||
| 234 | } | ||
| 235 | ✗ | if (i < 0) { // no whitespace found | |
| 236 | ✗ | i = width; // "hard" break at line end | |
| 237 | } | ||
| 238 | |||
| 239 | ✗ | ret += text.mid(lineOffset, i) + QChar(QChar::LineSeparator); | |
| 240 | ✗ | lineOffset += i + 1; // skip line and whitespace | |
| 241 | } | ||
| 242 | |||
| 243 |
2/4✓ Branch 2 taken 35 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 35 times.
✗ Branch 6 not taken.
|
35 | ret += text.mid(lineOffset); // append remaining string |
| 244 | 35 | return ret; | |
| 245 | } | ||
| 246 | |||
| 247 | /****************************************************************************/ | ||
| 248 | |||
| 249 | 13 | void MessageModel::Impl::getHistoryMessage() | |
| 250 | { | ||
| 251 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 13 times.
|
13 | if (!messageManager) { |
| 252 | ✗ | qWarning() << __func__ << "no message manager"; | |
| 253 | ✗ | return; | |
| 254 | } | ||
| 255 | |||
| 256 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 257 |
3/6✓ Branch 4 taken 13 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 13 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 13 times.
✗ Branch 11 not taken.
|
13 | qDebug() << __func__ << "setting canFetchMore to false"; |
| 258 | #endif | ||
| 259 | 13 | canFetchMore = false; // avoid fetchMore called twice for same seqNo | |
| 260 | |||
| 261 | 13 | uint32_t prevSeqNo = historicSeqNo - 1; | |
| 262 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 263 |
4/8✓ Branch 4 taken 13 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 13 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 13 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 13 times.
✗ Branch 14 not taken.
|
13 | qDebug() << __func__ << "fetching" << prevSeqNo; |
| 264 | #endif | ||
| 265 | |||
| 266 | try { | ||
| 267 |
1/4✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
13 | messageManager->getMessage(prevSeqNo, this, &Impl::getMessageReply); |
| 268 | } | ||
| 269 | ✗ | catch (PdCom::Exception &e) { | |
| 270 | ✗ | qDebug() << __func__ << e.what(); | |
| 271 | } | ||
| 272 | } | ||
| 273 | |||
| 274 | /****************************************************************************/ | ||
| 275 | |||
| 276 | 9 | void MessageModel::Impl::announce() | |
| 277 | { | ||
| 278 |
3/4✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 7 times.
|
11 | MessageItemList sortedList(messageItemList); |
| 279 |
1/2✓ Branch 3 taken 9 times.
✗ Branch 4 not taken.
|
27 | std::sort( |
| 280 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
18 | sortedList.begin(), |
| 281 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
18 | sortedList.end(), |
| 282 | MessageItem::levelNoLessThan); | ||
| 283 | |||
| 284 | // if there is no active message, announce a nullptr | ||
| 285 |
4/6✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 7 times.
✓ Branch 7 taken 2 times.
|
9 | if (not sortedList.front()->isActive()) { |
| 286 |
1/2✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
|
7 | if (announcedMessageItem) { |
| 287 | 7 | announcedMessageItem = nullptr; | |
| 288 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 289 |
3/6✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 7 times.
✗ Branch 11 not taken.
|
7 | qDebug() << __func__ << "currentMessage null"; |
| 290 | #endif | ||
| 291 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | emit parent->currentMessage(nullptr); |
| 292 | } | ||
| 293 | 7 | return; | |
| 294 | } | ||
| 295 | |||
| 296 | // the first active message in the sorted list determines the type | ||
| 297 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
|
2 | auto type = sortedList.front()->getType(); |
| 298 | |||
| 299 | // find the earliest message with this type | ||
| 300 | 2 | MessageItem *candidate {nullptr}; | |
| 301 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | for (MessageItemList::const_iterator it = sortedList.begin(); |
| 302 |
7/16✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 4 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
20 | (it != sortedList.end() and (*it)->isActive() |
| 303 |
6/10✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
|
18 | and (*it)->getType() == type); |
| 304 | ++it) { | ||
| 305 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | candidate = *it; |
| 306 | } | ||
| 307 | |||
| 308 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
2 | if (announcedMessageItem == candidate) { |
| 309 | // still the same message, no new announcement needed | ||
| 310 | ✗ | return; | |
| 311 | } | ||
| 312 | 2 | announcedMessageItem = candidate; | |
| 313 | |||
| 314 | 2 | const QtPdCom::Message *msg {nullptr}; | |
| 315 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2 | if (announcedMessageItem) { |
| 316 | 2 | msg = announcedMessageItem->message; | |
| 317 | } | ||
| 318 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 319 |
5/10✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
|
2 | qDebug() << __func__ << "currentMessage" << announcedMessageItem << msg; |
| 320 | #endif | ||
| 321 |
3/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 7 times.
|
2 | emit parent->currentMessage(msg); |
| 322 | } | ||
| 323 | |||
| 324 | /***************************************************************************** | ||
| 325 | * private slots | ||
| 326 | ****************************************************************************/ | ||
| 327 | |||
| 328 | /** Reacts on process values changes of all messages to watch. | ||
| 329 | */ | ||
| 330 | 7 | void MessageModel::Impl::stateChanged() | |
| 331 | { | ||
| 332 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | Message *msg = (Message *) sender(); |
| 333 | 7 | DoubleVariable &var = msg->impl->variable; | |
| 334 |
1/2✓ Branch 1 taken 7 times.
✗ Branch 2 not taken.
|
7 | double time {var.hasData() ? var.getValue() : 0.0}; |
| 335 | |||
| 336 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 337 |
7/14✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 7 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 7 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 7 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 7 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 7 times.
✗ Branch 23 not taken.
|
7 | qDebug() << __func__ << msg->getPath() << msg->getIndex() << time; |
| 338 | #endif | ||
| 339 | |||
| 340 |
5/6✓ Branch 0 taken 4 times.
✓ Branch 1 taken 3 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
✓ Branch 6 taken 3 times.
|
7 | if (time and not msg->impl->announced) { |
| 341 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | emit parent->anyMessage(msg); |
| 342 | 4 | msg->impl->announced = true; | |
| 343 | } | ||
| 344 | |||
| 345 | 7 | MessageItem *msgItem {nullptr}; | |
| 346 | |||
| 347 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 3 times.
|
7 | if (time) { // set |
| 348 | 4 | MessageItem *msgItem {msg->impl->currentItem}; | |
| 349 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | if (!msgItem) { |
| 350 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | msgItem = new MessageItem(msg, this, time * 1e9); |
| 351 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 352 |
4/8✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
|
4 | qDebug() << __func__ << "new msgItem" << msgItem; |
| 353 | #endif | ||
| 354 | 4 | msg->impl->currentItem = msgItem; | |
| 355 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | insertItem(msgItem); |
| 356 | } | ||
| 357 | } | ||
| 358 | else { // reset | ||
| 359 | 3 | msg->impl->announced = false; | |
| 360 | 3 | msgItem = msg->impl->currentItem; | |
| 361 |
1/2✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
|
3 | if (msgItem) { |
| 362 |
1/2✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
|
6 | auto now {QDateTime::currentDateTime()}; |
| 363 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | msgItem->resetTime = now.toMSecsSinceEpoch() * 1000000U; |
| 364 | |||
| 365 | // notify views | ||
| 366 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | int row = messageItemList.indexOf(msgItem); |
| 367 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 368 |
4/8✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
|
3 | qDebug() << __func__ << "reset row" << row; |
| 369 | #endif | ||
| 370 |
1/2✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
|
3 | if (row >= 0) { |
| 371 |
1/2✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
|
3 | QModelIndex idx0 = parent->index(row, 0); |
| 372 |
1/2✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
|
3 | QModelIndex idx1 = parent->index(row, 2); |
| 373 |
1/2✓ Branch 3 taken 3 times.
✗ Branch 4 not taken.
|
3 | emit parent->dataChanged(idx0, idx1); |
| 374 | } | ||
| 375 | |||
| 376 | 3 | msg->impl->currentItem = nullptr; | |
| 377 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | if (msgItem == announcedMessageItem) { |
| 378 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | announce(); |
| 379 | } | ||
| 380 | } | ||
| 381 | } | ||
| 382 | 7 | } | |
| 383 | |||
| 384 | /****************************************************************************/ | ||
| 385 | |||
| 386 | 24 | void MessageModel::Impl::processMessage(PdCom::Message message) | |
| 387 | { | ||
| 388 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 389 |
1/2✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
|
48 | auto path = QString::fromStdString(message.path); |
| 390 |
1/2✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
|
48 | auto text = QString::fromStdString(message.text); |
| 391 |
2/4✓ Branch 4 taken 24 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 24 times.
✗ Branch 8 not taken.
|
24 | qDebug() << __func__; |
| 392 |
5/10✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 24 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 24 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 24 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 24 times.
✗ Branch 16 not taken.
|
48 | qDebug() << "seqNo" << message.seqNo << "level" << (int) message.level |
| 393 |
5/10✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 24 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 24 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 24 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 24 times.
✗ Branch 15 not taken.
|
24 | << "path" << path << "time" << message.time.count() << "index" |
| 394 |
3/6✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 24 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 24 times.
✗ Branch 9 not taken.
|
48 | << message.index << "text" << text; |
| 395 | #endif | ||
| 396 | |||
| 397 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
24 | addProcessMessage(message); |
| 398 | 24 | } | |
| 399 | |||
| 400 | /****************************************************************************/ | ||
| 401 | |||
| 402 | 11 | void MessageModel::Impl::getMessageReply(PdCom::Message message) | |
| 403 | { | ||
| 404 |
3/4✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 9 times.
✓ Branch 7 taken 2 times.
|
20 | auto path = QString::fromStdString(message.path); |
| 405 | |||
| 406 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 407 |
3/4✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 9 times.
✓ Branch 6 taken 2 times.
|
20 | auto text = QString::fromStdString(message.text); |
| 408 |
2/4✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
|
11 | qDebug() << __func__; |
| 409 |
5/10✓ Branch 3 taken 11 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 11 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 11 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 11 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 11 times.
✗ Branch 16 not taken.
|
22 | qDebug() << "seqNo" << message.seqNo << "level" << (int) message.level |
| 410 |
5/10✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 11 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 11 times.
✗ Branch 15 not taken.
|
11 | << "path" << path << "time" << message.time.count() << "index" |
| 411 |
3/6✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 11 times.
✗ Branch 9 not taken.
|
22 | << message.index << "text" << text; |
| 412 | #endif | ||
| 413 | |||
| 414 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 9 times.
|
11 | if (path.isEmpty()) { |
| 415 | // EOF marker - no more messages from process | ||
| 416 | 2 | return; | |
| 417 | } | ||
| 418 | |||
| 419 | 9 | historicSeqNo = message.seqNo; | |
| 420 | |||
| 421 | 9 | canFetchMore = message.level != PdCom::LogLevel::Reset; | |
| 422 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 423 |
4/8✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 9 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 9 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 9 times.
✗ Branch 14 not taken.
|
9 | qDebug() << __func__ << "setting canFetchMore to" << canFetchMore; |
| 424 | #endif | ||
| 425 | |||
| 426 | 9 | bool stillActive {false}; | |
| 427 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 3 times.
|
9 | if (canFetchMore) { |
| 428 | // found a message that was set in the past. try to find the reset. | ||
| 429 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 430 | 6 | bool found {false}; | |
| 431 |
3/6✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 6 times.
✗ Branch 10 not taken.
|
12 | qDebug() << __func__ << "reset msg list size is" |
| 432 |
1/2✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
|
12 | << resetMessagesList.size(); |
| 433 | #endif | ||
| 434 |
3/6✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 6 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
6 | for (auto r = resetMessagesList.begin(); r != resetMessagesList.end(); |
| 435 | r++) { | ||
| 436 |
5/10✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 6 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 6 times.
✗ Branch 12 not taken.
|
6 | if (r->path == message.path and r->index == message.index) { |
| 437 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | addHistoricMessage(message, *r); |
| 438 |
1/2✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | resetMessagesList.erase(r); |
| 439 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 440 | 6 | found = true; | |
| 441 | #endif | ||
| 442 | 6 | break; | |
| 443 | } | ||
| 444 | } | ||
| 445 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 446 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
|
6 | if (!found) { |
| 447 | ✗ | qDebug() << __func__ << "reset message not found for" | |
| 448 | ✗ | << message.seqNo; | |
| 449 | // found a message that seems to be still active. Go on with | ||
| 450 | // reading, otherwise views won't ask for more data | ||
| 451 | ✗ | stillActive = true; | |
| 452 | } | ||
| 453 | #endif | ||
| 454 | } | ||
| 455 | else { | ||
| 456 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | resetMessagesList.append(message); |
| 457 | } | ||
| 458 | |||
| 459 |
4/6✓ Branch 0 taken 4 times.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
|
9 | if ((!canFetchMore or stillActive) and historicSeqNo) { |
| 460 |
3/4✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✓ Branch 5 taken 2 times.
|
5 | getHistoryMessage(); |
| 461 | } | ||
| 462 | } | ||
| 463 | |||
| 464 | /****************************************************************************/ | ||
| 465 | |||
| 466 | 4 | void MessageModel::Impl::activeMessagesReply( | |
| 467 | std::vector<PdCom::Message> messageList) | ||
| 468 | { | ||
| 469 | 4 | quint32 maxSeqNo {0}; | |
| 470 | |||
| 471 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 472 |
5/10✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 4 times.
✗ Branch 19 not taken.
|
4 | qDebug().nospace() << __func__ << "(" << messageList.size() << ")"; |
| 473 | #endif | ||
| 474 |
3/4✓ Branch 5 taken 4 times.
✓ Branch 6 taken 4 times.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
8 | for (auto message : messageList) { |
| 475 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 476 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
8 | auto path = QString::fromStdString(message.path); |
| 477 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
8 | auto text = QString::fromStdString(message.text); |
| 478 |
5/10✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 4 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
|
8 | qDebug() << "seqNo" << message.seqNo << "level" << (int) message.level |
| 479 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
|
4 | << "path" << path << "time" << message.time.count() |
| 480 |
4/8✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
|
8 | << "index" << message.index << "text" << text; |
| 481 | #endif | ||
| 482 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 3 times.
|
4 | if (message.level != PdCom::LogLevel::Reset) { |
| 483 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | addProcessMessage(message); |
| 484 | } | ||
| 485 | else { | ||
| 486 | // one entry in the list of active messages can be a reset | ||
| 487 | // message, to announce the current sequence number | ||
| 488 |
1/2✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
|
3 | resetMessagesList.append(message); |
| 489 | } | ||
| 490 | |||
| 491 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | if (message.seqNo > maxSeqNo) { |
| 492 | 4 | maxSeqNo = message.seqNo; | |
| 493 | } | ||
| 494 | } | ||
| 495 | |||
| 496 |
1/2✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
4 | if (maxSeqNo > 0) { |
| 497 | // now fetch one historic message | ||
| 498 | 4 | historicSeqNo = maxSeqNo; | |
| 499 | 4 | getHistoryMessage(); | |
| 500 | } | ||
| 501 | 4 | } | |
| 502 | |||
| 503 | /****************************************************************************/ | ||
| 504 | |||
| 505 | 27 | void MessageModel::Impl::processReset() | |
| 506 | { | ||
| 507 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 508 |
2/4✓ Branch 4 taken 27 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 27 times.
✗ Branch 8 not taken.
|
27 | qDebug() << __func__; |
| 509 | #endif | ||
| 510 | |||
| 511 | 27 | canFetchMore = false; | |
| 512 | 27 | historicSeqNo = 0; | |
| 513 | 27 | resetMessagesList.clear(); | |
| 514 | |||
| 515 | 27 | parent->beginResetModel(); | |
| 516 | 27 | qDeleteAll(messageItemList); | |
| 517 | 27 | messageItemList.clear(); | |
| 518 | 27 | parent->endResetModel(); | |
| 519 | |||
| 520 | // reset current item pointers | ||
| 521 |
6/10✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 27 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 7 times.
✓ Branch 10 taken 27 times.
✓ Branch 14 taken 7 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 7 times.
✗ Branch 19 not taken.
|
34 | for (auto hash : messageMap) { |
| 522 |
6/10✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 7 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 7 times.
✓ Branch 10 taken 7 times.
✓ Branch 12 taken 7 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 7 times.
✗ Branch 16 not taken.
|
14 | for (auto msg : hash) { |
| 523 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 6 times.
|
7 | if (msg->impl->currentItem) { |
| 524 | 1 | msg->impl->currentItem = nullptr; | |
| 525 | } | ||
| 526 | } | ||
| 527 | } | ||
| 528 | |||
| 529 |
2/2✓ Branch 0 taken 1 times.
✓ Branch 1 taken 26 times.
|
27 | if (announcedMessageItem) { |
| 530 | 1 | announcedMessageItem = nullptr; | |
| 531 | #if PD_DEBUG_MESSAGE_MODEL | ||
| 532 |
3/6✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
1 | qDebug() << __func__ << "currentMessage null"; |
| 533 | #endif | ||
| 534 | 1 | emit parent->currentMessage(nullptr); | |
| 535 | } | ||
| 536 | 27 | } | |
| 537 | |||
| 538 | /****************************************************************************/ | ||
| 539 | |||
| 540 | 5 | void MessageModel::Impl::reloadActiveMessages() | |
| 541 | { | ||
| 542 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
5 | if (!messageManager) { |
| 543 | ✗ | return; | |
| 544 | } | ||
| 545 | |||
| 546 |
1/2✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
|
5 | messageManager->activeMessages(this, &Impl::activeMessagesReply); |
| 547 | } | ||
| 548 | |||
| 549 | /****************************************************************************/ | ||
| 550 |