diff --git a/src/data/action/set.cpp b/src/data/action/set.cpp index 3a4fbfce..af68a0a0 100644 --- a/src/data/action/set.cpp +++ b/src/data/action/set.cpp @@ -77,3 +77,27 @@ void ReorderCardsAction::perform(bool to_undo) { assert(card_id2 < set.cards.size()); swap(set.cards[card_id1], set.cards[card_id2]); } + +// ----------------------------------------------------------------------------- : Change stylesheet + + +String ChangeCardStyleAction::getName(bool to_undo) const { + return _("Change style"); +} +void ChangeCardStyleAction::perform(bool to_undo) { + swap(card->stylesheet, stylesheet); +} + +String ChangeSetStyleAction::getName(bool to_undo) const { + return _("Change style (all cards)"); +} +void ChangeSetStyleAction::perform(bool to_undo) { + if (!to_undo) { + stylesheet = set.stylesheet; + set.stylesheet = card->stylesheet; + card->stylesheet = StyleSheetP(); + } else { + card->stylesheet = set.stylesheet; + set.stylesheet = stylesheet; + } +} diff --git a/src/data/action/set.hpp b/src/data/action/set.hpp index 1bd62303..6b678135 100644 --- a/src/data/action/set.hpp +++ b/src/data/action/set.hpp @@ -19,6 +19,7 @@ class Set; DECLARE_POINTER_TYPE(Card); +DECLARE_POINTER_TYPE(StyleSheet); // ----------------------------------------------------------------------------- : Add card @@ -73,5 +74,36 @@ class ReorderCardsAction : public CardListAction { const size_t card_id1, card_id2; ///< Positions of the two cards to swap }; +// ----------------------------------------------------------------------------- : Change stylesheet + +/// Changing the style of a a card +class ChangeCardStyleAction : public Action { + public: + ChangeCardStyleAction(const CardP& card, const StyleSheetP& stylesheet) + : card(card), stylesheet(stylesheet) {} + + virtual String getName(bool to_undo) const; + virtual void perform(bool to_undo); + + //private: + CardP card; ///< The affected card + StyleSheetP stylesheet; ///< Its new stylesheet +}; + +/// Changing the style of a set to that of a card +class ChangeSetStyleAction : public Action { + public: + ChangeSetStyleAction(Set& set, const CardP& card) + : set(set), card(card) {} + + virtual String getName(bool to_undo) const; + virtual void perform(bool to_undo); + + private: + Set& set; ///< The affected set + CardP card; ///< The card whos stylesheet is copied to the set + StyleSheetP stylesheet; ///< The old stylesheet of the set +}; + // ----------------------------------------------------------------------------- : EOF #endif