JS8Call-Improved master
Loading...
Searching...
No Matches
DirectedMessageTooltipUtils.h
1#ifndef DIRECTEDMESSAGETOOLTIPUTILS_H
2#define DIRECTEDMESSAGETOOLTIPUTILS_H
3
4#include <QList>
5#include <QPair>
6#include <QString>
7#include <QStringList>
8
9namespace DirectedMessageTooltipUtils {
10
11inline QString joinHumanList(const QStringList &items) {
12 if (items.isEmpty())
13 return QString();
14 if (items.size() == 1)
15 return items.first();
16 return items.mid(0, items.size() - 1).join(", ") +
17 QStringLiteral(" and ") + items.last();
18}
19
20inline QString routingTooltipFromTexts(const QStringList &hops) {
21 if (hops.isEmpty())
22 return QString();
23 if (hops.size() == 1)
24 return QString("Relay to %1").arg(hops.first());
25
26 const QString destination = hops.last();
27 const QStringList relays = hops.mid(0, hops.size() - 1);
28 return QString("Routing through %1 to %2")
29 .arg(joinHumanList(relays), destination);
30}
31
32inline QString relayTooltip(const QString &chainText,
33 const QList<QPair<int, int>> &hops) {
34 QStringList hopTexts;
35 hopTexts.reserve(hops.size());
36 for (const auto &hop : hops)
37 hopTexts.append(chainText.mid(hop.first, hop.second));
38 return routingTooltipFromTexts(hopTexts);
39}
40
41} // namespace DirectedMessageTooltipUtils
42
43#endif // DIRECTEDMESSAGETOOLTIPUTILS_H