File indexing completed on 2025-02-16 04:25:46

0001 #pragma once
0002 
0003 #include <QObject>
0004 
0005 #include "modules/formfactormanager.h"
0006 
0007 class FormFactor : public QObject
0008 {
0009     Q_OBJECT
0010     Q_PROPERTY(uint preferredMode READ preferredMode WRITE setPreferredMode NOTIFY preferredModeChanged)
0011     Q_PROPERTY(uint bestMode READ bestMode NOTIFY bestModeChanged)
0012     Q_PROPERTY(uint defaultMode READ defaultMode CONSTANT)
0013 
0014     Q_PROPERTY(bool hasKeyboard READ hasKeyboard NOTIFY hasKeyboardChanged)
0015     Q_PROPERTY(bool hasTouchscreen READ hasTouchscreen NOTIFY hasTouchscreenChanged)
0016     Q_PROPERTY(bool hasMouse READ hasMouse NOTIFY hasMouseChanged)
0017     Q_PROPERTY(bool hasTouchpad READ hasTouchpad NOTIFY hasTouchpadChanged)
0018 
0019 
0020 public:
0021     explicit FormFactor(QObject *parent = nullptr);
0022 
0023     /**
0024      * @brief preferredMode
0025      * Mode picked manually by the user as the preffered one over the default and best fit modes.
0026      * 0 - Desktop
0027      * 1 - Tablet
0028      * 2 - Phone
0029      * @return
0030      */
0031     uint preferredMode() const;
0032     void setPreferredMode(uint preferredMode);
0033 
0034     /**
0035      * @brief bestMode
0036      * The result of computing different variables such as inputs, architecture, and screensize resulting in what mode is the best fit.
0037      * @return
0038      */
0039     uint bestMode() const;
0040 
0041     /**
0042      * @brief defaultMode
0043      * @return
0044      */
0045     uint defaultMode() const;
0046 
0047     bool hasKeyboard() const;
0048 
0049     bool hasTouchscreen() const;
0050 
0051     bool hasMouse() const;
0052 
0053     bool hasTouchpad() const;
0054 
0055     
0056 private Q_SLOTS:
0057     void setBestMode(uint bestMode);
0058     void setHasKeyboard(bool value);
0059     void setHasMouse(bool value);
0060     void setHasTouchpad(bool value);
0061     void setHasTouchscreen(bool value);
0062 
0063 private:
0064     MauiMan::FormFactorInfo *m_manager;
0065     uint m_preferredMode = MauiMan::FormFactorManager::DefaultValues::defaultMode;
0066 
0067     uint m_bestMode = MauiMan::FormFactorManager::DefaultValues::defaultMode;
0068 
0069     uint m_defaultMode = MauiMan::FormFactorManager::DefaultValues::defaultMode;
0070 
0071     bool m_hasKeyboard = false;
0072 
0073     bool m_hasTouchscreen = false;
0074 
0075     bool m_hasMouse = false;
0076 
0077     bool m_hasTouchpad= false;
0078 
0079     bool hasTouchScreen() const;
0080 
0081 Q_SIGNALS:
0082     void preferredModeChanged(uint preferredMode);
0083     void bestModeChanged(uint bestMode);
0084     void defaultModeChanged(uint defaultMode);
0085     void hasKeyboardChanged(bool hasKeyboard);
0086     void hasTouchscreenChanged(bool hasTouchscreen);
0087     void hasMouseChanged(bool hasMouse);
0088     void hasTouchpadChanged(bool hasTouchpad);
0089 };
0090