File indexing completed on 2024-04-21 16:32:05

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