25 #include <QDockWidget>
27 #include <QGridLayout>
29 #include <QSpacerItem>
31 #include <QToolButton>
42 mainWindow(mainWindow),
43 imageOffline(QPixmap::fromImage(QImage(QString::fromUtf8(
":/icons/network-offline.png")))),
44 imageIdle(QPixmap::fromImage(QImage(QString::fromUtf8(
":/icons/network-idle.png"))))
47 this->setContentsMargins(1, 1, 1, 1);
48 dockWidget = qobject_cast<QDockWidget*>(parentWidget());
49 layout =
new QGridLayout(
this);
51 layout->setSpacing(2);
52 layout->setContentsMargins(-1, 0, -1, 0);
54 statusIcon =
new QLabel(
this);
55 statusIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
56 layout->addWidget(statusIcon, 0, 0);
59 title =
new QLabel(dockWidget->windowTitle(),
this);
60 layout->addWidget(title, 0, 1);
62 editTitleBar =
new QToolBar(
this);
63 editTitleBar->setIconSize(QSize(16, 16));
65 icon3.addFile(QString::fromUtf8(
":/icons/accessories-text-editor-6.ico"), QSize(16, 16));
66 QAction* editTitleAction = editTitleBar->addAction(icon3,
"");
67 editTitleAction->setToolTip(
"Change the name of this widget instance");
70 layout->addWidget(editTitleBar, 0, 2);
73 new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Expanding);
74 layout->addItem(spacer, 0, 4);
77 undockButton =
new QToolButton(
this);
78 undockButton->setObjectName(QString::fromUtf8(
"undockButton"));
80 icon2.addFile(QString::fromUtf8(
":/icons/tab-detach.svg"), QSize(10, 10));
81 undockButton->setIcon(icon2);
82 undockButton->setIconSize(QSize(10, 10));
84 undockButton->setToolTip(
"Toggle the floating status of the widget");
85 layout->addWidget(undockButton, 0, 5);
86 closeButton =
new QToolButton(
this);
87 closeButton->setObjectName(QString::fromUtf8(
"btnClose"));
89 icon1.addFile(QString::fromUtf8(
":/icons/dialog-close.ico"), QSize(8, 8));
90 closeButton->setIcon(icon1);
91 closeButton->setIconSize(QSize(10, 10));
92 closeButton->setToolTip(
"Close the widget");
94 layout->addWidget(closeButton, 0, 6);
97 connect(closeButton, SIGNAL(clicked()), dockWidget, SLOT(close()));
109 if (!widget->parent())
111 widget->setParent(
this);
114 layout->addWidget(widget, 0, 3);
120 QDockWidget* dockWidget = qobject_cast<QDockWidget*>(parentWidget());
127 if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar)
130 size.setHeight(title->minimumWidth() + 30);
136 return layout->sizeHint();
145 QDockWidget* dockWidget = qobject_cast<QDockWidget*>(parentWidget());
150 if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar)
153 size.setHeight(layout->minimumSize().height());
162 size.setWidth(layout->minimumSize().width());
178 QDockWidget* dockWidget = qobject_cast<QDockWidget*>(parentWidget());
180 dockWidget->setFloating(!dockWidget->isFloating());
186 auto setTextColor = [
this](QString color)
187 { title->setStyleSheet(
"QLabel { color : " + color +
"; }"); };
188 setTextColor(
"black");
189 QDockWidget* dockWidget = qobject_cast<QDockWidget*>(parentWidget());
190 title->setText(dockWidget->windowTitle());
193 case eManagedIceObjectCreated:
194 statusIcon->setToolTip(
"Component created");
197 case eManagedIceObjectInitializing:
198 statusIcon->setToolTip(
"Component initializing");
199 setTextColor(
"yellow");
202 case eManagedIceObjectInitialized:
203 if (dependencies.length() > 0)
205 QString waitingFor =
"Component initialized & waiting for dependencies: " +
206 dependencies.join(
", ");
207 statusIcon->setToolTip(waitingFor);
208 title->setToolTip(waitingFor);
209 title->setText(dockWidget->windowTitle() +
" waiting for " +
210 dependencies.at(0) + (dependencies.length() > 1 ?
" ..." :
""));
215 setTextColor(
"black");
216 statusIcon->setToolTip(
"Component initialized");
221 case eManagedIceObjectExited:
222 statusIcon->setToolTip(
"Component exited");
225 case eManagedIceObjectExiting:
226 statusIcon->setToolTip(
"Component exiting");
229 case eManagedIceObjectStarting:
230 statusIcon->setToolTip(
"Component starting");
231 setTextColor(
"yellow");
235 case eManagedIceObjectStarted:
236 if (dependencies.length() > 0)
238 QString connectedTo =
239 "Component started & connected to " + dependencies.join(
", ");
240 statusIcon->setToolTip(connectedTo);
241 title->setToolTip(connectedTo);
245 statusIcon->setToolTip(
"Component started");
256 case eManagedIceObjectStarted:
258 statusIcon->setPixmap(imageIdle);
264 statusIcon->setPixmap(imageOffline);
275 if (d.exec() == QDialog::Accepted)