LibreVNA/Software/PC_Application/Device/compounddeviceeditdialog.h

75 lines
1.7 KiB
C
Raw Normal View History

2022-08-06 00:29:31 +08:00
#ifndef COMPOUNDDEVICEEDITDIALOG_H
#define COMPOUNDDEVICEEDITDIALOG_H
#include "compounddevice.h"
#include <QDialog>
#include <QLabel>
#include <QComboBox>
namespace Ui {
class CompoundDeviceEditDialog;
}
class DeviceFrame : public QFrame {
Q_OBJECT
public:
DeviceFrame(CompoundDevice *dev, int position);
~DeviceFrame();
void setPosition(int pos);
void update();
QString getSerial();
int getPort1();
int getPort2();
signals:
void deleted();
void settingChanged();
private:
static constexpr int frameSize = 350;
QComboBox *serial;
QComboBox *port1, *port2;
QLabel *image;
int position;
CompoundDevice *dev;
};
class CompoundDeviceEditDialog : public QDialog
{
Q_OBJECT
public:
explicit CompoundDeviceEditDialog(CompoundDevice *cdev, QWidget *parent = nullptr);
~CompoundDeviceEditDialog();
private slots:
void checkIfOkay();
private:
static constexpr int frameSize = 350;
void setInitialGUI();
DeviceFrame *frameAtPosition(int pos);
unsigned int findInsertPosition(int xcoord);
void addFrameAtPosition(int pos, DeviceFrame *c);
void addFrame(int index, DeviceFrame *c);
void createDragFrame(DeviceFrame *c);
void updateInsertIndicator(int xcoord);
bool eventFilter(QObject *object, QEvent *event) override;
void removeDeviceFrame(DeviceFrame *dev);
void updateDeviceFrames();
Ui::CompoundDeviceEditDialog *ui;
CompoundDevice ldev;
QWidget *graph, *insertIndicator;
QPoint dragStartPosition;
bool dropPending;
DeviceFrame *dragFrame;
DeviceFrame *dropFrame;
std::vector<DeviceFrame*> deviceFrames;
};
#endif // COMPOUNDDEVICEEDITDIALOG_H