ATLAS Offline Software
Loading...
Searching...
No Matches
VP1DockWidget Class Reference

#include <VP1DockWidget.h>

Inheritance diagram for VP1DockWidget:
Collaboration diagram for VP1DockWidget:

Classes

class  Imp

Signals

void wasSelected (VP1DockWidget *)

Public Member Functions

 VP1DockWidget (IVP1ChannelWidget *cw, VP1TabManager *tm)
virtual ~VP1DockWidget ()
void setSelected ()
void setUnselected ()
bool isSelected () const
IVP1ChannelWidget * channelWidget () const
void ensureCWHasNoParent ()
void ensureCWHasParent ()

Static Public Member Functions

static QString highlightStyle ()

Protected Member Functions

void contextMenuEvent (QContextMenuEvent *event)
void resizeEvent (QResizeEvent *event)

Protected Attributes

Imp * m_d

Private Slots

void systemRefreshInfoChanged (const QString &sysrefreshing, int nsysOn, int nsysOnRefreshed)
void updateTitle ()

Detailed Description

Definition at line 24 of file VP1DockWidget.h.

Constructor & Destructor Documentation

◆ VP1DockWidget()

VP1DockWidget::VP1DockWidget ( IVP1ChannelWidget * cw,
VP1TabManager * tm )

Definition at line 127 of file VP1DockWidget.cxx.

128 : QDockWidget ( cw->unique_name(), 0 ), m_d(new Imp(this,cw,tm))
129{
130
131 setObjectName("VP1DockWidget:"+cw->name());//For storing/saving the layout of the dock widgets within the dock area.
132
133 setFocusProxy(cw);
134
135 setAllowedAreas(Qt::TopDockWidgetArea);
136 setFeatures(VP1DockWidget::DockWidgetMovable | VP1DockWidget::DockWidgetFloatable);
137
138 m_d->selectedstylesheet="QFrame#VP1DockWidgetFrame { "+highlightStyle()+" } ";
139
140 //Add frame, which will light up on selection:
141 m_d->frame = new QFrame(this);
142 m_d->frame->setObjectName("VP1DockWidgetFrame");
143 cw->setObjectName("IVP1ChannelWidget:"+cw->name());
144 ensureCWHasParent();//setup the cw in the frame
145
146 //Figure out what margin our drawn frame imposes:
147 setSelected();
148 QMargins marg = m_d->frame->contentsMargins();
149 Q_ASSERT(marg.left()==marg.top()&&marg.left()==marg.right()&&marg.left()==marg.bottom()&&"Qt changed its margin behaviour for QFrame!!");
150 m_d->unselectedmargin=marg.left();
151
152 //Channel starts unselected:
154
155 connect(cw,SIGNAL(uniqueNameChanged(QString)),this,SLOT(updateTitle()));
156 connect(cw,SIGNAL(systemRefreshInfoChanged(QString,int,int)),this,SLOT(systemRefreshInfoChanged(QString,int,int)));
157
158 //Setup a watch for selections:
159 m_d->filteritem->init();
160
161}
const QString unique_name() const
const QString & name() const
static QString highlightStyle()
void systemRefreshInfoChanged(const QString &sysrefreshing, int nsysOn, int nsysOnRefreshed)

◆ ~VP1DockWidget()

VP1DockWidget::~VP1DockWidget ( )
virtual

Definition at line 114 of file VP1DockWidget.cxx.

115{
116 delete m_d->filteritem;
117 delete m_d; m_d=0;
118}

Member Function Documentation

◆ channelWidget()

IVP1ChannelWidget * VP1DockWidget::channelWidget ( ) const

Definition at line 249 of file VP1DockWidget.cxx.

250{
251 return m_d->channelwidget;
252}

◆ contextMenuEvent()

void VP1DockWidget::contextMenuEvent ( QContextMenuEvent * event)
protected

Definition at line 261 of file VP1DockWidget.cxx.

262{
263 //Inside the frame, we use the normal behaviour:
264 if (m_d->frame->geometry().contains(event->pos())) {
265 QDockWidget::contextMenuEvent ( event );
266 return;
267 }
268 //Outside we show our contextmenu:
269
270 //Construct menu:
271 QMenu menu(this);
272// menu.addAction("Channel: "+m_d->channelwidget->unique_name())->setEnabled(false);
273// menu.addSeparator();
274
275 QAction* pFullScreenAction = menu.addAction("Show &full Screen");
276 menu.addSeparator();
277 QAction* pRemoveAction = menu.addAction("&Remove channel");
278 menu.addSeparator ();
279 QAction* pMoveChannelAction = menu.addAction("&Move to tab");
280
281 QStringList tablist = m_d->tabmanager->tabList();
282 QMenu menu_movechan(this);
283 if (tablist.count()==1) {
284 menu_movechan.addAction("No other tabs available")->setEnabled(false);
285 } else {
286 QString thistab = m_d->tabmanager->channelToTab(m_d->channelwidget);
287 for (const QString& tab : tablist) {
288 if (tab!=thistab)
289 menu_movechan.addAction(tab)->setData("MOVECHAN");
290 }
291 }
292 pMoveChannelAction->setMenu(&menu_movechan);
293
294 //Execute
295 QAction * selAct = menu.exec(event->globalPos());
296 //Act on selection:
297 if (!selAct)
298 return;
299 if (selAct==pFullScreenAction) {
300 m_d->tabmanager->showChannelFullScreen(m_d->channelwidget);
301 return;
302 }
303 if (selAct==pRemoveAction) {
304 m_d->tabmanager->removeChannelAfterQueueEmpties(m_d->channelwidget->unique_name());
305 return;
306 }
307 if (selAct->data()=="MOVECHAN") {
308 m_d->tabmanager->moveChannelToTab(m_d->channelwidget->unique_name(),selAct->text());
309 return;
310 }
311 std::cout<<"ERROR in VP1DockWidget::contextMenuEvent!!!!!"<<std::endl;
312
313}

◆ ensureCWHasNoParent()

void VP1DockWidget::ensureCWHasNoParent ( )

Definition at line 164 of file VP1DockWidget.cxx.

165{
166 if (!channelWidget()||!channelWidget()->parent())
167 return;
168 channelWidget()->setParent(0);
169 setWidget(0);
170 if (m_d->frame->layout()&&m_d->frame->layout()->indexOf(m_d->channelwidget)>=0) {
171 assert(m_d->vboxLayout);
172 m_d->vboxLayout->removeWidget(m_d->channelwidget);
173 }
174}
IVP1ChannelWidget * channelWidget() const

◆ ensureCWHasParent()

void VP1DockWidget::ensureCWHasParent ( )

Definition at line 177 of file VP1DockWidget.cxx.

178{
180 return;
181 if (!m_d->frame->layout()) {
182 assert(!m_d->vboxLayout);
183 m_d->vboxLayout = new QVBoxLayout(0);
184 m_d->frame->setLayout(m_d->vboxLayout);
185 m_d->vboxLayout->setObjectName("vp1dock-frame-layout");
186 m_d->vboxLayout->setSpacing(0);
187 }
188 if (m_d->frame->layout()->indexOf(m_d->channelwidget)<0)
189 m_d->frame->layout()->addWidget(m_d->channelwidget);
190 channelWidget()->setParent(m_d->frame);
191 setWidget(m_d->frame);
192}

◆ highlightStyle()

QString VP1DockWidget::highlightStyle ( )
static

Definition at line 121 of file VP1DockWidget.cxx.

122{
123 return "background-color: rgba(0, 0, 255, 12%)";
124}

◆ isSelected()

bool VP1DockWidget::isSelected ( ) const

Definition at line 255 of file VP1DockWidget.cxx.

256{
257 return m_d->selected;
258}

◆ resizeEvent()

void VP1DockWidget::resizeEvent ( QResizeEvent * event)
protected

Definition at line 316 of file VP1DockWidget.cxx.

317{
318 m_d->channelwidget->dockResized();
319 QDockWidget::resizeEvent(event);
320}

◆ setSelected()

void VP1DockWidget::setSelected ( )

Definition at line 223 of file VP1DockWidget.cxx.

224{
225 if (m_d->selected)
226 return;
227 m_d->selected=true;
228 m_d->frame->setStyleSheet(m_d->selectedstylesheet);
229 assert(m_d->vboxLayout);
230 m_d->vboxLayout->setMargin(0);
231 m_d->frame->setFrameShape(QFrame::StyledPanel);
232 updateTitle();
233}

◆ setUnselected()

void VP1DockWidget::setUnselected ( )

Definition at line 236 of file VP1DockWidget.cxx.

237{
238 if (!m_d->selected)
239 return;
240 m_d->selected=false;
241 m_d->frame->setStyleSheet("");
242 assert(m_d->vboxLayout);
243 m_d->vboxLayout->setMargin(m_d->unselectedmargin);
244 m_d->frame->setFrameShape(QFrame::NoFrame);
245 updateTitle();
246}

◆ systemRefreshInfoChanged

void VP1DockWidget::systemRefreshInfoChanged ( const QString & sysrefreshing,
int nsysOn,
int nsysOnRefreshed )
privateslot

Definition at line 195 of file VP1DockWidget.cxx.

196{
197 assert(nsysOnRefreshed<=nsysOn);
198 if (nsysOn==nsysOnRefreshed) {
199 // assert(sysrefreshing.isEmpty());
200 m_d->title_refreshpart.clear();
201 updateTitle();
202 return;
203 }
204 assert(nsysOnRefreshed<nsysOn);
205 if (sysrefreshing.isEmpty()) {
206 m_d->title_refreshpart = " [Refreshed "+QString::number(nsysOnRefreshed)+"/"+QString::number(nsysOn)+"]";
207 } else {
208 m_d->title_refreshpart = " [Refreshing "+QString::number(nsysOnRefreshed+1)+"/"+QString::number(nsysOn)+": "+sysrefreshing+" ]";
209 }
210 updateTitle();
211}

◆ updateTitle

void VP1DockWidget::updateTitle ( )
privateslot

Definition at line 214 of file VP1DockWidget.cxx.

215{
216 if (m_d->selected)
217 setWindowTitle(">>> "+m_d->channelwidget->unique_name()+m_d->title_refreshpart+" <<<");
218 else
219 setWindowTitle(m_d->channelwidget->unique_name()+m_d->title_refreshpart);
220}

◆ wasSelected

void VP1DockWidget::wasSelected ( VP1DockWidget * )
signal

Member Data Documentation

◆ m_d

Imp* VP1DockWidget::m_d
protected

Definition at line 55 of file VP1DockWidget.h.


The documentation for this class was generated from the following files: