diff options
author | Dennis van der Schagt <dennisschagt@gmail.com> | 2024-01-21 18:59:04 +0100 |
---|---|---|
committer | Dennis van der Schagt <dennisschagt@gmail.com> | 2024-03-31 21:07:39 +0200 |
commit | 0175914ee5a831fea04ecec68cf2857b9002ba3f (patch) | |
tree | a79817ef17a9d638578f16c4a6b8ae90772c37fe | |
parent | b1f26395661ad8719e96dc12d1694fd73536fef2 (diff) |
Move StflRichText instantiation to initial quoting locations (feed/item list)
-rw-r--r-- | include/feedlistformaction.h | 3 | ||||
-rw-r--r-- | include/itemlistformaction.h | 3 | ||||
-rw-r--r-- | src/feedlistformaction.cpp | 24 | ||||
-rw-r--r-- | src/itemlistformaction.cpp | 18 |
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) |