ilinkable.h
Go to the documentation of this file.
1 #ifndef DNAI_INTERFACES_ILINKABLE_H
2 #define DNAI_INTERFACES_ILINKABLE_H
3 #include <QtCore/QList>
4 
5 namespace dnai {
6  namespace views {
7  class BezierCurve;
8  }
9 
10  class Link;
11  namespace interfaces {
12  class ILinkable
13  {
14  public:
15  virtual ~ILinkable() = default;
16 
17  virtual void unlinkAll() = 0;
18 
19  virtual bool isLink() = 0;
20  };
21 
22  class ALinkable : public ILinkable
23  {
24  public:
25  virtual ~ALinkable() {
26  m_links.clear();
27  }
32  const QList<Link *> &links() const { return m_links; }
33 
40  virtual Link *connect(ALinkable *linkable, views::BezierCurve *curve) = 0;
41 
42  virtual Link *asyncConnect(ALinkable *linkable) = 0;
43 
48  virtual void unlink(ALinkable *linkable) = 0;
49 
53  virtual void unlinkAll() override = 0;
54 
59  virtual void addLink(Link *l) = 0;
60 
65  virtual void removeLink(Link *l) = 0;
66 
71  virtual bool isLink() override = 0;
72 
78  virtual Link *getLink(ALinkable *linkable) const = 0;
79 
80 
81  protected:
82  QList<Link *> m_links;
83  };
84  }
85 }
86 
87 #endif // ILINKABLE_H
virtual Link * asyncConnect(ALinkable *linkable)=0
QList< Link * > m_links
Definition: ilinkable.h:82
virtual void addLink(Link *l)=0
Add a link.
virtual Link * connect(ALinkable *linkable, views::BezierCurve *curve)=0
Connect linkable together, create a link, and keep a reference on the visual curve.
virtual void unlinkAll()=0
virtual void removeLink(Link *l)=0
Remove a link.
virtual bool isLink() override=0
is linkable is actually
virtual ~ALinkable()
Definition: ilinkable.h:25
Definition: ilinkable.h:12
const QList< Link * > & links() const
return all the list of Link
Definition: ilinkable.h:32
virtual void unlink(ALinkable *linkable)=0
Break a link between linkable.
virtual ~ILinkable()=default
Definition: api.h:13
Definition: beziercurve.h:11
Definition: ilinkable.h:22
virtual Link * getLink(ALinkable *linkable) const =0
return the link between this and linkable
virtual void unlinkAll() override=0
Break all the links between linkable.