Skip to content
Snippets Groups Projects
Commit 02de3133 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

rm obsolete code

parent 19787d77
No related branches found
No related tags found
1 merge request!497Corrections and simplifications
Pipeline #51134 passed
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Common/InfoPanel.cpp
//! @brief Declares class InfoPanel
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#include "GUI/View/Common/InfoPanel.h"
#include "GUI/View/Common/InfoPanelToolBar.h"
#include <QBoxLayout>
#include <QResizeEvent>
#include <QStackedWidget>
namespace {
const int minimum_widget_height = 25; // height of toolbar
const int minimum_height_before_collapse = 50;
const int default_height = 200;
} // namespace
InfoPanel::InfoPanel(QWidget* parent)
: QFrame(parent)
, m_toolBar(new InfoPanelToolBar)
, m_stackedWidget(new QStackedWidget)
, m_cached_height(default_height)
{
auto* mainLayout = new QVBoxLayout;
mainLayout->addWidget(m_toolBar);
mainLayout->addWidget(m_stackedWidget);
mainLayout->setContentsMargins(0, 0, 0, 0);
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
setLayout(mainLayout);
connect(m_toolBar, &InfoPanelToolBar::expandButtonClicked, this,
&InfoPanel::onExpandButtonClicked);
}
QSize InfoPanel::sizeHint() const
{
QSize result = m_toolBar->sizeHint();
if (QWidget* widget = m_stackedWidget->currentWidget()) {
if (widget->isVisible())
result.setHeight(widget->height() + m_toolBar->height());
} else {
result.setHeight(m_toolBar->height());
}
return result;
}
QSize InfoPanel::minimumSizeHint() const
{
return QSize(minimum_widget_height, minimum_widget_height);
}
void InfoPanel::showToolBar(bool show)
{
m_toolBar->setVisible(show);
}
void InfoPanel::onExpandButtonClicked()
{
setContentVisible(!isContentVisible(), true);
}
void InfoPanel::setContentVisible(bool editor_status, bool dock_notify)
{
m_toolBar->setExpandStatus(editor_status);
if (editor_status) {
if (m_cached_height)
if (dock_notify)
emit widgetHeightRequest(m_cached_height);
if (m_stackedWidget->currentWidget())
m_stackedWidget->currentWidget()->show();
} else {
m_cached_height = (height() < minimum_height_before_collapse ? default_height : height());
if (m_stackedWidget->currentWidget())
m_stackedWidget->currentWidget()->hide();
if (dock_notify)
emit widgetHeightRequest(minimum_widget_height);
}
}
bool InfoPanel::isContentVisible()
{
if (m_stackedWidget->currentWidget())
return m_stackedWidget->currentWidget()->isVisible();
return false;
}
void InfoPanel::resizeEvent(QResizeEvent* event)
{
// widget is schrinking in height
if (event->oldSize().height() > event->size().height()) {
if (event->size().height() <= minimum_height_before_collapse && isContentVisible())
setContentVisible(false);
}
// widget is growing in height
if (event->oldSize().height() < event->size().height()) {
if (event->size().height() > minimum_height_before_collapse && !isContentVisible())
setContentVisible(true);
}
QWidget::resizeEvent(event);
}
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Common/InfoPanel.h
//! @brief Defines class InfoPanel
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_COMMON_INFOPANEL_H
#define BORNAGAIN_GUI_VIEW_COMMON_INFOPANEL_H
#include <QFrame>
class QStackedWidget;
class InfoPanelToolBar;
class QResizeEvent;
//! Frame for widgets with tool bar on top and collapse/expand button functionality.
//! Intended for QDockWindow, to be able to quickly minimize/maximize its appearance.
//! Used in JobMessagePanel.
class InfoPanel : public QFrame {
Q_OBJECT
public:
explicit InfoPanel(QWidget* parent);
QSize sizeHint() const override;
QSize minimumSizeHint() const override;
void showToolBar(bool show);
signals:
void widgetHeightRequest(int);
protected slots:
void onExpandButtonClicked();
void setContentVisible(bool editor_status, bool dock_notify = false);
protected:
bool isContentVisible();
void resizeEvent(QResizeEvent* event) override;
InfoPanelToolBar* m_toolBar;
QStackedWidget* m_stackedWidget;
int m_cached_height;
};
#endif // BORNAGAIN_GUI_VIEW_COMMON_INFOPANEL_H
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Common/InfoPanelToolBar.cpp
//! @brief Declares class InfoPanelToolBar
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#include "GUI/View/Common/InfoPanelToolBar.h"
#include <QAction>
#include <QHBoxLayout>
#include <QToolButton>
namespace {
const int minimum_size = 25;
const QString icon_up = ":/images/dark-angle-up.svg";
const QString icon_down = ":/images/dark-angle-down.svg";
const QString expand_text = "Collapse/expand view";
} // namespace
InfoPanelToolBar::InfoPanelToolBar(QWidget* parent)
: QToolBar(parent), m_expandAction(new QAction(expand_text, this)), m_expanded(false)
{
setMinimumSize(minimum_size, minimum_size);
setProperty("_q_custom_style_disabled", QVariant(true));
m_expandAction->setIcon(QIcon(icon_up));
m_expandAction->setToolTip(expand_text);
connect(m_expandAction, &QAction::triggered, this, &InfoPanelToolBar::onExpandButtonClicked);
auto* empty = new QWidget();
empty->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
addWidget(empty);
addAction(m_expandAction);
}
void InfoPanelToolBar::setExpandStatus(bool status)
{
m_expanded = status;
if (m_expanded)
m_expandAction->setIcon(QIcon(icon_down));
else
m_expandAction->setIcon(QIcon(icon_up));
}
void InfoPanelToolBar::onExpandButtonClicked()
{
m_expanded = !m_expanded;
setExpandStatus(m_expanded);
emit expandButtonClicked();
}
// ************************************************************************************************
//
// BornAgain: simulate and fit reflection and scattering
//
//! @file GUI/View/Common/InfoPanelToolBar.h
//! @brief Defines class InfoPanelToolBar
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2018
//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
//
// ************************************************************************************************
#ifndef BORNAGAIN_GUI_VIEW_COMMON_INFOPANELTOOLBAR_H
#define BORNAGAIN_GUI_VIEW_COMMON_INFOPANELTOOLBAR_H
#include "GUI/View/Common/StyledToolBar.h"
class QAction;
//! Toolbar for InfoPanel with collapse/expand buttons.
class InfoPanelToolBar : public QToolBar {
Q_OBJECT
public:
explicit InfoPanelToolBar(QWidget* parent = nullptr);
signals:
void expandButtonClicked();
public slots:
void setExpandStatus(bool status);
protected slots:
void onExpandButtonClicked();
private:
QAction* m_expandAction;
bool m_expanded;
};
#endif // BORNAGAIN_GUI_VIEW_COMMON_INFOPANELTOOLBAR_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment