Guitar
AvatarLoader.h
Go to the documentation of this file.
1 #ifndef AVATARLOADER_H
2 #define AVATARLOADER_H
3 
4 #include <QIcon>
5 #include <QObject>
6 #include <deque>
7 #include <set>
8 #include <string>
9 
10 class MainWindow;
11 class WebContext;
12 
13 class AvatarLoader : public QObject {
14  Q_OBJECT
15 public:
16  struct Item {
17  std::string email;
18  QImage image;
19  };
20 private:
21  enum State {
26  };
27  struct RequestItem {
29  QString email;
30  QImage image;
31  };
32  struct Private;
33  Private *m;
34 
35  bool isInterruptionRequested() const;
36 protected:
37  void run();
38 public:
39  AvatarLoader(QObject *parent = nullptr);
40  ~AvatarLoader() override;
41  void requestInterruption();
42  QImage fetch(const QString &email, bool request) const;
43  void stop();
44  void start(MainWindow *mainwindow);
45  template <typename Func2> void connectAvatarReady(const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot)
46  {
47  connect(this, &AvatarLoader::ready, receiver, slot);
48  }
49  template <typename Func2> void disconnectAvatarReady(const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot)
50  {
51  disconnect(this, &AvatarLoader::ready, receiver, slot);
52  }
53 signals:
54  void ready();
55 };
56 
57 #endif // AVATARLOADER_H
AvatarLoader::run
void run()
Definition: AvatarLoader.cpp:57
AvatarLoader::Item::email
std::string email
Definition: AvatarLoader.h:17
AvatarLoader::connectAvatarReady
void connectAvatarReady(const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
Definition: AvatarLoader.h:45
AvatarLoader::disconnectAvatarReady
void disconnectAvatarReady(const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
Definition: AvatarLoader.h:49
AvatarLoader::isInterruptionRequested
bool isInterruptionRequested() const
Definition: AvatarLoader.cpp:46
AvatarLoader::RequestItem::email
QString email
Definition: AvatarLoader.h:29
AvatarLoader::start
void start(MainWindow *mainwindow)
Definition: AvatarLoader.cpp:165
UserEvent.h
AvatarLoader::Private::interrupted
volatile bool interrupted
Definition: AvatarLoader.cpp:24
AvatarLoader::Private::mutex
std::mutex mutex
Definition: AvatarLoader.cpp:25
AvatarLoader::RequestItem::state
State state
Definition: AvatarLoader.h:28
AvatarLoader::Idle
@ Idle
Definition: AvatarLoader.h:22
AvatarLoader::stop
void stop()
Definition: AvatarLoader.cpp:174
AvatarLoader::Private::requests
std::deque< AvatarLoader::RequestItem > requests
Definition: AvatarLoader.cpp:28
WebContext
Definition: webclient.h:224
AvatarLoader::State
State
Definition: AvatarLoader.h:21
MemoryReader::open
bool open(OpenMode mode) override
Definition: MemoryReader.cpp:19
AvatarLoader
Definition: AvatarLoader.h:13
ApplicationSettings::avatar_provider
struct ApplicationSettings::@6 avatar_provider
AvatarLoader::ready
void ready()
MemoryReader.h
MemoryReader
Definition: MemoryReader.h:7
AvatarLoader::Busy
@ Busy
Definition: AvatarLoader.h:23
MainWindow
Definition: MainWindow.h:58
WebClientPtr
std::shared_ptr< WebClient > WebClientPtr
Definition: AvatarLoader.cpp:21
WebClient::Request
Definition: webclient.h:87
AvatarLoader::requestInterruption
void requestInterruption()
Definition: AvatarLoader.cpp:51
AvatarLoader::Private::webcx
WebContext webcx
Definition: AvatarLoader.cpp:31
AvatarLoader::Private::web
WebClientPtr web
Definition: AvatarLoader.cpp:32
WebClient::HTTP_1_1
@ HTTP_1_1
Definition: webclient.h:77
AvatarLoader::m
Private * m
Definition: AvatarLoader.h:32
AvatarLoader.h
AvatarLoader::RequestItem
Definition: AvatarLoader.h:27
MainWindow.h
misc::isValidMailAddress
static bool isValidMailAddress(const QString &email)
文字列が有効なメールアドレスか判定する
Definition: misc.cpp:546
AvatarLoader::Item::image
QImage image
Definition: AvatarLoader.h:18
global
ApplicationGlobal * global
Definition: main.cpp:33
AvatarLoader::RequestItem::image
QImage image
Definition: AvatarLoader.h:30
AvatarLoader::fetch
QImage fetch(const QString &email, bool request) const
Definition: AvatarLoader.cpp:187
ApplicationGlobal::appsettings
ApplicationSettings appsettings
Definition: ApplicationGlobal.h:51
AvatarLoader::Private
Definition: AvatarLoader.cpp:23
AvatarLoader::Private::thread
std::thread thread
Definition: AvatarLoader.cpp:27
AvatarLoader::Private::mainwindow
MainWindow * mainwindow
Definition: AvatarLoader.cpp:29
AvatarLoader::Item
Definition: AvatarLoader.h:16
AvatarLoader::~AvatarLoader
~AvatarLoader() override
Definition: AvatarLoader.cpp:41
AvatarLoader::AvatarLoader
AvatarLoader(QObject *parent=nullptr)
Definition: AvatarLoader.cpp:35
webclient.h
ApplicationGlobal.h
AvatarLoader::Fail
@ Fail
Definition: AvatarLoader.h:25
AvatarLoader::Private::condition
std::condition_variable condition
Definition: AvatarLoader.cpp:26
AvatarLoader::Done
@ Done
Definition: AvatarLoader.h:24