187 friend class WSJTXMessageMapper;
191 struct CommandDetail;
194 using Frequency = Radio::Frequency;
195 using FrequencyDelta = Radio::FrequencyDelta;
196 using Mode = Modes::Mode;
199 QDir
const &temp_directory,
bool multiple,
204 struct SortByReverse {
219 bool m_stopTxButtonIsLongterm;
220 bool m_hbButtonIsLongterm;
221 bool m_cqButtonIsLongterm;
224 void showSoundInError(
const QString &errorMsg);
225 void showSoundOutError(
const QString &errorMsg);
226 void showStatusMessage(
const QString &statusMsg);
235 void qsy(
int hzDelta);
236 void onDriftChanged(qint64 new_drift_ms);
237 bool tryRestoreFreqOffset();
238 void changeFreq(
int);
240 bool hasExistingMessageBufferToMe(
int *pOffset);
241 bool hasExistingMessageBuffer(
int submode,
int offset,
bool drift,
243 bool hasClosedExistingMessageBuffer(
int offset);
244 void logCallActivity(CallDetail d,
bool spot =
true);
245 void logHeardGraph(QString from, QString to);
246 QString lookupCallInCompoundCache(QString
const &call);
247 void cacheActivity(QString key);
248 void restoreActivity(QString key);
249 void clearActivity();
250 void clearBandActivity();
251 void clearRXActivity();
252 void clearCallActivity();
253 void createGroupCallsignTableRows(QTableWidget *table,
254 const QString &selectedCall,
255 bool &showIconColumn);
256 void displayTextForFreq(QString text,
int freq, QDateTime date,
bool isTx,
257 bool isNewLine,
bool isLast);
258 void writeNoticeTextToUI(QDateTime date, QString text);
259 int writeMessageTextToUI(QDateTime date, QString text,
int freq,
bool isTx,
261 bool isMessageQueuedForTransmit();
262 bool isInDecodeDelayThreshold(
int seconds);
263 void prependMessageText(QString text);
264 void addMessageText(QString text,
bool clear =
false,
265 bool selectFirstPlaceholder =
false);
266 void confirmThenEnqueueMessage(
int timeout,
int priority, QString message,
267 int offset, Callback c);
268 void enqueueMessage(
int priority, QString message,
int offset, Callback c);
270 void resetMessageUI();
271 void restoreMessage();
272 void initializeDummyData();
273 void initializeGroupMessage();
274 bool ensureCallsignSet(
bool alert =
true);
275 bool ensureKeyNotStuck(QString
const &text);
276 bool ensureNotIdle();
277 bool ensureCanTransmit();
278 bool ensureCreateMessageReady(
const QString &text);
279 QString createMessage(QString
const &text,
bool *pDisableTypeahead);
280 QString appendMessage(QString
const &text,
bool isData,
281 bool *pDisableTypeahead);
282 QString createMessageTransmitQueue(QString
const &text,
bool reset,
283 bool isData,
bool *pDisableTypeahead);
285 QPair<QString, int> popMessageFrame();
286 void tryNotify(
const QString &key);
289 void updateCQButtonDisplay();
290 void updateHBButtonDisplay();
293 void keyPressEvent(QKeyEvent *)
override;
294 void closeEvent(QCloseEvent *)
override;
295 void childEvent(QChildEvent *)
override;
296 bool eventFilter(QObject *, QEvent *)
override;
299 void initialize_fonts();
300 void on_menuModeJS8_aboutToShow();
301 void on_menuControl_aboutToShow();
302 void on_actionCheck_for_Updates_triggered();
303 void on_actionEnable_Monitor_RX_toggled(
bool checked);
304 void on_actionEnable_Transmitter_TX_toggled(
bool checked);
305 void on_actionEnable_Reporting_SPOT_toggled(
bool checked);
306 void on_actionEnable_Tuning_Tone_TUNE_toggled(
bool checked);
307 void on_menuWindow_aboutToShow();
308 void on_actionFocus_Message_Receive_Area_triggered();
309 void on_actionFocus_Message_Reply_Area_triggered();
310 void on_actionFocus_Band_Activity_Table_triggered();
311 void on_actionFocus_Call_Activity_Table_triggered();
312 void on_actionClear_All_Activity_triggered();
313 void on_actionClear_Band_Activity_triggered();
314 void on_actionClear_RX_Activity_triggered();
315 void on_actionClear_Call_Activity_triggered();
316 void on_actionSetOffset_triggered();
317 void on_actionShow_Fullscreen_triggered(
bool checked);
318 void on_actionShow_Statusbar_triggered(
bool checked);
319 void on_actionShow_Frequency_Clock_triggered(
bool checked);
320 void on_actionShow_Band_Activity_triggered(
bool checked);
321 void on_actionShow_Band_Heartbeats_and_ACKs_triggered(
bool checked);
322 void on_actionShow_Call_Activity_triggered(
bool checked);
323 void on_actionShow_Waterfall_triggered(
bool checked);
324 void on_actionShow_Waterfall_Controls_triggered(
bool checked);
325 void on_actionShow_Waterfall_Time_Drift_Controls_triggered(
bool checked);
326 void on_actionReset_Window_Sizes_triggered();
327 void on_actionSettings_triggered();
328 void openSettings(
int tab = 0);
330 void prepareSpotting();
331 void on_spotButton_clicked(
bool checked);
332 void on_monitorButton_clicked(
bool);
333 void on_actionAbout_triggered();
334 void resetPushButtonToggleText(QPushButton *btn);
335 void on_stopTxButton_clicked();
336 void on_dialFreqUpButton_clicked();
337 void on_dialFreqDownButton_clicked();
338 void on_actionAdd_Log_Entry_triggered();
339 void on_actionOpen_log_directory_triggered();
340 void on_actionCopyright_Notice_triggered();
341 void on_actionUser_Guide_triggered();
342 bool decode(qint32 k);
343 bool isDecodeReady(
int submode, qint32 k, qint32 k0,
344 qint32 *pCurrentDecodeStart, qint32 *pNextDecodeStart,
345 qint32 *pStart, qint32 *pSz, qint32 *pCycle);
346 bool decodeEnqueueReady(qint32 k, qint32 k0);
347 bool decodeEnqueueReadyExperiment(qint32 k, qint32 k0);
348 bool decodeProcessQueue(qint32 *pSubmode);
350 void decodeBusy(
bool b);
352 void on_startTxButton_toggled(
bool checked);
353 void toggleTx(
bool start);
354 void on_logQSOButton_clicked();
355 void on_actionModeJS8HB_toggled(
bool checked);
356 void on_actionModeJS8Normal_triggered();
357 void on_actionModeJS8Fast_triggered();
358 void on_actionModeJS8Turbo_triggered();
359 void on_actionModeJS8Slow_triggered();
360 void on_actionModeJS8Ultra_triggered();
361 void on_actionHeartbeatAcknowledgements_toggled(
bool checked);
362 void on_actionModeMultiDecoder_toggled(
bool checked);
363 void on_actionModeAutoreply_toggled(
bool checked);
364 bool canCurrentModeSendHeartbeat()
const;
365 void prepareMonitorControls();
366 void prepareHeartbeatMode(
bool enabled);
368 void on_actionErase_ALL_TXT_triggered();
369 void on_actionErase_js8call_log_adi_triggered();
373 void buildFrequencyMenu(QMenu *menu);
374 void buildHeartbeatMenu(QMenu *menu);
375 void buildCQMenu(QMenu *menu);
376 void buildRepeatMenu(QMenu *menu, QPushButton *button,
bool isLowInterval,
379 void sendHeartbeatAck(QString to,
int snr, QString extra);
380 void on_hbMacroButton_toggled(
bool checked);
381 void on_hbMacroButton_clicked();
382 void sendCQ(
bool repeat =
false);
383 void on_cqMacroButton_toggled(
bool checked);
384 void on_cqMacroButton_clicked();
385 void on_replyMacroButton_clicked();
386 void on_snrMacroButton_clicked();
387 void on_infoMacroButton_clicked();
388 void on_statusMacroButton_clicked();
389 void setShowColumn(QString tableKey, QString columnKey,
bool value);
390 bool showColumn(QString tableKey, QString columnKey,
bool default_ =
true);
391 void buildShowColumnsMenu(QMenu *menu, QString tableKey);
392 void setSortBy(QString key, QString value);
393 QString getSortBy(QString
const &key, QString
const &defaultValue)
const;
394 SortByReverse getSortByReverse(QString
const &key,
395 QString
const &defaultValue)
const;
396 void buildSortByMenu(QMenu *menu, QString key, QString defaultValue,
397 QList<QPair<QString, QString>> values);
398 void buildBandActivitySortByMenu(QMenu *menu);
399 void buildCallActivitySortByMenu(QMenu *menu);
400 void buildQueryMenu(QMenu *, QString callsign);
401 QMap<QString, QString> buildMacroValues();
402 void buildColumnLabelMap();
403 void buildSuggestionsMenu(QMenu *menu, QTextEdit *edit,
404 const QPoint &point);
405 void buildSavedMessagesMenu(QMenu *menu);
406 void buildRelayMenu(QMenu *menu);
407 QAction *buildRelayAction(QString call);
408 void buildEditMenu(QMenu *, QTextEdit *);
409 void on_queryButton_pressed();
410 void on_macrosMacroButton_pressed();
411 void on_deselectButton_pressed();
412 void on_tableWidgetRXAll_cellClicked(
int row,
int col);
413 void on_tableWidgetRXAll_cellDoubleClicked(
int row,
int col);
414 QString generateCallDetail(QString selectedCall);
415 void on_tableWidgetCalls_cellClicked(
int row,
int col);
416 void on_tableWidgetCalls_cellDoubleClicked(
int row,
int col);
419 bool *pDisableTypeahead);
420 bool prepareNextMessageFrame();
421 bool isFreqOffsetFree(
int f,
int bw);
422 int findFreeFreqOffset(
int fmin,
int fmax,
int bw);
423 void setDrift(
int n);
424 void on_tuneButton_clicked(
bool);
425 void acceptQSO(QDateTime
const &, QString
const &call, QString
const &grid,
426 Frequency dial_freq, QString
const &mode,
427 QString
const &submode, QString
const &rpt_sent,
428 QString
const &rpt_received, QString
const &comments,
429 QString
const &name, QDateTime
const &QSO_date_on,
430 QString
const &operator_call, QString
const &my_call,
431 QString
const &my_grid, QByteArray
const &
ADIF,
432 QVariantMap
const &additionalFields);
433 void on_readFreq_clicked();
434 void on_outAttenuation_valueChanged(
int);
437 void handle_transceiver_failure(QString
const &reason);
443 void auto_tx_mode(
bool);
444 void on_monitorButton_toggled(
bool checked);
445 void on_monitorTxButton_toggled(
bool checked);
446 void on_tuneButton_toggled(
bool checked);
447 void on_spotButton_toggled(
bool checked);
449 void emitPTT(
bool on);
451 void udpNetworkMessage(
Message const &message);
452 void tcpNetworkMessage(
Message const &message);
453 void networkMessage(
Message const &message);
454 bool canSendNetworkMessage();
455 void sendNetworkMessage(QString
const &type, QString
const &message);
456 void sendNetworkMessage(QString
const &type, QString
const &message,
457 const QVariantMap ¶ms);
458 void pskReporterError(QString
const &);
460 void checkVersion(
bool alertOnUpToDate);
461 void checkStartupWarnings();
462 void clearCallsignSelected();
463 void refreshTextDisplay();
468 Q_SIGNAL
void apiSetMaxConnections(
int n);
469 Q_SIGNAL
void apiSetServer(QString host, quint16 port);
470 Q_SIGNAL
void apiStartServer();
471 Q_SIGNAL
void apiStopServer();
473 Q_SIGNAL
void aprsClientEnqueueSpot(QString by_call, QString from_call,
474 QString grid, QString comment);
475 Q_SIGNAL
void aprsClientEnqueueThirdParty(QString by_call,
476 QString from_call, QString text);
483 Q_SIGNAL
void aprsClientEnqueueAck(QString from_call, QString to_call,
485 Q_SIGNAL
void aprsClientSetSkipPercent(
float skipPercent);
486 Q_SIGNAL
void aprsClientSetIncomingRelayEnabled(
bool enabled);
487 Q_SIGNAL
void aprsClientSetServer(QString host, quint16 port);
488 Q_SIGNAL
void aprsClientSetPaused(
bool paused);
489 Q_SIGNAL
void aprsClientSetLocalStation(QString mycall, QString passcode);
490 Q_SIGNAL
void aprsClientSendReports();
492 Q_SIGNAL
void pskReporterSendReport(
bool);
493 Q_SIGNAL
void pskReporterSetLocalStation(QString, QString, QString);
494 Q_SIGNAL
void pskReporterAddRemoteStation(QString, QString,
495 Radio::Frequency, QString,
int,
498 Q_SIGNAL
void spotClientSetLocalStation(QString, QString, QString);
499 Q_SIGNAL
void spotClientEnqueueCmd(QString, QString, QString, QString,
500 QString, QString, QString,
int,
int,
int,
502 Q_SIGNAL
void spotClientEnqueueSpot(QString, QString,
int,
int,
int,
int);
504 Q_SIGNAL
void decodedLineReady(QByteArray t);
505 Q_SIGNAL
void playNotification(
const QString &name);
506 Q_SIGNAL
void initializeNotificationAudioOutputStream(
const QAudioDevice &,
508 Q_SIGNAL
void initializeAudioOutputStream(QAudioDevice,
unsigned channels,
509 unsigned msBuffered)
const;
510 Q_SIGNAL
void stopAudioOutputStream()
const;
511 Q_SIGNAL
void startAudioInputStream(QAudioDevice
const &,
513 AudioDevice::Channel)
const;
514 Q_SIGNAL
void suspendAudioInputStream()
const;
515 Q_SIGNAL
void resumeAudioInputStream()
const;
516 Q_SIGNAL
void startDetector(AudioDevice::Channel)
const;
517 Q_SIGNAL
void FFTSize(
unsigned)
const;
518 Q_SIGNAL
void detectorClose()
const;
519 Q_SIGNAL
void finished()
const;
520 Q_SIGNAL
void transmitFrequency(
double)
const;
521 Q_SIGNAL
void endTransmitMessage(
bool quick =
false)
const;
522 Q_SIGNAL
void tune(
bool =
true)
const;
523 Q_SIGNAL
void sendMessage(
double frequency,
int submode,
double txDelay,
525 Q_SIGNAL
void outAttenuationChanged(qreal)
const;
526 Q_SIGNAL
void toggleShorthand()
const;
527 Q_SIGNAL
void submodeChanged(Varicode::SubmodeType)
const;
529 Q_SIGNAL
void messageAdded(
int)
const;
532 QByteArray wisdomFileName()
const;
534 void writeAllTxt(QStringView message);
535 void writeMsgTxt(QStringView message,
int snr,
int offset);
537 void currentTextChanged();
538 void tableSelectionChanged(QItemSelection
const &, QItemSelection
const &);
540 void applyPillSettings();
542 int freq()
const {
return m_freq; }
545 void refuseToSendIn30mWSPRBand();
547 void prepareSending(qint64 nowMS);
550 void updateClockUI(
const QDateTime &);
555 bool presentlyWantHBReplies();
557 QString m_nextFreeTextMsg;
561 [[maybe_unused]]
bool m_multiple;
563 QPushButton *m_configurations_button;
564 QSettings *m_settings;
565 bool m_settings_read;
566 QScopedPointer<Ui::UI_Constructor> ui;
572 QDockWidget* messageDock_ =
nullptr;
574 QDialog* messageFloatDialog_ =
nullptr;
576 enum class MessageHost { Dock, Dialog };
577 MessageHost messageHost_ = MessageHost::Dock;
579 QScopedPointer<WideGraph> m_wideGraph;
580 QScopedPointer<LogQSO> m_logDlg;
581 QScopedPointer<HelpTextWindow> m_shortcuts;
582 QScopedPointer<HelpTextWindow> m_prefixes;
583 QScopedPointer<HelpTextWindow> m_mouseCmnds;
586 Frequency m_lastDialFreq;
603 QThread m_networkThread;
604 QThread m_audioThread;
605 QThread m_notificationAudioThread;
608 qint64 m_secBandChanged;
610 Frequency m_freqNominal;
611 Frequency m_freqTxNominal;
623 qint32 m_idleMinutes;
630 QString m_decoderBusyBand;
632 m_lastDecodeStartMap;
634 m_lastDecodeCycleMap;
635 Radio::Frequency m_decoderBusyFreq;
636 QDateTime m_decoderBusyStartTime;
640 int m_currentMessageType;
641 QString m_currentMessage;
642 int m_currentMessageBits;
643 int m_lastMessageType;
644 QString m_lastMessageSent;
661 QLabel tx_status_label;
664 QLabel frequency_label;
665 QLabel auto_reply_label;
666 QLabel last_tx_label;
667 QLabel auto_tx_label;
668 QProgressBar progressBar;
671 int m_sliderFreqBeforeHB = 0;
677 QTimer pttReleaseTimer;
679 QTimer tuneButtonTimer;
680 QTimer tuneATU_Timer;
699 QDateTime cqTimestamp;
700 QDateTime ackTimestamp;
701 QDateTime utcTimestamp;
708 struct CommandDetail {
716 QDateTime utcTimestamp;
727 struct ActivityDetail {
728 bool isLowConfidence;
736 QDateTime utcTimestamp;
743 struct MessageBuffer {
745 QQueue<CallDetail> compound;
749 QString m_prevSelectedCallsign;
750 int m_bandActivityWidth;
751 int m_callActivityWidth;
752 int m_textActivityWidth;
753 int m_waterfallHeight;
754 bool m_bandActivityWasVisible;
756 bool m_rxDisplayDirty;
757 int m_txFrameCountEstimate;
759 int m_txFrameCountSent;
760 QTimer m_txTextDirtyDebounce;
762 QString m_txTextDirtyLastText;
763 QString m_txTextDirtyLastSelectedCall;
764 QString m_lastTxMessage;
765 QString m_totalTxMessage;
768 QString since(QDateTime
const &time) {
769 auto const delta = time.secsTo(DriftingDateTime::currentDateTimeUtc());
771 if (delta >= 60 * 60 * 24)
772 return QString(
"%1d").arg(delta / (60 * 60 * 24));
773 else if (delta >= 60 * 60)
774 return QString(
"%1h").arg(delta / (60 * 60));
775 else if (delta >= 60)
776 return QString(
"%1m").arg(delta / (60));
777 else if (delta >= 15)
778 return QString(
"%1s").arg(delta - (delta % 15));
780 return QString(
"now");
783 QDateTime m_lastTxStartTime;
784 QDateTime m_lastTxStopTime;
786 qint32 m_driftMsMMA_N;
789 auto replaceMacros(QString
const &text,
790 QMap<QString, QString>
const &values,
bool const prune) {
791 QString output = text;
793 for (
auto const [key, value] : values.asKeyValueRange()) {
794 output = output.replace(key, value.toUpper());
797 return prune ? output.replace(QRegularExpression(
"[<](?:[^>]+)[>]"),
"")
801 QList<int> generateOffsets(
int minOffset,
int maxOffset) {
806 for (
int i = minOffset; i <= maxOffset; i++) {
814 PriorityNormal = 100,
818 struct PrioritizedMessage {
825 friend bool operator<(PrioritizedMessage
const &a,
826 PrioritizedMessage
const &b) {
827 if (a.priority < b.priority) {
830 return a.date < b.date;
834 struct CachedDirectedType {
839 struct DecodeParams {
845 struct FrameCacheKey {
849 FrameCacheKey(
int submode, QString frame)
850 : submode(submode), frame(std::move(frame)) {}
852 bool operator==(FrameCacheKey
const &)
const noexcept =
default;
855 std::size_t operator()(FrameCacheKey
const &key)
const noexcept {
856 std::size_t
const h1 = std::hash<int>{}(key.submode);
857 std::size_t
const h2 = qHash(key.frame);
858 return h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
864 std::unordered_map<FrameCacheKey, QDateTime, FrameCacheKey::Hash>;
865 using BandActivity = QMap<int, QList<ActivityDetail>>;
867 QQueue<DecodeParams> m_decoderQueue;
868 FrameCache m_messageDupeCache;
869 QVariantMap m_showColumnsCache;
870 QVariantMap m_sortCache;
872 QQueue<QPair<QString, int>> m_txFrameQueue;
873 QQueue<ActivityDetail> m_rxActivityQueue;
874 QQueue<CommandDetail>
878 QMap<QString, QString>
880 QCache<QString, QDateTime> m_txAllcallCommandCache;
881 QCache<int, QDateTime> m_rxRecentCache;
882 QCache<int, CachedDirectedType>
884 QCache<QString, int> m_rxCallCache;
885 QMap<int, int> m_rxFrameBlockNumbers;
886 BandActivity m_bandActivity;
887 QMap<int, MessageBuffer> m_messageBuffer;
888 int m_lastClosedMessageBufferOffset;
889 QMap<QString, CallDetail>
892 QMap<int, QString> m_origRxHeaderLabelMap;
893 QMap<int, QString> m_origCallActivityHeaderLabelMap;
894 QMap<QString, QString> m_columnLabelMap;
896 QMap<QString, QSet<QString>>
897 m_heardGraphOutgoing;
899 QMap<QString, QSet<QString>>
900 m_heardGraphIncoming;
903 QMap<QString, int> m_rxInboxCountCache;
905 QMap<QString, QMap<QString, CallDetail>>
906 m_callActivityBandCache;
907 QMap<QString, QMap<int, QList<ActivityDetail>>>
908 m_bandActivityBandCache;
909 QMap<QString, QString> m_rxTextBandCache;
910 QMap<QString, QMap<QString, QSet<QString>>>
911 m_heardGraphOutgoingBandCache;
912 QMap<QString, QMap<QString, QSet<QString>>>
913 m_heardGraphIncomingBandCache;
916 struct PendingConfirmation {
924 int m_nextConfirmId = 0;
925 QMap<int, PendingConfirmation> m_pendingConfirmations;
927 QMap<QString, QDateTime>
933 QHash<QString, QDateTime> m_aprsRelayDedupCache;
934 QSet<QString> m_callSeenHeartbeat;
936 Frequency m_bandHoppedFreq;
946 QDateTime m_dateTimeQSOOn;
947 QDateTime m_dateTimeLastTX;
949 QSet<int> m_rxBlockedOffsets;
952 unsigned m_msAudioOutputBuffered;
953 unsigned m_framesAudioInputBuffered;
954 QThread::Priority m_audioThreadPriority;
955 QThread::Priority m_notificationAudioThreadPriority;
956 QThread::Priority m_decoderThreadPriority;
957 QThread::Priority m_networkThreadPriority;
960 bool m_generateAudioWhenPttConfirmedByTX;
964 bool m_block_pwr_tooltip;
966 Frequency m_lastMonitoredFrequency;
976 QVariantHash m_pwrBandTxMemory;
979 QByteArray m_geometryNoControls;
983 void set_application_font(QFont
const &);
984 void writeSettings();
985 void createStatusBar();
986 void statusChanged();
987 void rigFailure(QString
const &reason);
991 void spotReport(
int submode,
int dial,
int offset,
int snr,
992 QString
const &callsign, QString
const &grid);
993 void spotCmd(CommandDetail
const &cmd);
994 void spotAprsCmd(CommandDetail
const &cmd);
995 void pskLogReport(QString
const &mode,
int dial,
int offset,
int snr,
996 QString
const &callsign, QString
const &grid,
997 QDateTime
const &utcTimestamp);
998 void spotAprsGrid(
int dial,
int offset,
int snr, QString callsign,
1000 Radio::Frequency dialFrequency();
1001 void setSubmode(
int submode);
1002 void updateCurrentBand();
1003 void displayDialFrequency();
1004 void transmitDisplay(
bool);
1005 void postDecode(
bool is_new, QString
const &message);
1006 void displayTransmit();
1007 void updateModeButtonText();
1008 void updateButtonDisplay();
1009 void updateTextDisplay();
1010 void updateTextWordCheckerDisplay();
1011 void updateTextStatsDisplay(QString text,
int count);
1012 void updateTxButtonDisplay();
1013 bool isMyCallIncluded(QString
const &text);
1014 bool isAllCallIncluded(QString
const &text);
1015 bool isGroupCallIncluded(
const QString &text);
1016 QString callsignSelected(
bool useInputText =
false);
1017 void callsignSelectedChanged(QString old, QString current);
1018 bool isRecentOffset(
int submode,
int offset);
1019 void markOffsetRecent(
int offset);
1020 bool isDirectedOffset(
int offset,
bool *pIsAllCall);
1021 void markOffsetDirected(
int offset,
bool isAllCall);
1022 void clearOffsetDirected(
int offset);
1023 void processActivity(
bool force =
false);
1024 void resetTimeDeltaAverage();
1025 void processRxActivity();
1026 void processIdleActivity();
1027 void processCompoundActivity();
1028 void processBufferedActivity();
1029 void processCommandActivity();
1030 void processHeartbeatRateLimit(
const QString &callsign);
1031 QString inboxPath();
1032 QString hbBlockingPath()
const;
1033 void refreshInboxCounts();
1034 bool hasMessageHistory(QString call);
1035 int addCommandToMyInbox(CommandDetail d);
1036 int addCommandToStorage(QString type, CommandDetail d);
1037 int getNextMessageIdForCallsign(QString callsign);
1038 int getLookaheadMessageIdForCallsign(QString callsign,
int afterMsgId);
1039 int getNextGroupMessageIdForCallsign(QString group_name, QString callsign);
1040 int getLookaheadGroupMessageIdForCallsign(QString group_name,
1041 QString callsign,
int afterMsgId);
1042 int countUnreadForCallsign(
const QString &callsign);
1043 int countGroupUnreadForCallsign(
const QString &group_name,
1044 const QString &callsign);
1045 bool markGroupMsgDeliveredForCallsign(
int msgId, QString callsign);
1046 bool markMsgDelivered(
int mid,
Message msg);
1047 QStringList parseRelayPathCallsigns(QString from, QString text);
1048 void processSpots();
1049 void processTxQueue();
1050 void displayActivity(
bool force =
false);
1051 void displayBandActivity();
1052 void displayCallActivity();
1053 void enable_DXCC_entity(
bool on);
1054 void setRig(Frequency = 0);
1055 QDateTime nextTransmitCycle();
1056 void statusUpdate();
1057 void on_the_minute();
1059 void add_child_to_event_filter(QObject *);
1060 void remove_child_from_event_filter(QObject *);
1061 void setup_status_bar();
1062 QString columnLabel(QString defaultLabel);
1063 void ensureMessageDock();
1065 void resetIdleTimer();
1066 void incrementIdleTimer();
1067 void tx_watchdog(
bool triggered);
1068 void write_frequency_entry(QString
const &file_name);
1069 void write_transmit_entry(QString
const &file_name);