File indexing completed on 2024-06-23 05:45:41
0001 /* 0002 * Copyright 2020 Han Young <hanyoung@protonmail.com> 0003 * Copyright 2020-2021 Devin Lin <devin@kde.org> 0004 * Copyright 2021 Boris Petrov <boris.v.petrov@protonmail.com> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #pragma once 0010 0011 #include "timerinterface.h" 0012 0013 #include <QObject> 0014 #include <QTimer> 0015 #include <QUuid> 0016 0017 class Timer : public QObject 0018 { 0019 Q_OBJECT 0020 Q_PROPERTY(int length READ length WRITE setLength NOTIFY lengthChanged) 0021 Q_PROPERTY(QString lengthPretty READ lengthPretty NOTIFY lengthChanged) 0022 Q_PROPERTY(int elapsed READ elapsed NOTIFY elapsedChanged) 0023 Q_PROPERTY(QString elapsedPretty READ elapsedPretty NOTIFY elapsedChanged) 0024 Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged) 0025 Q_PROPERTY(QString commandTimeout READ commandTimeout WRITE setCommandTimeout NOTIFY commandTimeoutChanged) 0026 Q_PROPERTY(bool running READ running NOTIFY runningChanged) 0027 Q_PROPERTY(bool looping READ looping NOTIFY loopingChanged) 0028 Q_PROPERTY(bool ringing READ ringing NOTIFY ringingChanged) 0029 0030 public: 0031 explicit Timer(const QString &uuid = QString{}, QObject *parent = nullptr); 0032 0033 const QUuid &uuid(); 0034 0035 int length() const; 0036 QString lengthPretty() const; 0037 void setLength(int length); 0038 0039 int elapsed() const; 0040 QString elapsedPretty() const; 0041 0042 QString label() const; 0043 void setLabel(const QString &label); 0044 0045 QString commandTimeout() const; 0046 void setCommandTimeout(const QString &commandTimeout); 0047 0048 bool running() const; 0049 0050 bool looping() const; 0051 0052 bool ringing() const; 0053 0054 Q_INVOKABLE void toggleRunning(); 0055 Q_INVOKABLE void toggleLooping(); 0056 Q_INVOKABLE void reset(); 0057 Q_INVOKABLE void addMinute(); 0058 Q_INVOKABLE void dismiss(); 0059 0060 Q_SIGNALS: 0061 void lengthChanged(); 0062 void elapsedChanged(); 0063 void labelChanged(); 0064 void commandTimeoutChanged(); 0065 void runningChanged(); 0066 void loopingChanged(); 0067 void ringingChanged(); 0068 0069 private Q_SLOTS: 0070 void updateLength(); 0071 void updateElapsed(); 0072 void updateLabel(); 0073 void updateCommandTimeout(); 0074 void updateRunning(); 0075 void updateLooping(); 0076 void updateRinging(); 0077 0078 private: 0079 void animation(bool start); 0080 0081 int m_length; 0082 int m_elapsed; 0083 0084 QString m_label; 0085 QString m_commandTimeout; 0086 0087 bool m_running; 0088 bool m_looping; 0089 bool m_ringing; 0090 0091 QUuid m_uuid; 0092 0093 org::kde::kclock::Timer *m_interface; 0094 0095 QTimer *m_animationTimer; 0096 };