#ifndef WSJTX_UDP_CLIENT_WIDGET_MODEL_HPP__ #define WSJTX_UDP_CLIENT_WIDGET_MODEL_HPP__ #include #include #include #include #include #include "MessageServer.hpp" class QAbstractItemModel; class QModelIndex; using Frequency = MessageServer::Frequency; class ClientWidget : public QDockWidget { Q_OBJECT; public: explicit ClientWidget (QAbstractItemModel * decodes_model, QAbstractItemModel * beacons_model , QString const& id, QString const& version, QString const& revision , QWidget * parent = nullptr); Q_SLOT void update_status (QString const& id, Frequency f, QString const& mode, QString const& dx_call , QString const& report, QString const& tx_mode, bool tx_enabled , bool transmitting, bool decoding, qint32 rx_df, qint32 tx_df , QString const& de_call, QString const& de_grid, QString const& dx_grid , bool watchdog_timeout); Q_SLOT void decode_added (bool is_new, QString const& client_id, QTime, qint32 snr , float delta_time, quint32 delta_frequency, QString const& mode , QString const& message); Q_SLOT void beacon_spot_added (bool is_new, QString const& client_id, QTime, qint32 snr , float delta_time, Frequency delta_frequency, qint32 drift , QString const& callsign, QString const& grid, qint32 power); Q_SIGNAL void do_reply (QModelIndex const&); Q_SIGNAL void do_halt_tx (QString const& id, bool auto_only); Q_SIGNAL void do_free_text (QString const& id, QString const& text, bool); private: QString id_; class IdFilterModel final : public QSortFilterProxyModel { public: IdFilterModel (QString const& client_id); void de_call (QString const&); void rx_df (int); QVariant data (QModelIndex const& proxy_index, int role = Qt::DisplayRole) const override; protected: bool filterAcceptsRow (int source_row, QModelIndex const& source_parent) const override; private: QString client_id_; QString call_; QRegularExpression base_call_re_; int rx_df_; } decodes_proxy_model_; QTableView * decodes_table_view_; QTableView * beacons_table_view_; QLineEdit * message_line_edit_; QStackedLayout * decodes_stack_; QAbstractButton * auto_off_button_; QAbstractButton * halt_tx_button_; QLabel * mode_label_; QLabel * frequency_label_; QLabel * dx_label_; QLabel * rx_df_label_; QLabel * tx_df_label_; QLabel * report_label_; }; #endif