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