196 friend class WSJTXMessageMapper;
201 using CallDetail = ::CallDetail;
202 struct CommandDetail;
205 using Frequency = Radio::Frequency;
206 using FrequencyDelta = Radio::FrequencyDelta;
207 using Mode = Modes::Mode;
210 QDir
const &temp_directory,
bool multiple,
215 struct SortByReverse {
230 bool m_stopTxButtonIsLongterm;
231 bool m_hbButtonIsLongterm;
232 bool m_cqButtonIsLongterm;
235 void showSoundInError(
const QString &errorMsg);
236 void showSoundOutError(
const QString &errorMsg);
237 void showStatusMessage(
const QString &statusMsg);
246 void qsy(
int hzDelta);
247 void onDriftChanged(qint64 new_drift_ms);
248 bool tryRestoreFreqOffset();
249 void changeFreq(
int);
251 bool hasExistingMessageBufferToMe(
int *pOffset);
252 bool hasExistingMessageBuffer(
int submode,
int offset,
bool drift,
254 bool hasClosedExistingMessageBuffer(
int offset);
255 void logCallActivity(CallDetail d,
bool spot =
true);
256 void logHeardGraph(QString from, QString to);
257 QString lookupCallInCompoundCache(QString
const &call);
258 void cacheActivity(QString key);
259 void restoreActivity(QString key);
260 void clearActivity();
261 void clearBandActivity();
262 void clearRXActivity();
263 void clearCallActivity();
264 void createGroupCallsignTableRows(QTableWidget *table,
265 const QString &selectedCall,
266 bool &showIconColumn);
267 void displayTextForFreq(QString text,
int freq, QDateTime date,
bool isTx,
268 bool isNewLine,
bool isLast);
269 void writeNoticeTextToUI(QDateTime date, QString text);
270 int writeMessageTextToUI(QDateTime date, QString text,
int freq,
bool isTx,
272 bool isMessageQueuedForTransmit();
273 bool isInDecodeDelayThreshold(
int seconds);
274 void prependMessageText(QString text);
275 void addMessageText(QString text,
bool clear =
false,
276 bool selectFirstPlaceholder =
false);
278 int offset, Callback c);
279 void enqueueMessage(
int priority, QString message,
int offset, Callback c);
281 void resetMessageUI();
282 void restoreMessage();
283 void initializeDummyData();
284 void initializeGroupMessage();
285 bool ensureCallsignSet(
bool alert =
true);
286 bool ensureKeyNotStuck(QString
const &text);
287 bool ensureNotIdle();
288 bool ensureCanTransmit();
289 bool ensureCreateMessageReady(
const QString &text);
290 QString createMessage(QString
const &text,
bool *pDisableTypeahead);
291 QString appendMessage(QString
const &text,
bool isData,
292 bool *pDisableTypeahead);
293 QString createMessageTransmitQueue(QString
const &text,
bool reset,
294 bool isData,
bool *pDisableTypeahead);
296 QPair<QString, int> popMessageFrame();
297 void tryNotify(
const QString &key);
300 void updateCQButtonDisplay();
301 void updateHBButtonDisplay();
304 void keyPressEvent(QKeyEvent *)
override;
305 void closeEvent(QCloseEvent *)
override;
306 void childEvent(QChildEvent *)
override;
307 bool eventFilter(QObject *, QEvent *)
override;
310 void initialize_fonts();
311 void on_menuModeJS8_aboutToShow();
312 void on_menuControl_aboutToShow();
313 void on_actionCheck_for_Updates_triggered();
314 void on_actionEnable_Monitor_RX_toggled(
bool checked);
315 void on_actionEnable_Transmitter_TX_toggled(
bool checked);
316 void on_actionEnable_Reporting_SPOT_toggled(
bool checked);
317 void on_actionEnable_Tuning_Tone_TUNE_toggled(
bool checked);
318 void on_menuWindow_aboutToShow();
319 void on_actionFocus_Message_Receive_Area_triggered();
320 void on_actionFocus_Message_Reply_Area_triggered();
321 void on_actionFocus_Band_Activity_Table_triggered();
322 void on_actionFocus_Call_Activity_Table_triggered();
323 void on_actionClear_All_Activity_triggered();
324 void on_actionClear_Band_Activity_triggered();
325 void on_actionClear_RX_Activity_triggered();
326 void on_actionClear_Call_Activity_triggered();
327 void on_actionSetOffset_triggered();
328 void on_actionShow_Fullscreen_triggered(
bool checked);
329 void on_actionShow_Statusbar_triggered(
bool checked);
330 void on_actionShow_Frequency_Clock_triggered(
bool checked);
331 void on_actionShow_Band_Activity_triggered(
bool checked);
332 void on_actionShow_Band_Heartbeats_and_ACKs_triggered(
bool checked);
333 void on_actionShow_Call_Activity_triggered(
bool checked);
334 void on_actionShow_Waterfall_triggered(
bool checked);
335 void on_actionShow_Waterfall_Controls_triggered(
bool checked);
336 void on_actionShow_Waterfall_Time_Drift_Controls_triggered(
bool checked);
337 void on_actionReset_Window_Sizes_triggered();
338 void on_actionSettings_triggered();
339 void openSettings(
int tab = 0);
341 void prepareSpotting();
342 void on_spotButton_clicked(
bool checked);
343 void on_monitorButton_clicked(
bool);
344 void on_actionAbout_triggered();
345 void resetPushButtonToggleText(QPushButton *btn);
346 void on_stopTxButton_clicked();
347 void on_dialFreqUpButton_clicked();
348 void on_dialFreqDownButton_clicked();
349 void on_actionAdd_Log_Entry_triggered();
350 void on_actionOpen_log_directory_triggered();
351 void on_actionCopyright_Notice_triggered();
352 void on_actionUser_Guide_triggered();
353 bool decode(qint32 k);
354 bool isDecodeReady(
int submode, qint32 k, qint32 k0,
355 qint32 *pCurrentDecodeStart, qint32 *pNextDecodeStart,
356 qint32 *pStart, qint32 *pSz, qint32 *pCycle);
357 bool decodeEnqueueReady(qint32 k, qint32 k0);
358 bool decodeEnqueueReadyExperiment(qint32 k, qint32 k0);
359 bool decodeProcessQueue(qint32 *pSubmode);
361 void decodeBusy(
bool b);
363 void on_startTxButton_toggled(
bool checked);
364 void toggleTx(
bool start);
365 void on_logQSOButton_clicked();
366 void on_actionModeJS8HB_toggled(
bool checked);
367 void on_actionModeJS8Normal_triggered();
368 void on_actionModeJS8Fast_triggered();
369 void on_actionModeJS8Turbo_triggered();
370 void on_actionModeJS8Slow_triggered();
371 void on_actionModeJS8Ultra_triggered();
372 void on_actionHeartbeatAcknowledgements_toggled(
bool checked);
373 void on_actionModeMultiDecoder_toggled(
bool checked);
374 void on_actionModeAutoreply_toggled(
bool checked);
375 bool canCurrentModeSendHeartbeat()
const;
376 void prepareMonitorControls();
377 void prepareHeartbeatMode(
bool enabled);
379 void on_actionErase_ALL_TXT_triggered();
380 void on_actionErase_js8call_log_adi_triggered();
384 void buildFrequencyMenu(QMenu *menu);
385 void buildHeartbeatMenu(QMenu *menu);
386 void buildCQMenu(QMenu *menu);
387 void buildRepeatMenu(QMenu *menu, QPushButton *button,
bool isLowInterval,
390 void sendHeartbeatAck(QString to,
int snr, QString extra);
391 void on_hbMacroButton_toggled(
bool checked);
392 void on_hbMacroButton_clicked();
393 void sendCQ(
bool repeat =
false);
394 void on_cqMacroButton_toggled(
bool checked);
395 void on_cqMacroButton_clicked();
396 void on_replyMacroButton_clicked();
397 void on_snrMacroButton_clicked();
398 void on_infoMacroButton_clicked();
399 void on_statusMacroButton_clicked();
400 void setShowColumn(QString tableKey, QString columnKey,
bool value);
401 bool showColumn(QString tableKey, QString columnKey,
bool default_ =
true);
402 void buildShowColumnsMenu(QMenu *menu, QString tableKey);
403 void setSortBy(QString key, QString value);
404 QString getSortBy(QString
const &key, QString
const &defaultValue)
const;
405 SortByReverse getSortByReverse(QString
const &key,
406 QString
const &defaultValue)
const;
407 void buildSortByMenu(QMenu *menu, QString key, QString defaultValue,
408 QList<QPair<QString, QString>> values);
409 void buildBandActivitySortByMenu(QMenu *menu);
410 void buildCallActivitySortByMenu(QMenu *menu);
411 void buildQueryMenu(QMenu *, QString callsign);
412 QMap<QString, QString> buildMacroValues();
413 void buildColumnLabelMap();
414 void buildSuggestionsMenu(QMenu *menu, QTextEdit *edit,
415 const QPoint &point);
416 void buildSavedMessagesMenu(QMenu *menu);
417 void buildRelayMenu(QMenu *menu);
418 QAction *buildRelayAction(QString call);
419 void buildEditMenu(QMenu *, QTextEdit *);
420 void on_queryButton_pressed();
421 void on_macrosMacroButton_pressed();
422 void on_deselectButton_pressed();
423 void on_tableWidgetRXAll_cellClicked(
int row,
int col);
424 void on_tableWidgetRXAll_cellDoubleClicked(
int row,
int col);
425 QString generateCallDetail(QString selectedCall);
426 void on_tableWidgetCalls_cellClicked(
int row,
int col);
427 void on_tableWidgetCalls_cellDoubleClicked(
int row,
int col);
430 bool *pDisableTypeahead);
431 bool prepareNextMessageFrame();
432 bool isFreqOffsetFree(
int f,
int bw);
433 int findFreeFreqOffset(
int fmin,
int fmax,
int bw);
434 void setDrift(
int n);
435 void on_tuneButton_clicked(
bool);
436 void acceptQSO(QDateTime
const &, QString
const &call, QString
const &grid,
437 Frequency dial_freq, QString
const &mode,
438 QString
const &submode, QString
const &rpt_sent,
439 QString
const &rpt_received, QString
const &comments,
440 QString
const &name, QDateTime
const &QSO_date_on,
441 QString
const &operator_call, QString
const &my_call,
442 QString
const &my_grid, QByteArray
const &
ADIF,
443 QVariantMap
const &additionalFields);
444 void on_readFreq_clicked();
445 void on_outAttenuation_valueChanged(
int);
448 void handle_transceiver_failure(QString
const &reason);
454 void auto_tx_mode(
bool);
455 void on_monitorButton_toggled(
bool checked);
456 void on_monitorTxButton_toggled(
bool checked);
457 void on_tuneButton_toggled(
bool checked);
458 void on_spotButton_toggled(
bool checked);
460 void emitPTT(
bool on);
462 void udpNetworkMessage(
Message const &message);
463 void tcpNetworkMessage(
Message const &message);
464 void networkMessage(
Message const &message);
465 bool canSendNetworkMessage();
466 void sendNetworkMessage(QString
const &type, QString
const &message);
467 void sendNetworkMessage(QString
const &type, QString
const &message,
468 const QVariantMap ¶ms);
469 void pskReporterError(QString
const &);
471 void checkVersion(
bool alertOnUpToDate);
472 void checkStartupWarnings();
473 void clearCallsignSelected();
474 void refreshTextDisplay();
479 Q_SIGNAL
void apiSetMaxConnections(
int n);
480 Q_SIGNAL
void apiSetServer(QString host, quint16 port);
481 Q_SIGNAL
void apiStartServer();
482 Q_SIGNAL
void apiStopServer();
484 Q_SIGNAL
void aprsClientEnqueueSpot(QString by_call, QString from_call,
485 QString grid, QString comment);
486 Q_SIGNAL
void aprsClientEnqueueThirdParty(QString by_call,
487 QString from_call, QString text);
494 Q_SIGNAL
void aprsClientEnqueueAck(QString from_call, QString to_call,
496 Q_SIGNAL
void aprsClientSetSkipPercent(
float skipPercent);
497 Q_SIGNAL
void aprsClientSetIncomingRelayEnabled(
bool enabled);
498 Q_SIGNAL
void aprsClientSetServer(QString host, quint16 port);
499 Q_SIGNAL
void aprsClientSetPaused(
bool paused);
500 Q_SIGNAL
void aprsClientSetLocalStation(QString mycall, QString passcode);
501 Q_SIGNAL
void aprsClientSendReports();
503 Q_SIGNAL
void pskReporterSendReport(
bool);
504 Q_SIGNAL
void pskReporterSetLocalStation(QString, QString, QString);
505 Q_SIGNAL
void pskReporterAddRemoteStation(QString, QString,
506 Radio::Frequency, QString,
int,
509 Q_SIGNAL
void spotClientSetLocalStation(QString, QString, QString);
510 Q_SIGNAL
void spotClientEnqueueCmd(QString, QString, QString, QString,
511 QString, QString, QString,
int, Frequency,
int,
513 Q_SIGNAL
void spotClientEnqueueSpot(QString, QString,
int, Frequency,
int,
int);
515 Q_SIGNAL
void decodedLineReady(QByteArray t);
516 Q_SIGNAL
void playNotification(
const QString &name);
517 Q_SIGNAL
void initializeNotificationAudioOutputStream(
const QAudioDevice &,
519 Q_SIGNAL
void initializeAudioOutputStream(QAudioDevice,
unsigned channels,
520 unsigned msBuffered)
const;
521 Q_SIGNAL
void stopAudioOutputStream()
const;
522 Q_SIGNAL
void startAudioInputStream(QAudioDevice
const &,
525 Q_SIGNAL
void suspendAudioInputStream()
const;
526 Q_SIGNAL
void resumeAudioInputStream()
const;
528 Q_SIGNAL
void FFTSize(
unsigned)
const;
529 Q_SIGNAL
void detectorClose()
const;
530 Q_SIGNAL
void finished()
const;
531 Q_SIGNAL
void transmitFrequency(
double)
const;
532 Q_SIGNAL
void endTransmitMessage(
bool quick =
false)
const;
533 Q_SIGNAL
void tune(
bool =
true)
const;
534 Q_SIGNAL
void sendMessage(
double frequency,
int submode,
double txDelay,
536 Q_SIGNAL
void outAttenuationChanged(qreal)
const;
537 Q_SIGNAL
void toggleShorthand()
const;
538 Q_SIGNAL
void submodeChanged(Varicode::SubmodeType)
const;
540 Q_SIGNAL
void messageAdded(
int)
const;
543 QByteArray wisdomFileName()
const;
545 void writeAllTxt(QStringView message);
546 void writeMsgTxt(QStringView message,
int snr,
int offset);
548 void currentTextChanged();
549 void tableSelectionChanged(QItemSelection
const &, QItemSelection
const &);
551 void applyPillSettings();
553 int freq()
const {
return m_freq; }
556 void refuseToSendIn30mWSPRBand();
558 void prepareSending(qint64 nowMS);
561 void updateClockUI(
const QDateTime &);
566 bool presentlyWantHBReplies();
568 QString m_nextFreeTextMsg;
572 [[maybe_unused]]
bool m_multiple;
574 QPushButton *m_configurations_button;
575 QSettings *m_settings;
576 bool m_settings_read;
577 QScopedPointer<Ui::UI_Constructor> ui;
583 QDockWidget* messageDock_ =
nullptr;
585 QDialog* messageFloatDialog_ =
nullptr;
586 QLineEdit* m_inboxFilterEdit_ =
nullptr;
588 enum class MessageHost { Dock, Dialog };
589 MessageHost messageHost_ = MessageHost::Dock;
591 QScopedPointer<WideGraph> m_wideGraph;
592 QScopedPointer<LogQSO> m_logDlg;
593 QScopedPointer<HelpTextWindow> m_shortcuts;
594 QScopedPointer<HelpTextWindow> m_prefixes;
595 QScopedPointer<HelpTextWindow> m_mouseCmnds;
598 Frequency m_lastDialFreq;
604 std::unique_ptr<ActivityStorageController> m_activityStorage;
620 QThread m_networkThread;
621 QThread m_audioThread;
622 QThread m_notificationAudioThread;
625 qint64 m_secBandChanged;
627 Frequency m_freqNominal;
628 Frequency m_freqTxNominal;
640 qint32 m_idleMinutes;
647 QString m_decoderBusyBand;
649 m_lastDecodeStartMap;
651 m_lastDecodeCycleMap;
652 Radio::Frequency m_decoderBusyFreq;
653 QDateTime m_decoderBusyStartTime;
657 int m_currentMessageType;
658 QString m_currentMessage;
659 int m_currentMessageBits;
660 int m_lastMessageType;
661 QString m_lastMessageSent;
678 QLabel tx_status_label;
681 QLabel frequency_label;
682 QLabel auto_reply_label;
683 QLabel last_tx_label;
684 QLabel auto_tx_label;
685 QProgressBar progressBar;
688 int m_sliderFreqBeforeHB = 0;
694 QTimer pttReleaseTimer;
696 QTimer tuneButtonTimer;
697 QTimer tuneATU_Timer;
700 QTimer m_msgNotifyTimer;
711 struct CommandDetail {
719 QDateTime utcTimestamp;
730 struct ActivityDetail {
731 bool isLowConfidence;
739 QDateTime utcTimestamp;
746 struct MessageBuffer {
748 QQueue<CallDetail> compound;
752 QString m_prevSelectedCallsign;
753 int m_bandActivityWidth;
754 int m_callActivityWidth;
755 int m_textActivityWidth;
756 int m_waterfallHeight;
757 bool m_bandActivityWasVisible;
759 bool m_rxDisplayDirty;
760 int m_txFrameCountEstimate;
762 int m_txFrameCountSent;
763 QTimer m_txTextDirtyDebounce;
765 QString m_txTextDirtyLastText;
766 QString m_txTextDirtyLastSelectedCall;
767 QString m_lastTxMessage;
768 QString m_totalTxMessage;
771 QString since(QDateTime
const &time) {
772 auto const delta = time.secsTo(DriftingDateTime::currentDateTimeUtc());
774 if (delta >= 60 * 60 * 24)
775 return QString(
"%1d").arg(delta / (60 * 60 * 24));
776 else if (delta >= 60 * 60)
777 return QString(
"%1h").arg(delta / (60 * 60));
778 else if (delta >= 60)
779 return QString(
"%1m").arg(delta / (60));
780 else if (delta >= 15)
781 return QString(
"%1s").arg(delta - (delta % 15));
783 return QString(
"now");
786 QDateTime m_lastTxStartTime;
787 QDateTime m_lastTxStopTime;
789 qint32 m_driftMsMMA_N;
792 auto replaceMacros(QString
const &text,
793 QMap<QString, QString>
const &values,
bool const prune) {
794 QString output = text;
796 for (
auto const [key, value] : values.asKeyValueRange()) {
797 output = output.replace(key, value.toUpper());
800 return prune ? output.replace(QRegularExpression(
"[<](?:[^>]+)[>]"),
"")
804 QList<int> generateOffsets(
int minOffset,
int maxOffset) {
809 for (
int i = minOffset; i <= maxOffset; i++) {
817 PriorityNormal = 100,
821 struct PrioritizedMessage {
828 friend bool operator<(PrioritizedMessage
const &a,
829 PrioritizedMessage
const &b) {
830 if (a.priority < b.priority) {
833 return a.date < b.date;
837 struct CachedDirectedType {
842 struct DecodeParams {
848 struct FrameCacheKey {
852 FrameCacheKey(
int submode, QString frame)
853 : submode(submode), frame(std::move(frame)) {}
855 bool operator==(FrameCacheKey
const &)
const noexcept =
default;
858 std::size_t operator()(FrameCacheKey
const &key)
const noexcept {
859 std::size_t
const h1 = std::hash<int>{}(key.submode);
860 std::size_t
const h2 = qHash(key.frame);
861 return h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
867 std::unordered_map<FrameCacheKey, QDateTime, FrameCacheKey::Hash>;
868 using BandActivity = QMap<int, QList<ActivityDetail>>;
870 QQueue<DecodeParams> m_decoderQueue;
871 FrameCache m_messageDupeCache;
872 QVariantMap m_showColumnsCache;
873 QVariantMap m_sortCache;
875 QQueue<QPair<QString, int>> m_txFrameQueue;
876 QQueue<ActivityDetail> m_rxActivityQueue;
877 QQueue<CommandDetail>
881 QMap<QString, QString>
883 QCache<QString, QDateTime> m_txAllcallCommandCache;
884 QCache<int, QDateTime> m_rxRecentCache;
885 QCache<int, CachedDirectedType>
887 QCache<QString, int> m_rxCallCache;
888 QMap<int, int> m_rxFrameBlockNumbers;
889 BandActivity m_bandActivity;
890 QMap<int, MessageBuffer> m_messageBuffer;
891 int m_lastClosedMessageBufferOffset;
892 QMap<QString, CallDetail>
895 QMap<int, QString> m_origRxHeaderLabelMap;
896 QMap<int, QString> m_origCallActivityHeaderLabelMap;
897 QMap<QString, QString> m_columnLabelMap;
899 QMap<QString, QSet<QString>>
900 m_heardGraphOutgoing;
902 QMap<QString, QSet<QString>>
903 m_heardGraphIncoming;
906 QMap<QString, int> m_rxInboxCountCache;
913 QMap<QString, QMap<QString, CallDetail>>
914 m_callActivityBandCache;
915 QMap<QString, QString> m_rxTextBandCache;
916 QMap<QString, QMap<int, QList<ActivityDetail>>>
917 m_bandActivityBandCache;
918 QMap<QString, QMap<QString, QSet<QString>>>
919 m_heardGraphOutgoingBandCache;
920 QMap<QString, QMap<QString, QSet<QString>>>
921 m_heardGraphIncomingBandCache;
924 struct PendingConfirmation {
933 int m_nextConfirmId = 0;
934 QMap<int, PendingConfirmation> m_pendingConfirmations;
936 QMap<QString, QDateTime>
942 QHash<QString, QDateTime> m_aprsRelayDedupCache;
943 QSet<QString> m_callSeenHeartbeat;
945 Frequency m_bandHoppedFreq;
955 QDateTime m_dateTimeQSOOn;
956 QDateTime m_dateTimeLastTX;
958 QSet<int> m_rxBlockedOffsets;
961 unsigned m_msAudioOutputBuffered;
962 unsigned m_framesAudioInputBuffered;
963 QThread::Priority m_audioThreadPriority;
964 QThread::Priority m_notificationAudioThreadPriority;
965 QThread::Priority m_decoderThreadPriority;
966 QThread::Priority m_networkThreadPriority;
969 bool m_generateAudioWhenPttConfirmedByTX;
973 bool m_block_pwr_tooltip;
975 Frequency m_lastMonitoredFrequency;
985 QVariantHash m_pwrBandTxMemory;
988 QByteArray m_geometryNoControls;
992 void set_application_font(QFont
const &);
993 void writeSettings();
994 void createStatusBar();
995 void statusChanged();
996 void rigFailure(QString
const &reason);
1000 void spotReport(
int submode, Frequency dial,
int offset,
int snr,
1001 QString
const &callsign, QString
const &grid);
1002 void spotCmd(CommandDetail
const &cmd);
1003 void spotAprsCmd(CommandDetail
const &cmd);
1004 void pskLogReport(QString
const &mode, Frequency dial,
int offset,
int snr,
1005 QString
const &callsign, QString
const &grid,
1006 QDateTime
const &utcTimestamp);
1007 void spotAprsGrid(Frequency dial,
int offset,
int snr, QString callsign,
1009 Radio::Frequency dialFrequency();
1010 void setSubmode(
int submode);
1011 void updateCurrentBand();
1012 void displayDialFrequency();
1013 void transmitDisplay(
bool);
1014 void postDecode(
bool is_new, QString
const &message);
1015 void displayTransmit();
1016 void updateModeButtonText();
1017 void updateButtonDisplay();
1018 void updateTextDisplay();
1019 void updateTextWordCheckerDisplay();
1020 void updateTextStatsDisplay(QString text,
int count);
1021 void updateTxButtonDisplay();
1022 bool isMyCallIncluded(QString
const &text);
1023 bool isAllCallIncluded(QString
const &text);
1024 bool isGroupCallIncluded(
const QString &text);
1025 QString callsignSelected(
bool useInputText =
false);
1026 void callsignSelectedChanged(QString old, QString current);
1027 bool isRecentOffset(
int submode,
int offset);
1028 void markOffsetRecent(
int offset);
1029 bool isDirectedOffset(
int offset,
bool *pIsAllCall);
1030 void markOffsetDirected(
int offset,
bool isAllCall);
1031 void clearOffsetDirected(
int offset);
1032 void processActivity(
bool force =
false);
1033 void resetTimeDeltaAverage();
1034 void processRxActivity();
1035 void processIdleActivity();
1036 void processCompoundActivity();
1037 void processBufferedActivity();
1038 void processCommandActivity();
1039 void processHeartbeatRateLimit(
const QString &callsign);
1040 QString inboxPath();
1041 QString hbBlockingPath()
const;
1042 void pushNotificationHandler();
1043 QString msgNotifyPath()
const;
1044 void removeStoredMessageNotification(
int msgId);
1045 void refreshInboxCounts();
1046 bool hasMessageHistory(QString call);
1047 int addCommandToMyInbox(CommandDetail d);
1048 int addCommandToStorage(QString type, CommandDetail d);
1049 int getNextMessageIdForCallsign(QString callsign);
1050 int getLookaheadMessageIdForCallsign(QString callsign,
int afterMsgId);
1051 int getNextGroupMessageIdForCallsign(QString group_name, QString callsign);
1052 int getLookaheadGroupMessageIdForCallsign(QString group_name,
1053 QString callsign,
int afterMsgId);
1054 int countUnreadForCallsign(
const QString &callsign);
1055 int countGroupUnreadForCallsign(
const QString &group_name,
1056 const QString &callsign);
1057 bool markGroupMsgDeliveredForCallsign(
int msgId, QString callsign);
1058 bool markMsgDelivered(
int mid,
Message msg);
1059 QStringList parseRelayPathCallsigns(QString from, QString text);
1060 void processSpots();
1061 void processTxQueue();
1062 void displayActivity(
bool force =
false);
1063 void displayBandActivity();
1064 void displayCallActivity();
1065 void enable_DXCC_entity(
bool on);
1066 void setRig(Frequency = 0);
1067 QDateTime nextTransmitCycle();
1068 void statusUpdate();
1069 void on_the_minute();
1071 void add_child_to_event_filter(QObject *);
1072 void remove_child_from_event_filter(QObject *);
1073 void setup_status_bar();
1074 QString columnLabel(QString defaultLabel);
1075 void ensureMessageDock();
1077 void resetIdleTimer();
1078 void incrementIdleTimer();
1079 void tx_watchdog(
bool triggered);
1080 void write_frequency_entry(QString
const &file_name);
1081 void write_transmit_entry(QString
const &file_name);