From 895ff4dcc041d56995ec58f79b6b05049a570886 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 13 Oct 2017 22:34:36 +0000 Subject: [PATCH] Generic handling of keyboard modifiers via UDP and double-clicks This change opens up all keyboard modifier options to UDP Reply messages as well as double-clicks of decoded messages. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8168 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- displaytext.cpp | 5 +---- displaytext.h | 2 +- mainwindow.cpp | 23 +++++++++++++---------- mainwindow.h | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/displaytext.cpp b/displaytext.cpp index 03c30e7c0..989e206bd 100644 --- a/displaytext.cpp +++ b/displaytext.cpp @@ -63,10 +63,7 @@ void DisplayText::setContentFont(QFont const& font) void DisplayText::mouseDoubleClickEvent(QMouseEvent *e) { - bool shift = (e->modifiers() & Qt::ShiftModifier); - bool ctrl = (e->modifiers() & Qt::ControlModifier); - bool alt = (e->modifiers() & Qt::AltModifier); - emit(selectCallsign(shift,ctrl,alt)); + Q_EMIT selectCallsign(e->modifiers ()); QTextEdit::mouseDoubleClickEvent(e); } diff --git a/displaytext.h b/displaytext.h index c93897ce2..318a5d1bd 100644 --- a/displaytext.h +++ b/displaytext.h @@ -26,7 +26,7 @@ public: QColor color_TxMsg, bool bFastMode); void displayQSY(QString text); - Q_SIGNAL void selectCallsign (bool shift, bool ctrl, bool alt); + Q_SIGNAL void selectCallsign (Qt::KeyboardModifiers); Q_SIGNAL void erased (); Q_SLOT void appendText (QString const& text, QColor bg = Qt::white); diff --git a/mainwindow.cpp b/mainwindow.cpp index c401e49ae..e58498d14 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -551,10 +551,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, txMsgButtonGroup->addButton(ui->txrb6,6); set_dateTimeQSO(-1); connect(txMsgButtonGroup,SIGNAL(buttonClicked(int)),SLOT(set_ntx(int))); - connect(ui->decodedTextBrowser2,SIGNAL(selectCallsign(bool,bool,bool)),this, - SLOT(doubleClickOnCall(bool,bool,bool))); - connect(ui->decodedTextBrowser,SIGNAL(selectCallsign(bool,bool,bool)),this, - SLOT(doubleClickOnCall2(bool,bool,bool))); + connect (ui->decodedTextBrowser2, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnCall); + connect (ui->decodedTextBrowser, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnCall2); connect (ui->decodedTextBrowser, &DisplayText::erased, this, &MainWindow::band_activity_cleared); connect (ui->decodedTextBrowser2, &DisplayText::erased, this, &MainWindow::rx_frequency_activity_cleared); @@ -3729,15 +3727,15 @@ void MainWindow::on_txb6_clicked() if (m_transmitting) m_restart=true; } -void MainWindow::doubleClickOnCall2(bool shift, bool ctrl, bool alt) +void MainWindow::doubleClickOnCall2(Qt::KeyboardModifiers modifiers) { set_dateTimeQSO(-1); // reset our QSO start time m_decodedText2=true; - doubleClickOnCall(shift,ctrl,alt); + doubleClickOnCall(modifiers); m_decodedText2=false; } -void MainWindow::doubleClickOnCall(bool shift, bool ctrl, bool alt) +void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers) { QTextCursor cursor; if(m_mode=="ISCAT") { @@ -3754,11 +3752,16 @@ void MainWindow::doubleClickOnCall(bool shift, bool ctrl, bool alt) DecodedText message {cursor.block ().text (), ("MSK144" == m_mode || "FT8" == m_mode) && ui->cbVHFcontest->isChecked(), m_config.my_grid ()}; m_bDoubleClicked = true; - processMessage (message, shift, ctrl, alt); + processMessage (message, modifiers); } -void MainWindow::processMessage(DecodedText const& message, bool shift, bool ctrl, bool alt) +void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifiers modifiers) { + // decode keyboard modifiers we are interested in + auto shift = modifiers.testFlag (Qt::ShiftModifier); + auto ctrl = modifiers.testFlag (Qt::ControlModifier); + // auto alt = modifiers.testFlag (Qt::AltModifier); + // basic mode sanity checks auto const& parts = message.string ().split (' ', QString::SkipEmptyParts); if (parts.size () < 5) return; @@ -6246,7 +6249,7 @@ void MainWindow::replyToCQ (QTime time, qint32 snr, float delta_time, quint32 de DecodedText message {messages.mid (start, position - start), ("MSK144" == m_mode || "FT8" == m_mode) && ui->cbVHFcontest->isChecked(), m_config.my_grid ()}; Qt::KeyboardModifiers kbmod {modifiers << 24}; - processMessage (message, kbmod & Qt::ControlModifier,kbmod & Qt::AltModifier); + processMessage (message, kbmod); tx_watchdog (false); QApplication::alert (this); } diff --git a/mainwindow.h b/mainwindow.h index 5f5b6b289..e214b3161 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -107,8 +107,8 @@ public slots: void diskDat(); void freezeDecode(int n); void guiUpdate(); - void doubleClickOnCall(bool shift, bool ctrl, bool alt); - void doubleClickOnCall2(bool shift, bool ctrl, bool alt); + void doubleClickOnCall (Qt::KeyboardModifiers); + void doubleClickOnCall2(Qt::KeyboardModifiers); void readFromStdout(); void p1ReadFromStdout(); void setXIT(int n, Frequency base = 0u); @@ -602,7 +602,7 @@ private: void pskPost(DecodedText const& decodedtext); void displayDialFrequency (); void transmitDisplay (bool); - void processMessage(DecodedText const&, bool shift=false, bool ctrl = false, bool alt = false); + void processMessage(DecodedText const&, Qt::KeyboardModifiers = 0); void replyToCQ (QTime, qint32 snr, float delta_time, quint32 delta_frequency, QString const& mode, QString const& message_text, bool low_confidence, quint8 modifiers); void replayDecodes (); void postDecode (bool is_new, QString const& message);