annotate src/gui/widgets/text.cc @ 370:ea3a74ed2ef9

*: hm, last commit wasn't quite finished?
author Paper <paper@tflc.us>
date Fri, 25 Jul 2025 10:22:04 -0400
parents f81bed4e04ac
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
1 #include "gui/widgets/text.h"
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
2 #include "core/session.h"
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
3 #include "core/strings.h"
253
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
4
77
6f7385bd334c *: update
Paper <mrpapersonic@gmail.com>
parents: 76
diff changeset
5 #include <QDebug>
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
6 #include <QFrame>
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
7 #include <QLabel>
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
8 #include <QPainter>
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
9 #include <QScrollArea>
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
10 #include <QTextBlock>
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
11 #include <QVBoxLayout>
291
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
12
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
13 namespace TextWidgets {
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
14
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
15 /* Generic header meant to be used in conjunction with Section<T> */
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
16
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
17 Header::Header(QWidget *parent) : QWidget(parent), title_(new QLabel), separator_(new QFrame)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
18 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
19 QVBoxLayout *layout = new QVBoxLayout(this);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
20 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
21
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
22 title_->setTextFormat(Qt::PlainText);
183
01d259b9c89f pages/torrents.cc: parse feed descriptions separately
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
23
01d259b9c89f pages/torrents.cc: parse feed descriptions separately
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
24 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
25 QFont font = title_->font();
183
01d259b9c89f pages/torrents.cc: parse feed descriptions separately
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
26 font.setWeight(QFont::Bold);
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
27 title_->setFont(font);
183
01d259b9c89f pages/torrents.cc: parse feed descriptions separately
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
28 }
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
29
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
30 separator_->setFrameShape(QFrame::HLine);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
31 separator_->setFrameShadow(QFrame::Sunken);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
32 separator_->setFixedHeight(2);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
33
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
34 layout->addWidget(title_.data());
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
35 layout->addWidget(separator_.data());
64
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
36 layout->setSpacing(0);
fe719c109dbc *: update
Paper <mrpapersonic@gmail.com>
parents: 63
diff changeset
37 layout->setContentsMargins(0, 0, 0, 0);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
38 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
39
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
40 void Header::SetText(const std::string &text)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
41 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
42 title_->setText(Strings::ToQString(text));
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
43 updateGeometry();
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
44 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
45
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
46 Label::Label(QWidget *parent) : QLabel(parent)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
47 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
48 }
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
49 Label::Label(const QString &string, QWidget *parent) : QLabel(string, parent)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
50 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
51 }
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
52
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
53 void Label::SetElidingMode(bool elide)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
54 {
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
55 elide_ = elide;
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
56 update();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
57 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
58
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
59 void Label::paintEvent(QPaintEvent *event)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
60 {
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
61 if (elide_) {
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
62 /* bruh */
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
63 if (wordWrap()) {
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
64 QFrame::paintEvent(event);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
65
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
66 const QString content = text();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
67
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
68 QPainter painter(this);
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
69 QFontMetrics fontMetrics = painter.fontMetrics();
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
70
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
71 bool didElide = false;
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
72 int lineSpacing = fontMetrics.lineSpacing();
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
73 int y = 0;
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
74
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
75 QTextLayout textLayout(content, painter.font());
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
76 textLayout.beginLayout();
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
77 for (;;) {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
78 QTextLine line = textLayout.createLine();
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
79
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
80 if (!line.isValid())
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
81 break;
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
82
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
83 line.setLineWidth(width());
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
84 int nextLineY = y + lineSpacing;
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
85
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
86 if (height() >= nextLineY + lineSpacing) {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
87 line.draw(&painter, QPoint(0, y));
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
88 y = nextLineY;
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
89 } else {
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
90 QString lastLine = content.mid(line.textStart());
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
91 QString elidedLastLine = fontMetrics.elidedText(lastLine, Qt::ElideRight, width());
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
92 painter.drawText(QPoint(0, y + fontMetrics.ascent()), elidedLastLine);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
93 line = textLayout.createLine();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
94 didElide = line.isValid();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
95 break;
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
96 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
97 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
98 textLayout.endLayout();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
99 } else {
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
100 QString backup_text = QLabel::text();
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
101
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
102 QFontMetrics metric(fontMetrics());
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
103 QString elided_text = metric.elidedText(backup_text, Qt::ElideRight, width());
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
104
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
105 QLabel::setText(elided_text);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
106 QLabel::paintEvent(event);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
107 QLabel::setText(backup_text);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
108 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
109 } else {
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
110 /* QLabel can handle everything... */
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
111 QLabel::paintEvent(event);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
112 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
113 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
114
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
115 /* ---------------------------------------------------------------------------------- */
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
116 /* "Paragraph" widgets, as in widgets meant to hold a bunch of text. */
291
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
117
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
118 Paragraph::Paragraph(QWidget *parent) : QWidget(parent), label_(new QLabel)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
119 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
120 QVBoxLayout *layout = new QVBoxLayout(this);
291
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
121 layout->setSpacing(0);
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
122 layout->setContentsMargins(0, 0, 0, 0);
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
123
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
124 label_->setTextInteractionFlags(Qt::TextBrowserInteraction);
291
9a88e1725fd2 *: refactor lots of stuff
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
125
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
126 /* defaults */
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
127 SetWordWrap(true);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
128 SetSelectable(true);
75
d3e9310598b1 *: refactor some stuff
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
129
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
130 layout->addWidget(label_.data());
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
131 }
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
132
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
133 void Paragraph::SetText(const std::string &text)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
134 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
135 label_->setText(Strings::ToQString(text));
83
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
136 }
d02fdf1d6708 *: huuuge update
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
137
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
138 void Paragraph::SetSelectable(bool enable)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
139 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
140 label_->setAttribute(Qt::WidgetAttribute::WA_TransparentForMouseEvents, !enable);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
141 label_->setCursor(enable ? Qt::IBeamCursor : Qt::ArrowCursor);
75
d3e9310598b1 *: refactor some stuff
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
142 }
d3e9310598b1 *: refactor some stuff
Paper <mrpapersonic@gmail.com>
parents: 74
diff changeset
143
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
144 void Paragraph::SetWordWrap(bool enable)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
145 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
146 label_->setWordWrap(enable);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
147 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
148
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
149 /* LabelledParagraph implementation */
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
150
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
151 LabelledParagraph::LabelledParagraph(QWidget *parent)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
152 : QWidget(parent), contents_(new QWidget), contents_layout_(new QGridLayout)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
153 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
154 QHBoxLayout *ly = new QHBoxLayout(this);
253
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
155
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
156 contents_layout_->setVerticalSpacing(1);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
157 contents_layout_->setHorizontalSpacing(20);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
158 contents_layout_->setContentsMargins(0, 0, 0, 0);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
159 contents_layout_->setColumnStretch(1, 0);
253
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
160
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
161 contents_->setLayout(contents_layout_.data());
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
162
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
163 ly->addWidget(contents_.data());
253
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
164 ly->setContentsMargins(0, 0, 0, 0);
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
165 }
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
166
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
167 LabelledParagraph::~LabelledParagraph()
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
168 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
169 data_.clear();
253
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
170 }
b3549da699a6 *: ooooh! stupid big commit!
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
171
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
172 void LabelledParagraph::Clear(void)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
173 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
174 for (auto &[label, data] : data_) {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
175 contents_layout_->removeWidget(label.data());
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
176 contents_layout_->removeWidget(data.data());
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
177 }
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
178
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
179 data_.clear();
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
180 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
181
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
182 void LabelledParagraph::SetData(const std::vector<std::pair<std::string, std::string>> &data)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
183 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
184 Clear();
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
185
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
186 data_.reserve(data.size());
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
187 for (std::size_t i = 0; i < data.size(); i++) {
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
188 QSharedPointer<Label> first(new Label);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
189 QSharedPointer<Label> second(new Label);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
190
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
191 first->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
192
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
193 first->setText(Strings::ToQString(data[i].first));
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
194 second->setText(Strings::ToQString(data[i].second));
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
195
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
196 data_.push_back({first, second});
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
197
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
198 contents_layout_->addWidget(first.data(), i, 0);
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
199 contents_layout_->addWidget(second.data(), i, 1);
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
200 }
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
201 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
202
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
203 void LabelledParagraph::SetStyle(int style)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
204 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
205 const QString style_sheet = (style & LabelledParagraph::BoldedLabels) ? "font-weight: bold;" : "";
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
206 for (auto &[label, data] : data_)
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 295
diff changeset
207 label->setStyleSheet(style_sheet);
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
208
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
209 if (style & LabelledParagraph::ElidedData) {
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 365
diff changeset
210 for (auto &[label, data] : data_) {
365
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
211 data->setWordWrap(false);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
212 data->SetElidingMode(true);
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
213 }
f81bed4e04ac *: megacommit that probably breaks things
Paper <paper@paper.us.eu.org>
parents: 348
diff changeset
214 }
46
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
215 }
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
216
d0adc4aedfc8 *: update...
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
217 } // namespace TextWidgets