mirror of https://github.com/KDE/kasts.git
114 lines
2.3 KiB
C++
114 lines
2.3 KiB
C++
/**
|
|
* SPDX-FileCopyrightText: 2022 Bart De Vries <bart@mogwai.be>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
*/
|
|
|
|
#include "chapter.h"
|
|
|
|
#include "fetcher.h"
|
|
|
|
Chapter::Chapter(Entry *entry, const QString &title, const QString &link, const QString &image, const int &start, QObject *parent)
|
|
: QObject(parent)
|
|
, m_entry(entry)
|
|
, m_title(title)
|
|
, m_link(link)
|
|
, m_image(image)
|
|
, m_start(start)
|
|
{
|
|
connect(&Fetcher::instance(), &Fetcher::downloadFinished, this, [this](QString url) {
|
|
if (url == m_image) {
|
|
Q_EMIT imageChanged(url);
|
|
Q_EMIT cachedImageChanged(cachedImage());
|
|
}
|
|
});
|
|
}
|
|
|
|
Entry *Chapter::entry() const
|
|
{
|
|
return m_entry;
|
|
}
|
|
|
|
QString Chapter::title() const
|
|
{
|
|
return m_title;
|
|
}
|
|
|
|
QString Chapter::link() const
|
|
{
|
|
return m_link;
|
|
}
|
|
|
|
QString Chapter::image() const
|
|
{
|
|
if (!m_image.isEmpty()) {
|
|
return m_image;
|
|
} else if (m_entry) {
|
|
// fall back to entry image
|
|
return m_entry->image();
|
|
} else {
|
|
return QStringLiteral("no-image");
|
|
}
|
|
}
|
|
|
|
QString Chapter::cachedImage() const
|
|
{
|
|
// First check for the feed image, fall back if needed
|
|
QString image = m_image;
|
|
if (image.isEmpty()) {
|
|
if (m_entry) {
|
|
return m_entry->cachedImage();
|
|
} else {
|
|
return QStringLiteral("no-image");
|
|
}
|
|
}
|
|
|
|
return Fetcher::instance().image(image);
|
|
}
|
|
|
|
int Chapter::start() const
|
|
{
|
|
return m_start;
|
|
}
|
|
|
|
void Chapter::setTitle(const QString &title, bool emitSignal)
|
|
{
|
|
if (m_title != title) {
|
|
m_title = title;
|
|
if (emitSignal) {
|
|
Q_EMIT titleChanged(m_title);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Chapter::setLink(const QString &link, bool emitSignal)
|
|
{
|
|
if (m_link != link) {
|
|
m_link = link;
|
|
if (emitSignal) {
|
|
Q_EMIT linkChanged(m_link);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Chapter::setImage(const QString &image, bool emitSignal)
|
|
{
|
|
if (m_image != image) {
|
|
m_image = image;
|
|
if (emitSignal) {
|
|
Q_EMIT imageChanged(m_image);
|
|
Q_EMIT cachedImageChanged(cachedImage());
|
|
}
|
|
}
|
|
}
|
|
|
|
void Chapter::setStart(const int &start, bool emitSignal)
|
|
{
|
|
if (m_start != start) {
|
|
m_start = start;
|
|
if (emitSignal) {
|
|
Q_EMIT startChanged(m_start);
|
|
}
|
|
}
|
|
}
|