File indexing completed on 2024-05-12 05:39:54
0001 /*************************************************************************** 0002 * Copyright (C) 2019 by Renaud Guezennec * 0003 * http://www.rolisteam.org/contact * 0004 * * 0005 * This software is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 #ifndef MESSAGEHELPER_H 0021 #define MESSAGEHELPER_H 0022 0023 #include <QHash> 0024 #include <QPixmap> 0025 #include <QString> 0026 #include <QVariant> 0027 0028 #include "media/mediatype.h" 0029 #include "mindmap/model/imagemodel.h" 0030 #include "network/networkmessage.h" 0031 #include <core_global.h> 0032 0033 namespace vmap 0034 { 0035 class RectController; 0036 class TextController; 0037 class LineController; 0038 class PathController; 0039 class ImageItemController; 0040 class CharacterItemController; 0041 class EllipseController; 0042 class VisualItemController; 0043 } // namespace vmap 0044 0045 namespace mindmap 0046 { 0047 class LinkController; 0048 class MindNode; 0049 } // namespace mindmap 0050 0051 class DiceAliasModel; 0052 class DiceAlias; 0053 class CharacterStateModel; 0054 class CharacterState; 0055 class MediaControllerBase; 0056 class ImageController; 0057 class NetworkMessageWriter; 0058 class NetworkMessageReader; 0059 class PlayerModel; 0060 class WebpageController; 0061 class PdfController; 0062 class VectorialMapController; 0063 class Character; 0064 class CharacterSheet; 0065 class CharacterSheetController; 0066 class SharedNoteController; 0067 class MindMapController; 0068 class CORE_EXPORT MessageHelper 0069 { 0070 public: 0071 static void sendOffGoodBye(); 0072 static void closeMedia(const QString& id, Core::ContentType type); 0073 0074 static void sendOffAllDiceAlias(DiceAliasModel* model); 0075 static void sendOffDiceAliasRemoved(int i); 0076 static void sendOffDiceAliasMoved(int i, int j); 0077 static void sendOffOneDiceAlias(const DiceAlias* da, int row); 0078 0079 static void sendOffAllCharacterState(CharacterStateModel* model); 0080 static void sendOffOneCharacterState(const CharacterState* da, int row); 0081 static void sendOffCharacterStateRemoved(const QString& id); 0082 static void sendOffCharacterStateMoved(int i, int j); 0083 0084 static QString readPlayerId(NetworkMessageReader& msg); 0085 static void sendOffMediaControllerBase(const MediaControllerBase* ctrl, NetworkMessageWriter& msg); 0086 0087 // vmap 0088 static QHash<QString, QVariant> readVectorialMapData(NetworkMessageReader* msg); 0089 static void sendOffVMap(VectorialMapController* ctrl); 0090 0091 static const std::map<QString, QVariant> readRect(NetworkMessageReader* msg); 0092 static const std::map<QString, QVariant> readLine(NetworkMessageReader* msg); 0093 static const std::map<QString, QVariant> readEllipse(NetworkMessageReader* msg); 0094 static const std::map<QString, QVariant> readImage(NetworkMessageReader* msg); 0095 static const std::map<QString, QVariant> readText(NetworkMessageReader* msg); 0096 static const std::map<QString, QVariant> readPath(NetworkMessageReader* msg); 0097 static const std::map<QString, QVariant> readCharacter(NetworkMessageReader* msg); 0098 0099 static void sendOffRect(const vmap::RectController* ctrl, const QString& mapId); 0100 static void sendOffLine(const vmap::LineController* ctrl, const QString& mapId); 0101 static void sendOffEllispe(const vmap::EllipseController* ctrl, const QString& mapId); 0102 static void sendOffText(const vmap::TextController* ctrl, const QString& mapId); 0103 static void sendOffPath(const vmap::PathController* ctrl, const QString& mapId); 0104 static void sendOffImage(const vmap::ImageItemController* ctrl, const QString& mapId); 0105 static void sendOffCharacter(const vmap::CharacterItemController* ctrl, const QString& mapId); 0106 0107 // media 0108 static QString readMediaId(NetworkMessageReader* msg); 0109 static QHash<QString, QVariant> readMediaData(NetworkMessageReader* msg); 0110 0111 // image 0112 static void sendOffImage(ImageController* ctrl); 0113 static QHash<QString, QVariant> readImageData(NetworkMessageReader* msg); 0114 0115 // PDF 0116 static void sendOffPdfFile(PdfController* ctrl); 0117 static QHash<QString, QVariant> readPdfData(NetworkMessageReader* msg); 0118 0119 // webpage 0120 static void shareWebpage(WebpageController* ctrl); 0121 static void updateWebpage(WebpageController* ctrl); 0122 static QHash<QString, QVariant> readWebPageData(NetworkMessageReader* msg); 0123 static void readUpdateWebpage(WebpageController* ctrl, NetworkMessageReader* msg); 0124 0125 // charactersheet 0126 static void stopSharingSheet(const QString& sheetId, const QString& ctrlId, const QString& characterId); 0127 static void shareCharacterSheet(CharacterSheet* sheet, Character* character, CharacterSheetController* ctrl); 0128 static QHash<QString, QVariant> readCharacterSheet(NetworkMessageReader* msg); 0129 static void readUpdateField(CharacterSheetController* ctrl, NetworkMessageReader* msg); 0130 0131 // sharedNotes 0132 static void shareNotesTo(const SharedNoteController* ctrl, const QStringList& recipiants); 0133 static QHash<QString, QVariant> readSharedNoteData(NetworkMessageReader* msg); 0134 static void closeNoteTo(SharedNoteController* sharedCtrl, const QString& id); 0135 0136 // Mindmap 0137 static void sendOffMindmapToAll(MindMapController* ctrl); 0138 static void sendOffMindmapPermissionUpdate(MindMapController* ctrl); 0139 static void openMindmapTo(MindMapController* ctrl, const QString& id); 0140 static void closeMindmapTo(MindMapController* ctrl, const QString& id); 0141 static void sendOffMindmapPermissionUpdateTo(Core::SharingPermission perm, MindMapController* ctrl, 0142 const QString& id); 0143 static QHash<QString, QVariant> readMindMap(NetworkMessageReader* msg); 0144 static void readMindMapAddItem(MindMapController* ctrl, NetworkMessageReader* msg); 0145 static void buildAddItemMessage(NetworkMessageWriter& msg, const QList<mindmap::MindNode*>& nodes, 0146 const QList<mindmap::LinkController*>& links); 0147 static void buildRemoveItemMessage(NetworkMessageWriter& msg, const QStringList& nodes, const QStringList& links); 0148 static void readMindMapRemoveMessage(MindMapController* ctrl, NetworkMessageReader* msg); 0149 0150 // data 0151 static void updatePerson(NetworkMessageReader& data, PlayerModel* playerModel); 0152 static QStringList readIdList(NetworkMessageReader& data); 0153 static void fetchCharacterStatesFromNetwork(NetworkMessageReader* data, CharacterStateModel* model); 0154 static void fetchDiceAliasFromNetwork(NetworkMessageReader* data, QList<DiceAlias*>* list); 0155 0156 // ImageModel 0157 static void sendOffImageInfo(const mindmap::ImageInfo& info, MediaControllerBase* ctrl); 0158 static void sendOffRemoveImageInfo(const QString& id, MediaControllerBase* ctrl); 0159 static void readAddSubImage(mindmap::ImageModel* model, NetworkMessageReader* msg); 0160 static void readRemoveSubImage(mindmap::ImageModel* model, NetworkMessageReader* msg); 0161 0162 // MusicPlayer 0163 static void sendOffPlaySong(const QString& songName, qint64 time, int player); 0164 static void sendOffMusicPlayerOrder(NetMsg::Action netAction, int player); 0165 static void sendOffTime(qint64 time, int player); 0166 0167 0168 static void convertVisualItemCtrlAndAdd(vmap::VisualItemController *ctrl, NetworkMessageWriter &msg); 0169 0170 static void addCharacterController(const vmap::CharacterItemController *ctrl, NetworkMessageWriter &msg); 0171 static void addPathController(const vmap::PathController *ctrl, NetworkMessageWriter &msg); 0172 static void addTextController(const vmap::TextController *ctrl, NetworkMessageWriter &msg); 0173 static void addImageController(const vmap::ImageItemController *ctrl, NetworkMessageWriter &msg); 0174 static void addLineController(const vmap::LineController *ctrl, NetworkMessageWriter &msg); 0175 static void addEllipseController(const vmap::EllipseController *ctrl, NetworkMessageWriter &msg); 0176 }; 0177 0178 #endif // MESSAGEHELPER_H