/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include namespace Swift { class ChatSnippet { public: enum Direction { RTL, LTR }; ChatSnippet(bool appendToPrevious); virtual ~ChatSnippet(); virtual const QString& getContent() const = 0; virtual QString getContinuationElementID() const { return ""; } std::shared_ptr getContinuationFallbackSnippet() const {return continuationFallback_;} bool getAppendToPrevious() const { return appendToPrevious_; } static QString escape(const QString& original) { QString result(original); result.replace("%message%", "%message%"); result.replace("%sender%", "%sender%"); result.replace("%wrapped_sender%", "%wrapped_sender%"); result.replace("%time%", "%%time%"); result.replace("%shortTime%", "%%shortTime%"); result.replace("%userIconPath%", "%userIconPath%"); result.replace("%id%", "%id%"); result.replace("\t", " "); result.replace(" ", "  "); return result; } static QString timeToEscapedString(const QDateTime& time); static Direction getDirection(const std::string& message); static Direction getDirection(const ChatWindow::ChatMessage& message); static Direction getDirection(const QString& message); protected: static QString directionToCSS(Direction direction); QString wrapResizable(const QString& text); void setContinuationFallbackSnippet(std::shared_ptr continuationFallback) { continuationFallback_ = continuationFallback; } private: bool appendToPrevious_; std::shared_ptr continuationFallback_; }; }