File indexing completed on 2024-04-28 13:43:43
0001 /* This file is part of Kairo Timer 0002 0003 SPDX-FileCopyrightText: 2016 (c) Kevin Ottens <ervin@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 0007 */ 0008 0009 #ifndef CIRCUITCONTROL_H 0010 #define CIRCUITCONTROL_H 0011 0012 #include <QObject> 0013 0014 #include "circuitmodel.h" 0015 0016 class TimerControl; 0017 0018 class CircuitControl : public QObject 0019 { 0020 Q_OBJECT 0021 Q_PROPERTY(CircuitModel model READ model WRITE setModel NOTIFY modelChanged) 0022 Q_PROPERTY(TimerControl* timerControl READ timerControl WRITE setTimerControl NOTIFY timerControlChanged) 0023 Q_PROPERTY(QString name READ name NOTIFY nameChanged) 0024 Q_PROPERTY(int size READ size NOTIFY sizeChanged) 0025 Q_PROPERTY(int remaining READ remaining NOTIFY remainingChanged) 0026 Q_PROPERTY(TimerModel currentTimer READ currentTimer NOTIFY currentTimerChanged) 0027 public: 0028 explicit CircuitControl(QObject *parent = nullptr); 0029 0030 CircuitModel model() const; 0031 void setModel(const CircuitModel &model); 0032 void setModel(CircuitModel &&model); 0033 0034 TimerControl *timerControl() const; 0035 void setTimerControl(TimerControl *timerControl); 0036 0037 QString name() const; 0038 int size() const; 0039 int remaining() const; 0040 TimerModel currentTimer() const; 0041 0042 public slots: 0043 void nextTimer(); 0044 0045 signals: 0046 void modelChanged(const CircuitModel &model); 0047 void timerControlChanged(TimerControl *timerControl); 0048 void nameChanged(const QString &name); 0049 void sizeChanged(int size); 0050 void remainingChanged(int remaining); 0051 void currentTimerChanged(const TimerModel &model); 0052 0053 void circuitFinished(); 0054 0055 private: 0056 void applyCurrentTimer(); 0057 0058 CircuitModel m_model; 0059 int m_currentIndex; 0060 TimerControl *m_timerControl; 0061 }; 0062 0063 #endif