Reformat intergalacticfm service
This commit is contained in:
parent
9291f09b1b
commit
6693a870ad
@ -96,7 +96,8 @@ void RegisterMetaTypes() {
|
||||
qRegisterMetaType<smart_playlists::GeneratorPtr>(
|
||||
"smart_playlists::GeneratorPtr");
|
||||
qRegisterMetaType<SomaFMService::Stream>("SomaFMService::Stream");
|
||||
qRegisterMetaType<IntergalacticFMService::Stream>("IntergalacticFMService::Stream");
|
||||
qRegisterMetaType<IntergalacticFMService::Stream>(
|
||||
"IntergalacticFMService::Stream");
|
||||
qRegisterMetaType<SongList>("SongList");
|
||||
qRegisterMetaType<Song>("Song");
|
||||
qRegisterMetaTypeStreamOperators<DigitallyImportedClient::Channel>(
|
||||
|
@ -17,8 +17,8 @@
|
||||
|
||||
#include "intergalacticfmsearchprovider.h"
|
||||
|
||||
IntergalacticFMSearchProvider::IntergalacticFMSearchProvider(IntergalacticFMServiceBase* service,
|
||||
Application* app, QObject* parent)
|
||||
IntergalacticFMSearchProvider::IntergalacticFMSearchProvider(
|
||||
IntergalacticFMServiceBase* service, Application* app, QObject* parent)
|
||||
: SimpleSearchProvider(app, parent), service_(service) {
|
||||
Init(service->name(), service->url_scheme(), service->icon(),
|
||||
CanGiveSuggestions);
|
||||
|
@ -23,8 +23,8 @@
|
||||
|
||||
class IntergalacticFMSearchProvider : public SimpleSearchProvider {
|
||||
public:
|
||||
IntergalacticFMSearchProvider(IntergalacticFMServiceBase* service, Application* app,
|
||||
QObject* parent);
|
||||
IntergalacticFMSearchProvider(IntergalacticFMServiceBase* service,
|
||||
Application* app, QObject* parent);
|
||||
// SearchProvider
|
||||
InternetService* internet_service() override { return service_; }
|
||||
|
||||
|
@ -50,12 +50,10 @@ bool operator<(const IntergalacticFMServiceBase::Stream& a,
|
||||
return a.title_.compare(b.title_, Qt::CaseInsensitive) < 0;
|
||||
}
|
||||
|
||||
IntergalacticFMServiceBase::IntergalacticFMServiceBase(Application* app, InternetModel* parent,
|
||||
const QString& name,
|
||||
const QUrl& channel_list_url,
|
||||
const QUrl& homepage_url,
|
||||
const QUrl& donate_page_url,
|
||||
const QIcon& icon)
|
||||
IntergalacticFMServiceBase::IntergalacticFMServiceBase(
|
||||
Application* app, InternetModel* parent, const QString& name,
|
||||
const QUrl& channel_list_url, const QUrl& homepage_url,
|
||||
const QUrl& donate_page_url, const QIcon& icon)
|
||||
: InternetService(name, app, parent, parent),
|
||||
url_scheme_(name.toLower().remove(' ')),
|
||||
url_handler_(new IntergalacticFMUrlHandler(app, this, this)),
|
||||
@ -75,7 +73,9 @@ IntergalacticFMServiceBase::IntergalacticFMServiceBase(Application* app, Interne
|
||||
new IntergalacticFMSearchProvider(this, app_, this));
|
||||
}
|
||||
|
||||
IntergalacticFMServiceBase::~IntergalacticFMServiceBase() { delete context_menu_; }
|
||||
IntergalacticFMServiceBase::~IntergalacticFMServiceBase() {
|
||||
delete context_menu_;
|
||||
}
|
||||
|
||||
QStandardItem* IntergalacticFMServiceBase::CreateRootItem() {
|
||||
root_ = new QStandardItem(icon_, name_);
|
||||
@ -103,11 +103,11 @@ void IntergalacticFMServiceBase::ShowContextMenu(const QPoint& global_pos) {
|
||||
this, SLOT(Homepage()));
|
||||
|
||||
if (!donate_page_url_.isEmpty()) {
|
||||
context_menu_->addAction(IconLoader::Load("download", IconLoader::Base),
|
||||
context_menu_->addAction(IconLoader::Load("download", IconLoader::Base),
|
||||
tr("Donate"), this, SLOT(Donate()));
|
||||
}
|
||||
|
||||
context_menu_->addAction(IconLoader::Load("view-refresh", IconLoader::Base),
|
||||
context_menu_->addAction(IconLoader::Load("view-refresh", IconLoader::Base),
|
||||
tr("Refresh channels"), this,
|
||||
SLOT(ForceRefreshStreams()));
|
||||
}
|
||||
@ -124,7 +124,7 @@ void IntergalacticFMServiceBase::ForceRefreshStreams() {
|
||||
}
|
||||
|
||||
void IntergalacticFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply,
|
||||
int task_id) {
|
||||
int task_id) {
|
||||
app_->task_manager()->SetTaskFinished(task_id);
|
||||
reply->deleteLater();
|
||||
|
||||
@ -155,7 +155,8 @@ void IntergalacticFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply,
|
||||
emit StreamsChanged();
|
||||
}
|
||||
|
||||
void IntergalacticFMServiceBase::ReadChannel(QXmlStreamReader& reader, StreamList* ret) {
|
||||
void IntergalacticFMServiceBase::ReadChannel(QXmlStreamReader& reader,
|
||||
StreamList* ret) {
|
||||
Stream stream;
|
||||
bool found = false;
|
||||
|
||||
@ -179,8 +180,7 @@ void IntergalacticFMServiceBase::ReadChannel(QXmlStreamReader& reader, StreamLis
|
||||
|
||||
stream.url_ = url;
|
||||
found = true;
|
||||
} else if (found == false &&
|
||||
reader.name() == "highestpls" &&
|
||||
} else if (!found && reader.name() == "highestpls" &&
|
||||
reader.attributes().value("format") == "mp3") {
|
||||
QUrl url(reader.readElementText());
|
||||
url.setScheme(url_handler_->scheme());
|
||||
@ -211,7 +211,9 @@ Song IntergalacticFMServiceBase::Stream::ToSong(const QString& prefix) const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void IntergalacticFMServiceBase::Homepage() { QDesktopServices::openUrl(homepage_url_); }
|
||||
void IntergalacticFMServiceBase::Homepage() {
|
||||
QDesktopServices::openUrl(homepage_url_);
|
||||
}
|
||||
|
||||
void IntergalacticFMServiceBase::Donate() {
|
||||
QDesktopServices::openUrl(donate_page_url_);
|
||||
@ -241,9 +243,8 @@ void IntergalacticFMServiceBase::PopulateStreams() {
|
||||
if (root_->hasChildren()) root_->removeRows(0, root_->rowCount());
|
||||
|
||||
for (const Stream& stream : streams_) {
|
||||
QStandardItem* item =
|
||||
new QStandardItem(IconLoader::Load("icon_radio", IconLoader::Lastfm),
|
||||
QString());
|
||||
QStandardItem* item = new QStandardItem(
|
||||
IconLoader::Load("icon_radio", IconLoader::Lastfm), QString());
|
||||
item->setText(stream.title_);
|
||||
item->setData(QVariant::fromValue(stream.ToSong(name_)),
|
||||
InternetModel::Role_SongMetadata);
|
||||
@ -260,7 +261,8 @@ QDataStream& operator<<(QDataStream& out,
|
||||
return out;
|
||||
}
|
||||
|
||||
QDataStream& operator>>(QDataStream& in, IntergalacticFMServiceBase::Stream& stream) {
|
||||
QDataStream& operator>>(QDataStream& in,
|
||||
IntergalacticFMServiceBase::Stream& stream) {
|
||||
in >> stream.title_ >> stream.dj_ >> stream.url_;
|
||||
return in;
|
||||
}
|
||||
@ -270,8 +272,10 @@ void IntergalacticFMServiceBase::ReloadSettings() {
|
||||
streams_.Sort();
|
||||
}
|
||||
|
||||
IntergalacticFMService::IntergalacticFMService(Application* app, InternetModel* parent)
|
||||
IntergalacticFMService::IntergalacticFMService(Application* app,
|
||||
InternetModel* parent)
|
||||
: IntergalacticFMServiceBase(
|
||||
app, parent, "Intergalactic FM", QUrl("https://intergalacticfm.com/channels.xml"),
|
||||
QUrl("http://intergalacticfm.com"), QUrl(), IconLoader::Load("intergalacticfm",
|
||||
IconLoader::Provider)) {}
|
||||
app, parent, "Intergalactic FM",
|
||||
QUrl("https://intergalacticfm.com/channels.xml"),
|
||||
QUrl("http://intergalacticfm.com"), QUrl(),
|
||||
IconLoader::Load("intergalacticfm", IconLoader::Provider)) {}
|
||||
|
@ -36,9 +36,9 @@ class IntergalacticFMServiceBase : public InternetService {
|
||||
|
||||
public:
|
||||
IntergalacticFMServiceBase(Application* app, InternetModel* parent,
|
||||
const QString& name, const QUrl& channel_list_url,
|
||||
const QUrl& homepage_url, const QUrl& donate_page_url,
|
||||
const QIcon& icon);
|
||||
const QString& name, const QUrl& channel_list_url,
|
||||
const QUrl& homepage_url,
|
||||
const QUrl& donate_page_url, const QIcon& icon);
|
||||
~IntergalacticFMServiceBase();
|
||||
|
||||
enum ItemType {
|
||||
@ -71,7 +71,7 @@ class IntergalacticFMServiceBase : public InternetService {
|
||||
bool IsStreamListStale() const { return streams_.IsStale(); }
|
||||
StreamList Streams();
|
||||
|
||||
signals:
|
||||
signals:
|
||||
void StreamsChanged();
|
||||
|
||||
private slots:
|
||||
@ -109,8 +109,10 @@ class IntergalacticFMService : public IntergalacticFMServiceBase {
|
||||
IntergalacticFMService(Application* app, InternetModel* parent);
|
||||
};
|
||||
|
||||
QDataStream& operator<<(QDataStream& out, const IntergalacticFMService::Stream& stream);
|
||||
QDataStream& operator>>(QDataStream& in, IntergalacticFMService::Stream& stream);
|
||||
QDataStream& operator<<(QDataStream& out,
|
||||
const IntergalacticFMService::Stream& stream);
|
||||
QDataStream& operator>>(QDataStream& in,
|
||||
IntergalacticFMService::Stream& stream);
|
||||
Q_DECLARE_METATYPE(IntergalacticFMService::Stream)
|
||||
|
||||
#endif // INTERNET_INTERGALACTICFM_INTERGALACTICFMSERVICE_H_
|
||||
|
@ -32,15 +32,18 @@
|
||||
#include "core/taskmanager.h"
|
||||
#include "playlistparsers/playlistparser.h"
|
||||
|
||||
IntergalacticFMUrlHandler::IntergalacticFMUrlHandler(Application* app, IntergalacticFMServiceBase* service,
|
||||
QObject* parent)
|
||||
IntergalacticFMUrlHandler::IntergalacticFMUrlHandler(
|
||||
Application* app, IntergalacticFMServiceBase* service, QObject* parent)
|
||||
: UrlHandler(parent), app_(app), service_(service), task_id_(0) {}
|
||||
|
||||
QString IntergalacticFMUrlHandler::scheme() const { return service_->url_scheme(); }
|
||||
QString IntergalacticFMUrlHandler::scheme() const {
|
||||
return service_->url_scheme();
|
||||
}
|
||||
|
||||
QIcon IntergalacticFMUrlHandler::icon() const { return service_->icon(); }
|
||||
|
||||
UrlHandler::LoadResult IntergalacticFMUrlHandler::StartLoading(const QUrl& url) {
|
||||
UrlHandler::LoadResult IntergalacticFMUrlHandler::StartLoading(
|
||||
const QUrl& url) {
|
||||
QUrl playlist_url = url;
|
||||
playlist_url.setScheme("https");
|
||||
|
||||
|
@ -29,8 +29,9 @@ class IntergalacticFMUrlHandler : public UrlHandler {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
IntergalacticFMUrlHandler(Application* app, IntergalacticFMServiceBase* service,
|
||||
QObject* parent);
|
||||
IntergalacticFMUrlHandler(Application* app,
|
||||
IntergalacticFMServiceBase* service,
|
||||
QObject* parent);
|
||||
|
||||
QString scheme() const;
|
||||
QIcon icon() const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user