HAL
splitter_anchor.cpp
Go to the documentation of this file.
7 #include <QApplication>
8 #include <QDesktopWidget>
9 #include <QStyle>
10 
11 namespace hal
12 {
14  {
17 
18  mDockBar->setAnchor(this);
19  }
20 
21  void SplitterAnchor::add(ContentWidget* widget, int index)
22  {
23  widget->setAnchor(this);
24  ContentFrame* frame = new ContentFrame(widget, true, nullptr);
25  frame->hide();
26  mSplitter->insertWidget(index, frame);
27  mDockBar->addButton(widget, index);
28 
30  }
31 
33  {
34  widget->setAnchor(nullptr);
35  widget->hide();
36  widget->setParent(nullptr);
37  mDockBar->removeButton(widget);
38 
40  }
41 
43  {
44  widget->hide();
45  widget->setParent(nullptr);
46  ContentFrame* frame = new ContentFrame(widget, false, nullptr);
47  frame->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, frame->size(), qApp->desktop()->availableGeometry()));
48  frame->show();
49 
50  if (mSplitter->unused())
51  mSplitter->hide();
52 
53  mDockBar->detachButton(widget);
54 
56  }
57 
59  {
60  int index = mDockBar->index(widget);
61  ContentFrame* frame = new ContentFrame(widget, true, nullptr);
62  frame->hide();
63  mSplitter->insertWidget(index, frame);
64  mDockBar->reattachButton(widget);
65 
67  }
68 
70  {
71  for (int i = 0; i < mSplitter->count(); i++)
72  {
73  if (static_cast<ContentFrame*>(mSplitter->widget(i))->content() == widget)
74  {
75  static_cast<ContentFrame*>(mSplitter->widget(i))->show();
76  mSplitter->show();
77  break;
78  }
79  }
80  mDockBar->checkButton(widget);
81  }
82 
84  {
85  for (int i = 0; i < mSplitter->count(); i++)
86  {
87  if (static_cast<ContentFrame*>(mSplitter->widget(i))->content() == widget)
88  {
89  static_cast<ContentFrame*>(mSplitter->widget(i))->hide();
90  if (mSplitter->unused())
91  mSplitter->hide();
92  break;
93  }
94  }
95  mDockBar->uncheckButton(widget);
96  }
97 
99  {
100  return mDockBar->count();
101  }
102 
104  {
105  /*
106  for (int i = 0; i < mDockBar->count(); ++i)
107  {
108  ContentWidget* widget = mDockBar->widgetAt(0);
109  remove(widget);
110  }
111 
112  mDockBar->update();
113  */
114 
115  mDockBar->clear();
116  }
117 }
static ContentDragRelay * instance()
Wraps the ContentWidget class.
Definition: content_frame.h:45
ContentWidget * content()
Abstract class for Widgets within HAL's ContentArea.
void setAnchor(ContentAnchor *anchor)
Contains and handles DockButtons.
Definition: dock_bar.h:48
void clear()
Definition: dock_bar.cpp:496
bool removeButton(ContentWidget *widget)
Definition: dock_bar.cpp:359
void setAnchor(ContentAnchor *anchor)
Definition: dock_bar.cpp:253
int index(ContentWidget *widget)
Definition: dock_bar.cpp:284
void checkButton(ContentWidget *widget)
Definition: dock_bar.cpp:429
void reattachButton(ContentWidget *widget)
Definition: dock_bar.cpp:414
void uncheckButton(ContentWidget *widget)
Definition: dock_bar.cpp:441
void handleDragEnd()
Definition: dock_bar.cpp:520
void detachButton(ContentWidget *widget)
Definition: dock_bar.cpp:396
void handleDragStart()
Definition: dock_bar.cpp:515
void addButton(ContentWidget *widget, int index)
Definition: dock_bar.cpp:343
virtual void open(ContentWidget *widget) override
int count() const override
virtual void close(ContentWidget *widget) override
virtual void add(ContentWidget *widget, int index=-1) override
virtual void reattach(ContentWidget *widget) override
SplitterAnchor(DockBar *DockBar, Splitter *Splitter, QObject *parent=nullptr)
virtual void remove(ContentWidget *widget) override
virtual void detach(ContentWidget *widget) override
A QSplitter that can be checked if it is unused or not.
Definition: splitter.h:39
bool unused()
Definition: splitter.cpp:10
void setParent(QWidget *parent)
Definition: widget.cpp:9
void hide()
Definition: widget.cpp:15
Q_EMITQ_EMIT
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
int count() const const
void insertWidget(int index, QWidget *widget)
QWidget * widget(int index) const const
QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle)
AlignCenter
LeftToRight
void hide()
void setGeometry(int x, int y, int w, int h)
void show()