File indexing completed on 2024-05-19 05:57:21

0001 // SPDX-FileCopyrightText: 2022 Plata Hill <plata.hill@kdemail.net>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #pragma once
0005 
0006 #include <QObject>
0007 
0008 #include "channeldata.h"
0009 #include "programsmodel.h"
0010 
0011 #include <QVector>
0012 
0013 class Program;
0014 class ProgramFactory;
0015 
0016 class Channel : public QObject
0017 {
0018     Q_OBJECT
0019 
0020     Q_PROPERTY(QString id READ id CONSTANT)
0021     Q_PROPERTY(QString url READ url CONSTANT)
0022     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
0023     Q_PROPERTY(QString image READ image WRITE setImage NOTIFY imageChanged)
0024     Q_PROPERTY(bool favorite READ favorite WRITE setFavorite NOTIFY favoriteChanged)
0025     Q_PROPERTY(QVector<QString> groups READ groups WRITE setGroups NOTIFY groupsChanged)
0026     Q_PROPERTY(bool refreshing READ refreshing WRITE setRefreshing NOTIFY refreshingChanged)
0027     Q_PROPERTY(int errorId READ errorId NOTIFY errorIdChanged)
0028     Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
0029     Q_PROPERTY(ProgramsModel *programsModel MEMBER m_programsModel CONSTANT)
0030 
0031 public:
0032     Channel(const ChannelData &data, bool favorite, const QVector<QString> &groupIds, ProgramFactory &programFactory);
0033 
0034     ~Channel();
0035 
0036     QString id() const;
0037     QString url() const;
0038     QString name() const;
0039     QString image() const;
0040     bool favorite() const;
0041     QVector<QString> groups() const;
0042     int programCount() const;
0043     int errorId() const;
0044     QString errorString() const;
0045 
0046     bool refreshing() const;
0047 
0048     void setName(const QString &name);
0049     void setImage(const QString &image);
0050     void setFavorite(bool favorite);
0051     void setGroups(const QVector<QString> &groups);
0052     void setRefreshing(bool refreshing);
0053 
0054 Q_SIGNALS:
0055     void nameChanged(const QString &name);
0056     void imageChanged(const QString &image);
0057     void favoriteChanged(bool favorite);
0058     void groupsChanged(const QVector<QString> &groups);
0059     void deleteAfterCountChanged(int count);
0060     void deleteAfterTypeChanged(int type);
0061     void programChanged();
0062     void errorIdChanged(int errorId);
0063     void errorStringChanged(const QString &errorString);
0064 
0065     void refreshingChanged(bool refreshing);
0066 
0067 private:
0068     void setError(const Error &error);
0069 
0070     ChannelData m_data;
0071     bool m_favorite;
0072     QVector<QString> m_groups;
0073     ProgramsModel *m_programsModel;
0074     Error m_error;
0075 
0076     bool m_refreshing = false;
0077 };