184 friend class WSJTXMessageMapper;
188 struct CommandDetail;
191 using Frequency = Radio::Frequency;
192 using FrequencyDelta = Radio::FrequencyDelta;
193 using Mode = Modes::Mode;
196 QDir
const &temp_directory,
bool multiple,
201 struct SortByReverse {
216 bool m_stopTxButtonIsLongterm;
217 bool m_hbButtonIsLongterm;
218 bool m_cqButtonIsLongterm;
221 void showSoundInError(
const QString &errorMsg);
222 void showSoundOutError(
const QString &errorMsg);
223 void showStatusMessage(
const QString &statusMsg);
232 void qsy(
int hzDelta);
233 void onDriftChanged(qint64 new_drift_ms);
234 void setFreqOffsetForRestore(
int freq,
bool shouldRestore);
235 bool tryRestoreFreqOffset();
236 void changeFreq(
int);
238 bool hasExistingMessageBufferToMe(
int *pOffset);
239 bool hasExistingMessageBuffer(
int submode,
int offset,
bool drift,
241 bool hasClosedExistingMessageBuffer(
int offset);
242 void logCallActivity(CallDetail d,
bool spot =
true);
243 void logHeardGraph(QString from, QString to);
244 QString lookupCallInCompoundCache(QString
const &call);
245 void cacheActivity(QString key);
246 void restoreActivity(QString key);
247 void clearActivity();
248 void clearBandActivity();
249 void clearRXActivity();
250 void clearCallActivity();
251 void createGroupCallsignTableRows(QTableWidget *table,
252 const QString &selectedCall,
253 bool &showIconColumn);
254 void displayTextForFreq(QString text,
int freq, QDateTime date,
bool isTx,
255 bool isNewLine,
bool isLast);
256 void writeNoticeTextToUI(QDateTime date, QString text);
257 int writeMessageTextToUI(QDateTime date, QString text,
int freq,
bool isTx,
259 bool isMessageQueuedForTransmit();
260 bool isInDecodeDelayThreshold(
int seconds);
261 void prependMessageText(QString text);
262 void addMessageText(QString text,
bool clear =
false,
263 bool selectFirstPlaceholder =
false);
264 void confirmThenEnqueueMessage(
int timeout,
int priority, QString message,
265 int offset, Callback c);
266 void enqueueMessage(
int priority, QString message,
int offset, Callback c);
268 void resetMessageUI();
269 void restoreMessage();
270 void initializeDummyData();
271 void initializeGroupMessage();
272 bool ensureCallsignSet(
bool alert =
true);
273 bool ensureKeyNotStuck(QString
const &text);
274 bool ensureNotIdle();
275 bool ensureCanTransmit();
276 bool ensureCreateMessageReady(
const QString &text);
277 QString createMessage(QString
const &text,
bool *pDisableTypeahead);
278 QString appendMessage(QString
const &text,
bool isData,
279 bool *pDisableTypeahead);
280 QString createMessageTransmitQueue(QString
const &text,
bool reset,
281 bool isData,
bool *pDisableTypeahead);
283 QPair<QString, int> popMessageFrame();
284 void tryNotify(
const QString &key);
287 void updateCQButtonDisplay();
288 void updateHBButtonDisplay();
291 void keyPressEvent(QKeyEvent *)
override;
292 void closeEvent(QCloseEvent *)
override;
293 void childEvent(QChildEvent *)
override;
294 bool eventFilter(QObject *, QEvent *)
override;
297 void initialize_fonts();
298 void on_menuModeJS8_aboutToShow();
299 void on_menuControl_aboutToShow();
300 void on_actionCheck_for_Updates_triggered();
301 void on_actionEnable_Monitor_RX_toggled(
bool checked);
302 void on_actionEnable_Transmitter_TX_toggled(
bool checked);
303 void on_actionEnable_Reporting_SPOT_toggled(
bool checked);
304 void on_actionEnable_Tuning_Tone_TUNE_toggled(
bool checked);
305 void on_menuWindow_aboutToShow();
306 void on_actionFocus_Message_Receive_Area_triggered();
307 void on_actionFocus_Message_Reply_Area_triggered();
308 void on_actionFocus_Band_Activity_Table_triggered();
309 void on_actionFocus_Call_Activity_Table_triggered();
310 void on_actionClear_All_Activity_triggered();
311 void on_actionClear_Band_Activity_triggered();
312 void on_actionClear_RX_Activity_triggered();
313 void on_actionClear_Call_Activity_triggered();
314 void on_actionSetOffset_triggered();
315 void on_actionShow_Fullscreen_triggered(
bool checked);
316 void on_actionShow_Statusbar_triggered(
bool checked);
317 void on_actionShow_Frequency_Clock_triggered(
bool checked);
318 void on_actionShow_Band_Activity_triggered(
bool checked);
319 void on_actionShow_Band_Heartbeats_and_ACKs_triggered(
bool checked);
320 void on_actionShow_Call_Activity_triggered(
bool checked);
321 void on_actionShow_Waterfall_triggered(
bool checked);
322 void on_actionShow_Waterfall_Controls_triggered(
bool checked);
323 void on_actionShow_Waterfall_Time_Drift_Controls_triggered(
bool checked);
324 void on_actionReset_Window_Sizes_triggered();
325 void on_actionSettings_triggered();
326 void openSettings(
int tab = 0);
328 void prepareSpotting();
329 void on_spotButton_clicked(
bool checked);
330 void on_monitorButton_clicked(
bool);
331 void on_actionAbout_triggered();
332 void resetPushButtonToggleText(QPushButton *btn);
333 void on_stopTxButton_clicked();
334 void on_dialFreqUpButton_clicked();
335 void on_dialFreqDownButton_clicked();
336 void on_actionAdd_Log_Entry_triggered();
337 void on_actionOpen_log_directory_triggered();
338 void on_actionCopyright_Notice_triggered();
339 void on_actionUser_Guide_triggered();
340 bool decode(qint32 k);
341 bool isDecodeReady(
int submode, qint32 k, qint32 k0,
342 qint32 *pCurrentDecodeStart, qint32 *pNextDecodeStart,
343 qint32 *pStart, qint32 *pSz, qint32 *pCycle);
344 bool decodeEnqueueReady(qint32 k, qint32 k0);
345 bool decodeEnqueueReadyExperiment(qint32 k, qint32 k0);
346 bool decodeProcessQueue(qint32 *pSubmode);
348 void decodeBusy(
bool b);
350 void on_startTxButton_toggled(
bool checked);
351 void toggleTx(
bool start);
352 void on_logQSOButton_clicked();
353 void on_actionModeJS8HB_toggled(
bool checked);
354 void on_actionModeJS8Normal_triggered();
355 void on_actionModeJS8Fast_triggered();
356 void on_actionModeJS8Turbo_triggered();
357 void on_actionModeJS8Slow_triggered();
358 void on_actionModeJS8Ultra_triggered();
359 void on_actionHeartbeatAcknowledgements_toggled(
bool checked);
360 void on_actionModeMultiDecoder_toggled(
bool checked);
361 void on_actionModeAutoreply_toggled(
bool checked);
362 bool canCurrentModeSendHeartbeat()
const;
363 void prepareMonitorControls();
364 void prepareHeartbeatMode(
bool enabled);
366 void on_actionErase_ALL_TXT_triggered();
367 void on_actionErase_js8call_log_adi_triggered();
371 void buildFrequencyMenu(QMenu *menu);
372 void buildHeartbeatMenu(QMenu *menu);
373 void buildCQMenu(QMenu *menu);
374 void buildRepeatMenu(QMenu *menu, QPushButton *button,
bool isLowInterval,
377 void sendHeartbeatAck(QString to,
int snr, QString extra);
378 void on_hbMacroButton_toggled(
bool checked);
379 void on_hbMacroButton_clicked();
380 void sendCQ(
bool repeat =
false);
381 void on_cqMacroButton_toggled(
bool checked);
382 void on_cqMacroButton_clicked();
383 void on_replyMacroButton_clicked();
384 void on_snrMacroButton_clicked();
385 void on_infoMacroButton_clicked();
386 void on_statusMacroButton_clicked();
387 void setShowColumn(QString tableKey, QString columnKey,
bool value);
388 bool showColumn(QString tableKey, QString columnKey,
bool default_ =
true);
389 void buildShowColumnsMenu(QMenu *menu, QString tableKey);
390 void setSortBy(QString key, QString value);
391 QString getSortBy(QString
const &key, QString
const &defaultValue)
const;
392 SortByReverse getSortByReverse(QString
const &key,
393 QString
const &defaultValue)
const;
394 void buildSortByMenu(QMenu *menu, QString key, QString defaultValue,
395 QList<QPair<QString, QString>> values);
396 void buildBandActivitySortByMenu(QMenu *menu);
397 void buildCallActivitySortByMenu(QMenu *menu);
398 void buildQueryMenu(QMenu *, QString callsign);
399 QMap<QString, QString> buildMacroValues();
400 void buildColumnLabelMap();
401 void buildSuggestionsMenu(QMenu *menu, QTextEdit *edit,
402 const QPoint &point);
403 void buildSavedMessagesMenu(QMenu *menu);
404 void buildRelayMenu(QMenu *menu);
405 QAction *buildRelayAction(QString call);
406 void buildEditMenu(QMenu *, QTextEdit *);
407 void on_queryButton_pressed();
408 void on_macrosMacroButton_pressed();
409 void on_deselectButton_pressed();
410 void on_tableWidgetRXAll_cellClicked(
int row,
int col);
411 void on_tableWidgetRXAll_cellDoubleClicked(
int row,
int col);
412 QString generateCallDetail(QString selectedCall);
413 void on_tableWidgetCalls_cellClicked(
int row,
int col);
414 void on_tableWidgetCalls_cellDoubleClicked(
int row,
int col);
417 bool *pDisableTypeahead);
418 bool prepareNextMessageFrame();
419 bool isFreqOffsetFree(
int f,
int bw);
420 int findFreeFreqOffset(
int fmin,
int fmax,
int bw);
421 void setDrift(
int n);
422 void on_tuneButton_clicked(
bool);
423 void acceptQSO(QDateTime
const &, QString
const &call, QString
const &grid,
424 Frequency dial_freq, QString
const &mode,
425 QString
const &submode, QString
const &rpt_sent,
426 QString
const &rpt_received, QString
const &comments,
427 QString
const &name, QDateTime
const &QSO_date_on,
428 QString
const &operator_call, QString
const &my_call,
429 QString
const &my_grid, QByteArray
const &
ADIF,
430 QVariantMap
const &additionalFields);
431 void on_readFreq_clicked();
432 void on_outAttenuation_valueChanged(
int);
435 void handle_transceiver_failure(QString
const &reason);
441 void auto_tx_mode(
bool);
442 void on_monitorButton_toggled(
bool checked);
443 void on_monitorTxButton_toggled(
bool checked);
444 void on_tuneButton_toggled(
bool checked);
445 void on_spotButton_toggled(
bool checked);
447 void emitPTT(
bool on);
449 void udpNetworkMessage(
Message const &message);
450 void tcpNetworkMessage(
Message const &message);
451 void networkMessage(
Message const &message);
452 bool canSendNetworkMessage();
453 void sendNetworkMessage(QString
const &type, QString
const &message);
454 void sendNetworkMessage(QString
const &type, QString
const &message,
455 const QVariantMap ¶ms);
456 void pskReporterError(QString
const &);
458 void checkVersion(
bool alertOnUpToDate);
459 void checkStartupWarnings();
460 void clearCallsignSelected();
461 void refreshTextDisplay();
466 Q_SIGNAL
void apiSetMaxConnections(
int n);
467 Q_SIGNAL
void apiSetServer(QString host, quint16 port);
468 Q_SIGNAL
void apiStartServer();
469 Q_SIGNAL
void apiStopServer();
471 Q_SIGNAL
void aprsClientEnqueueSpot(QString by_call, QString from_call,
472 QString grid, QString comment);
473 Q_SIGNAL
void aprsClientEnqueueThirdParty(QString by_call,
474 QString from_call, QString text);
481 Q_SIGNAL
void aprsClientEnqueueAck(QString from_call, QString to_call,
483 Q_SIGNAL
void aprsClientSetSkipPercent(
float skipPercent);
484 Q_SIGNAL
void aprsClientSetIncomingRelayEnabled(
bool enabled);
485 Q_SIGNAL
void aprsClientSetServer(QString host, quint16 port);
486 Q_SIGNAL
void aprsClientSetPaused(
bool paused);
487 Q_SIGNAL
void aprsClientSetLocalStation(QString mycall, QString passcode);
488 Q_SIGNAL
void aprsClientSendReports();
490 Q_SIGNAL
void pskReporterSendReport(
bool);
491 Q_SIGNAL
void pskReporterSetLocalStation(QString, QString, QString);
492 Q_SIGNAL
void pskReporterAddRemoteStation(QString, QString,
493 Radio::Frequency, QString,
int,
496 Q_SIGNAL
void spotClientSetLocalStation(QString, QString, QString);
497 Q_SIGNAL
void spotClientEnqueueCmd(QString, QString, QString, QString,
498 QString, QString, QString,
int,
int,
int,
500 Q_SIGNAL
void spotClientEnqueueSpot(QString, QString,
int,
int,
int,
int);
502 Q_SIGNAL
void decodedLineReady(QByteArray t);
503 Q_SIGNAL
void playNotification(
const QString &name);
504 Q_SIGNAL
void initializeNotificationAudioOutputStream(
const QAudioDevice &,
506 Q_SIGNAL
void initializeAudioOutputStream(QAudioDevice,
unsigned channels,
507 unsigned msBuffered)
const;
508 Q_SIGNAL
void stopAudioOutputStream()
const;
509 Q_SIGNAL
void startAudioInputStream(QAudioDevice
const &,
511 AudioDevice::Channel)
const;
512 Q_SIGNAL
void suspendAudioInputStream()
const;
513 Q_SIGNAL
void resumeAudioInputStream()
const;
514 Q_SIGNAL
void startDetector(AudioDevice::Channel)
const;
515 Q_SIGNAL
void FFTSize(
unsigned)
const;
516 Q_SIGNAL
void detectorClose()
const;
517 Q_SIGNAL
void finished()
const;
518 Q_SIGNAL
void transmitFrequency(
double)
const;
519 Q_SIGNAL
void endTransmitMessage(
bool quick =
false)
const;
520 Q_SIGNAL
void tune(
bool =
true)
const;
521 Q_SIGNAL
void sendMessage(
double frequency,
int submode,
double txDelay,
523 Q_SIGNAL
void outAttenuationChanged(qreal)
const;
524 Q_SIGNAL
void toggleShorthand()
const;
525 Q_SIGNAL
void submodeChanged(Varicode::SubmodeType)
const;
527 Q_SIGNAL
void messageAdded(
int)
const;
530 QByteArray wisdomFileName()
const;
532 void writeAllTxt(QStringView message);
533 void writeMsgTxt(QStringView message,
int snr,
int offset);
535 void currentTextChanged();
536 void tableSelectionChanged(QItemSelection
const &, QItemSelection
const &);
538 void applyPillSettings();
540 int freq()
const {
return m_freq; }
543 void refuseToSendIn30mWSPRBand();
545 void prepareSending(qint64 nowMS);
548 void updateClockUI(
const QDateTime &);
553 bool presentlyWantHBReplies();
555 QString m_nextFreeTextMsg;
559 [[maybe_unused]]
bool m_multiple;
561 QPushButton *m_configurations_button;
562 QSettings *m_settings;
563 bool m_settings_read;
564 QScopedPointer<Ui::UI_Constructor> ui;
570 QDockWidget* messageDock_ =
nullptr;
572 QDialog* messageFloatDialog_ =
nullptr;
574 enum class MessageHost { Dock, Dialog };
575 MessageHost messageHost_ = MessageHost::Dock;
577 QScopedPointer<WideGraph> m_wideGraph;
578 QScopedPointer<LogQSO> m_logDlg;
579 QScopedPointer<HelpTextWindow> m_shortcuts;
580 QScopedPointer<HelpTextWindow> m_prefixes;
581 QScopedPointer<HelpTextWindow> m_mouseCmnds;
584 Frequency m_lastDialFreq;
601 QThread m_networkThread;
602 QThread m_audioThread;
603 QThread m_notificationAudioThread;
606 qint64 m_secBandChanged;
608 Frequency m_freqNominal;
609 Frequency m_freqTxNominal;
621 qint32 m_idleMinutes;
628 QString m_decoderBusyBand;
630 m_lastDecodeStartMap;
632 m_lastDecodeCycleMap;
633 Radio::Frequency m_decoderBusyFreq;
634 QDateTime m_decoderBusyStartTime;
638 int m_currentMessageType;
639 QString m_currentMessage;
640 int m_currentMessageBits;
641 int m_lastMessageType;
642 QString m_lastMessageSent;
659 QLabel tx_status_label;
662 QLabel last_tx_label;
663 QLabel auto_tx_label;
664 QProgressBar progressBar;
671 QTimer pttReleaseTimer;
673 QTimer tuneButtonTimer;
674 QTimer tuneATU_Timer;
693 QDateTime cqTimestamp;
694 QDateTime ackTimestamp;
695 QDateTime utcTimestamp;
702 struct CommandDetail {
710 QDateTime utcTimestamp;
721 struct ActivityDetail {
722 bool isLowConfidence;
730 QDateTime utcTimestamp;
737 struct MessageBuffer {
739 QQueue<CallDetail> compound;
743 QString m_prevSelectedCallsign;
744 int m_bandActivityWidth;
745 int m_callActivityWidth;
746 int m_textActivityWidth;
747 int m_waterfallHeight;
748 bool m_bandActivityWasVisible;
750 bool m_rxDisplayDirty;
751 int m_txFrameCountEstimate;
753 int m_txFrameCountSent;
754 QTimer m_txTextDirtyDebounce;
756 QString m_txTextDirtyLastText;
757 QString m_txTextDirtyLastSelectedCall;
758 QString m_lastTxMessage;
759 QString m_totalTxMessage;
762 QString since(QDateTime
const &time) {
763 auto const delta = time.secsTo(DriftingDateTime::currentDateTimeUtc());
765 if (delta >= 60 * 60 * 24)
766 return QString(
"%1d").arg(delta / (60 * 60 * 24));
767 else if (delta >= 60 * 60)
768 return QString(
"%1h").arg(delta / (60 * 60));
769 else if (delta >= 60)
770 return QString(
"%1m").arg(delta / (60));
771 else if (delta >= 15)
772 return QString(
"%1s").arg(delta - (delta % 15));
774 return QString(
"now");
777 QDateTime m_lastTxStartTime;
778 QDateTime m_lastTxStopTime;
780 qint32 m_driftMsMMA_N;
783 auto replaceMacros(QString
const &text,
784 QMap<QString, QString>
const &values,
bool const prune) {
785 QString output = text;
787 for (
auto const [key, value] : values.asKeyValueRange()) {
788 output = output.replace(key, value.toUpper());
791 return prune ? output.replace(QRegularExpression(
"[<](?:[^>]+)[>]"),
"")
795 QList<int> generateOffsets(
int minOffset,
int maxOffset) {
800 for (
int i = minOffset; i <= maxOffset; i++) {
808 PriorityNormal = 100,
812 struct PrioritizedMessage {
819 friend bool operator<(PrioritizedMessage
const &a,
820 PrioritizedMessage
const &b) {
821 if (a.priority < b.priority) {
824 return a.date < b.date;
828 struct CachedDirectedType {
833 struct DecodeParams {
839 struct FrameCacheKey {
843 FrameCacheKey(
int submode, QString frame)
844 : submode(submode), frame(std::move(frame)) {}
846 bool operator==(FrameCacheKey
const &)
const noexcept =
default;
849 std::size_t operator()(FrameCacheKey
const &key)
const noexcept {
850 std::size_t
const h1 = std::hash<int>{}(key.submode);
851 std::size_t
const h2 = qHash(key.frame);
852 return h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
858 std::unordered_map<FrameCacheKey, QDateTime, FrameCacheKey::Hash>;
859 using BandActivity = QMap<int, QList<ActivityDetail>>;
861 QQueue<DecodeParams> m_decoderQueue;
862 FrameCache m_messageDupeCache;
863 QVariantMap m_showColumnsCache;
864 QVariantMap m_sortCache;
866 QQueue<QPair<QString, int>> m_txFrameQueue;
867 QQueue<ActivityDetail> m_rxActivityQueue;
868 QQueue<CommandDetail>
872 QMap<QString, QString>
874 QCache<QString, QDateTime> m_txAllcallCommandCache;
875 QCache<int, QDateTime> m_rxRecentCache;
876 QCache<int, CachedDirectedType>
878 QCache<QString, int> m_rxCallCache;
879 QMap<int, int> m_rxFrameBlockNumbers;
880 BandActivity m_bandActivity;
881 QMap<int, MessageBuffer> m_messageBuffer;
882 int m_lastClosedMessageBufferOffset;
883 QMap<QString, CallDetail>
886 QMap<int, QString> m_origRxHeaderLabelMap;
887 QMap<int, QString> m_origCallActivityHeaderLabelMap;
888 QMap<QString, QString> m_columnLabelMap;
890 QMap<QString, QSet<QString>>
891 m_heardGraphOutgoing;
893 QMap<QString, QSet<QString>>
894 m_heardGraphIncoming;
897 QMap<QString, int> m_rxInboxCountCache;
899 QMap<QString, QMap<QString, CallDetail>>
900 m_callActivityBandCache;
901 QMap<QString, QMap<int, QList<ActivityDetail>>>
902 m_bandActivityBandCache;
903 QMap<QString, QString> m_rxTextBandCache;
904 QMap<QString, QMap<QString, QSet<QString>>>
905 m_heardGraphOutgoingBandCache;
906 QMap<QString, QMap<QString, QSet<QString>>>
907 m_heardGraphIncomingBandCache;
910 struct PendingConfirmation {
918 int m_nextConfirmId = 0;
919 QMap<int, PendingConfirmation> m_pendingConfirmations;
921 QMap<QString, QDateTime>
927 QHash<QString, QDateTime> m_aprsRelayDedupCache;
928 QSet<QString> m_callSeenHeartbeat;
930 bool m_shouldRestoreFreq;
932 Frequency m_bandHoppedFreq;
942 QDateTime m_dateTimeQSOOn;
943 QDateTime m_dateTimeLastTX;
946 unsigned m_msAudioOutputBuffered;
947 unsigned m_framesAudioInputBuffered;
948 QThread::Priority m_audioThreadPriority;
949 QThread::Priority m_notificationAudioThreadPriority;
950 QThread::Priority m_decoderThreadPriority;
951 QThread::Priority m_networkThreadPriority;
954 bool m_generateAudioWhenPttConfirmedByTX;
958 bool m_block_pwr_tooltip;
960 Frequency m_lastMonitoredFrequency;
970 QVariantHash m_pwrBandTxMemory;
973 QByteArray m_geometryNoControls;
977 void set_application_font(QFont
const &);
978 void writeSettings();
979 void createStatusBar();
980 void statusChanged();
981 void rigFailure(QString
const &reason);
985 void spotReport(
int submode,
int dial,
int offset,
int snr,
986 QString
const &callsign, QString
const &grid);
987 void spotCmd(CommandDetail
const &cmd);
988 void spotAprsCmd(CommandDetail
const &cmd);
989 void pskLogReport(QString
const &mode,
int dial,
int offset,
int snr,
990 QString
const &callsign, QString
const &grid,
991 QDateTime
const &utcTimestamp);
992 void spotAprsGrid(
int dial,
int offset,
int snr, QString callsign,
994 Radio::Frequency dialFrequency();
995 void setSubmode(
int submode);
996 void updateCurrentBand();
997 void displayDialFrequency();
998 void transmitDisplay(
bool);
999 void postDecode(
bool is_new, QString
const &message);
1000 void displayTransmit();
1001 void updateModeButtonText();
1002 void updateButtonDisplay();
1003 void updateTextDisplay();
1004 void updateTextWordCheckerDisplay();
1005 void updateTextStatsDisplay(QString text,
int count);
1006 void updateTxButtonDisplay();
1007 bool isMyCallIncluded(QString
const &text);
1008 bool isAllCallIncluded(QString
const &text);
1009 bool isGroupCallIncluded(
const QString &text);
1010 QString callsignSelected(
bool useInputText =
false);
1011 void callsignSelectedChanged(QString old, QString current);
1012 bool isRecentOffset(
int submode,
int offset);
1013 void markOffsetRecent(
int offset);
1014 bool isDirectedOffset(
int offset,
bool *pIsAllCall);
1015 void markOffsetDirected(
int offset,
bool isAllCall);
1016 void clearOffsetDirected(
int offset);
1017 void processActivity(
bool force =
false);
1018 void resetTimeDeltaAverage();
1019 void processRxActivity();
1020 void processIdleActivity();
1021 void processCompoundActivity();
1022 void processBufferedActivity();
1023 void processCommandActivity();
1024 QString inboxPath();
1025 void refreshInboxCounts();
1026 bool hasMessageHistory(QString call);
1027 int addCommandToMyInbox(CommandDetail d);
1028 int addCommandToStorage(QString type, CommandDetail d);
1029 int getNextMessageIdForCallsign(QString callsign);
1030 int getLookaheadMessageIdForCallsign(QString callsign,
int afterMsgId);
1031 int getNextGroupMessageIdForCallsign(QString group_name, QString callsign);
1032 int getLookaheadGroupMessageIdForCallsign(QString group_name,
1033 QString callsign,
int afterMsgId);
1034 int countUnreadForCallsign(
const QString &callsign);
1035 int countGroupUnreadForCallsign(
const QString &group_name,
1036 const QString &callsign);
1037 bool markGroupMsgDeliveredForCallsign(
int msgId, QString callsign);
1038 bool markMsgDelivered(
int mid,
Message msg);
1039 QStringList parseRelayPathCallsigns(QString from, QString text);
1040 void processSpots();
1041 void processTxQueue();
1042 void displayActivity(
bool force =
false);
1043 void displayBandActivity();
1044 void displayCallActivity();
1045 void enable_DXCC_entity(
bool on);
1046 void setRig(Frequency = 0);
1047 QDateTime nextTransmitCycle();
1048 void statusUpdate();
1049 void on_the_minute();
1051 void add_child_to_event_filter(QObject *);
1052 void remove_child_from_event_filter(QObject *);
1053 void setup_status_bar();
1054 QString columnLabel(QString defaultLabel);
1055 void ensureMessageDock();
1057 void resetIdleTimer();
1058 void incrementIdleTimer();
1059 void tx_watchdog(
bool triggered);
1060 void write_frequency_entry(QString
const &file_name);
1061 void write_transmit_entry(QString
const &file_name);