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