Added visual strikethrough for transmitted text

This commit is contained in:
Jordan Sherer 2019-09-21 15:24:05 -04:00
parent 335b6d13f6
commit bb91fac20d
7 changed files with 113 additions and 9 deletions

View File

@ -252,6 +252,7 @@ set (wsjtx_CXXSRCS
main.cpp main.cpp
wsprnet.cpp wsprnet.cpp
WSPRBandHopping.cpp WSPRBandHopping.cpp
TransmitTextEdit.cpp
) )
set (wsjt_CXXSRCS set (wsjt_CXXSRCS

53
TransmitTextEdit.cpp Normal file
View File

@ -0,0 +1,53 @@
#include "TransmitTextEdit.h"
#include <QDebug>
TransmitTextEdit::TransmitTextEdit(QWidget *parent):
QTextEdit(parent)
{
connect(this, &QTextEdit::selectionChanged, this, &TransmitTextEdit::on_selectionChanged);
connect(this, &QTextEdit::cursorPositionChanged, this, &TransmitTextEdit::on_selectionChanged);
}
void TransmitTextEdit::markCharsSent(int n){
// update sent display
auto c = textCursor();
c.movePosition(QTextCursor::Start);
c.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, n);
auto ch = c.charFormat();
ch.setFontStrikeOut(true);
c.mergeCharFormat(ch);
// keep track
m_sent = n;
}
// override
void TransmitTextEdit::setPlainText(const QString &text){
QTextEdit::setPlainText(text);
m_sent = 0;
}
// override
void TransmitTextEdit::clear(){
QTextEdit::clear();
m_sent = 0;
}
// slot
void TransmitTextEdit::on_selectionChanged(){
auto c = textCursor();
int start = c.selectionStart();
int end = c.selectionEnd();
if(end < start){
int x = end;
end = start;
start = x;
}
qDebug() << "selection" << start << end;
if(start <= m_sent){
qDebug() << "selection in protected zone" << start << "<=" << m_sent;
}
}

22
TransmitTextEdit.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef TRANSMITTEXTEDIT_H
#define TRANSMITTEXTEDIT_H
#include <QTextEdit>
class TransmitTextEdit : public QTextEdit
{
public:
TransmitTextEdit(QWidget *parent);
void markCharsSent(int n);
void setPlainText(const QString &text);
void clear();
public slots:
void on_selectionChanged();
private:
int m_sent;
};
#endif // TRANSMITTEXTEDIT_H

View File

@ -83,7 +83,8 @@ SOURCES += \
Inbox.cpp \ Inbox.cpp \
messagewindow.cpp \ messagewindow.cpp \
SpotClient.cpp \ SpotClient.cpp \
TCPClient.cpp TCPClient.cpp \
TransmitTextEdit.cpp
HEADERS += qt_helpers.hpp \ HEADERS += qt_helpers.hpp \
pimpl_h.hpp pimpl_impl.hpp \ pimpl_h.hpp pimpl_impl.hpp \
@ -118,7 +119,8 @@ HEADERS += qt_helpers.hpp \
messagewindow.h \ messagewindow.h \
SpotClient.h \ SpotClient.h \
TCPClient.h \ TCPClient.h \
logbook/n3fjp.h logbook/n3fjp.h \
TransmitTextEdit.h
INCLUDEPATH += qmake_only INCLUDEPATH += qmake_only

View File

@ -1918,6 +1918,9 @@ void MainWindow::initializeDummyData(){
c.setCharFormat(f); c.setCharFormat(f);
#endif #endif
ui->extFreeTextMsgEdit->setPlainText("HELLO BRAVE NEW WORLD");
ui->extFreeTextMsgEdit->markCharsSent(6);
logHeardGraph("KN4CRD", "OH8STN"); logHeardGraph("KN4CRD", "OH8STN");
logHeardGraph("KN4CRD", "K0OG"); logHeardGraph("KN4CRD", "K0OG");
logHeardGraph("K0OG", "KN4CRD"); logHeardGraph("K0OG", "KN4CRD");
@ -5397,9 +5400,18 @@ void MainWindow::startTx2()
void MainWindow::stopTx() void MainWindow::stopTx()
{ {
Q_EMIT endTransmitMessage (); Q_EMIT endTransmitMessage ();
auto dt = DecodedText(m_currentMessage.trimmed(), m_currentMessageBits, m_nSubMode); auto dt = DecodedText(m_currentMessage.trimmed(), m_currentMessageBits, m_nSubMode);
last_tx_label.setText("Last Tx: " + dt.message()); //m_currentMessage.trimmed()); last_tx_label.setText("Last Tx: " + dt.message()); //m_currentMessage.trimmed());
// start message marker
// - keep track of the total message sent so far, and mark it having been sent
m_totalTxMessage.append(dt.message());
ui->extFreeTextMsgEdit->markCharsSent(m_totalTxMessage.length());
qDebug() << "total sent:\n" << m_totalTxMessage;
// end message marker
m_btxok = false; m_btxok = false;
m_transmitting = false; m_transmitting = false;
g_iptt=0; g_iptt=0;
@ -6224,18 +6236,18 @@ QString MainWindow::createMessageTransmitQueue(QString const& text, bool reset){
auto frames = buildMessageFrames(text); auto frames = buildMessageFrames(text);
m_txFrameQueue.append(frames);
m_txFrameCount = frames.length();
int freq = currentFreqOffset();
qDebug() << "creating message for freq" << freq;
QStringList lines; QStringList lines;
foreach(auto frame, frames){ foreach(auto frame, frames){
auto dt = DecodedText(frame.first, frame.second, m_nSubMode); auto dt = DecodedText(frame.first, frame.second, m_nSubMode);
lines.append(dt.message()); lines.append(dt.message());
} }
m_txFrameQueue.append(frames);
m_txFrameCount = frames.length();
int freq = currentFreqOffset();
qDebug() << "creating message for freq" << freq;
// TODO: jsherer - parse outgoing message so we can add it to the inbox as an outgoing message // TODO: jsherer - parse outgoing message so we can add it to the inbox as an outgoing message
auto joined = Varicode::rstrip(lines.join("")); auto joined = Varicode::rstrip(lines.join(""));
@ -6265,6 +6277,9 @@ void MainWindow::resetMessageTransmitQueue(){
m_txFrameCount = 0; m_txFrameCount = 0;
m_txFrameQueue.clear(); m_txFrameQueue.clear();
m_txMessageQueue.clear(); m_txMessageQueue.clear();
// reset the total message sent
m_totalTxMessage.clear();
} }
QPair<QString, int> MainWindow::popMessageFrame(){ QPair<QString, int> MainWindow::popMessageFrame(){
@ -6382,6 +6397,11 @@ bool MainWindow::prepareNextMessageFrame()
auto frame = f.first; auto frame = f.first;
auto bits = f.second; auto bits = f.second;
// append this frame to the total message sent so far
// auto dt = DecodedText(frame, bits, m_nSubMode);
// m_totalTxMessage.append(dt.message());
// qDebug() << "total sent" << m_totalTxMessage;
if(frame.isEmpty()){ if(frame.isEmpty()){
ui->nextFreeTextMsg->clear(); ui->nextFreeTextMsg->clear();
updateTxButtonDisplay(); updateTxButtonDisplay();

View File

@ -795,6 +795,7 @@ private:
QString m_txTextDirtyLastText; QString m_txTextDirtyLastText;
QString m_txTextDirtyLastSelectedCall; QString m_txTextDirtyLastSelectedCall;
QString m_lastTxMessage; QString m_lastTxMessage;
QString m_totalTxMessage;
QDateTime m_lastTxTime; QDateTime m_lastTxTime;
int m_timeDeltaMsMMA; int m_timeDeltaMsMMA;
int m_timeDeltaMsMMA_N; int m_timeDeltaMsMMA_N;

View File

@ -1133,7 +1133,7 @@ background-color:#6699ff;
<string>Incoming and outgoing messages will appear here.</string> <string>Incoming and outgoing messages will appear here.</string>
</property> </property>
</widget> </widget>
<widget class="QTextEdit" name="extFreeTextMsgEdit"> <widget class="TransmitTextEdit" name="extFreeTextMsgEdit">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>4</horstretch> <horstretch>4</horstretch>
@ -5848,6 +5848,11 @@ list. The list can be maintained in Settings (F2).</string>
<extends>QPushButton</extends> <extends>QPushButton</extends>
<header>DoubleClickablePushButton.hpp</header> <header>DoubleClickablePushButton.hpp</header>
</customwidget> </customwidget>
<customwidget>
<class>TransmitTextEdit</class>
<extends>QTextEdit</extends>
<header>TransmitTextEdit.h</header>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>extFreeTextMsgEdit</tabstop> <tabstop>extFreeTextMsgEdit</tabstop>