BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
Utils::DetailsWidget Class Reference
Inheritance diagram for Utils::DetailsWidget:
[legend]
Collaboration diagram for Utils::DetailsWidget:
[legend]

Public Types

enum  State { Expanded , Collapsed , NoSummary , OnlySummary }
 

Signals

void checked (bool)
 
void expanded (bool)
 
void linkActivated (const QString &link)
 

Public Member Functions

 DetailsWidget (QWidget *parent=0)
 
virtual ~DetailsWidget ()
 
QString additionalSummaryText () const
 
bool isChecked () const
 
void setAdditionalSummaryText (const QString &text)
 
void setChecked (bool b)
 
void setIcon (const QIcon &icon)
 
void setState (State state)
 
void setSummaryFontBold (bool b)
 
void setSummaryText (const QString &text)
 
void setToolWidget (FadingPanel *widget)
 
void setUseCheckBox (bool b)
 
void setWidget (QWidget *widget)
 
State state () const
 
QString summaryText () const
 
QWidget * takeWidget ()
 
QWidget * toolWidget () const
 
bool useCheckBox ()
 
QWidget * widget () const
 

Static Public Member Functions

static QPixmap createBackground (const QSize &size, int topHeight, QWidget *widget)
 

Protected Member Functions

virtual void enterEvent (QEvent *event)
 
virtual void leaveEvent (QEvent *event)
 
virtual void paintEvent (QPaintEvent *paintEvent)
 

Properties

QString additionalSummaryText
 
bool checked
 
State state
 
QString summaryText
 
bool useCheckBox
 

Private Member Functions

void setExpanded (bool)
 

Private Attributes

DetailsWidgetPrivate * d
 

Detailed Description

Definition at line 36 of file detailswidget.h.

Member Enumeration Documentation

◆ State

Enumerator
Expanded 
Collapsed 
NoSummary 
OnlySummary 

Definition at line 47 of file detailswidget.h.

Constructor & Destructor Documentation

◆ DetailsWidget()

Utils::DetailsWidget::DetailsWidget ( QWidget *  parent = 0)
explicit

Definition at line 214 of file detailswidget.cpp.

214  : QWidget(parent), d(new DetailsWidgetPrivate(this))
215 {
216  setLayout(d->m_grid);
217 
218  setUseCheckBox(false);
219 
220  connect(d->m_detailsButton, &QAbstractButton::toggled, this, &DetailsWidget::setExpanded);
221  connect(d->m_summaryCheckBox, &QAbstractButton::toggled, this, &DetailsWidget::checked);
222  connect(d->m_summaryLabel, &QLabel::linkActivated, this, &DetailsWidget::linkActivated);
223  d->updateControls();
224 }
DetailsButton * m_detailsButton
void linkActivated(const QString &link)
void setUseCheckBox(bool b)
DetailsWidgetPrivate * d
Definition: detailswidget.h:93

References checked, d, linkActivated(), Utils::DetailsWidgetPrivate::m_detailsButton, Utils::DetailsWidgetPrivate::m_grid, Utils::DetailsWidgetPrivate::m_summaryCheckBox, Utils::DetailsWidgetPrivate::m_summaryLabel, setExpanded(), setUseCheckBox(), and Utils::DetailsWidgetPrivate::updateControls().

Here is the call graph for this function:

◆ ~DetailsWidget()

Utils::DetailsWidget::~DetailsWidget ( )
virtual

Definition at line 226 of file detailswidget.cpp.

227 {
228  delete d;
229 }

References d.

Member Function Documentation

◆ additionalSummaryText()

QString Utils::DetailsWidget::additionalSummaryText ( ) const

Definition at line 322 of file detailswidget.cpp.

323 {
324  return d->m_additionalSummaryLabel->text();
325 }

References d, and Utils::DetailsWidgetPrivate::m_additionalSummaryLabel.

◆ checked

void Utils::DetailsWidget::checked ( bool  )
signal

◆ createBackground()

QPixmap Utils::DetailsWidget::createBackground ( const QSize &  size,
int  topHeight,
QWidget *  widget 
)
static

Definition at line 139 of file detailswidget.cpp.

140 {
141  QPixmap pixmap(size);
142  pixmap.fill(Qt::transparent);
143  QPainter p(&pixmap);
144 
145  QRect topRect(0, 0, size.width(), topHeight);
146  QRect fullRect(0, 0, size.width(), size.height());
148  p.fillRect(fullRect, QApplication::palette().window().color());
149  else
150  p.fillRect(fullRect, QApplication::palette().window().color());
151 
152  if (!FlatProjectsMode) {
153  QLinearGradient lg(topRect.topLeft(), topRect.bottomLeft());
154  // lg.setStops(creatorTheme()->gradient(Theme::DetailsWidgetHeaderGradient));
155 
156  lg.setCoordinateMode(QGradient::ObjectBoundingMode);
157  lg.setFinalStop(0, 1);
158  // if (!checked) {
159  // lg.setColorAt(0, QColor(0, 0, 0, 10));
160  // lg.setColorAt(1, QColor(0, 0, 0, 16));
161  // } else {
162  lg.setColorAt(0, QColor(255, 255, 255, 0));
163  lg.setColorAt(1, QColor(255, 255, 255, 50));
164  // }
165 
166  p.fillRect(topRect, lg);
167  p.setRenderHint(QPainter::Antialiasing, true);
168  p.translate(0.5, 0.5);
169  p.setPen(QColor(0, 0, 0, 40));
170  p.setBrush(Qt::NoBrush);
171  p.drawRoundedRect(fullRect.adjusted(0, 0, -1, -1), 2, 2);
172  p.setBrush(Qt::NoBrush);
173  p.setPen(QColor(255, 255, 255, 140));
174  p.drawRoundedRect(fullRect.adjusted(1, 1, -2, -2), 2, 2);
175  p.setPen(QPen(widget->palette().color(QPalette::Mid)));
176  }
177 
178  return pixmap;
179 }
static bool isMacHost()
Definition: hostosinfo.h:69
QWidget * widget() const

References GUI_OS_Utils::HostOsInfo::isMacHost(), and widget().

Referenced by paintEvent().

Here is the call graph for this function:

◆ enterEvent()

void Utils::DetailsWidget::enterEvent ( QEvent *  event)
protectedvirtual

Definition at line 295 of file detailswidget.cpp.

296 {
297  QWidget::enterEvent(event);
298  d->changeHoverState(true);
299 }
void changeHoverState(bool hovered)

References Utils::DetailsWidgetPrivate::changeHoverState(), and d.

Here is the call graph for this function:

◆ expanded

void Utils::DetailsWidget::expanded ( bool  )
signal

Referenced by setExpanded(), and setState().

◆ isChecked()

bool Utils::DetailsWidget::isChecked ( ) const

◆ leaveEvent()

void Utils::DetailsWidget::leaveEvent ( QEvent *  event)
protectedvirtual

Definition at line 301 of file detailswidget.cpp.

302 {
303  QWidget::leaveEvent(event);
304  d->changeHoverState(false);
305 }

References Utils::DetailsWidgetPrivate::changeHoverState(), and d.

Here is the call graph for this function:

◆ linkActivated

void Utils::DetailsWidget::linkActivated ( const QString &  link)
signal

Referenced by DetailsWidget().

◆ paintEvent()

void Utils::DetailsWidget::paintEvent ( QPaintEvent *  paintEvent)
protectedvirtual

Definition at line 268 of file detailswidget.cpp.

269 {
270  QWidget::paintEvent(paintEvent);
271 
272  QPainter p(this);
273 
274  QWidget* topLeftWidget = d->m_useCheckBox ? static_cast<QWidget*>(d->m_summaryCheckBox)
275  : static_cast<QWidget*>(d->m_summaryLabelIcon);
276  QPoint topLeft(topLeftWidget->geometry().left() - MARGIN, contentsRect().top());
277  const QRect paintArea(topLeft, contentsRect().bottomRight());
278 
279  int topHeight = d->m_useCheckBox ? d->m_summaryCheckBox->height() : d->m_summaryLabel->height();
281  || d->m_state == DetailsWidget::Collapsed) // Details Button is shown
282  topHeight = qMax(d->m_detailsButton->height(), topHeight);
283 
284  if (d->m_state == Collapsed) {
285  if (d->m_collapsedPixmap.isNull() || d->m_collapsedPixmap.size() != size())
286  d->m_collapsedPixmap = createBackground(paintArea.size(), topHeight, this);
287  p.drawPixmap(paintArea, d->m_collapsedPixmap);
288  } else {
289  if (d->m_expandedPixmap.isNull() || d->m_expandedPixmap.size() != size())
290  d->m_expandedPixmap = createBackground(paintArea.size(), topHeight, this);
291  p.drawPixmap(paintArea, d->m_expandedPixmap);
292  }
293 }
DetailsWidget::State m_state
static QPixmap createBackground(const QSize &size, int topHeight, QWidget *widget)
virtual void paintEvent(QPaintEvent *paintEvent)
const int MARGIN

References Collapsed, createBackground(), d, Expanded, Utils::DetailsWidgetPrivate::m_collapsedPixmap, Utils::DetailsWidgetPrivate::m_detailsButton, Utils::DetailsWidgetPrivate::m_expandedPixmap, Utils::DetailsWidgetPrivate::m_state, Utils::DetailsWidgetPrivate::m_summaryCheckBox, Utils::DetailsWidgetPrivate::m_summaryLabel, Utils::DetailsWidgetPrivate::m_summaryLabelIcon, Utils::DetailsWidgetPrivate::m_useCheckBox, and Utils::MARGIN.

Here is the call graph for this function:

◆ setAdditionalSummaryText()

void Utils::DetailsWidget::setAdditionalSummaryText ( const QString &  text)

Definition at line 327 of file detailswidget.cpp.

328 {
329  d->m_additionalSummaryLabel->setText(text);
330  d->m_additionalSummaryLabel->setVisible(!text.isEmpty());
331 }

References d, and Utils::DetailsWidgetPrivate::m_additionalSummaryLabel.

◆ setChecked()

void Utils::DetailsWidget::setChecked ( bool  b)

Definition at line 242 of file detailswidget.cpp.

243 {
244  d->m_summaryCheckBox->setChecked(b);
245 }

References d, and Utils::DetailsWidgetPrivate::m_summaryCheckBox.

◆ setExpanded()

void Utils::DetailsWidget::setExpanded ( bool  expanded)
private

Definition at line 347 of file detailswidget.cpp.

348 {
350 }
void setState(State state)

References Collapsed, Expanded, expanded(), and setState().

Referenced by DetailsWidget().

Here is the call graph for this function:

◆ setIcon()

void Utils::DetailsWidget::setIcon ( const QIcon &  icon)

Definition at line 260 of file detailswidget.cpp.

261 {
262  int iconSize = style()->pixelMetric(QStyle::PM_ButtonIconSize, 0, this);
263  d->m_summaryLabelIcon->setFixedWidth(icon.isNull() ? 0 : iconSize);
264  d->m_summaryLabelIcon->setPixmap(icon.pixmap(iconSize, iconSize));
265  d->m_summaryCheckBox->setIcon(icon);
266 }

References d, Utils::DetailsWidgetPrivate::m_summaryCheckBox, and Utils::DetailsWidgetPrivate::m_summaryLabelIcon.

◆ setState()

void Utils::DetailsWidget::setState ( State  state)

Definition at line 338 of file detailswidget.cpp.

339 {
340  if (state == d->m_state)
341  return;
342  d->m_state = state;
343  d->updateControls();
344  emit expanded(d->m_state == Expanded);
345 }

References d, Expanded, expanded(), Utils::DetailsWidgetPrivate::m_state, state, and Utils::DetailsWidgetPrivate::updateControls().

Referenced by setExpanded().

Here is the call graph for this function:

◆ setSummaryFontBold()

void Utils::DetailsWidget::setSummaryFontBold ( bool  b)

Definition at line 252 of file detailswidget.cpp.

253 {
254  QFont f;
255  f.setBold(b);
256  d->m_summaryCheckBox->setFont(f);
257  d->m_summaryLabel->setFont(f);
258 }

References d, Utils::DetailsWidgetPrivate::m_summaryCheckBox, and Utils::DetailsWidgetPrivate::m_summaryLabel.

◆ setSummaryText()

void Utils::DetailsWidget::setSummaryText ( const QString &  text)

Definition at line 307 of file detailswidget.cpp.

308 {
309  if (d->m_useCheckBox)
310  d->m_summaryCheckBox->setText(text);
311  else
312  d->m_summaryLabel->setText(text);
313 }

References d, Utils::DetailsWidgetPrivate::m_summaryCheckBox, Utils::DetailsWidgetPrivate::m_summaryLabel, and Utils::DetailsWidgetPrivate::m_useCheckBox.

◆ setToolWidget()

void Utils::DetailsWidget::setToolWidget ( FadingPanel *  widget)

Definition at line 386 of file detailswidget.cpp.

387 {
388  if (d->m_toolWidget == widget)
389  return;
390 
391  d->m_toolWidget = widget;
392 
393  if (!d->m_toolWidget)
394  return;
395 
396  d->m_toolWidget->adjustSize();
397  d->m_grid->addWidget(d->m_toolWidget, 0, 1, 1, 1, Qt::AlignRight);
398 
400  d->m_toolWidget->setOpacity(1.0);
402 }
virtual void setOpacity(qreal value)=0

References Utils::DetailsWidgetPrivate::changeHoverState(), d, GUI_OS_Utils::HostOsInfo::isMacHost(), Utils::DetailsWidgetPrivate::m_grid, Utils::DetailsWidgetPrivate::m_hovered, Utils::DetailsWidgetPrivate::m_toolWidget, Utils::FadingPanel::setOpacity(), and widget().

Here is the call graph for this function:

◆ setUseCheckBox()

void Utils::DetailsWidget::setUseCheckBox ( bool  b)

Definition at line 236 of file detailswidget.cpp.

237 {
238  d->m_useCheckBox = b;
239  d->updateControls();
240 }

References d, Utils::DetailsWidgetPrivate::m_useCheckBox, and Utils::DetailsWidgetPrivate::updateControls().

Referenced by DetailsWidget().

Here is the call graph for this function:

◆ setWidget()

void Utils::DetailsWidget::setWidget ( QWidget *  widget)

Definition at line 367 of file detailswidget.cpp.

368 {
369  if (d->m_widget == widget)
370  return;
371 
372  if (d->m_widget) {
373  d->m_grid->removeWidget(d->m_widget);
374  delete d->m_widget;
375  }
376 
377  d->m_widget = widget;
378 
379  if (d->m_widget) {
380  d->m_widget->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN);
381  d->m_grid->addWidget(d->m_widget, 2, 0, 1, 3);
382  }
383  d->updateControls();
384 }

References d, Utils::DetailsWidgetPrivate::m_grid, Utils::DetailsWidgetPrivate::m_widget, Utils::MARGIN, Utils::DetailsWidgetPrivate::updateControls(), and widget().

Here is the call graph for this function:

◆ state()

DetailsWidget::State Utils::DetailsWidget::state ( ) const

Definition at line 333 of file detailswidget.cpp.

334 {
335  return d->m_state;
336 }

References d, and Utils::DetailsWidgetPrivate::m_state.

◆ summaryText()

QString Utils::DetailsWidget::summaryText ( ) const

◆ takeWidget()

QWidget * Utils::DetailsWidget::takeWidget ( )

Definition at line 357 of file detailswidget.cpp.

358 {
359  QWidget* widget = d->m_widget;
360  d->m_widget = 0;
361  d->m_grid->removeWidget(widget);
362  if (widget)
363  widget->setParent(0);
364  return widget;
365 }

References d, Utils::DetailsWidgetPrivate::m_grid, Utils::DetailsWidgetPrivate::m_widget, and widget().

Here is the call graph for this function:

◆ toolWidget()

QWidget * Utils::DetailsWidget::toolWidget ( ) const

Definition at line 404 of file detailswidget.cpp.

405 {
406  return d->m_toolWidget;
407 }

References d, and Utils::DetailsWidgetPrivate::m_toolWidget.

◆ useCheckBox()

bool Utils::DetailsWidget::useCheckBox ( )

◆ widget()

QWidget * Utils::DetailsWidget::widget ( ) const

Definition at line 352 of file detailswidget.cpp.

353 {
354  return d->m_widget;
355 }

References d, and Utils::DetailsWidgetPrivate::m_widget.

Referenced by createBackground(), setToolWidget(), setWidget(), and takeWidget().

Member Data Documentation

◆ d

Property Documentation

◆ additionalSummaryText

QString Utils::DetailsWidget::additionalSummaryText
read

Definition at line 1 of file detailswidget.h.

◆ checked

bool Utils::DetailsWidget::checked
readwrite

Definition at line 1 of file detailswidget.h.

Referenced by DetailsWidget().

◆ state

State Utils::DetailsWidget::state
readwrite

Definition at line 1 of file detailswidget.h.

Referenced by setState().

◆ summaryText

QString Utils::DetailsWidget::summaryText
readwrite

Definition at line 1 of file detailswidget.h.

◆ useCheckBox

bool Utils::DetailsWidget::useCheckBox
readwrite

Definition at line 1 of file detailswidget.h.


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