make article previewers support RTL too, atleast naive approach at this point

This commit is contained in:
Martin Rotter 2023-07-28 11:07:57 +02:00
parent 73d28d23e2
commit 066221e2ef
3 changed files with 15 additions and 19 deletions

View File

@ -1,4 +1,4 @@
<div class="rssguard-mwrapper" dir="auto" id="%8"> <div class="rssguard-mwrapper" dir="%9" id="%8">
<section class="rssguard-mhead"> <section class="rssguard-mhead">
<div style="float: right; margin: 10px;"><!-- Should it remain here??? -->%7</div> <div style="float: right; margin: 10px;"><!-- Should it remain here??? -->%7</div>

View File

@ -303,9 +303,10 @@ void TextBrowserViewer::loadMessages(const QList<Message>& messages, RootItem* r
setHtml(html_messages.m_html, html_messages.m_baseUrl); setHtml(html_messages.m_html, html_messages.m_baseUrl);
// TODO: pokračovat bool is_rtl_feed = root != nullptr && root->kind() == RootItem::Kind::Feed && qobject_cast<Feed*>(root)->isRtl();
QTextOption op; QTextOption op;
op.setTextDirection(Qt::RightToLeft); op.setTextDirection(is_rtl_feed ? Qt::LayoutDirection::RightToLeft : Qt::LayoutDirection::LeftToRight);
document()->setDefaultTextOption(op); document()->setDefaultTextOption(op);
emit loadingFinished(true); emit loadingFinished(true);
@ -550,16 +551,6 @@ void TextBrowserViewer::setHtml(const QString& html, const QUrl& base_url) {
} }
setVerticalScrollBarPosition(0.0); setVerticalScrollBarPosition(0.0);
// TODO: implement RTL for viewers somehow?
/*
auto to = document()->defaultTextOption();
to.setTextDirection(Qt::LayoutDirection::RightToLeft);
to.setAlignment(Qt::AlignmentFlag::AlignRight);
document()->setDefaultTextOption(to);
*/
} }
void TextBrowserViewer::setHtmlPrivate(const QString& html, const QUrl& base_url) { void TextBrowserViewer::setHtmlPrivate(const QString& html, const QUrl& base_url) {

View File

@ -231,6 +231,15 @@ PreparedHtml SkinFactory::generateHtmlOfArticles(const QList<Message>& messages,
const auto forced_img_size = const auto forced_img_size =
qApp->settings()->value(GROUP(Messages), SETTING(Messages::MessageHeadImageHeight)).toInt(); qApp->settings()->value(GROUP(Messages), SETTING(Messages::MessageHeadImageHeight)).toInt();
auto* feed = root != nullptr
? root->getParentServiceRoot()
->getItemFromSubTree([messages](const RootItem* it) {
return it->kind() == RootItem::Kind::Feed && it->customId() == messages.at(0).m_feedId;
})
->toFeed()
: nullptr;
bool is_rtl_feed = feed != nullptr && feed->isRtl();
for (const Message& message : messages) { for (const Message& message : messages) {
QString enclosures; QString enclosures;
QString enclosure_images; QString enclosure_images;
@ -274,17 +283,13 @@ PreparedHtml SkinFactory::generateHtmlOfArticles(const QList<Message>& messages,
msg_date, msg_date,
enclosures, enclosures,
enclosure_images, enclosure_images,
QString::number(message.m_id))); QString::number(message.m_id),
is_rtl_feed ? QSL("rtl") : QSL("ltr")));
} }
QString msg_contents = QString msg_contents =
skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"), skin.m_layoutMarkupWrapper.arg(messages.size() == 1 ? messages.at(0).m_title : tr("Newspaper view"),
messages_layout); messages_layout);
auto* feed = root->getParentServiceRoot()
->getItemFromSubTree([messages](const RootItem* it) {
return it->kind() == RootItem::Kind::Feed && it->customId() == messages.at(0).m_feedId;
})
->toFeed();
QString base_url; QString base_url;
if (feed != nullptr) { if (feed != nullptr) {