From 75f4d5c86402c8767c89fb9e45e09e339bd2bc1c Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Mon, 13 Feb 2017 14:55:45 +0100 Subject: [PATCH] ParameterTuningWidget is switched to new warning sign controller. --- .../Views/InfoWidgets/WarningSignWidget.cpp | 17 ++++--- .../Views/InfoWidgets/WarningSignWidget.h | 2 + .../JobWidgets/ParameterTuningWidget.cpp | 46 ++----------------- .../Views/JobWidgets/ParameterTuningWidget.h | 5 +- 4 files changed, 19 insertions(+), 51 deletions(-) diff --git a/GUI/coregui/Views/InfoWidgets/WarningSignWidget.cpp b/GUI/coregui/Views/InfoWidgets/WarningSignWidget.cpp index ba415e5cc5f..76fadb1c940 100644 --- a/GUI/coregui/Views/InfoWidgets/WarningSignWidget.cpp +++ b/GUI/coregui/Views/InfoWidgets/WarningSignWidget.cpp @@ -21,14 +21,11 @@ WarningSignWidget::WarningSignWidget(QWidget * parent) : QWidget(parent) + , m_pixmap(QStringLiteral(":/images/warning@2x.png")) + , m_warning_header(QStringLiteral("Houston, we have a problem.")) { setAttribute(Qt::WA_NoSystemBackground); - //setAttribute(Qt::WA_TransparentForMouseEvents); - m_pixmap = QPixmap(":/images/warning@2x.png"); - setToolTip(QString( - "Houston, we have a problem.\n" - "Click to see details." - )); + setToolTip(m_warning_header+"\nClick to see details."); } void WarningSignWidget::paintEvent(QPaintEvent *event) { @@ -41,7 +38,7 @@ void WarningSignWidget::paintEvent(QPaintEvent *event) { void WarningSignWidget::mousePressEvent(QMouseEvent *event) { Q_UNUSED(event); - QMessageBox::warning(this, "Houston, we have a problem.", m_warning_message); + QMessageBox::warning(this, m_warning_header, m_warning_message); } //! set geometry of widget around center point @@ -49,3 +46,9 @@ void WarningSignWidget::setPosition(int x, int y) { setGeometry(x, y, m_pixmap.width(), m_pixmap.height()); } + +void WarningSignWidget::setWarningHeader(const QString& message) +{ + m_warning_header = message; + setToolTip(m_warning_header+"\nClick to see details."); +} diff --git a/GUI/coregui/Views/InfoWidgets/WarningSignWidget.h b/GUI/coregui/Views/InfoWidgets/WarningSignWidget.h index 91eb1ecc874..cb745c2baff 100644 --- a/GUI/coregui/Views/InfoWidgets/WarningSignWidget.h +++ b/GUI/coregui/Views/InfoWidgets/WarningSignWidget.h @@ -31,6 +31,7 @@ public: void setPosition(int x, int y); + void setWarningHeader(const QString &message); void setWarningMessage(const QString &message) {m_warning_message = message;} protected: @@ -39,6 +40,7 @@ protected: private: QPixmap m_pixmap; + QString m_warning_header; QString m_warning_message; }; diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp index 5b48a380e17..0a8e678e781 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp @@ -28,7 +28,7 @@ #include "ParameterTuningModel.h" #include "SampleModel.h" #include "SliderSettingsWidget.h" -#include "WarningSignWidget.h" +#include "WarningSign.h" #include <QApplication> #include <QItemSelectionModel> #include <QKeyEvent> @@ -39,23 +39,18 @@ #include <QTreeView> #include <QVBoxLayout> -namespace { -const int warning_sign_xpos = 38; -const int warning_sign_ypos = 38; -} - ParameterTuningWidget::ParameterTuningWidget(QWidget *parent) : QWidget(parent) , m_jobModel(0) , m_currentJobItem(0) , m_parameterTuningModel(0) , m_sliderSettingsWidget(new SliderSettingsWidget(this)) + , m_treeView(new QTreeView) , m_delegate(new ParameterTuningDelegate) - , m_warningSign(0) + , m_warningSign(new WarningSign(m_treeView)) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_treeView = new QTreeView(); m_treeView->setStyleSheet( "QTreeView::branch {background: palette(base);}QTreeView::branch:has-siblings:!adjoins-item " "{border-image: url(:/images/treeview-vline.png) 0;}QTreeView::branch:has-siblings:" @@ -213,13 +208,8 @@ void ParameterTuningWidget::makeSelected(ParameterItem *item) void ParameterTuningWidget::resizeEvent(QResizeEvent *event) { Q_UNUSED(event); - if(m_warningSign) { - QPoint pos = getPositionForWarningSign(); - m_warningSign->setPosition(pos.x(),pos.y()); - } - if(m_treeView) { + if(m_treeView) m_treeView->setColumnWidth(0, width()*0.5); - } } //! Context menu reimplemented to suppress the default one @@ -231,45 +221,19 @@ void ParameterTuningWidget::contextMenuEvent(QContextMenuEvent *event) void ParameterTuningWidget::onPropertyChanged(const QString &property_name) { if(property_name == JobItem::P_STATUS) { - delete m_warningSign; - m_warningSign = 0; + m_warningSign->clear(); if(m_currentJobItem->isFailed()) { QString message; message.append("Current parameter values cause simulation failure.\n\n"); message.append(m_currentJobItem->getComments()); - - m_warningSign = new WarningSignWidget(this); m_warningSign->setWarningMessage(message); - QPoint pos = getPositionForWarningSign(); - m_warningSign->setPosition(pos.x(), pos.y()); - m_warningSign->show(); } updateDragAndDropSettings(); } } -//! Returns position for warning sign at the bottom right corner of the tree view. -//! The position will be adjusted according to the visibility of scroll bars -QPoint ParameterTuningWidget::getPositionForWarningSign() -{ - int x = width()-warning_sign_xpos; - int y = height()-warning_sign_ypos; - - if(QScrollBar *horizontal = m_treeView->horizontalScrollBar()) { - if(horizontal->isVisible()) - y -= horizontal->height(); - } - - if(QScrollBar *vertical = m_treeView->verticalScrollBar()) { - if(vertical->isVisible()) - x -= vertical->width(); - } - - return QPoint(x, y); -} - //! Disable drag-and-drop abilities, if job is in fit running state. void ParameterTuningWidget::updateDragAndDropSettings() diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h index fc77691fe7f..656463c4d41 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h @@ -28,7 +28,7 @@ class ParameterTuningDelegate; class ParameterTuningModel; class SliderSettingsWidget; class QTreeView; -class WarningSignWidget; +class WarningSign; class ParameterItem; class ParameterTuningWidget : public QWidget @@ -64,7 +64,6 @@ private slots: void onCustomContextMenuRequested(const QPoint &point); private: - QPoint getPositionForWarningSign(); void updateDragAndDropSettings(); void setTuningDelegateEnabled(bool enabled); @@ -76,7 +75,7 @@ private: SliderSettingsWidget *m_sliderSettingsWidget; QTreeView *m_treeView; ParameterTuningDelegate *m_delegate; - WarningSignWidget *m_warningSign; + WarningSign *m_warningSign; }; #endif // PARAMETERTUNINGWIDGET_H -- GitLab