Added log window population via double click of words in the rx window

This commit is contained in:
Jordan Sherer 2019-06-01 22:41:10 -04:00
parent c9f0cce564
commit fd29d6a931
6 changed files with 77 additions and 0 deletions

View File

@ -42,3 +42,16 @@ bool MousePressEater::eventFilter(QObject *obj, QEvent *event){
return QObject::eventFilter(obj, event);
}
bool MouseDoubleClickEater::eventFilter(QObject *obj, QEvent *event){
if (event->type() == QEvent::MouseButtonDblClick) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
bool processed = false;
emit this->mouseDoubleClicked(obj, mouseEvent, &processed);
if(processed){
return true;
}
}
// standard event processing
return QObject::eventFilter(obj, event);
}

View File

@ -44,7 +44,19 @@ public:
Q_SIGNAL void mousePressed(QObject *obj, QMouseEvent *evt, bool *pProcessed);
};
class MouseDoubleClickEater : public QObject
{
Q_OBJECT
public:
MouseDoubleClickEater(){}
virtual ~MouseDoubleClickEater(){}
protected:
bool eventFilter(QObject *obj, QEvent *event);
public:
Q_SIGNAL void mouseDoubleClicked(QObject *obj, QMouseEvent *evt, bool *pProcessed);
};

View File

@ -34,6 +34,26 @@ LogQSO::~LogQSO ()
{
}
bool LogQSO::acceptText(QString text){
auto w = focusWidget();
if(!w){
return false;
}
auto name = QString(w->metaObject()->className());
if(name != "QLineEdit"){
return false;
}
auto l = static_cast<QLineEdit*>(w);
if(!l->text().isEmpty()){
return false;
}
l->setText(text);
return true;
}
void LogQSO::on_start_now_button_pressed(){
ui->start_date_time->setDateTime(DriftingDateTime::currentDateTimeUtc());
}

View File

@ -37,6 +37,7 @@ public:
public slots:
void accept();
bool acceptText(QString text);
signals:
void acceptQSO (QDateTime const& QSO_date_off, QString const& call, QString const& grid

View File

@ -1176,6 +1176,12 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
});
ui->extFreeTextMsgEdit->installEventFilter(enterFilter);
auto doubleClickFilter = new MouseDoubleClickEater();
connect(doubleClickFilter, &MouseDoubleClickEater::mouseDoubleClicked, this, [this](QObject *, QMouseEvent *, bool *){
QTimer::singleShot(150, this, &MainWindow::on_textEditRX_mouseDoubleClicked);
});
ui->textEditRX->viewport()->installEventFilter(doubleClickFilter);
auto clearActionSep = new QAction(nullptr);
clearActionSep->setSeparator(true);
@ -6217,6 +6223,30 @@ QPair<QString, int> MainWindow::popMessageFrame(){
return m_txFrameQueue.dequeue();
}
void MainWindow::on_textEditRX_mouseDoubleClicked(){
auto c = ui->textEditRX->textCursor();
auto text = c.selectedText();
if(text.isEmpty()){
return;
}
int start = c.selectionStart();
int end = c.selectionEnd();
c.clearSelection();
c.setPosition(start);
c.movePosition(QTextCursor::PreviousCharacter, QTextCursor::MoveAnchor);
c.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, 1 + end-start);
auto prev = c.selectedText();
if(prev.startsWith("-") || prev.startsWith("+")){
ui->textEditRX->setTextCursor(c);
text = prev;
}
m_logDlg->acceptText(text);
}
void MainWindow::on_nextFreeTextMsg_currentTextChanged (QString const& text)
{
msgtype(text, ui->nextFreeTextMsg);

View File

@ -326,6 +326,7 @@ private slots:
void on_tableWidgetCalls_cellDoubleClicked(int row, int col);
void on_tableWidgetCalls_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
void on_freeTextMsg_currentTextChanged (QString const&);
void on_textEditRX_mouseDoubleClicked();
void on_nextFreeTextMsg_currentTextChanged (QString const&);
void on_extFreeTextMsgEdit_currentTextChanged (QString const&);
int currentFreqOffset();