summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis van der Schagt <dennisschagt@gmail.com>2024-01-21 18:59:04 +0100
committerDennis van der Schagt <dennisschagt@gmail.com>2024-03-31 21:07:39 +0200
commit0175914ee5a831fea04ecec68cf2857b9002ba3f (patch)
treea79817ef17a9d638578f16c4a6b8ae90772c37fe
parentb1f26395661ad8719e96dc12d1694fd73536fef2 (diff)
Move StflRichText instantiation to initial quoting locations (feed/item list)
-rw-r--r--include/feedlistformaction.h3
-rw-r--r--include/itemlistformaction.h3
-rw-r--r--src/feedlistformaction.cpp24
-rw-r--r--src/itemlistformaction.cpp18
4 files changed, 23 insertions, 25 deletions
diff --git a/include/feedlistformaction.h b/include/feedlistformaction.h
index cd3e35e5..bfe99cfb 100644
--- a/include/feedlistformaction.h
+++ b/include/feedlistformaction.h
@@ -8,6 +8,7 @@
#include "listformaction.h"
#include "matcher.h"
#include "regexmanager.h"
+#include "stflrichtext.h"
#include "view.h"
namespace newsboat {
@@ -83,7 +84,7 @@ private:
std::string get_title(std::shared_ptr<RssFeed> feed);
- std::string format_line(const std::string& feedlist_format,
+ StflRichText format_line(const std::string& feedlist_format,
std::shared_ptr<RssFeed> feed,
unsigned int pos,
unsigned int width);
diff --git a/include/itemlistformaction.h b/include/itemlistformaction.h
index 8ce86ded..a212b3dd 100644
--- a/include/itemlistformaction.h
+++ b/include/itemlistformaction.h
@@ -11,6 +11,7 @@
#include "listformaction.h"
#include "listformatter.h"
#include "regexmanager.h"
+#include "stflrichtext.h"
#include "view.h"
namespace newsboat {
@@ -134,7 +135,7 @@ private:
void prepare_set_filterpos();
- std::string item2formatted_line(const ItemPtrPosPair& item,
+ StflRichText item2formatted_line(const ItemPtrPosPair& item,
const unsigned int width,
const std::string& itemlist_format,
const std::string& datetime_format);
diff --git a/src/feedlistformaction.cpp b/src/feedlistformaction.cpp
index cab02e74..12c631f7 100644
--- a/src/feedlistformaction.cpp
+++ b/src/feedlistformaction.cpp
@@ -19,7 +19,6 @@
#include "reloader.h"
#include "rssfeed.h"
#include "scopemeasure.h"
-#include "stflrichtext.h"
#include "strprintf.h"
#include "utils.h"
#include "view.h"
@@ -631,9 +630,7 @@ void FeedListFormAction::set_feedlist(
return StflRichText::from_plaintext_string("ERROR");
}
auto& feed = visible_feeds[line];
- const auto formatted_line = format_line(feedlist_format, feed.first, feed.second, width);
- // TODO: Propagate usage of StflRichText
- return StflRichText::from_quoted(formatted_line);
+ return format_line(feedlist_format, feed.first, feed.second, width);
};
list.invalidate_list_content(visible_feeds.size(), render_line);
@@ -1064,7 +1061,7 @@ std::string FeedListFormAction::get_title(std::shared_ptr<RssFeed> feed)
return title;
}
-std::string FeedListFormAction::format_line(const std::string& feedlist_format,
+StflRichText FeedListFormAction::format_line(const std::string& feedlist_format,
std::shared_ptr<RssFeed> feed,
unsigned int pos,
unsigned int width)
@@ -1087,19 +1084,20 @@ std::string FeedListFormAction::format_line(const std::string& feedlist_format,
fmt.register_fmt('L', utils::censor_url(feed->rssurl()));
fmt.register_fmt('d', utils::utf8_to_locale(feed->description()));
- auto formattedLine = fmt.do_format(feedlist_format, width);
- formattedLine = utils::quote_for_stfl(formattedLine);
+ const auto formattedLine = fmt.do_format(feedlist_format, width);
+ auto stflFormattedLine = StflRichText::from_plaintext_string(formattedLine);
- const int id = rxman.feed_matches(feed.get());
- if (id != -1) {
- formattedLine = strprintf::fmt("<%d>%s</>", id, formattedLine);
+ if (unread_count > 0) {
+ stflFormattedLine.apply_style_tag("<unread>", 0, formattedLine.length());
}
- if (unread_count > 0) {
- formattedLine = strprintf::fmt("<unread>%s</>", formattedLine);
+ const int id = rxman.feed_matches(feed.get());
+ if (id != -1) {
+ const auto tag = strprintf::fmt("<%d>", id);
+ stflFormattedLine.apply_style_tag(tag, 0, formattedLine.length());
}
- return formattedLine;
+ return stflFormattedLine;
}
std::string FeedListFormAction::title()
diff --git a/src/itemlistformaction.cpp b/src/itemlistformaction.cpp
index d012f853..0e93a15e 100644
--- a/src/itemlistformaction.cpp
+++ b/src/itemlistformaction.cpp
@@ -21,7 +21,6 @@
#include "matcherexception.h"
#include "rssfeed.h"
#include "scopemeasure.h"
-#include "stflrichtext.h"
#include "strprintf.h"
#include "utils.h"
#include "view.h"
@@ -1079,9 +1078,7 @@ void ItemListFormAction::draw_items()
return StflRichText::from_plaintext_string("ERROR");
}
auto& item = visible_items[line];
- const auto formatted_line = item2formatted_line(item, width, itemlist_format, datetime_format);
- // TODO: Propagate usage of StflRichText
- return StflRichText::from_quoted(formatted_line);
+ return item2formatted_line(item, width, itemlist_format, datetime_format);
};
list.invalidate_list_content(visible_items.size(), render_line);
@@ -1143,7 +1140,7 @@ void ItemListFormAction::prepare()
prepare_set_filterpos();
}
-std::string ItemListFormAction::item2formatted_line(const ItemPtrPosPair& item,
+StflRichText ItemListFormAction::item2formatted_line(const ItemPtrPosPair& item,
const unsigned int width,
const std::string& itemlist_format,
const std::string& datetime_format)
@@ -1185,19 +1182,20 @@ std::string ItemListFormAction::item2formatted_line(const ItemPtrPosPair& item,
fmt.register_fmt('L', item.first->length());
- auto formattedLine = fmt.do_format(itemlist_format, width);
- formattedLine = utils::quote_for_stfl(formattedLine);
+ const auto formattedLine = fmt.do_format(itemlist_format, width);
+ auto stflFormattedLine = StflRichText::from_plaintext_string(formattedLine);
const int id = rxman.article_matches(item.first.get());
if (id != -1) {
- formattedLine = strprintf::fmt("<%d>%s</>", id, formattedLine);
+ const auto tag = strprintf::fmt("<%d>", id);
+ stflFormattedLine.apply_style_tag(tag, 0, formattedLine.length());
}
if (item.first->unread()) {
- formattedLine = strprintf::fmt("<unread>%s</>", formattedLine);
+ stflFormattedLine.apply_style_tag("<unread>", 0, formattedLine.length());
}
- return formattedLine;
+ return stflFormattedLine;
}
void ItemListFormAction::goto_item(const std::string& title)