55 , m_searchedText(std::move(searchedText))
57 setBackgroundBrush(QBrush(Qt::white));
58 setSceneRect(0, 0, 1, 1);
60 for (
auto const & result : results)
65 auto const numberOfModules =
m_results.size();
76 qApp->processEvents(QEventLoop::AllEvents);
77 for (
auto const & moduleresultPtr : result.results) {
80 BT_ASSERT(
dynamic_cast<sword::VerseKey
const *
>(
81 moduleresultPtr.get()));
82 auto const *
const vk =
83 static_cast<sword::VerseKey
const *
>(
84 moduleresultPtr.get());
85 auto key = std::tuple(vk->getTestament(), vk->getBook());
87 static_assert(std::is_same_v<
decltype(key),
90 analysisItem = it->second;
94 QString::fromUtf8(vk->getBookName()),
96 m_itemList.emplace(std::move(key), analysisItem);
98 auto const count = ++analysisItem->
counts()[moduleIndex];
109 auto & analysisItem = *vp.second;
110 addItem(&analysisItem);
111 analysisItem.setRect(xPos,
113 analysisItem.rect().width(),
114 analysisItem.rect().height());
117 QStringList toolTipItems;
120 auto const *
const info = result.module;
122 auto const count = result.results.size();
123 double const percent =
125 ? ((
static_cast<double>(analysisItem.counts()[i])
126 *
static_cast<double>(100.0))
127 /
static_cast<double>(count))
130 QStringLiteral(
"%1\">%2</span></b></td><td>%3 (%4")
132 info ? info->name() : QString(),
133 QString::number(analysisItem.counts()[i]),
134 QString::number(percent,
'g', 2)));
137 #define ROW_START "<tr bgcolor=\"white\"><td><b><span style=\"color:"
138 #define ROW_END "%)</td></tr>"
139 analysisItem.setToolTip(
141 "<center><b>%1</b></center><hr/>"
142 "<table cellspacing=\"0\" cellpadding=\"3\" "
143 "width=\"100%\" height=\"100%\" align=\"center\">"
145 .arg(analysisItem.bookName().toHtmlEscaped(),
221 auto const title(tr(
"BibleTime Search Analysis"));
222 out << QStringLiteral(
223 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
224 "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" "
225 "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
226 "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>")
230 "<style type=\"text/css\">"
231 "body{background-color:#fff;color:#000}"
232 "table{border-collapse:collapse}"
233 "td{border:1px solid #333}"
234 "th{font-size:130%;text-align:left;vertical-align:top}"
235 "td,th{text-align:left;padding:0.2em 0.5em}"
236 ".r{text-align:right}"
238 "<meta http-equiv=\"Content-Type\" "
239 "content=\"text/html; charset=utf-8\"/>"
242 << QStringLiteral(
"</h1><p><span style=\"font-weight:bold\">")
243 << tr(
"Search text:")
244 << QStringLiteral(
"</span> ")
246 << QStringLiteral(
"</p><table><caption>")
247 << tr(
"Results by work and book")
248 << QStringLiteral(
"</caption><tr><th>")
250 << QStringLiteral(
"</th>");
253 out << QStringLiteral(
"<th>")
254 << result.module->name().toHtmlEscaped()
255 << QStringLiteral(
"</th>");
256 out << QStringLiteral(
"</tr>");
259 auto const & analysisItem = *vp.second;
260 out << QStringLiteral(
"<tr><td>")
261 << analysisItem.bookName().toHtmlEscaped()
262 << QStringLiteral(
"</td>");
263 for (
auto const count : analysisItem.counts())
264 out << QStringLiteral(
"<td class=\"r\">")
265 << QString::number(count)
266 << QStringLiteral(
"</td>");
267 out << QStringLiteral(
"</tr>");
269 out << QStringLiteral(
"<tr><th class=\"r\">")
271 << QStringLiteral(
"</th>");
274 out << QStringLiteral(
"<td class=\"r\">")
275 << QString::number(result.results.size())
276 << QStringLiteral(
"</td>");
279 out << QStringLiteral(
"</tr></table><p style=\"text-align:center;"
280 "font-size:x-small\">")
281 << tr(
"Created by <a href=\"%1\">BibleTime</a>").arg(BT_HOMEPAGE)
282 << QStringLiteral(
"</p></body></html>");