LibreVNA/Software/PC_Application/appwindow.h
Kiara Navarro 2fbe6e84be
mode: move responsabilities from mode to modehandler
- Pass the following responsabilities from mode to mode handler:
   - active / deactive target mode
   - get active mode
   - create new modes

- Move back setting averaging mode when settings are
updated using getModes() method instead of handling
logic in mode handler.
2022-07-11 19:33:28 -05:00

133 lines
2.8 KiB
C++

#ifndef APPWINDOW_H
#define APPWINDOW_H
#include "Device/device.h"
#include "Traces/traceplot.h"
#include "Calibration/calibration.h"
#include "Traces/tracemodel.h"
#include "Traces/Marker/markermodel.h"
#include "averaging.h"
#include "Device/devicelog.h"
#include "preferences.h"
#include "scpi.h"
#include "tcpserver.h"
#include "Device/manualcontroldialog.h"
#include <QWidget>
#include <QMainWindow>
#include <QGridLayout>
#include <QComboBox>
#include <QStackedWidget>
#include <QButtonGroup>
#include <QCheckBox>
#include <QLabel>
#include <QCommandLineParser>
#include <QProgressDialog>
namespace Ui {
class MainWindow;
}
class VNA;
class Generator;
class SpectrumAnalyzer;
class ModeHandler;
class AppWindow : public QMainWindow
{
Q_OBJECT
public:
AppWindow(QWidget *parent = nullptr);
~AppWindow();
Ui::MainWindow *getUi() const;
QStackedWidget *getCentral() const;
ModeHandler* getModeHandler() const;
Device*&getDevice();
const QString& getAppVersion() const;
const QString& getAppGitHash() const;
static bool showGUI();
SCPI* getSCPI();
public slots:
void setModeStatus(QString msg);
protected:
void closeEvent(QCloseEvent *event) override;
private slots:
bool ConnectToDevice(QString serial = QString());
void DisconnectDevice();
int UpdateDeviceList();
void StartManualControl();
void UpdateReference();
void UpdateAcquisitionFrequencies();
void StartFirmwareUpdateDialog();
void DeviceNeedsUpdate(int reported, int expected);
void DeviceStatusUpdated();
void SourceCalibrationDialog();
void ReceiverCalibrationDialog();
void FrequencyCalibrationDialog();
nlohmann::json SaveSetup();
void SaveSetup(QString filename);
void LoadSetup(QString filename);
void LoadSetup(nlohmann::json j);
private:
enum class DeviceStatusBar {
Connected,
Updated,
Disconnected,
};
void DeviceConnectionLost();
void SetupStatusBar();
void UpdateStatusBar(DeviceStatusBar status);
void CreateToolbars();
void SetupSCPI();
void StartTCPServer(int port);
void StopTCPServer();
QStackedWidget *central;
struct {
struct {
QComboBox *type;
QComboBox *outFreq;
} reference;
} toolbars;
ModeHandler *modeHandler;
Device *device;
DeviceLog deviceLog;
QString deviceSerial;
QActionGroup *deviceActionGroup;
ManualControlDialog *manual;
// Status bar widgets
QLabel lConnectionStatus;
QLabel lDeviceInfo;
QLabel lModeInfo;
QLabel lSetupName;
// Error flag labels
QLabel lADCOverload;
QLabel lUnlevel;
QLabel lUnlock;
Ui::MainWindow *ui;
QCommandLineParser parser;
SCPI scpi;
TCPServer *server;
QString appVersion;
QString appGitHash;
};
#endif // APPWINDOW_H