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 #include "channel.h" 0005 0006 #include "fetcher.h" 0007 #include "programfactory.h" 0008 #include "types.h" 0009 0010 #include <QDebug> 0011 0012 Channel::Channel(const ChannelData &data, bool favorite, const QVector<QString> &groupIds, ProgramFactory &programFactory) 0013 : QObject(nullptr) 0014 , m_data(data) 0015 , m_favorite(favorite) 0016 , m_groups(groupIds) 0017 { 0018 connect(&Fetcher::instance(), &Fetcher::startedFetchingChannel, this, [this](const ChannelId &id) { 0019 if (id == m_data.m_id) { 0020 setRefreshing(true); 0021 } 0022 }); 0023 connect(&Fetcher::instance(), &Fetcher::channelUpdated, this, [this](const ChannelId &id) { 0024 if (id == m_data.m_id) { 0025 setRefreshing(false); 0026 Q_EMIT programChanged(); 0027 m_error.reset(); 0028 } 0029 }); 0030 connect(&Fetcher::instance(), &Fetcher::errorFetchingChannel, this, [this](const ChannelId &id, const Error &error) { 0031 if (id == m_data.m_id) { 0032 setError(error); 0033 setRefreshing(false); 0034 } 0035 }); 0036 connect(&Fetcher::instance(), &Fetcher::imageDownloadFinished, this, [this](const QString &url) { 0037 if (url == m_data.m_image) { 0038 Q_EMIT imageChanged(url); 0039 } 0040 }); 0041 0042 // programs 0043 m_programsModel = new ProgramsModel(this, programFactory); 0044 } 0045 0046 Channel::~Channel() 0047 { 0048 } 0049 0050 QString Channel::id() const 0051 { 0052 return m_data.m_id.value(); 0053 } 0054 0055 QString Channel::url() const 0056 { 0057 return m_data.m_url; 0058 } 0059 0060 QString Channel::name() const 0061 { 0062 return m_data.m_name; 0063 } 0064 0065 QString Channel::image() const 0066 { 0067 return m_data.m_image; 0068 } 0069 0070 bool Channel::favorite() const 0071 { 0072 return m_favorite; 0073 } 0074 0075 QVector<QString> Channel::groups() const 0076 { 0077 return m_groups; 0078 } 0079 0080 bool Channel::refreshing() const 0081 { 0082 return m_refreshing; 0083 } 0084 0085 int Channel::errorId() const 0086 { 0087 return m_error.m_id; 0088 } 0089 0090 QString Channel::errorString() const 0091 { 0092 return m_error.m_message; 0093 } 0094 0095 void Channel::setName(const QString &name) 0096 { 0097 m_data.m_name = name; 0098 Q_EMIT nameChanged(m_data.m_name); 0099 } 0100 0101 void Channel::setImage(const QString &image) 0102 { 0103 m_data.m_image = image; 0104 Q_EMIT imageChanged(m_data.m_image); 0105 } 0106 0107 void Channel::setFavorite(bool favorite) 0108 { 0109 if (m_favorite != favorite) { 0110 m_favorite = favorite; 0111 0112 Q_EMIT favoriteChanged(favorite); 0113 } 0114 } 0115 0116 void Channel::setGroups(const QVector<QString> &groups) 0117 { 0118 m_groups = groups; 0119 Q_EMIT groupsChanged(m_groups); 0120 } 0121 0122 void Channel::setRefreshing(bool refreshing) 0123 { 0124 m_refreshing = refreshing; 0125 Q_EMIT refreshingChanged(m_refreshing); 0126 } 0127 0128 void Channel::setError(const Error &error) 0129 { 0130 m_error = error; 0131 Q_EMIT errorIdChanged(m_error.m_id); 0132 Q_EMIT errorStringChanged(m_error.m_message); 0133 }