kasts/src/error.cpp
Bart De Vries 52a1f08e02 Add a switch to globally enable/disable network status checks
Make error reporting less ambiguous: report either "no connection" or
"not allowed on metered connection".  Also show hint how to disable
network status checking altogether.

BUG: 475400
2023-11-07 21:06:19 +00:00

121 lines
3.2 KiB
C++

/**
* SPDX-FileCopyrightText: 2021-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 <KLocalizedString>
#include <QDateTime>
#include <QObject>
#include <QString>
#include "datamanager.h"
#include "entry.h"
#include "error.h"
#include "feed.h"
Error::Error(const Type type, const QString url, const QString id, const int code, const QString message, const QDateTime date, const QString title)
: QObject(nullptr)
{
this->type = type;
this->url = url;
this->id = id;
this->code = code;
this->message = message;
this->date = date;
this->m_title = title;
}
QString Error::title() const
{
QString title = m_title;
if (title.isEmpty()) {
if (!id.isEmpty()) {
if (DataManager::instance().getEntry(id))
title = DataManager::instance().getEntry(id)->title();
} else if (!url.isEmpty()) {
if (DataManager::instance().getFeed(url))
title = DataManager::instance().getFeed(url)->name();
}
}
return title;
}
QString Error::description() const
{
switch (type) {
case Error::Type::FeedUpdate:
return i18n("Podcast update error");
case Error::Type::MediaDownload:
return i18n("Media download error");
case Error::Type::MeteredNotAllowed:
return i18n("Update not allowed on metered connection");
case Error::Type::InvalidMedia:
return i18n("Invalid media file");
case Error::Type::DiscoverError:
return i18n("Nothing found");
case Error::Type::StorageMoveError:
return i18n("Error moving storage path");
case Error::Type::SyncError:
return i18n("Error syncing feed and/or episode status");
case Error::Type::MeteredStreamingNotAllowed:
return i18n("Streaming not allowed on metered connection");
case Error::Type::NoNetwork:
return i18n("No network connection");
default:
return QString();
}
}
int Error::typeToDb(Error::Type type)
{
switch (type) {
case Error::Type::FeedUpdate:
return 0;
case Error::Type::MediaDownload:
return 1;
case Error::Type::MeteredNotAllowed:
return 2;
case Error::Type::InvalidMedia:
return 3;
case Error::Type::DiscoverError:
return 4;
case Error::Type::StorageMoveError:
return 5;
case Error::Type::SyncError:
return 6;
case Error::Type::MeteredStreamingNotAllowed:
return 7;
case Error::Type::NoNetwork:
return 8;
default:
return -1;
}
}
Error::Type Error::dbToType(int value)
{
switch (value) {
case 0:
return Error::Type::FeedUpdate;
case 1:
return Error::Type::MediaDownload;
case 2:
return Error::Type::MeteredNotAllowed;
case 3:
return Error::Type::InvalidMedia;
case 4:
return Error::Type::DiscoverError;
case 5:
return Error::Type::StorageMoveError;
case 6:
return Error::Type::SyncError;
case 7:
return Error::Type::MeteredStreamingNotAllowed;
case 8:
return Error::Type::NoNetwork;
default:
return Error::Type::Unknown;
}
}