192 friend class WSJTXMessageMapper;
196 struct CommandDetail;
199 using Frequency = Radio::Frequency;
200 using FrequencyDelta = Radio::FrequencyDelta;
201 using Mode = Modes::Mode;
204 QDir
const &temp_directory,
bool multiple,
209 struct SortByReverse {
224 bool m_stopTxButtonIsLongterm;
225 bool m_hbButtonIsLongterm;
226 bool m_cqButtonIsLongterm;
229 void showSoundInError(
const QString &errorMsg);
230 void showSoundOutError(
const QString &errorMsg);
231 void showStatusMessage(
const QString &statusMsg);
240 void qsy(
int hzDelta);
241 void onDriftChanged(qint64 new_drift_ms);
242 bool tryRestoreFreqOffset();
243 void changeFreq(
int);
245 bool hasExistingMessageBufferToMe(
int *pOffset);
246 bool hasExistingMessageBuffer(
int submode,
int offset,
bool drift,
248 bool hasClosedExistingMessageBuffer(
int offset);
249 void logCallActivity(CallDetail d,
bool spot =
true);
250 void logHeardGraph(QString from, QString to);
251 QString lookupCallInCompoundCache(QString
const &call);
252 void cacheActivity(QString key);
253 void restoreActivity(QString key);
254 void clearActivity();
255 void clearBandActivity();
256 void clearRXActivity();
257 void clearCallActivity();
258 void createGroupCallsignTableRows(QTableWidget *table,
259 const QString &selectedCall,
260 bool &showIconColumn);
261 void displayTextForFreq(QString text,
int freq, QDateTime date,
bool isTx,
262 bool isNewLine,
bool isLast);
263 void writeNoticeTextToUI(QDateTime date, QString text);
264 int writeMessageTextToUI(QDateTime date, QString text,
int freq,
bool isTx,
266 bool isMessageQueuedForTransmit();
267 bool isInDecodeDelayThreshold(
int seconds);
268 void prependMessageText(QString text);
269 void addMessageText(QString text,
bool clear =
false,
270 bool selectFirstPlaceholder =
false);
272 int offset, Callback c);
273 void enqueueMessage(
int priority, QString message,
int offset, Callback c);
275 void resetMessageUI();
276 void restoreMessage();
277 void initializeDummyData();
278 void initializeGroupMessage();
279 bool ensureCallsignSet(
bool alert =
true);
280 bool ensureKeyNotStuck(QString
const &text);
281 bool ensureNotIdle();
282 bool ensureCanTransmit();
283 bool ensureCreateMessageReady(
const QString &text);
284 QString createMessage(QString
const &text,
bool *pDisableTypeahead);
285 QString appendMessage(QString
const &text,
bool isData,
286 bool *pDisableTypeahead);
287 QString createMessageTransmitQueue(QString
const &text,
bool reset,
288 bool isData,
bool *pDisableTypeahead);
290 QPair<QString, int> popMessageFrame();
291 void tryNotify(
const QString &key);
294 void updateCQButtonDisplay();
295 void updateHBButtonDisplay();
298 void keyPressEvent(QKeyEvent *)
override;
299 void closeEvent(QCloseEvent *)
override;
300 void childEvent(QChildEvent *)
override;
301 bool eventFilter(QObject *, QEvent *)
override;
304 void initialize_fonts();
305 void on_menuModeJS8_aboutToShow();
306 void on_menuControl_aboutToShow();
307 void on_actionCheck_for_Updates_triggered();
308 void on_actionEnable_Monitor_RX_toggled(
bool checked);
309 void on_actionEnable_Transmitter_TX_toggled(
bool checked);
310 void on_actionEnable_Reporting_SPOT_toggled(
bool checked);
311 void on_actionEnable_Tuning_Tone_TUNE_toggled(
bool checked);
312 void on_menuWindow_aboutToShow();
313 void on_actionFocus_Message_Receive_Area_triggered();
314 void on_actionFocus_Message_Reply_Area_triggered();
315 void on_actionFocus_Band_Activity_Table_triggered();
316 void on_actionFocus_Call_Activity_Table_triggered();
317 void on_actionClear_All_Activity_triggered();
318 void on_actionClear_Band_Activity_triggered();
319 void on_actionClear_RX_Activity_triggered();
320 void on_actionClear_Call_Activity_triggered();
321 void on_actionSetOffset_triggered();
322 void on_actionShow_Fullscreen_triggered(
bool checked);
323 void on_actionShow_Statusbar_triggered(
bool checked);
324 void on_actionShow_Frequency_Clock_triggered(
bool checked);
325 void on_actionShow_Band_Activity_triggered(
bool checked);
326 void on_actionShow_Band_Heartbeats_and_ACKs_triggered(
bool checked);
327 void on_actionShow_Call_Activity_triggered(
bool checked);
328 void on_actionShow_Waterfall_triggered(
bool checked);
329 void on_actionShow_Waterfall_Controls_triggered(
bool checked);
330 void on_actionShow_Waterfall_Time_Drift_Controls_triggered(
bool checked);
331 void on_actionReset_Window_Sizes_triggered();
332 void on_actionSettings_triggered();
333 void openSettings(
int tab = 0);
335 void prepareSpotting();
336 void on_spotButton_clicked(
bool checked);
337 void on_monitorButton_clicked(
bool);
338 void on_actionAbout_triggered();
339 void resetPushButtonToggleText(QPushButton *btn);
340 void on_stopTxButton_clicked();
341 void on_dialFreqUpButton_clicked();
342 void on_dialFreqDownButton_clicked();
343 void on_actionAdd_Log_Entry_triggered();
344 void on_actionOpen_log_directory_triggered();
345 void on_actionCopyright_Notice_triggered();
346 void on_actionUser_Guide_triggered();
347 bool decode(qint32 k);
348 bool isDecodeReady(
int submode, qint32 k, qint32 k0,
349 qint32 *pCurrentDecodeStart, qint32 *pNextDecodeStart,
350 qint32 *pStart, qint32 *pSz, qint32 *pCycle);
351 bool decodeEnqueueReady(qint32 k, qint32 k0);
352 bool decodeEnqueueReadyExperiment(qint32 k, qint32 k0);
353 bool decodeProcessQueue(qint32 *pSubmode);
355 void decodeBusy(
bool b);
357 void on_startTxButton_toggled(
bool checked);
358 void toggleTx(
bool start);
359 void on_logQSOButton_clicked();
360 void on_actionModeJS8HB_toggled(
bool checked);
361 void on_actionModeJS8Normal_triggered();
362 void on_actionModeJS8Fast_triggered();
363 void on_actionModeJS8Turbo_triggered();
364 void on_actionModeJS8Slow_triggered();
365 void on_actionModeJS8Ultra_triggered();
366 void on_actionHeartbeatAcknowledgements_toggled(
bool checked);
367 void on_actionModeMultiDecoder_toggled(
bool checked);
368 void on_actionModeAutoreply_toggled(
bool checked);
369 bool canCurrentModeSendHeartbeat()
const;
370 void prepareMonitorControls();
371 void prepareHeartbeatMode(
bool enabled);
373 void on_actionErase_ALL_TXT_triggered();
374 void on_actionErase_js8call_log_adi_triggered();
378 void buildFrequencyMenu(QMenu *menu);
379 void buildHeartbeatMenu(QMenu *menu);
380 void buildCQMenu(QMenu *menu);
381 void buildRepeatMenu(QMenu *menu, QPushButton *button,
bool isLowInterval,
384 void sendHeartbeatAck(QString to,
int snr, QString extra);
385 void on_hbMacroButton_toggled(
bool checked);
386 void on_hbMacroButton_clicked();
387 void sendCQ(
bool repeat =
false);
388 void on_cqMacroButton_toggled(
bool checked);
389 void on_cqMacroButton_clicked();
390 void on_replyMacroButton_clicked();
391 void on_snrMacroButton_clicked();
392 void on_infoMacroButton_clicked();
393 void on_statusMacroButton_clicked();
394 void setShowColumn(QString tableKey, QString columnKey,
bool value);
395 bool showColumn(QString tableKey, QString columnKey,
bool default_ =
true);
396 void buildShowColumnsMenu(QMenu *menu, QString tableKey);
397 void setSortBy(QString key, QString value);
398 QString getSortBy(QString
const &key, QString
const &defaultValue)
const;
399 SortByReverse getSortByReverse(QString
const &key,
400 QString
const &defaultValue)
const;
401 void buildSortByMenu(QMenu *menu, QString key, QString defaultValue,
402 QList<QPair<QString, QString>> values);
403 void buildBandActivitySortByMenu(QMenu *menu);
404 void buildCallActivitySortByMenu(QMenu *menu);
405 void buildQueryMenu(QMenu *, QString callsign);
406 QMap<QString, QString> buildMacroValues();
407 void buildColumnLabelMap();
408 void buildSuggestionsMenu(QMenu *menu, QTextEdit *edit,
409 const QPoint &point);
410 void buildSavedMessagesMenu(QMenu *menu);
411 void buildRelayMenu(QMenu *menu);
412 QAction *buildRelayAction(QString call);
413 void buildEditMenu(QMenu *, QTextEdit *);
414 void on_queryButton_pressed();
415 void on_macrosMacroButton_pressed();
416 void on_deselectButton_pressed();
417 void on_tableWidgetRXAll_cellClicked(
int row,
int col);
418 void on_tableWidgetRXAll_cellDoubleClicked(
int row,
int col);
419 QString generateCallDetail(QString selectedCall);
420 void on_tableWidgetCalls_cellClicked(
int row,
int col);
421 void on_tableWidgetCalls_cellDoubleClicked(
int row,
int col);
424 bool *pDisableTypeahead);
425 bool prepareNextMessageFrame();
426 bool isFreqOffsetFree(
int f,
int bw);
427 int findFreeFreqOffset(
int fmin,
int fmax,
int bw);
428 void setDrift(
int n);
429 void on_tuneButton_clicked(
bool);
430 void acceptQSO(QDateTime
const &, QString
const &call, QString
const &grid,
431 Frequency dial_freq, QString
const &mode,
432 QString
const &submode, QString
const &rpt_sent,
433 QString
const &rpt_received, QString
const &comments,
434 QString
const &name, QDateTime
const &QSO_date_on,
435 QString
const &operator_call, QString
const &my_call,
436 QString
const &my_grid, QByteArray
const &
ADIF,
437 QVariantMap
const &additionalFields);
438 void on_readFreq_clicked();
439 void on_outAttenuation_valueChanged(
int);
442 void handle_transceiver_failure(QString
const &reason);
448 void auto_tx_mode(
bool);
449 void on_monitorButton_toggled(
bool checked);
450 void on_monitorTxButton_toggled(
bool checked);
451 void on_tuneButton_toggled(
bool checked);
452 void on_spotButton_toggled(
bool checked);
454 void emitPTT(
bool on);
456 void udpNetworkMessage(
Message const &message);
457 void tcpNetworkMessage(
Message const &message);
458 void networkMessage(
Message const &message);
459 bool canSendNetworkMessage();
460 void sendNetworkMessage(QString
const &type, QString
const &message);
461 void sendNetworkMessage(QString
const &type, QString
const &message,
462 const QVariantMap ¶ms);
463 void pskReporterError(QString
const &);
465 void checkVersion(
bool alertOnUpToDate);
466 void checkStartupWarnings();
467 void clearCallsignSelected();
468 void refreshTextDisplay();
473 Q_SIGNAL
void apiSetMaxConnections(
int n);
474 Q_SIGNAL
void apiSetServer(QString host, quint16 port);
475 Q_SIGNAL
void apiStartServer();
476 Q_SIGNAL
void apiStopServer();
478 Q_SIGNAL
void aprsClientEnqueueSpot(QString by_call, QString from_call,
479 QString grid, QString comment);
480 Q_SIGNAL
void aprsClientEnqueueThirdParty(QString by_call,
481 QString from_call, QString text);
488 Q_SIGNAL
void aprsClientEnqueueAck(QString from_call, QString to_call,
490 Q_SIGNAL
void aprsClientSetSkipPercent(
float skipPercent);
491 Q_SIGNAL
void aprsClientSetIncomingRelayEnabled(
bool enabled);
492 Q_SIGNAL
void aprsClientSetServer(QString host, quint16 port);
493 Q_SIGNAL
void aprsClientSetPaused(
bool paused);
494 Q_SIGNAL
void aprsClientSetLocalStation(QString mycall, QString passcode);
495 Q_SIGNAL
void aprsClientSendReports();
497 Q_SIGNAL
void pskReporterSendReport(
bool);
498 Q_SIGNAL
void pskReporterSetLocalStation(QString, QString, QString);
499 Q_SIGNAL
void pskReporterAddRemoteStation(QString, QString,
500 Radio::Frequency, QString,
int,
503 Q_SIGNAL
void spotClientSetLocalStation(QString, QString, QString);
504 Q_SIGNAL
void spotClientEnqueueCmd(QString, QString, QString, QString,
505 QString, QString, QString,
int,
int,
int,
507 Q_SIGNAL
void spotClientEnqueueSpot(QString, QString,
int,
int,
int,
int);
509 Q_SIGNAL
void decodedLineReady(QByteArray t);
510 Q_SIGNAL
void playNotification(
const QString &name);
511 Q_SIGNAL
void initializeNotificationAudioOutputStream(
const QAudioDevice &,
513 Q_SIGNAL
void initializeAudioOutputStream(QAudioDevice,
unsigned channels,
514 unsigned msBuffered)
const;
515 Q_SIGNAL
void stopAudioOutputStream()
const;
516 Q_SIGNAL
void startAudioInputStream(QAudioDevice
const &,
518 AudioDevice::Channel)
const;
519 Q_SIGNAL
void suspendAudioInputStream()
const;
520 Q_SIGNAL
void resumeAudioInputStream()
const;
521 Q_SIGNAL
void startDetector(AudioDevice::Channel)
const;
522 Q_SIGNAL
void FFTSize(
unsigned)
const;
523 Q_SIGNAL
void detectorClose()
const;
524 Q_SIGNAL
void finished()
const;
525 Q_SIGNAL
void transmitFrequency(
double)
const;
526 Q_SIGNAL
void endTransmitMessage(
bool quick =
false)
const;
527 Q_SIGNAL
void tune(
bool =
true)
const;
528 Q_SIGNAL
void sendMessage(
double frequency,
int submode,
double txDelay,
530 Q_SIGNAL
void outAttenuationChanged(qreal)
const;
531 Q_SIGNAL
void toggleShorthand()
const;
532 Q_SIGNAL
void submodeChanged(Varicode::SubmodeType)
const;
534 Q_SIGNAL
void messageAdded(
int)
const;
537 QByteArray wisdomFileName()
const;
539 void writeAllTxt(QStringView message);
540 void writeMsgTxt(QStringView message,
int snr,
int offset);
542 void currentTextChanged();
543 void tableSelectionChanged(QItemSelection
const &, QItemSelection
const &);
545 void applyPillSettings();
547 int freq()
const {
return m_freq; }
550 void refuseToSendIn30mWSPRBand();
552 void prepareSending(qint64 nowMS);
555 void updateClockUI(
const QDateTime &);
560 bool presentlyWantHBReplies();
562 QString m_nextFreeTextMsg;
566 [[maybe_unused]]
bool m_multiple;
568 QPushButton *m_configurations_button;
569 QSettings *m_settings;
570 bool m_settings_read;
571 QScopedPointer<Ui::UI_Constructor> ui;
577 QDockWidget* messageDock_ =
nullptr;
579 QDialog* messageFloatDialog_ =
nullptr;
581 enum class MessageHost { Dock, Dialog };
582 MessageHost messageHost_ = MessageHost::Dock;
584 QScopedPointer<WideGraph> m_wideGraph;
585 QScopedPointer<LogQSO> m_logDlg;
586 QScopedPointer<HelpTextWindow> m_shortcuts;
587 QScopedPointer<HelpTextWindow> m_prefixes;
588 QScopedPointer<HelpTextWindow> m_mouseCmnds;
591 Frequency m_lastDialFreq;
608 QThread m_networkThread;
609 QThread m_audioThread;
610 QThread m_notificationAudioThread;
613 qint64 m_secBandChanged;
615 Frequency m_freqNominal;
616 Frequency m_freqTxNominal;
628 qint32 m_idleMinutes;
635 QString m_decoderBusyBand;
637 m_lastDecodeStartMap;
639 m_lastDecodeCycleMap;
640 Radio::Frequency m_decoderBusyFreq;
641 QDateTime m_decoderBusyStartTime;
645 int m_currentMessageType;
646 QString m_currentMessage;
647 int m_currentMessageBits;
648 int m_lastMessageType;
649 QString m_lastMessageSent;
666 QLabel tx_status_label;
669 QLabel frequency_label;
670 QLabel auto_reply_label;
671 QLabel last_tx_label;
672 QLabel auto_tx_label;
673 QProgressBar progressBar;
676 int m_sliderFreqBeforeHB = 0;
682 QTimer pttReleaseTimer;
684 QTimer tuneButtonTimer;
685 QTimer tuneATU_Timer;
704 QDateTime cqTimestamp;
705 QDateTime ackTimestamp;
706 QDateTime utcTimestamp;
713 struct CommandDetail {
721 QDateTime utcTimestamp;
732 struct ActivityDetail {
733 bool isLowConfidence;
741 QDateTime utcTimestamp;
748 struct MessageBuffer {
750 QQueue<CallDetail> compound;
754 QString m_prevSelectedCallsign;
755 int m_bandActivityWidth;
756 int m_callActivityWidth;
757 int m_textActivityWidth;
758 int m_waterfallHeight;
759 bool m_bandActivityWasVisible;
761 bool m_rxDisplayDirty;
762 int m_txFrameCountEstimate;
764 int m_txFrameCountSent;
765 QTimer m_txTextDirtyDebounce;
767 QString m_txTextDirtyLastText;
768 QString m_txTextDirtyLastSelectedCall;
769 QString m_lastTxMessage;
770 QString m_totalTxMessage;
773 QString since(QDateTime
const &time) {
774 auto const delta = time.secsTo(DriftingDateTime::currentDateTimeUtc());
776 if (delta >= 60 * 60 * 24)
777 return QString(
"%1d").arg(delta / (60 * 60 * 24));
778 else if (delta >= 60 * 60)
779 return QString(
"%1h").arg(delta / (60 * 60));
780 else if (delta >= 60)
781 return QString(
"%1m").arg(delta / (60));
782 else if (delta >= 15)
783 return QString(
"%1s").arg(delta - (delta % 15));
785 return QString(
"now");
788 QDateTime m_lastTxStartTime;
789 QDateTime m_lastTxStopTime;
791 qint32 m_driftMsMMA_N;
794 auto replaceMacros(QString
const &text,
795 QMap<QString, QString>
const &values,
bool const prune) {
796 QString output = text;
798 for (
auto const [key, value] : values.asKeyValueRange()) {
799 output = output.replace(key, value.toUpper());
802 return prune ? output.replace(QRegularExpression(
"[<](?:[^>]+)[>]"),
"")
806 QList<int> generateOffsets(
int minOffset,
int maxOffset) {
811 for (
int i = minOffset; i <= maxOffset; i++) {
819 PriorityNormal = 100,
823 struct PrioritizedMessage {
830 friend bool operator<(PrioritizedMessage
const &a,
831 PrioritizedMessage
const &b) {
832 if (a.priority < b.priority) {
835 return a.date < b.date;
839 struct CachedDirectedType {
844 struct DecodeParams {
850 struct FrameCacheKey {
854 FrameCacheKey(
int submode, QString frame)
855 : submode(submode), frame(std::move(frame)) {}
857 bool operator==(FrameCacheKey
const &)
const noexcept =
default;
860 std::size_t operator()(FrameCacheKey
const &key)
const noexcept {
861 std::size_t
const h1 = std::hash<int>{}(key.submode);
862 std::size_t
const h2 = qHash(key.frame);
863 return h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
869 std::unordered_map<FrameCacheKey, QDateTime, FrameCacheKey::Hash>;
870 using BandActivity = QMap<int, QList<ActivityDetail>>;
872 QQueue<DecodeParams> m_decoderQueue;
873 FrameCache m_messageDupeCache;
874 QVariantMap m_showColumnsCache;
875 QVariantMap m_sortCache;
877 QQueue<QPair<QString, int>> m_txFrameQueue;
878 QQueue<ActivityDetail> m_rxActivityQueue;
879 QQueue<CommandDetail>
883 QMap<QString, QString>
885 QCache<QString, QDateTime> m_txAllcallCommandCache;
886 QCache<int, QDateTime> m_rxRecentCache;
887 QCache<int, CachedDirectedType>
889 QCache<QString, int> m_rxCallCache;
890 QMap<int, int> m_rxFrameBlockNumbers;
891 BandActivity m_bandActivity;
892 QMap<int, MessageBuffer> m_messageBuffer;
893 int m_lastClosedMessageBufferOffset;
894 QMap<QString, CallDetail>
897 QMap<int, QString> m_origRxHeaderLabelMap;
898 QMap<int, QString> m_origCallActivityHeaderLabelMap;
899 QMap<QString, QString> m_columnLabelMap;
901 QMap<QString, QSet<QString>>
902 m_heardGraphOutgoing;
904 QMap<QString, QSet<QString>>
905 m_heardGraphIncoming;
908 QMap<QString, int> m_rxInboxCountCache;
910 QMap<QString, QMap<QString, CallDetail>>
911 m_callActivityBandCache;
912 QMap<QString, QMap<int, QList<ActivityDetail>>>
913 m_bandActivityBandCache;
914 QMap<QString, QString> m_rxTextBandCache;
915 QMap<QString, QMap<QString, QSet<QString>>>
916 m_heardGraphOutgoingBandCache;
917 QMap<QString, QMap<QString, QSet<QString>>>
918 m_heardGraphIncomingBandCache;
921 struct PendingConfirmation {
930 int m_nextConfirmId = 0;
931 QMap<int, PendingConfirmation> m_pendingConfirmations;
933 QMap<QString, QDateTime>
939 QHash<QString, QDateTime> m_aprsRelayDedupCache;
940 QSet<QString> m_callSeenHeartbeat;
942 Frequency m_bandHoppedFreq;
952 QDateTime m_dateTimeQSOOn;
953 QDateTime m_dateTimeLastTX;
955 QSet<int> m_rxBlockedOffsets;
958 unsigned m_msAudioOutputBuffered;
959 unsigned m_framesAudioInputBuffered;
960 QThread::Priority m_audioThreadPriority;
961 QThread::Priority m_notificationAudioThreadPriority;
962 QThread::Priority m_decoderThreadPriority;
963 QThread::Priority m_networkThreadPriority;
966 bool m_generateAudioWhenPttConfirmedByTX;
970 bool m_block_pwr_tooltip;
972 Frequency m_lastMonitoredFrequency;
982 QVariantHash m_pwrBandTxMemory;
985 QByteArray m_geometryNoControls;
989 void set_application_font(QFont
const &);
990 void writeSettings();
991 void createStatusBar();
992 void statusChanged();
993 void rigFailure(QString
const &reason);
997 void spotReport(
int submode,
int dial,
int offset,
int snr,
998 QString
const &callsign, QString
const &grid);
999 void spotCmd(CommandDetail
const &cmd);
1000 void spotAprsCmd(CommandDetail
const &cmd);
1001 void pskLogReport(QString
const &mode,
int dial,
int offset,
int snr,
1002 QString
const &callsign, QString
const &grid,
1003 QDateTime
const &utcTimestamp);
1004 void spotAprsGrid(
int dial,
int offset,
int snr, QString callsign,
1006 Radio::Frequency dialFrequency();
1007 void setSubmode(
int submode);
1008 void updateCurrentBand();
1009 void displayDialFrequency();
1010 void transmitDisplay(
bool);
1011 void postDecode(
bool is_new, QString
const &message);
1012 void displayTransmit();
1013 void updateModeButtonText();
1014 void updateButtonDisplay();
1015 void updateTextDisplay();
1016 void updateTextWordCheckerDisplay();
1017 void updateTextStatsDisplay(QString text,
int count);
1018 void updateTxButtonDisplay();
1019 bool isMyCallIncluded(QString
const &text);
1020 bool isAllCallIncluded(QString
const &text);
1021 bool isGroupCallIncluded(
const QString &text);
1022 QString callsignSelected(
bool useInputText =
false);
1023 void callsignSelectedChanged(QString old, QString current);
1024 bool isRecentOffset(
int submode,
int offset);
1025 void markOffsetRecent(
int offset);
1026 bool isDirectedOffset(
int offset,
bool *pIsAllCall);
1027 void markOffsetDirected(
int offset,
bool isAllCall);
1028 void clearOffsetDirected(
int offset);
1029 void processActivity(
bool force =
false);
1030 void resetTimeDeltaAverage();
1031 void processRxActivity();
1032 void processIdleActivity();
1033 void processCompoundActivity();
1034 void processBufferedActivity();
1035 void processCommandActivity();
1036 void processHeartbeatRateLimit(
const QString &callsign);
1037 QString inboxPath();
1038 QString hbBlockingPath()
const;
1039 void refreshInboxCounts();
1040 bool hasMessageHistory(QString call);
1041 int addCommandToMyInbox(CommandDetail d);
1042 int addCommandToStorage(QString type, CommandDetail d);
1043 int getNextMessageIdForCallsign(QString callsign);
1044 int getLookaheadMessageIdForCallsign(QString callsign,
int afterMsgId);
1045 int getNextGroupMessageIdForCallsign(QString group_name, QString callsign);
1046 int getLookaheadGroupMessageIdForCallsign(QString group_name,
1047 QString callsign,
int afterMsgId);
1048 int countUnreadForCallsign(
const QString &callsign);
1049 int countGroupUnreadForCallsign(
const QString &group_name,
1050 const QString &callsign);
1051 bool markGroupMsgDeliveredForCallsign(
int msgId, QString callsign);
1052 bool markMsgDelivered(
int mid,
Message msg);
1053 QStringList parseRelayPathCallsigns(QString from, QString text);
1054 void processSpots();
1055 void processTxQueue();
1056 void displayActivity(
bool force =
false);
1057 void displayBandActivity();
1058 void displayCallActivity();
1059 void enable_DXCC_entity(
bool on);
1060 void setRig(Frequency = 0);
1061 QDateTime nextTransmitCycle();
1062 void statusUpdate();
1063 void on_the_minute();
1065 void add_child_to_event_filter(QObject *);
1066 void remove_child_from_event_filter(QObject *);
1067 void setup_status_bar();
1068 QString columnLabel(QString defaultLabel);
1069 void ensureMessageDock();
1071 void resetIdleTimer();
1072 void incrementIdleTimer();
1073 void tx_watchdog(
bool triggered);
1074 void write_frequency_entry(QString
const &file_name);
1075 void write_transmit_entry(QString
const &file_name);