186 friend class WSJTXMessageMapper;
190 struct CommandDetail;
193 using Frequency = Radio::Frequency;
194 using FrequencyDelta = Radio::FrequencyDelta;
195 using Mode = Modes::Mode;
198 QDir
const &temp_directory,
bool multiple,
203 struct SortByReverse {
218 bool m_stopTxButtonIsLongterm;
219 bool m_hbButtonIsLongterm;
220 bool m_cqButtonIsLongterm;
223 void showSoundInError(
const QString &errorMsg);
224 void showSoundOutError(
const QString &errorMsg);
225 void showStatusMessage(
const QString &statusMsg);
234 void qsy(
int hzDelta);
235 void onDriftChanged(qint64 new_drift_ms);
236 void setFreqOffsetForRestore(
int freq,
bool shouldRestore);
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#if defined(Q_OS_MACOS)
672 Styles::OffsetSliderWidget *freqOffsetWidget =
nullptr;
673 int m_sliderFreqBeforeHB = 0;
680 QTimer pttReleaseTimer;
682 QTimer tuneButtonTimer;
683 QTimer tuneATU_Timer;
702 QDateTime cqTimestamp;
703 QDateTime ackTimestamp;
704 QDateTime utcTimestamp;
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;
908 QMap<QString, QMap<QString, CallDetail>>
909 m_callActivityBandCache;
910 QMap<QString, QMap<int, QList<ActivityDetail>>>
911 m_bandActivityBandCache;
912 QMap<QString, QString> m_rxTextBandCache;
913 QMap<QString, QMap<QString, QSet<QString>>>
914 m_heardGraphOutgoingBandCache;
915 QMap<QString, QMap<QString, QSet<QString>>>
916 m_heardGraphIncomingBandCache;
919 struct PendingConfirmation {
927 int m_nextConfirmId = 0;
928 QMap<int, PendingConfirmation> m_pendingConfirmations;
930 QMap<QString, QDateTime>
936 QHash<QString, QDateTime> m_aprsRelayDedupCache;
937 QSet<QString> m_callSeenHeartbeat;
939 bool m_shouldRestoreFreq;
941 Frequency m_bandHoppedFreq;
951 QDateTime m_dateTimeQSOOn;
952 QDateTime m_dateTimeLastTX;
955 unsigned m_msAudioOutputBuffered;
956 unsigned m_framesAudioInputBuffered;
957 QThread::Priority m_audioThreadPriority;
958 QThread::Priority m_notificationAudioThreadPriority;
959 QThread::Priority m_decoderThreadPriority;
960 QThread::Priority m_networkThreadPriority;
963 bool m_generateAudioWhenPttConfirmedByTX;
967 bool m_block_pwr_tooltip;
969 Frequency m_lastMonitoredFrequency;
979 QVariantHash m_pwrBandTxMemory;
982 QByteArray m_geometryNoControls;
986 void set_application_font(QFont
const &);
987 void writeSettings();
988 void createStatusBar();
989 void statusChanged();
990 void rigFailure(QString
const &reason);
994 void spotReport(
int submode,
int dial,
int offset,
int snr,
995 QString
const &callsign, QString
const &grid);
996 void spotCmd(CommandDetail
const &cmd);
997 void spotAprsCmd(CommandDetail
const &cmd);
998 void pskLogReport(QString
const &mode,
int dial,
int offset,
int snr,
999 QString
const &callsign, QString
const &grid,
1000 QDateTime
const &utcTimestamp);
1001 void spotAprsGrid(
int dial,
int offset,
int snr, QString callsign,
1003 Radio::Frequency dialFrequency();
1004 void setSubmode(
int submode);
1005 void updateCurrentBand();
1006 void displayDialFrequency();
1007 void transmitDisplay(
bool);
1008 void postDecode(
bool is_new, QString
const &message);
1009 void displayTransmit();
1010 void updateModeButtonText();
1011 void updateButtonDisplay();
1012 void updateTextDisplay();
1013 void updateTextWordCheckerDisplay();
1014 void updateTextStatsDisplay(QString text,
int count);
1015 void updateTxButtonDisplay();
1016 bool isMyCallIncluded(QString
const &text);
1017 bool isAllCallIncluded(QString
const &text);
1018 bool isGroupCallIncluded(
const QString &text);
1019 QString callsignSelected(
bool useInputText =
false);
1020 void callsignSelectedChanged(QString old, QString current);
1021 bool isRecentOffset(
int submode,
int offset);
1022 void markOffsetRecent(
int offset);
1023 bool isDirectedOffset(
int offset,
bool *pIsAllCall);
1024 void markOffsetDirected(
int offset,
bool isAllCall);
1025 void clearOffsetDirected(
int offset);
1026 void processActivity(
bool force =
false);
1027 void resetTimeDeltaAverage();
1028 void processRxActivity();
1029 void processIdleActivity();
1030 void processCompoundActivity();
1031 void processBufferedActivity();
1032 void processCommandActivity();
1033 QString inboxPath();
1034 void refreshInboxCounts();
1035 bool hasMessageHistory(QString call);
1036 int addCommandToMyInbox(CommandDetail d);
1037 int addCommandToStorage(QString type, CommandDetail d);
1038 int getNextMessageIdForCallsign(QString callsign);
1039 int getLookaheadMessageIdForCallsign(QString callsign,
int afterMsgId);
1040 int getNextGroupMessageIdForCallsign(QString group_name, QString callsign);
1041 int getLookaheadGroupMessageIdForCallsign(QString group_name,
1042 QString callsign,
int afterMsgId);
1043 int countUnreadForCallsign(
const QString &callsign);
1044 int countGroupUnreadForCallsign(
const QString &group_name,
1045 const QString &callsign);
1046 bool markGroupMsgDeliveredForCallsign(
int msgId, QString callsign);
1047 bool markMsgDelivered(
int mid,
Message msg);
1048 QStringList parseRelayPathCallsigns(QString from, QString text);
1049 void processSpots();
1050 void processTxQueue();
1051 void displayActivity(
bool force =
false);
1052 void displayBandActivity();
1053 void displayCallActivity();
1054 void enable_DXCC_entity(
bool on);
1055 void setRig(Frequency = 0);
1056 QDateTime nextTransmitCycle();
1057 void statusUpdate();
1058 void on_the_minute();
1060 void add_child_to_event_filter(QObject *);
1061 void remove_child_from_event_filter(QObject *);
1062 void setup_status_bar();
1063 QString columnLabel(QString defaultLabel);
1064 void ensureMessageDock();
1066 void resetIdleTimer();
1067 void incrementIdleTimer();
1068 void tx_watchdog(
bool triggered);
1069 void write_frequency_entry(QString
const &file_name);
1070 void write_transmit_entry(QString
const &file_name);