LeechCraft  0.6.70-15082-g543737046d
Modular cross-platform feature rich live environment.
ialbumartprovider.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 <QString>
12 #include <QList>
13 #include <QImage>
14 #include <QHash>
15 #include <QMetaType>
16 #include <util/sll/eitherfwd.h>
17 
18 class QUrl;
19 
20 template<typename>
21 class QFuture;
22 
23 namespace Media
24 {
27  struct AlbumInfo
28  {
31  QString Artist_;
32 
35  QString Album_;
36 
39  bool operator== (const AlbumInfo&) const = default;
40  };
41 
44  inline size_t qHash (const AlbumInfo& info)
45  {
46  const std::initializer_list<QString> elems { info.Album_, info.Artist_ };
47  return qHashRange (elems.begin (), elems.end ());
48  }
49 
55  class Q_DECL_EXPORT IAlbumArtProvider
56  {
57  public:
58  virtual ~IAlbumArtProvider () {}
59 
66 
71  virtual QString GetAlbumArtProviderName () const = 0;
72 
82  virtual QFuture<Result_t> RequestAlbumArt (const AlbumInfo& album) const = 0;
83  };
84 }
85 
87 Q_DECLARE_INTERFACE (Media::IAlbumArtProvider, "org.LeechCraft.Media.IAlbumArtProvider/1.0")
LC::Util::Either
Definition: either.h:33
Media::AlbumInfo::operator==
bool operator==(const AlbumInfo &) const =default
Compares two AlbumInfo structures.
Media::AlbumInfo::Artist_
QString Artist_
The artist name of this album.
Definition: ialbumartprovider.h:31
Media::IAlbumArtProvider::~IAlbumArtProvider
virtual ~IAlbumArtProvider()
Definition: ialbumartprovider.h:58
Media
Definition: audiostructs.h:16
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(QVariantList *)
Media::qHash
size_t qHash(const AlbumInfo &info)
A hash function for AlbumInfo to use it with QHash.
Definition: ialbumartprovider.h:44
QFuture
Definition: idownload.h:17
Media::IAlbumArtProvider
Interface for plugins that can search for album art.
Definition: ialbumartprovider.h:55
Media::AlbumInfo
Information about an album used in IAlbumArtProvider.
Definition: ialbumartprovider.h:27
Media::AlbumInfo::Album_
QString Album_
The album name.
Definition: ialbumartprovider.h:35
eitherfwd.h