Skip to content

Commit a57a6ab

Browse files
committed
effectivelly implemented #1371 - added a switch to switch entire article list if all selected items are RTL
1 parent 4e698c9 commit a57a6ab

File tree

6 files changed

+62
-25
lines changed

6 files changed

+62
-25
lines changed

src/librssguard/gui/messagesview.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -582,19 +582,25 @@ void MessagesView::loadItem(RootItem* item) {
582582
sort(col, ord, false, true, false, true);
583583
m_sourceModel->loadMessages(item);
584584

585-
/*
586-
if (item->kind() == RootItem::Kind::Feed) {
587-
if (item->toFeed()->isRtl()) {
588-
setLayoutDirection(Qt::LayoutDirection::RightToLeft);
585+
bool switch_entire_rtl_list =
586+
qApp->settings()->value(GROUP(Messages), SETTING(Messages::SwitchArticleListRtl)).toBool();
587+
588+
if (switch_entire_rtl_list && item != nullptr) {
589+
if (item->kind() == RootItem::Kind::Feed) {
590+
setLayoutDirection(item->toFeed()->isRtl() ? Qt::LayoutDirection::RightToLeft : Qt::LayoutDirection::LeftToRight);
589591
}
590592
else {
591-
setLayoutDirection(Qt::LayoutDirection::LeftToRight);
593+
auto fds = item->getSubTreeFeeds();
594+
bool all_feeds_rtl = !fds.isEmpty() && std::all_of(fds.begin(), fds.end(), [](Feed* fd) {
595+
return fd->isRtl();
596+
});
597+
598+
setLayoutDirection(all_feeds_rtl ? Qt::LayoutDirection::RightToLeft : Qt::LayoutDirection::LeftToRight);
592599
}
593600
}
594601
else {
595602
setLayoutDirection(Qt::LayoutDirection::LeftToRight);
596603
}
597-
*/
598604

599605
// Messages are loaded, make sure that previously
600606
// active message is not shown in browser.

src/librssguard/gui/settings/settingsfeedsmessages.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ SettingsFeedsMessages::SettingsFeedsMessages(Settings* settings, QWidget* parent
9696
connect(m_ui->m_cmbIgnoreContentsChanges, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
9797
connect(m_ui->m_cbHideCountsIfNoUnread, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
9898
connect(m_ui->m_checkAutoUpdate, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
99+
connect(m_ui->m_checkSwitchArticleListRtl, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
99100
connect(m_ui->m_cbUpdateFeedListDuringFetching, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
100101
connect(m_ui->m_checkAutoUpdateOnlyUnfocused, &QCheckBox::toggled, this, &SettingsFeedsMessages::dirtifySettings);
101102
connect(m_ui->m_cmbUnreadIconType,
@@ -322,6 +323,8 @@ void SettingsFeedsMessages::loadSettings() {
322323
.toBool());
323324
m_ui->m_checkKeppMessagesInTheMiddle
324325
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::KeepCursorInCenter)).toBool());
326+
m_ui->m_checkSwitchArticleListRtl
327+
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::SwitchArticleListRtl)).toBool());
325328
m_ui->m_checkRemoveReadMessagesOnExit
326329
->setChecked(settings()->value(GROUP(Messages), SETTING(Messages::ClearReadOnExit)).toBool());
327330
m_ui->m_checkAutoUpdate->setChecked(settings()->value(GROUP(Feeds), SETTING(Feeds::AutoUpdateEnabled)).toBool());
@@ -457,6 +460,7 @@ void SettingsFeedsMessages::saveSettings() {
457460
settings()->setValue(GROUP(Messages),
458461
Messages::KeepCursorInCenter,
459462
m_ui->m_checkKeppMessagesInTheMiddle->isChecked());
463+
settings()->setValue(GROUP(Messages), Messages::SwitchArticleListRtl, m_ui->m_checkSwitchArticleListRtl->isChecked());
460464
settings()->setValue(GROUP(Messages), Messages::ClearReadOnExit, m_ui->m_checkRemoveReadMessagesOnExit->isChecked());
461465
settings()->setValue(GROUP(Feeds), Feeds::AutoUpdateEnabled, m_ui->m_checkAutoUpdate->isChecked());
462466
settings()->setValue(GROUP(Feeds), Feeds::AutoUpdateOnlyUnfocused, m_ui->m_checkAutoUpdateOnlyUnfocused->isChecked());

src/librssguard/gui/settings/settingsfeedsmessages.ui

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@
204204
<item>
205205
<spacer name="horizontalSpacer_2">
206206
<property name="orientation">
207-
<enum>Qt::Horizontal</enum>
207+
<enum>Qt::Orientation::Horizontal</enum>
208208
</property>
209209
<property name="sizeHint" stdset="0">
210210
<size>
@@ -349,7 +349,7 @@
349349
<item>
350350
<spacer name="horizontalSpacer_3">
351351
<property name="orientation">
352-
<enum>Qt::Horizontal</enum>
352+
<enum>Qt::Orientation::Horizontal</enum>
353353
</property>
354354
<property name="sizeHint" stdset="0">
355355
<size>
@@ -392,7 +392,7 @@
392392
<item>
393393
<spacer name="horizontalSpacer">
394394
<property name="orientation">
395-
<enum>Qt::Horizontal</enum>
395+
<enum>Qt::Orientation::Horizontal</enum>
396396
</property>
397397
<property name="sizeHint" stdset="0">
398398
<size>
@@ -448,14 +448,14 @@
448448
</property>
449449
</widget>
450450
</item>
451-
<item row="3" column="0">
451+
<item row="4" column="0">
452452
<widget class="QCheckBox" name="m_checkMultilineArticleList">
453453
<property name="text">
454454
<string>Enable multiline items</string>
455455
</property>
456456
</widget>
457457
</item>
458-
<item row="4" column="0" colspan="2">
458+
<item row="5" column="0" colspan="2">
459459
<widget class="HelpSpoiler" name="m_helpMultilineArticleList" native="true">
460460
<property name="minimumSize">
461461
<size>
@@ -465,7 +465,7 @@
465465
</property>
466466
</widget>
467467
</item>
468-
<item row="5" column="0">
468+
<item row="6" column="0">
469469
<widget class="QLabel" name="label_2">
470470
<property name="text">
471471
<string>Row height</string>
@@ -475,7 +475,7 @@
475475
</property>
476476
</widget>
477477
</item>
478-
<item row="5" column="1">
478+
<item row="6" column="1">
479479
<widget class="QSpinBox" name="m_spinHeightRowsMessages">
480480
<property name="minimumSize">
481481
<size>
@@ -494,7 +494,7 @@
494494
</property>
495495
</widget>
496496
</item>
497-
<item row="6" column="0">
497+
<item row="7" column="0">
498498
<widget class="QLabel" name="label_4">
499499
<property name="text">
500500
<string>Top/bottom row padding</string>
@@ -504,7 +504,7 @@
504504
</property>
505505
</widget>
506506
</item>
507-
<item row="6" column="1">
507+
<item row="7" column="1">
508508
<widget class="QSpinBox" name="m_spinPaddingRowsMessages">
509509
<property name="minimumSize">
510510
<size>
@@ -523,7 +523,7 @@
523523
</property>
524524
</widget>
525525
</item>
526-
<item row="7" column="0">
526+
<item row="8" column="0">
527527
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
528528
<property name="text">
529529
<string>Use custom date/time format</string>
@@ -536,7 +536,7 @@
536536
</property>
537537
</widget>
538538
</item>
539-
<item row="7" column="1">
539+
<item row="8" column="1">
540540
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat">
541541
<property name="minimumSize">
542542
<size>
@@ -549,7 +549,7 @@
549549
</property>
550550
</widget>
551551
</item>
552-
<item row="8" column="0">
552+
<item row="9" column="0">
553553
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormatForDatesOnly">
554554
<property name="text">
555555
<string>Use custom date/time format for dates-only</string>
@@ -562,7 +562,7 @@
562562
</property>
563563
</widget>
564564
</item>
565-
<item row="8" column="1">
565+
<item row="9" column="1">
566566
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormatForDatesOnly">
567567
<property name="minimumSize">
568568
<size>
@@ -575,7 +575,7 @@
575575
</property>
576576
</widget>
577577
</item>
578-
<item row="9" column="0">
578+
<item row="10" column="0">
579579
<widget class="QCheckBox" name="m_checkMessagesTimeFormat">
580580
<property name="text">
581581
<string>Custom date/time format for today's articles</string>
@@ -588,7 +588,7 @@
588588
</property>
589589
</widget>
590590
</item>
591-
<item row="9" column="1">
591+
<item row="10" column="1">
592592
<widget class="QComboBox" name="m_cmbMessagesTimeFormat">
593593
<property name="minimumSize">
594594
<size>
@@ -601,14 +601,14 @@
601601
</property>
602602
</widget>
603603
</item>
604-
<item row="10" column="0">
604+
<item row="11" column="0">
605605
<widget class="QLabel" name="label">
606606
<property name="text">
607607
<string>Show relative time for articles not older than</string>
608608
</property>
609609
</widget>
610610
</item>
611-
<item row="10" column="1">
611+
<item row="11" column="1">
612612
<widget class="QSpinBox" name="m_spinRelativeArticleTime">
613613
<property name="minimum">
614614
<number>-1</number>
@@ -618,7 +618,7 @@
618618
</property>
619619
</widget>
620620
</item>
621-
<item row="11" column="0">
621+
<item row="12" column="0">
622622
<widget class="QGroupBox" name="m_gbArticleListFont">
623623
<property name="title">
624624
<string>Article list font</string>
@@ -680,6 +680,13 @@
680680
</property>
681681
</widget>
682682
</item>
683+
<item row="3" column="0" colspan="2">
684+
<widget class="QCheckBox" name="m_checkSwitchArticleListRtl">
685+
<property name="text">
686+
<string>Switch article list to RTL layout if all selected feeds are RTL</string>
687+
</property>
688+
</widget>
689+
</item>
683690
</layout>
684691
</widget>
685692
</widget>
@@ -730,6 +737,7 @@
730737
<tabstop>m_btnChangeMessagesFont</tabstop>
731738
<tabstop>m_cmbUnreadIconType</tabstop>
732739
<tabstop>m_checkKeppMessagesInTheMiddle</tabstop>
740+
<tabstop>m_checkSwitchArticleListRtl</tabstop>
733741
<tabstop>m_checkMultilineArticleList</tabstop>
734742
<tabstop>m_spinHeightRowsMessages</tabstop>
735743
<tabstop>m_spinPaddingRowsMessages</tabstop>
@@ -741,6 +749,12 @@
741749
<tabstop>m_btnChangeMessageListFont</tabstop>
742750
<tabstop>m_gbFeedListFont</tabstop>
743751
<tabstop>m_gbArticleListFont</tabstop>
752+
<tabstop>m_tabFeedsMessages</tabstop>
753+
<tabstop>m_cbLegacyArticleFormatting</tabstop>
754+
<tabstop>m_checkMessagesDateTimeFormatForDatesOnly</tabstop>
755+
<tabstop>m_cmbMessagesDateTimeFormatForDatesOnly</tabstop>
756+
<tabstop>m_cmbArticleMarkingPolicy</tabstop>
757+
<tabstop>m_spinArticleMarkingPolicy</tabstop>
744758
</tabstops>
745759
<resources/>
746760
<connections/>

src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,15 @@ QVariant TextBrowserViewer::loadOneResource(int type, const QUrl& name) {
126126
QByteArray save_arr;
127127
QBuffer save_buf(&save_arr, this);
128128

129-
if (img.save(&save_buf, "PNG", 100)) {
129+
if (img.save(&save_buf, "JPG", 100)) {
130130
save_buf.close();
131+
132+
IOFactory::writeFile(QSL("%1%2.jpg")
133+
.arg(name.toString(QUrl::ComponentFormattingOption::FullyEncoded),
134+
QString::number(acceptable_width))
135+
.remove(QRegularExpression(":|\\/")),
136+
save_arr);
137+
131138
resource_data_all_sizes.insert(acceptable_width, save_arr);
132139
}
133140
else {

src/librssguard/miscellaneous/settings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ DVALUE(int) Messages::ArticleListPaddingDef = -1;
217217
DKEY Messages::MultilineArticleList = "multiline_article_list";
218218
DVALUE(bool) Messages::MultilineArticleListDef = false;
219219

220+
DKEY Messages::SwitchArticleListRtl = "switch_article_list_rtl";
221+
DVALUE(bool) Messages::SwitchArticleListRtlDef = true;
222+
220223
DKEY Messages::UseCustomTime = "use_custom_time";
221224
DVALUE(bool) Messages::UseCustomTimeDef = false;
222225

src/librssguard/miscellaneous/settings.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,9 @@ namespace Messages {
218218
KEY MultilineArticleList;
219219
VALUE(bool) MultilineArticleListDef;
220220

221+
KEY SwitchArticleListRtl;
222+
VALUE(bool) SwitchArticleListRtlDef;
223+
221224
KEY CustomTimeFormat;
222225
VALUE(QString) CustomTimeFormatDef;
223226

0 commit comments

Comments
 (0)