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
IVP1ChannelWidgetchannelWidget () 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

Impm_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: