File indexing completed on 2024-05-26 05:40:59
0001 /*************************************************************************** 0002 * Copyright (C) 2022 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 SHEETCONTROLLER_H 0021 #define SHEETCONTROLLER_H 0022 0023 #include <QObject> 0024 #include <QPointer> 0025 #include <QQmlEngine> 0026 0027 #include <charactersheet/charactersheet_global.h> 0028 0029 class AbstractApplicationController; 0030 class CHARACTERSHEET_EXPORT SheetController : public QObject 0031 { 0032 Q_OBJECT 0033 Q_PROPERTY(int pageMax READ pageMax WRITE setPageMax NOTIFY pageMaxChanged REQUIRED) 0034 Q_PROPERTY(int currentPage READ currentPage WRITE setCurrentPage NOTIFY currentPageChanged) 0035 Q_PROPERTY(qreal zoomLevel READ zoomLevel WRITE setZoomLevel NOTIFY zoomLevelChanged) 0036 Q_PROPERTY(qreal parentWidth READ parentWidth WRITE setParentWidth NOTIFY parentWidthChanged) 0037 Q_PROPERTY(qreal imageBgWidth READ imageBgWidth WRITE setImageBgWidth NOTIFY imageBgWidthChanged) 0038 Q_PROPERTY(bool adaptWidthToPage READ adaptWidthToPage WRITE setAdaptWidthToPage NOTIFY adaptWidthToPageChanged) 0039 Q_PROPERTY(AbstractApplicationController* appCtrl READ appCtrl WRITE setAppCtrl NOTIFY appCtrlChanged REQUIRED) 0040 QML_ELEMENT 0041 public: 0042 explicit SheetController(QObject* parent= nullptr); 0043 0044 int pageMax() const; 0045 void setPageMax(int newPageMax); 0046 0047 int currentPage() const; 0048 void setCurrentPage(int newCurrentPage); 0049 0050 qreal zoomLevel() const; 0051 void setZoomLevel(qreal newZoomLevel); 0052 0053 Q_INVOKABLE void msgToGM(const QString& msg); 0054 Q_INVOKABLE void msgToAll(const QString& msg); 0055 Q_INVOKABLE void rollDice(const QString& cmd, bool withAlias, bool gmOnly= false); 0056 Q_INVOKABLE void nextPage(); 0057 Q_INVOKABLE void previousPage(); 0058 0059 AbstractApplicationController* appCtrl() const; 0060 void setAppCtrl(AbstractApplicationController* newAppCtrl); 0061 0062 qreal parentWidth() const; 0063 void setParentWidth(qreal newParentWidth); 0064 0065 qreal imageBgWidth() const; 0066 void setImageBgWidth(qreal newImageBgWidth); 0067 0068 bool adaptWidthToPage() const; 0069 void setAdaptWidthToPage(bool newAdaptWidthToPage); 0070 0071 signals: 0072 void pageMaxChanged(); 0073 void currentPageChanged(); 0074 void zoomLevelChanged(); 0075 void appCtrlChanged(); 0076 void parentWidthChanged(); 0077 void imageBgWidthChanged(); 0078 0079 void adaptWidthToPageChanged(); 0080 0081 private: 0082 QPointer<AbstractApplicationController> m_appCtrl; 0083 int m_pageMax{0}; 0084 int m_currentPage= 0; 0085 qreal m_parentWidth; 0086 qreal m_imageBgWidth; 0087 bool m_adaptWidthToPage= true; 0088 }; 0089 0090 #endif // SHEETCONTROLLER_H