#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QtGui> #include <QtWidgets> #include <QPointer> #include <QScopedPointer> #include <QLabel> #include <QDateTime> #include <QHash> #include "getfile.h" #include "soundin.h" #include "signalmeter.h" #include "commons.h" #include "sleep.h" #include <QtConcurrent/QtConcurrent> #define NFFT 32768 #define NSMAX 5760000 //--------------------------------------------------------------- MainWindow namespace Ui { class MainWindow; } class QTimer; class Astro; class WideGraph; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); bool m_network; public slots: void showSoundInError(const QString& errorMsg); void showStatusMessage(const QString& statusMsg); void dataSink(int k); void diskDat(int iret); void decoderFinished(); void freezeDecode(int n); void guiUpdate(); private: virtual void keyPressEvent (QKeyEvent *) override; virtual bool eventFilter (QObject *, QEvent *) override; virtual void closeEvent (QCloseEvent *) override; private slots: void on_monitorButton_clicked(); void on_actionExit_triggered(); void on_actionAbout_triggered(); void on_actionLinrad_triggered(); void on_actionCuteSDR_triggered(); void on_tolSpinBox_valueChanged(int arg1); void on_actionAstro_Data_triggered(); void on_actionWide_Waterfall_triggered(); void on_actionOpen_triggered(); void on_actionOpen_next_in_directory_triggered(); void on_actionDecode_remaining_files_in_directory_triggered(); void on_actionDelete_all_iq_files_in_SaveDir_triggered(); void on_actionNone_triggered(); void on_actionSave_all_triggered(); void on_DecodeButton_clicked(); void decode(); void decodeBusy(bool b); void on_EraseButton_clicked(); void bumpDF(int n); void on_actionSettings_triggered(); void on_NBcheckBox_toggled(bool checked); void on_NBslider_valueChanged(int value); void on_actionAFMHot_triggered(); void on_actionBlue_triggered(); void on_actionQ65A_triggered(); void on_actionQ65B_triggered(); void on_actionQ65C_triggered(); void on_actionQ65D_triggered(); void on_actionQ65E_triggered(); void on_actionQuick_Start_Guide_to_Q65_triggered(); void on_actionQuick_Start_Guide_to_WSJT_X_2_7_and_QMAP_triggered(); void on_actionAlso_Q65_30x_toggled(bool b); void on_sbMaxDrift_valueChanged(int arg1); void on_actionSave_decoded_triggered(); void on_actionExport_wav_file_at_fQSO_triggered(); void on_actionExport_wav_file_at_fQSO_30a_triggered(); void on_actionExport_wav_file_at_fQSO_30b_triggered(); private: Ui::MainWindow *ui; QString m_appDir; QString m_settings_filename; QScopedPointer<Astro> m_astro_window; QScopedPointer<WideGraph> m_wide_graph_window; QPointer<QTimer> m_gui_timer; qint32 m_waterfallAvg; qint32 m_DF; qint32 m_tol; qint32 m_astroFont; qint32 m_fCal; qint32 m_sec0; qint32 m_nutc0; qint32 m_nrx; qint32 m_hsym0; qint32 m_paInDevice; qint32 m_udpPort; qint32 m_NBslider; qint32 m_TRperiod; qint32 m_modeQ65; qint32 m_dB; qint32 m_fetched=0; qint32 m_hsymStop=390; //390*0.15 = 58.5 s qint32 m_nTx30a=0; qint32 m_nTx30b=0; qint32 m_nTx60=0; qint32 m_nDoubleClicked=0; qint32 m_nline=0; qint32 m_WSJTX_TRperiod=0; qint32 m_dop00=0; qint32 m_dop58=0; qint32 m_n60; double m_fAdd; double m_xavg; bool m_monitoring; bool m_diskData; bool m_loopall; bool m_decoderBusy=false; bool m_restart; bool m_startAnother; bool m_saveAll; bool m_saveDecoded; bool m_NB; bool m_decode_called=false; bool m_bAlso30=true; bool m_bDiskDatBusy=false; bool m_bWTransmitting=false; bool m_bDecodeAgain=false; float m_pctZap; int m_myCallColor; QRect m_wideGraphGeom; QLabel* lab1; // labels in status bar QLabel* lab2; // labels in status bar QLabel* lab3; // labels in status bar QLabel* lab4; QLabel* lab5; QLabel* lab6; QLabel* lab7; //Why still needed? QMessageBox msgBox0; QFutureWatcher<void> watcher3; //For decoder QString m_path; QString m_pbdecoding_style1; QString m_pbmonitor_style; QString m_pbAutoOn_style; QString m_myCall; QString m_myGrid; QString m_hisCall; QString m_hisGrid; QString m_saveDir; QString m_azelDir; QString m_palette; QString m_dateTime; QString m_mode; QString m_UTC0=""; QString m_revision; QString m_saveFileName; QDateTime m_dateTimeSeqStart; //Nominal start time of Rx sequence about to be decoded QHash<QString,bool> m_worked; SignalMeter *xSignalMeter; SoundInThread soundInThread; //Instantiate the audio threads //---------------------------------------------------- private functions void readSettings(); void writeSettings(); void createStatusBar(); void updateStatusBar(); void msgBox(QString t); bool isGrid4(QString g); }; extern void getfile(QString fname, bool xpol, int idInt); extern void save_iq(QString fname); extern int killbyname(const char* progName); extern "C" { //----------------------------------------------------- C and Fortran routines void symspec_(int* k, int* ndiskdat, int* nb, int* m_NBslider, int* nfsample, float* px, float s[], int* nkhz, int* nhsym, int* nzap, float* slimit, uchar lstrong[]); void astrosub00_ (int* nyear, int* month, int* nday, double* uth, int* nfreq, const char* mygrid, int* ndop00, int len1); void q65c_(); void all_done_(); void zaptx_(float d4[], int* k0, int* k); void save_qm_(const char* fname, const char* prog_id, const char* mycall, const char* mygrid, float d4[], int* ntx30a, int* ntx30b, double* fcenter, int* nutc, int* dop00, int* dop58, int len1, int len2, int len3, int len4); void read_qm_(const char* fname, int* iret, int len); } #endif // MAINWINDOW_H