LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
iradiostationprovider.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7  **********************************************************************/
8 
9 #pragma once
10 
11 #include <memory>
12 #include <functional>
13 #include <variant>
14 #include <QMap>
15 #include <QMetaType>
16 #include <QtPlugin>
17 
18 class QModelIndex;
19 class QAbstractItemModel;
20 
21 namespace Media
22 {
23  class IRadioStation;
24  typedef std::shared_ptr<IRadioStation> IRadioStation_ptr;
25 
26  using ActionFunctor_f = std::variant<std::function<void (QModelIndex)>, std::function<void ()>>;
27 
32  enum RadioType
33  {
37 
46 
55 
59 
72 
81 
87 
94 
101  };
102 
108  {
113  ItemType = Qt::UserRole + 1,
114 
120 
127 
143 
147 
151  };
152 
161  class Q_DECL_EXPORT IRadioStationProvider
162  {
163  public:
165 
179  virtual IRadioStation_ptr GetRadioStation (const QModelIndex& item, const QString& query) = 0;
180 
196  virtual QList<QAbstractItemModel*> GetRadioListItems () const = 0;
197 
200  virtual void RefreshItems (const QList<QModelIndex>&) = 0;
201  };
202 }
203 
205 
206 Q_DECLARE_INTERFACE (Media::IRadioStationProvider, "org.LeechCraft.Media.IRadioStationProvider/1.0")
Media::RadioItemRole
RadioItemRole
Custom user roles for the items in the model.
Definition: iradiostationprovider.h:107
Media::Predefined
@ Predefined
A predefined radio station like an Icecast stream.
Definition: iradiostationprovider.h:58
Media::TracksInfos
@ TracksInfos
The tracks list.
Definition: iradiostationprovider.h:142
QList
Definition: ianrulesstorage.h:14
Media::RadioID
@ RadioID
The internal ID of the radio.
Definition: iradiostationprovider.h:119
Media::PluginID
@ PluginID
The ID of the plugin for this radio item.
Definition: iradiostationprovider.h:126
Media::ActionFunctor
@ ActionFunctor
The callable functor for RadioAction.
Definition: iradiostationprovider.h:146
Media::RadioType
RadioType
Describes the type of a radio station.
Definition: iradiostationprovider.h:32
Media::SingleTrack
@ SingleTrack
A single song.
Definition: iradiostationprovider.h:86
Media::MaxRadioRole
@ MaxRadioRole
Maximum role.
Definition: iradiostationprovider.h:150
Media::IRadioStationProvider
Interface for plugins providing radio stations.
Definition: iradiostationprovider.h:161
Media::SimilarArtists
@ SimilarArtists
Radio of artists similar to a given one.
Definition: iradiostationprovider.h:45
Media::ActionFunctor_f
std::variant< std::function< void(QModelIndex)>, std::function< void()> > ActionFunctor_f
Definition: iradiostationprovider.h:26
Media
Definition: audiostructs.h:16
Media::IRadioStationProvider::~IRadioStationProvider
virtual ~IRadioStationProvider()
Definition: iradiostationprovider.h:164
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(QVariantList *)
Media::ItemType
@ ItemType
The type of this radio station.
Definition: iradiostationprovider.h:113
Media::None
@ None
No type (item doesn't correspond to a radio station).
Definition: iradiostationprovider.h:36
Media::RadioAction
@ RadioAction
An action.
Definition: iradiostationprovider.h:100
Media::IRadioStation_ptr
std::shared_ptr< IRadioStation > IRadioStation_ptr
A pointer to a shared instance of a IRadioStation.
Definition: iradiostation.h:115
Media::TracksList
@ TracksList
A predefined list of single tracks, not a stream.
Definition: iradiostationprovider.h:80
Media::TracksRoot
@ TracksRoot
A root for a list of SingleTrack or TracksList items.
Definition: iradiostationprovider.h:93
Media::CustomAddableStreams
@ CustomAddableStreams
A radio station that contains user-addable streams.
Definition: iradiostationprovider.h:71
Media::GlobalTag
@ GlobalTag
Radio of a global tag like metalcore.
Definition: iradiostationprovider.h:54