MiniDisplay/minidisplay.h
author sl
Tue, 03 Jun 2014 16:11:47 +0200
changeset 29 a42cc76a2d5a
parent 23 1f607fa8542f
child 33 cf5eba52cb1d
permissions -rw-r--r--
Trying to get rid of our QML timer.
We now connect to our window after animation signal from C++.
It looks like it works much better now. Less UI lags smother animation.
sl@2
     1
#ifndef MINIDISPLAY_H
sl@2
     2
#define MINIDISPLAY_H
sl@2
     3
sl@2
     4
#include <QQuickItem>
sl@15
     5
#include <QQuickWindow>
sl@4
     6
#include "FutabaVfd.h"
sl@2
     7
sl@2
     8
class MiniDisplay : public QQuickItem
sl@2
     9
{
sl@2
    10
    Q_OBJECT
sl@2
    11
    Q_DISABLE_COPY(MiniDisplay)
sl@4
    12
    //
sl@5
    13
    Q_PROPERTY(bool isOpen READ isOpen NOTIFY statusChanged)
sl@18
    14
    Q_PROPERTY(bool offScreenMode READ offScreenMode WRITE setOffScreenMode NOTIFY offScreenModeChanged)
sl@5
    15
    Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
sl@8
    16
    Q_PROPERTY(QString vendor READ vendor)
sl@8
    17
    Q_PROPERTY(QString product READ product)
sl@8
    18
    Q_PROPERTY(QString serialNumber READ serialNumber)
sl@10
    19
    Q_PROPERTY(int brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged)
sl@10
    20
    Q_PROPERTY(int maxBrightness READ maxBrightness NOTIFY opened)
sl@10
    21
    Q_PROPERTY(int minBrightness READ minBrightness NOTIFY opened)
sl@23
    22
    Q_PROPERTY(bool frameDifferencing READ frameDifferencing WRITE setFrameDifferencing NOTIFY frameDifferencingChanged)
sl@23
    23
    //Debug only
sl@11
    24
    Q_PROPERTY(QPoint framePosition READ framePosition WRITE setFramePosition NOTIFY closed)
sl@4
    25
sl@4
    26
public:
sl@5
    27
    //Methods
sl@4
    28
    Q_INVOKABLE void open();
sl@4
    29
    Q_INVOKABLE void close();
sl@4
    30
    //
sl@4
    31
    Q_INVOKABLE void clear();
sl@4
    32
    Q_INVOKABLE void fill();
sl@4
    33
    Q_INVOKABLE void swapBuffers();
sl@9
    34
    //
sl@9
    35
    Q_INVOKABLE void requestPowerStatus();
sl@9
    36
    Q_INVOKABLE void requestDeviceId();
sl@9
    37
    Q_INVOKABLE void requestFirmwareVersion();
sl@4
    38
sl@15
    39
    Q_INVOKABLE void renderOwnWindow();
sl@15
    40
    Q_INVOKABLE void renderWindow(QQuickWindow* aWindow);
sl@15
    41
    Q_INVOKABLE void renderImage(QImage* aImage);
sl@16
    42
    //
sl@29
    43
    Q_INVOKABLE void connectWindow(QQuickWindow* aWindow, QJSValue aFunction);
sl@29
    44
    //
sl@16
    45
    Q_INVOKABLE void setPixel(int x, int y, bool on);
sl@16
    46
sl@16
    47
sl@16
    48
sl@15
    49
sl@5
    50
public:
sl@5
    51
    //Properties
sl@5
    52
    bool isOpen();
sl@5
    53
    QFont font() const {return iFont;}
sl@5
    54
    void setFont(const QFont& aFont);
sl@8
    55
    //
sl@18
    56
    bool offScreenMode();
sl@18
    57
    void setOffScreenMode(bool aOn);
sl@18
    58
    //
sl@8
    59
    QString vendor();
sl@8
    60
    QString product();
sl@8
    61
    QString serialNumber();
sl@10
    62
    //
sl@10
    63
    int maxBrightness() const;
sl@10
    64
    int minBrightness() const;
sl@10
    65
    int brightness() const;
sl@10
    66
    void setBrightness(int aBrightness);
sl@11
    67
    //
sl@23
    68
    bool frameDifferencing() const;
sl@23
    69
    void setFrameDifferencing(bool aOn);
sl@23
    70
    //Debug only
sl@11
    71
    QPoint framePosition() const;
sl@11
    72
    void setFramePosition(const QPoint& aPoint);
sl@5
    73
sl@29
    74
public slots:
sl@29
    75
    void onAfterAnimating();
sl@29
    76
sl@4
    77
signals:
sl@5
    78
    void opened();
sl@5
    79
    void openError();
sl@11
    80
    void closing();
sl@5
    81
    void closed();
sl@5
    82
    void statusChanged();
sl@5
    83
    void fontChanged();
sl@10
    84
    void brightnessChanged();
sl@18
    85
    void offScreenModeChanged();
sl@23
    86
    void frameDifferencingChanged();
sl@9
    87
    //
sl@9
    88
    void powerStatus(bool powerOn);
sl@9
    89
    void deviceId(QString deviceId);
sl@9
    90
    void firmwareVersion(QString version);
sl@9
    91
sl@9
    92
public slots:
sl@9
    93
    void readTimer();
sl@9
    94
sl@2
    95
sl@2
    96
public:
sl@2
    97
    MiniDisplay(QQuickItem *parent = 0);
sl@2
    98
    ~MiniDisplay();
sl@4
    99
sl@4
   100
private:
sl@4
   101
    GP1212A01A iDisplay;
sl@5
   102
    QFont iFont;
sl@9
   103
    int iReadAttempt;
sl@10
   104
    int iBrightness;
sl@11
   105
    QPoint iFramePosition;
sl@29
   106
    QJSValue iAfterAnimatingCallback;
sl@29
   107
    QQuickWindow* iWindow;
sl@2
   108
};
sl@2
   109
sl@2
   110
#endif // MINIDISPLAY_H
sl@2
   111