From: Michal MalĂ˝ Date: Sun, 17 Nov 2013 10:38:37 +0000 (+0100) Subject: Scale SignalView to full height on doubleclick to SignalView widget X-Git-Tag: 0.1b~2 X-Git-Url: https://gitweb.devoid-pointer.net/?a=commitdiff_plain;h=0be5c34f71c384410954262c6b9e656d04e8a2d3;p=anyanka.git Scale SignalView to full height on doubleclick to SignalView widget area. --- diff --git a/gui/graphview.cpp b/gui/graphview.cpp index 262b74b..e0a4380 100644 --- a/gui/graphview.cpp +++ b/gui/graphview.cpp @@ -33,6 +33,19 @@ void GraphView::leaveEvent(QEvent *) emit mouseCursorLeft(); } +void GraphView::mouseDoubleClickEvent(QMouseEvent* ev) +{ + /* Prevent doubleclick on GraphView from propagating to SignalView */ + switch (ev->button()) { + case Qt::LeftButton: + break; + case Qt::RightButton: + break; + default: + break; + } +} + void GraphView::mouseMoveEvent(QMouseEvent* ev) { emit mouseMoved(ev->x(), ev->y()); diff --git a/gui/graphview.h b/gui/graphview.h index 895b420..b3db5b4 100644 --- a/gui/graphview.h +++ b/gui/graphview.h @@ -32,6 +32,7 @@ class GraphView : public QLabel public: explicit GraphView(QWidget* parent = nullptr); void leaveEvent(QEvent* ); + void mouseDoubleClickEvent(QMouseEvent* ); void mouseMoveEvent(QMouseEvent* ev); void mousePressEvent(QMouseEvent* ev); diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index bc11e60..2c6968c 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -29,6 +29,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), + m_singleSignalView(false), ui(new Ui::MainWindow) { ui->setupUi(this); @@ -80,8 +81,8 @@ void MainWindow::onAddToDashboard(SignalView* sw) else if(ui->qpb_zoom->isChecked()) sw->setControlMode(GraphControlModes::ZOOM); - //m_itemsOnDashboard.push_back(sw); connect(this, SIGNAL(controlModeChanged(GraphControlModes)), sw, SLOT(onControlModeChanged(GraphControlModes))); + connect(sw, SIGNAL(fullSizeToggle()), this, SLOT(onSWFullSizeToggle())); m_dashboard->addWidget(sw); } @@ -137,12 +138,6 @@ void MainWindow::onLoadSingleRun() } } -void MainWindow::onZoomSelected() -{ - emit controlModeChanged(GraphControlModes::ZOOM); -} - -/* Private slots */ void MainWindow::onSequenceSelected(const QString &str) { emit sequenceSelected(str); @@ -153,6 +148,27 @@ void MainWindow::onSingleRunSelected(const QString &str) emit singleRunSelected(str); } +void MainWindow::onSWFullSizeToggle() +{ + QWidget* sender = qobject_cast(QObject::sender()); + + for (int idx = 0; idx < m_dashboard->count(); idx++) { + if (m_dashboard->widget(idx) != sender) { + if (!m_singleSignalView) + m_dashboard->widget(idx)->hide(); + else + m_dashboard->widget(idx)->show(); + } + } + + m_singleSignalView = !m_singleSignalView; +} + +void MainWindow::onZoomSelected() +{ + emit controlModeChanged(GraphControlModes::ZOOM); +} + MainWindow::~MainWindow() { delete ui; diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 5dc82ed..a814086 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -57,6 +57,7 @@ private: //std::vector m_itemsOnDashboard; QSplitter* m_dashboard; QFileDialog* m_loadDataFileDialog; + bool m_singleSignalView; Ui::MainWindow *ui; public slots: @@ -73,6 +74,7 @@ private slots: void onLoadSingleRun(); void onSequenceSelected(const QString& str); void onSingleRunSelected(const QString& str); + void onSWFullSizeToggle(); void onZoomSelected(); signals: diff --git a/gui/signalview.cpp b/gui/signalview.cpp index 6dcd17e..b8fb01a 100644 --- a/gui/signalview.cpp +++ b/gui/signalview.cpp @@ -28,7 +28,7 @@ #include #include -#include +//#include SignalView::SignalView(QWidget *parent) : QWidget(parent), @@ -53,6 +53,17 @@ SignalView::SignalView(QWidget *parent) : } /* Public functions */ +void SignalView::mouseDoubleClickEvent(QMouseEvent* ev) +{ + switch (ev->button()) { + case Qt::LeftButton: + emit fullSizeToggle(); + break; + default: + break; + } +} + void SignalView::setControlMode(GraphControlModes mode) { m_graphCtrlMode = mode; diff --git a/gui/signalview.h b/gui/signalview.h index 2c0b66c..cd6507c 100644 --- a/gui/signalview.h +++ b/gui/signalview.h @@ -47,6 +47,7 @@ public: explicit SignalView(QWidget* parent = nullptr); ~SignalView(); + void mouseDoubleClickEvent(QMouseEvent* ev); void setControlMode(GraphControlModes mode); void setDataTableModel (SignalDataTableModel* model); void setIntegrationTableModel(IntegrationTableModel* model); @@ -109,6 +110,7 @@ private slots: signals: void crosshairErased(); void crosshairMoved(const int x, const int y); + void fullSizeToggle(); void integrated(const int fromX, const int fromY, const int toX, const int toY); void redrawNeeded(); void resized(const int x, const int y);