aboutsummaryrefslogtreecommitdiff
path: root/include/Body.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-11-22 10:29:58 +0100
committerdec05eba <dec05eba@protonmail.com>2020-11-22 10:29:58 +0100
commit5dd0248e16522a3672c58a7892d549840257e8dd (patch)
tree5c2dc3a8b925627216f28453862413f03644766b /include/Body.hpp
parent4ddc6897dd53274bb68eb6401715c718a212d9ab (diff)
Matrix: add reactions
Diffstat (limited to 'include/Body.hpp')
-rw-r--r--include/Body.hpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/Body.hpp b/include/Body.hpp
index 45121f8..56ef262 100644
--- a/include/Body.hpp
+++ b/include/Body.hpp
@@ -31,6 +31,11 @@ namespace QuickMedia {
CIRCLE
};
+ struct Reaction {
+ std::unique_ptr<Text> text;
+ void *userdata = nullptr;
+ };
+
class BodyItem {
public:
BodyItem(std::string _title);
@@ -88,6 +93,25 @@ namespace QuickMedia {
dirty_author = true;
}
+ void add_reaction(std::string text, void *userdata) {
+ sf::String str = sf::String::fromUtf8(text.begin(), text.end());
+ Reaction reaction;
+ reaction.text = std::make_unique<Text>(std::move(str), false, 14, 0.0f);
+ reaction.userdata = userdata;
+ reactions.push_back(std::move(reaction));
+ }
+
+ // Returns true if reaction is found
+ bool remove_reaction_by_userdata(void *userdata) {
+ for(auto it = reactions.begin(); it != reactions.end(); ++it) {
+ if(it->userdata == userdata) {
+ reactions.erase(it);
+ return true;
+ }
+ }
+ return false;
+ }
+
const std::string& get_title() const { return title; }
const std::string& get_description() const { return description; }
const std::string& get_author() const { return author; }
@@ -124,6 +148,7 @@ namespace QuickMedia {
std::shared_ptr<BodyItem> embedded_item; // Used by matrix for example to display reply message body. Note: only the first level of embedded items is rendered (not recursive, this is done on purpose)
ThumbnailMaskType thumbnail_mask_type = ThumbnailMaskType::NONE;
sf::Vector2i thumbnail_size;
+ std::vector<Reaction> reactions; // TODO: Move to a different body item type
private:
// TODO: Clean up these strings when set in text, and get_title for example should return |title_text.getString()|
// TODO: Use sf::String instead, removes the need to convert to utf32 every time the text is dirty (for example when resizing window)