| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | #ifndef WSJTX_MESSAGE_AGGREGATOR_MAIN_WINDOW_MODEL_HPP__
 | 
					
						
							|  |  |  | #define WSJTX_MESSAGE_AGGREGATOR_MAIN_WINDOW_MODEL_HPP__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QMainWindow>
 | 
					
						
							|  |  |  | #include <QHash>
 | 
					
						
							|  |  |  | #include <QString>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "MessageServer.hpp"
 | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  | #include "widgets/CheckableItemComboBox.hpp"
 | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class QDateTime; | 
					
						
							|  |  |  | class QStandardItemModel; | 
					
						
							|  |  |  | class QMenu; | 
					
						
							|  |  |  | class DecodesModel; | 
					
						
							|  |  |  | class BeaconsModel; | 
					
						
							|  |  |  | class QLineEdit; | 
					
						
							|  |  |  | class QTableView; | 
					
						
							|  |  |  | class ClientWidget; | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  | class QListWidget; | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  | class QLabel; | 
					
						
							|  |  |  | class QSpinBox; | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | using Frequency = MessageServer::Frequency; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class MessageAggregatorMainWindow | 
					
						
							|  |  |  |   : public QMainWindow | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   Q_OBJECT; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 21:35:48 +00:00
										 |  |  |   using ClientKey = MessageServer::ClientKey; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | public: | 
					
						
							|  |  |  |   MessageAggregatorMainWindow (); | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  |   ~MessageAggregatorMainWindow (); | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-02 21:35:48 +00:00
										 |  |  |   Q_SLOT void log_qso (ClientKey const&, QDateTime time_off, QString const& dx_call, QString const& dx_grid | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  |                        , Frequency dial_frequency, QString const& mode, QString const& report_sent | 
					
						
							|  |  |  |                        , QString const& report_received, QString const& tx_power, QString const& comments | 
					
						
							| 
									
										
										
										
											2018-02-04 22:42:35 +00:00
										 |  |  |                        , QString const& name, QDateTime time_on, QString const& operator_call | 
					
						
							| 
									
										
										
										
											2018-12-02 10:09:37 -05:00
										 |  |  |                        , QString const& my_call, QString const& my_grid | 
					
						
							| 
									
										
										
										
											2020-06-27 00:17:03 +02:00
										 |  |  |                        , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode); | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  |   void restart_server (); | 
					
						
							| 
									
										
										
										
											2020-11-02 21:35:48 +00:00
										 |  |  |   void add_client (ClientKey const&, QString const& version, QString const& revision); | 
					
						
							|  |  |  |   void remove_client (ClientKey const&); | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  |   void change_highlighting (QString const& call, QColor const& bg = QColor {}, QColor const& fg = QColor {}, | 
					
						
							|  |  |  |                             bool last_only = false); | 
					
						
							| 
									
										
										
										
											2020-11-06 01:28:19 +00:00
										 |  |  |   Q_SLOT void validate_network_interfaces (QString const&); | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // maps client id to widgets
 | 
					
						
							| 
									
										
										
										
											2020-11-02 21:35:48 +00:00
										 |  |  |   using ClientsDictionary = QHash<ClientKey, ClientWidget *>; | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  |   ClientsDictionary dock_widgets_; | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   QStandardItemModel * log_; | 
					
						
							|  |  |  |   QMenu * view_menu_; | 
					
						
							|  |  |  |   DecodesModel * decodes_model_; | 
					
						
							|  |  |  |   BeaconsModel * beacons_model_; | 
					
						
							|  |  |  |   MessageServer * server_; | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  |   QSpinBox * port_spin_box_; | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  |   QLineEdit * multicast_group_line_edit_; | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  |   CheckableItemComboBox * network_interfaces_combo_box_; | 
					
						
							| 
									
										
										
										
											2020-11-06 01:28:19 +00:00
										 |  |  |   QString loopback_interface_name_; | 
					
						
							| 
									
										
										
										
											2020-11-03 20:31:11 +00:00
										 |  |  |   QLabel * network_interfaces_form_label_widget_; | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  |   QTableView * log_table_view_; | 
					
						
							| 
									
										
										
										
											2018-03-28 22:25:46 +00:00
										 |  |  |   QListWidget * calls_of_interest_; | 
					
						
							|  |  |  |   QAction * add_call_of_interest_action_; | 
					
						
							|  |  |  |   QAction * delete_call_of_interest_action_; | 
					
						
							|  |  |  |   QAction * last_call_of_interest_action_; | 
					
						
							|  |  |  |   QAction * call_of_interest_bg_colour_action_; | 
					
						
							|  |  |  |   QAction * call_of_interest_fg_colour_action_; | 
					
						
							| 
									
										
										
										
											2016-05-24 10:08:35 +00:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |