Mercurial > minori
annotate src/gui/widgets/text.cc @ 374:f7bb2978de48
gui/pages/anime_list: add Search right-click menu, don't create menu items that do nothing
author | Paper <paper@tflc.us> |
---|---|
date | Fri, 25 Jul 2025 11:03:34 -0400 |
parents | ea3a74ed2ef9 |
children |
rev | line source |
---|---|
46 | 1 #include "gui/widgets/text.h" |
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 | 4 |
77 | 5 #include <QDebug> |
46 | 6 #include <QFrame> |
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 | 10 #include <QTextBlock> |
11 #include <QVBoxLayout> | |
291 | 12 |
46 | 13 namespace TextWidgets { |
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 | 20 setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum); |
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 | 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 | 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 | 36 layout->setSpacing(0); |
37 layout->setContentsMargins(0, 0, 0, 0); | |
46 | 38 } |
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 | 43 updateGeometry(); |
46 | 44 } |
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 | 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 | 121 layout->setSpacing(0); |
122 layout->setContentsMargins(0, 0, 0, 0); | |
123 | |
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
295
diff
changeset
|
124 label_->setTextInteractionFlags(Qt::TextBrowserInteraction); |
291 | 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 | 129 |
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
295
diff
changeset
|
130 layout->addWidget(label_.data()); |
83 | 131 } |
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 | 136 } |
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 | 142 } |
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 | 147 } |
148 | |
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
295
diff
changeset
|
149 /* LabelledParagraph implementation */ |
46 | 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 | 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 | 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 | 164 ly->setContentsMargins(0, 0, 0, 0); |
165 } | |
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 | 170 } |
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 | 178 |
348
6b0768158dcd
text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents:
295
diff
changeset
|
179 data_.clear(); |
46 | 180 } |
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 | 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 | 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 | 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 | 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 | 201 } |
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 | 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 | 215 } |
216 | |
217 } // namespace TextWidgets |