Added a custom reply dialog box so we can customize the text input validator (upper case text only)

This commit is contained in:
Jordan Sherer 2018-09-09 10:04:19 -04:00
parent 15ee95360f
commit 38ddf11479
6 changed files with 179 additions and 14 deletions

View File

@ -305,6 +305,7 @@ set (wsjtx_CXXSRCS
WsprTxScheduler.cpp WsprTxScheduler.cpp
varicode.cpp varicode.cpp
SelfDestructMessageBox.cpp SelfDestructMessageBox.cpp
messagereplydialog.cpp
APRSISClient.cpp APRSISClient.cpp
mainwindow.cpp mainwindow.cpp
Configuration.cpp Configuration.cpp
@ -668,6 +669,7 @@ set (wsjtx_UISRCS
widegraph.ui widegraph.ui
logqso.ui logqso.ui
Configuration.ui Configuration.ui
messagereplydialog.ui
) )
set (UDP_library_CXXSRCS set (UDP_library_CXXSRCS

View File

@ -7,7 +7,6 @@
#include <fstream> #include <fstream>
#include <iterator> #include <iterator>
#include <fftw3.h> #include <fftw3.h>
#include <QInputDialog>
#include <QLineEdit> #include <QLineEdit>
#include <QRegExpValidator> #include <QRegExpValidator>
#include <QRegExp> #include <QRegExp>
@ -63,6 +62,7 @@
#include "CallsignValidator.hpp" #include "CallsignValidator.hpp"
#include "EqualizationToolsDialog.hpp" #include "EqualizationToolsDialog.hpp"
#include "SelfDestructMessageBox.h" #include "SelfDestructMessageBox.h"
#include "messagereplydialog.h"
#include "ui_mainwindow.h" #include "ui_mainwindow.h"
#include "moc_mainwindow.cpp" #include "moc_mainwindow.cpp"
@ -6126,9 +6126,6 @@ void MainWindow::on_extFreeTextMsgEdit_currentTextChanged (QString const& text)
ui->startTxButton->setText("Send"); ui->startTxButton->setText("Send");
ui->startTxButton->setEnabled(false); ui->startTxButton->setEnabled(false);
} }
} }
int MainWindow::currentFreqOffset(){ int MainWindow::currentFreqOffset(){
@ -9598,13 +9595,16 @@ void MainWindow::processAlertReplyForCommand(CommandDetail d, QString from, QStr
} }
if(btn == rb){ if(btn == rb){
bool ok = false; auto diag = new MessageReplyDialog(this);
QString text = QInputDialog::getMultiLineText(this, "Message Reply", QString("Message to send to %1:").arg(from), "", &ok); diag->setWindowTitle("Message Reply");
if(ok && !text.isEmpty()){ diag->setLabel(QString("Message to send to %1:").arg(from));
enqueueMessage(PriorityHigh, QString("%1%2%3").arg(from).arg(cmd).arg(text), d.freq, nullptr);
}
}
connect(diag, &MessageReplyDialog::accepted, this, [this, diag, from, cmd, d](){
enqueueMessage(PriorityHigh, QString("%1%2%3").arg(from).arg(cmd).arg(diag->textValue()), d.freq, nullptr);
});
diag->show();
}
}); });
auto wav = m_config.sound_am_path(); auto wav = m_config.sound_am_path();

52
messagereplydialog.cpp Normal file
View File

@ -0,0 +1,52 @@
#include "messagereplydialog.h"
#include "ui_messagereplydialog.h"
#include "varicode.h"
MessageReplyDialog::MessageReplyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MessageReplyDialog)
{
ui->setupUi(this);
}
MessageReplyDialog::~MessageReplyDialog()
{
delete ui;
}
void MessageReplyDialog::setLabel(QString value){
ui->label->setText(value);
}
void MessageReplyDialog::setTextValue(QString text){
ui->textEdit->setPlainText(text);
}
QString MessageReplyDialog::textValue() const {
return ui->textEdit->toPlainText();
}
void MessageReplyDialog::on_textEdit_textChanged(){
auto text = ui->textEdit->toPlainText();
QString x;
QString::const_iterator i;
auto validChars = Varicode::huffValidChars();
for(i = text.constBegin(); i != text.constEnd(); i++){
auto ch = (*i).toUpper();
if(validChars.contains(ch)){
x += ch;
}
}
if(x != text){
int pos = ui->textEdit->textCursor().position();
int maxpos = x.size();
ui->textEdit->setPlainText(x);
QTextCursor c = ui->textEdit->textCursor();
c.setPosition(pos < maxpos ? pos : maxpos, QTextCursor::MoveAnchor);
ui->textEdit->setTextCursor(c);
}
}

34
messagereplydialog.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef MESSAGEREPLYDIALOG_H
#define MESSAGEREPLYDIALOG_H
#include <QDialog>
namespace Ui {
class MessageReplyDialog;
}
class QTextEdit;
class MessageReplyDialog : public QDialog
{
Q_OBJECT
public:
explicit MessageReplyDialog(QWidget *parent = 0);
~MessageReplyDialog();
void setLabel(QString);
void setTextValue(QString);
QString textValue() const;
QTextEdit * textEdit();
private slots:
void on_textEdit_textChanged();
private:
Ui::MessageReplyDialog *ui;
};
#endif // MESSAGEREPLAYDIALOG_H

74
messagereplydialog.ui Normal file
View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MessageReplyDialog</class>
<widget class="QDialog" name="MessageReplyDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>520</width>
<height>260</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>MessageReplyDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>MessageReplyDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -72,7 +72,8 @@ SOURCES += \
NetworkMessage.cpp \ NetworkMessage.cpp \
MessageClient.cpp \ MessageClient.cpp \
SelfDestructMessageBox.cpp \ SelfDestructMessageBox.cpp \
APRSISClient.cpp APRSISClient.cpp \
messagereplydialog.cpp
HEADERS += qt_helpers.hpp \ HEADERS += qt_helpers.hpp \
pimpl_h.hpp pimpl_impl.hpp \ pimpl_h.hpp pimpl_impl.hpp \
@ -96,7 +97,8 @@ HEADERS += qt_helpers.hpp \
NetworkMessage.hpp \ NetworkMessage.hpp \
MessageClient.hpp \ MessageClient.hpp \
SelfDestructMessageBox.h \ SelfDestructMessageBox.h \
APRSISClient.h APRSISClient.h \
messagereplydialog.h
INCLUDEPATH += qmake_only INCLUDEPATH += qmake_only
@ -108,7 +110,8 @@ HEADERS += OmniRigTransceiver.hpp
FORMS += mainwindow.ui about.ui Configuration.ui widegraph.ui astro.ui \ FORMS += mainwindow.ui about.ui Configuration.ui widegraph.ui astro.ui \
logqso.ui wf_palette_design_dialog.ui messageaveraging.ui echograph.ui \ logqso.ui wf_palette_design_dialog.ui messageaveraging.ui echograph.ui \
fastgraph.ui fastgraph.ui \
messagereplydialog.ui
RC_FILE = wsjtx.rc RC_FILE = wsjtx.rc
RESOURCES = wsjtx.qrc RESOURCES = wsjtx.qrc