/***************************************************************************
 *   Copyright (C) 2021 by Santiago González                               *
 *                                                                         *
 ***( see copyright.txt file at root folder )*******************************/

#pragma once

#include <QDialog>
#include <QVector>

#include "ui_lawidget.h"
#include "plotdisplay.h"

class LAnalizer; 

class LaWidget : public QDialog, private Ui::LaWidget
{
        Q_OBJECT

    public:
        LaWidget( QWidget* parent, LAnalizer* la ); 
        ~LaWidget(); 

        enum action_t{
            actNone=0,
            actMove,
            actTime
        }; 

        PlotDisplay* display() { return plotDisplay;  }
        QVBoxLayout* getDispLayout() { return dispLayout;  }

        void setTrigger( int ch ) { triggerBox->setCurrentIndex( ch );  }

        void updateTimeDivBox( uint64_t timeDiv); 
        void updateTimePosBox( int64_t timePos ); 
        void updateThresholdR( double v ); 
        void updateThresholdF( double v ); 

    public slots:
        void on_timeDivDial_valueChanged( int DialPos ); 
        void on_timeDivBox_valueChanged( double val ); 
        void on_timePosDial_valueChanged( int DialPos ); 
        void on_timePosBox_valueChanged( double val ); 

        void on_busGroup_buttonClicked( int ch ); 
        void setIsBus( int ch, bool b ); 

        void on_rThresholdBox_valueChanged( double v ); 
        void on_fThresholdBox_valueChanged( double v ); 

        void on_triggerBox_currentIndexChanged( int index ); 

        void on_condEdit_editingFinished(); 
        void setConds( QString conds ) { condEdit->setText( conds );  }

        void on_exportData_clicked(); 

    protected:
        void mousePressEvent( QMouseEvent* event ); 
        void mouseMoveEvent( QMouseEvent* event ); 
        void mouseReleaseEvent( QMouseEvent* event ) { m_action = actNone;  setCursor( Qt::ArrowCursor );  }
        void closeEvent( QCloseEvent* event ); 
        void resizeEvent( QResizeEvent* ) { plotDisplay->updateValues();  }

        int m_timeDivDialPos; 
        int m_timePosDialPos; 
        int m_voltDivDialPos; 

        int m_mousePos; 
        action_t m_action; 

        bool m_blocked; 

        LAnalizer* m_analizer; 
}; 
