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

DetailsWidgetPrivated
 

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: