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