qttermtcp/QtTermTCP.h

311 lines
7.5 KiB
C
Raw Normal View History

2023-12-08 15:48:31 +00:00
#pragma once
#include <QMainWindow>
#include "ui_QtTermTCP.h"
#include "ui_AlertSetup.h"
#include "ui_YAPPRxSize.h"
#include "ui_ColourConfig.h"
#include "ui_VARAConfig.h"
#include "ui_KISSConfig.h"
#include "QTextEdit"
#include "QSplitter"
#include "QLineEdit"
#include "QTcpSocket"
#include <QDataStream>
#include <QKeyEvent>
#include "QThread"
#include "QTcpServer"
#include "QMdiArea"
#include <QMdiSubWindow>
#include "QMessageBox"
#include "QTimer"
#include "QSettings"
#include "QThread"
#include <QFontDialog>
#include <QScrollBar>
#include <QFileDialog>
#include <QTabWidget>
#include <QMenuBar>
#include <QProcess>
#include <QtSerialPort/QSerialPort>
#include <QtMultimedia/QSound>
#include <QtMultimedia/QSoundEffect>
#define MAXHOSTS 16
#define MAXPORTS 64
QT_BEGIN_NAMESPACE
class QComboBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QTcpSocket;
class QNetworkSession;
class myTcpSocket : public QTcpSocket
{
public:
QWidget * Sess;
};
class Ui_ListenSession : public QMainWindow
{
Q_OBJECT
public:
explicit Ui_ListenSession(QWidget *Parent = 0) : QMainWindow(Parent) {}
~Ui_ListenSession();
int SessionType; // Type Mask - Term, Mon, Listen
int CurrentWidth;
int CurrentHeight; // Saved so can be restored after Cascade
QTextEdit *termWindow;
QTextEdit *monWindow;
QLineEdit *inputWindow;
QLabel * TTLabel;
myTcpSocket *clientSocket;
QAction * actActivate; // From active Windows menu
char * KbdStack[50];
int StackIndex;
QMdiSubWindow *sw; // The MdiSubwindow is the container for this session
int InputMode;
int SlowTimer;
int MonData;
int OutputSaveLen;
char OutputSave[16384];
int MonSaveLen;
char MonSave[4096];
char PortMonString[2048]; // 64 ports 32 Bytes
uint64_t portmask;
int EnableMonitor;
int mlocaltime;
int mtxparam;
int mcomparam;
int monUI;
int MonitorNODES;
int MonitorColour;
int CurrentHost;
int Tab; // Tab Index if Tabbed Mode
void * AGWSession; // Terinal sess - Need to cast to TAGWPort to use it
void * AGWMonSession;
void * KISSSession;
int KISSMode; // Connected or UI
char UIDEST[32];
char UIPATH[128];
// For Teletext Emulator
QImage * TTBitmap; // TT Image buffer
QDialog TTUI;
int TTActive;
int TTFlashToggle;
char pageBuffer[4096];
QBasicTimer timer;
int sessNo; // Used to create unique log filename;
bool LogMonitor;
QFile * monLogfile;
char * monSpan;
protected:
void timerEvent(QTimerEvent *event) override;
private:
private slots:
};
class QtTermTCP : public QMainWindow
{
Q_OBJECT
public:
QtTermTCP(QWidget *parent = NULL);
void closeEvent(QCloseEvent * event);
static void setFonts();
~QtTermTCP();
private slots:
void Disconnect();
void doYAPPSend();
void doYAPPSetRX();
void doYAPPSetSize();
void sizeaccept();
void sizereject();
void menuChecked();
void Connect();
void displayError(QAbstractSocket::SocketError socketError);
void readyRead();
void showContextMenu(const QPoint & point);
void autoConnectChecked();
void LreturnPressed(Ui_ListenSession * LUI);
void LDisconnect(Ui_ListenSession * LUI);
void SetupHosts();
void MyTimerSlot();
void KISSTimerSlot();
void ListenSlot();
void AGWSlot();
void AlertSlot();
void chooseInboundWAV();
void chooseBellsWAV();
void chooseIntervalWAV();
void chooseAlertWAV();
void testInboundWAV();
void testBellsWAV();
void testIntervalWAV();
void testAlertWAV();
void alertAccept();
void alertReject();
void VARASlot();
void KISSSlot();
void deviceaccept();
void KISSaccept();
void KISSreject();
void devicereject();
void showContextMenuM(const QPoint &pt);
void showContextMenuT(const QPoint &pt);
void showContextMenuL();
void doQuit();
void onTEselectionChanged();
void onLEselectionChanged();
void setSplit();
void ClearScreen();
void setVDMode();
void showContextMenuMT(const QPoint & pt);
void showContextMenuMOnly(const QPoint & pt);
void onNewConnection();
void onSocketStateChanged(QAbstractSocket::SocketState socketState);
void updateWindowMenu();
void doNewTerm();
void doNewMon();
void doNewCombined();
void doCascade();
void actActivate();
void xon_mdiArea_changed();
void doFonts();
void doMFonts();
void ConnecttoVARA();
void VARATimer();
void AGWdisplayError(QAbstractSocket::SocketError socketError);
void AGWreadyRead();
void onAGWSocketStateChanged(QAbstractSocket::SocketState socketState);
void VARAdisplayError(QAbstractSocket::SocketError socketError);
void VARAreadyRead();
void onVARASocketStateChanged(QAbstractSocket::SocketState socketState);
void KISSdisplayError(QAbstractSocket::SocketError socketError);
void KISSreadyRead();
void onKISSSocketStateChanged(QAbstractSocket::SocketState socketState);
int openSerialPort();
void readSerialData();
void handleError(QSerialPort::SerialPortError serialPortError);
void doColours();
void ColourPressed();
void Colouraccept();
void Colourreject();
QColor setColor(QColor Colour);
void VARADatadisplayError(QAbstractSocket::SocketError socketError);
void VARADatareadyRead();
void onVARADataSocketStateChanged(QAbstractSocket::SocketState socketState);
void HAMLIBdisplayError(QAbstractSocket::SocketError socketError);
void HAMLIBreadyRead();
void onHAMLIBSocketStateChanged(QAbstractSocket::SocketState socketState);
void ConnecttoHAMLIB();
void HAMLIBSetPTT(int PTTState);
void FLRigdisplayError(QAbstractSocket::SocketError socketError);
void FLRigreadyRead();
void onFLRigSocketStateChanged(QAbstractSocket::SocketState socketState);
void ConnecttoFLRig();
void FLRigSetPTT(int PTTState);
void CATChanged(bool State);
void PTTPortChanged(int Selected);
void OpenPTTPort();
void RadioPTT(bool PTTState);
void tabSelected(int);
void VARAHFChanged(bool state);
void VARAFMChanged(bool State);
void VARASATChanged(bool State);
void SetVARAParams();
protected:
bool eventFilter(QObject* obj, QEvent *event);
private:
void ConnecttoAGW();
void AGWTimer();
Ui::QtTermTCPClass ui;
QMenu *hostsubMenu;
QAction *closeAct;
QAction *closeAllAct;
QAction *tileAct;
QAction *cascadeAct;
QAction *nextAct;
QAction *previousAct;
QAction *windowMenuSeparatorAct;
QAction *newTermAct;
QAction *newMonAct;
QAction *newCombinedAct;
QAction *AGWAction;
QAction *VARAAction;
QAction *KISSAction;
QAction *AlertAction;
QAction *quitAction;
QList<myTcpSocket*> _sockets;
QWidget *centralWidget;
void ConnecttoKISS();
void KISSTimer();
};
extern "C"
{
void EncodeSettingsLine(int n, char * String);
void DecodeSettingsLine(int n, char * String);
void WritetoOutputWindow(Ui_ListenSession * Sess, unsigned char * Buffer, int Len);
void WritetoOutputWindowEx(Ui_ListenSession * Sess, unsigned char * Buffer, int len, QTextEdit * termWindow, int *OutputSaveLen, char * OutputSave, QColor Colour);
void WritetoMonWindow(Ui_ListenSession * Sess, unsigned char * Buffer, int Len);
void ProcessReceivedData(Ui_ListenSession * Sess, unsigned char * Buffer, int len);
void SendTraceOptions(Ui_ListenSession * LUI);
void setTraceOff(Ui_ListenSession * Sess);
void SetPortMonLine(int i, char * Text, int visible, int enabled);
void SaveSettings();
void myBeep(QString * WAV);
void YAPPSendFile(Ui_ListenSession * Sess, char * FN);
int SocketSend(Ui_ListenSession * Sess, char * Buffer, int len);
void SendTraceOptions(Ui_ListenSession * Sess);
int SocketFlush(Ui_ListenSession * Sess);
extern void mySleep(int ms);
extern void setTraceOff(Ui_ListenSession * Sess);
void GetKeyWordFile();
}
extern QString ConnectWAV;
extern QString BellWAV;
extern QString AlertWAV;
char * strlop(char * buf, char delim);
extern "C" void setMenus(int State);
void Send_AGW_Ds_Frame(void * AGW);