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 
14  std::string email;
15  QImage image;
16 };
17 Q_DECLARE_METATYPE(AvatarLoaderItem)
18 
19 class AvatarLoader : public QObject {
20  Q_OBJECT
21 public:
22 private:
23  enum State {
28  };
29  struct RequestItem {
30  State state = Idle;
31  QString email;
32  QImage image;
33  };
34  struct Private;
36 
37  bool isInterruptionRequested() const;
38 protected:
39  void run();
40 public:
41  AvatarLoader(QObject *parent = nullptr);
42  ~AvatarLoader() override;
43  void requestInterruption();
44  QImage fetch(const QString &email, bool request) const;
45  void stop();
46  void start(MainWindow *mainwindow);
47  template <typename Func2> void connectAvatarReady(const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot)
48  {
49  connect(this, &AvatarLoader::ready, receiver, slot);
50  }
51  template <typename Func2> void disconnectAvatarReady(const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot)
52  {
53  disconnect(this, &AvatarLoader::ready, receiver, slot);
54  }
55 signals:
56  void ready();
57 };
58 
59 #endif // AVATARLOADER_H
Definition: AvatarLoader.h:19
void connectAvatarReady(const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
Definition: AvatarLoader.h:47
Private * m
Definition: AvatarLoader.h:34
void disconnectAvatarReady(const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
Definition: AvatarLoader.h:51
State
Definition: AvatarLoader.h:23
@ Done
Definition: AvatarLoader.h:26
@ Idle
Definition: AvatarLoader.h:24
@ Busy
Definition: AvatarLoader.h:25
@ Fail
Definition: AvatarLoader.h:27
Definition: MainWindow.h:85
Definition: webclient.h:222
Definition: AvatarLoader.h:13
QImage image
Definition: AvatarLoader.h:15
std::string email
Definition: AvatarLoader.h:14
Definition: AvatarLoader.cpp:21
Definition: AvatarLoader.h:29
QImage image
Definition: AvatarLoader.h:32
QString email
Definition: AvatarLoader.h:31