File indexing completed on 2024-04-28 16:49:27

0001 /*
0002 *  Copyright 2019  Michail Vourlakos <mvourlakos@gmail.com>
0003 *
0004 *  This file is part of Latte-Dock
0005 *
0006 *  Latte-Dock is free software; you can redistribute it and/or
0007 *  modify it under the terms of the GNU General Public License as
0008 *  published by the Free Software Foundation; either version 2 of
0009 *  the License, or (at your option) any later version.
0010 *
0011 *  Latte-Dock is distributed in the hope that it will be useful,
0012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 *  GNU General Public License for more details.
0015 *
0016 *  You should have received a copy of the GNU General Public License
0017 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 #ifndef VIEWINDICATORINFO_H
0021 #define VIEWINDICATORINFO_H
0022 
0023 // Qt
0024 #include <QObject>
0025 
0026 namespace Latte {
0027 namespace ViewPart {
0028 namespace IndicatorPart {
0029 
0030 /**
0031  * Information provided by indicator itself in order to provide a nice experience
0032  **/
0033 
0034 class Info: public QObject
0035 {
0036     Q_OBJECT
0037     Q_PROPERTY(bool needsIconColors READ needsIconColors WRITE setNeedsIconColors NOTIFY needsIconColorsChanged)
0038     Q_PROPERTY(bool needsMouseEventCoordinates READ needsMouseEventCoordinates WRITE setNeedsMouseEventCoordinates NOTIFY needsMouseEventCoordinatesChanged)
0039     Q_PROPERTY(bool providesClickedAnimation READ providesClickedAnimation WRITE setProvidesClickedAnimation NOTIFY providesClickedAnimationChanged)
0040     Q_PROPERTY(bool providesHoveredAnimation READ providesHoveredAnimation WRITE setProvidesHoveredAnimation NOTIFY providesHoveredAnimationChanged)
0041     Q_PROPERTY(bool providesFrontLayer READ providesFrontLayer WRITE setProvidesFrontLayer NOTIFY providesFrontLayerChanged)
0042 
0043     Q_PROPERTY(int extraMaskThickness READ extraMaskThickness WRITE setExtraMaskThickness NOTIFY extraMaskThicknessChanged)
0044 
0045     Q_PROPERTY(float minLengthPadding READ minLengthPadding WRITE setMinLengthPadding NOTIFY minLengthPaddingChanged)
0046     Q_PROPERTY(float minThicknessPadding READ minThicknessPadding WRITE setMinThicknessPadding NOTIFY minThicknessPaddingChanged)
0047 
0048 public:
0049     Info(QObject *parent);
0050     virtual ~Info();
0051 
0052     bool needsIconColors() const;
0053     void setNeedsIconColors(bool needs);
0054 
0055     bool needsMouseEventCoordinates() const;
0056     void setNeedsMouseEventCoordinates(bool needs);
0057 
0058     bool providesClickedAnimation() const;
0059     void setProvidesClickedAnimation(bool provides);
0060 
0061     bool providesHoveredAnimation() const;
0062     void setProvidesHoveredAnimation(bool provides);
0063 
0064     bool providesFrontLayer() const;
0065     void setProvidesFrontLayer(bool front);
0066 
0067     int extraMaskThickness() const;
0068     void setExtraMaskThickness(int thick);
0069 
0070     float minLengthPadding() const;
0071     void setMinLengthPadding(float padding);
0072 
0073     float minThicknessPadding() const;
0074     void setMinThicknessPadding(float padding);
0075 
0076 signals:
0077     void extraMaskThicknessChanged();
0078     void minLengthPaddingChanged();
0079     void minThicknessPaddingChanged();
0080     void needsIconColorsChanged();
0081     void needsMouseEventCoordinatesChanged();
0082     void providesClickedAnimationChanged();
0083     void providesHoveredAnimationChanged();
0084     void providesFrontLayerChanged();
0085 
0086 private:
0087     bool m_needsIconColors{false};
0088     bool m_needsMouseEventCoordinates{false};
0089     bool m_providesClickedAnimation{false};
0090     bool m_providesHoveredAnimation{false};
0091     bool m_providesFrontLayer{false};
0092 
0093     int m_extraMaskThickness{0};
0094 
0095     float m_minLengthPadding{0};
0096     float m_minThicknessPadding{0};
0097 };
0098 
0099 }
0100 }
0101 }
0102 
0103 #endif