diff --git a/saoriview.cpp b/saoriview.cpp index 2a2594b..98bbce6 100644 --- a/saoriview.cpp +++ b/saoriview.cpp @@ -202,6 +202,9 @@ (htmlDiv("status",accountParser(json["account"].toObject()) + htmlDiv("created_at",tr("created at :") + dt.toLocalTime().toString()) + + (json["spoiler_text"].toString().isEmpty() ? QString() : + htmlDiv("cw",json["spoiler_text"].toString()) + + htmlAnc("cw:",tr("[more]"))) + htmlDiv("content",contentParser(json["content"].toString())) ) ); @@ -429,7 +432,8 @@ m_entries.insert(i,entry); qobject_cast(ui->scrollAreaWidgetContents->layout())->insertWidget(i,entry); if (m_viewname == "notifications") entry->setContent(notificationParser(j.toObject())); - else entry->setContent(statusParser(j.toObject())); + else entry->setContent(statusParser(j.toObject()), + !j.toObject()["spoiler_text"].toString().isEmpty()); } } if (m_entries.count()) { diff --git a/saoriviewentry.cpp b/saoriviewentry.cpp index 3f5aeda..49785ae 100644 --- a/saoriviewentry.cpp +++ b/saoriviewentry.cpp @@ -51,9 +51,12 @@ setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_id = id; connect(SaoriApplication::saori()->cache(),&SaoriCache::downloaded,this,&SaoriViewEntry::downloaded); + connect(this,&SaoriViewEntry::anchorClicked,this,[=](const QUrl url){ + if (url.toString().left(3) == "cw:") setContent(m_original,false); + }); } -void SaoriViewEntry::setContent(const QString content) +void SaoriViewEntry::setContent(const QString content, bool cw) { m_original = content; document()->clear(); @@ -75,7 +78,7 @@ imageResizer(i.left(p),img); document()->addResource(QTextDocument::ImageResource,QUrl("img:" + imageurl),QVariant(img)); } - setText(designedText()); + setText(designedText(cw)); // QTextBrowserのサイズを確定させるトリック。 QResizeEvent e(size(),size()); resizeEvent(&e); @@ -93,13 +96,20 @@ setMinimumHeight(document()->size().height() + 5); } -const QString SaoriViewEntry::designedText() +const QString SaoriViewEntry::designedText(bool cw) { QString result; - result += ""; + result += ""; + if (cw) { + result += ""; + } + result += ""; result += ""; result += imageReplacer(); result += ""; + qDebug() << result; return result; } diff --git a/saoriviewentry.h b/saoriviewentry.h index e3baeb6..96e3860 100644 --- a/saoriviewentry.h +++ b/saoriviewentry.h @@ -38,12 +38,12 @@ public: SaoriViewEntry(QWidget *parent = nullptr); SaoriViewEntry(qlonglong id,QWidget *parent = nullptr); - void setContent(const QString content); + void setContent(const QString content,bool cw = false); qlonglong id(); protected: virtual void resizeEvent(QResizeEvent *e); - const QString designedText(); + const QString designedText(bool cw); const QString imageReplacer(); void imageResizer(const QString type,QImage &image); QImage roundedImage(QImage &image,int r);