Added macro like functionality for saved messages

This commit is contained in:
Jordan Sherer 2018-10-27 14:41:57 -04:00
parent 7293d1e796
commit 08629019d4
2 changed files with 46 additions and 2 deletions

View File

@ -6756,11 +6756,53 @@ void MainWindow::buildEditMenu(QMenu *menu, QTextEdit *edit){
connect(paste, &QAction::triggered, edit, &QTextEdit::paste);
}
QMap<QString, QString> MainWindow::buildMacroValues(){
QMap<QString, QString> values = {
{"<MYCALL>", m_config.my_callsign()},
{"<MYGRID4>", m_config.my_grid().left(4)},
{"<MYGRID12>", m_config.my_grid().left(12)},
{"<MYQTC>", m_config.my_station()},
{"<MYQTH>", m_config.my_qth()},
{"<MYCQ>", m_config.cq_message()},
{"<MYREPLY>", m_config.reply_message()},
};
auto selectedCall = callsignSelected();
if(m_callActivity.contains(selectedCall)){
auto cd = m_callActivity[selectedCall];
values["<CALL>"] = selectedCall;
if(cd.snr > -31){
values["<SNR>"] = Varicode::formatSNR(cd.snr);
}
}
return values;
}
QString MainWindow::replaceMacros(QString const &text, QMap<QString, QString> values, bool prune){
QString output = QString(text);
foreach(auto key, values.keys()){
output = output.replace(key, values[key]);
}
if(prune){
output = output.replace(QRegularExpression("[<](?:[^>]+)[>]"), "");
}
return output;
}
void MainWindow::buildSavedMessagesMenu(QMenu *menu){
auto values = buildMacroValues();
foreach(QString macro, m_config.macros()->stringList()){
QAction *action = menu->addAction(macro);
QAction *action = menu->addAction(replaceMacros(macro, values, false));
connect(action, &QAction::triggered, this, [this, macro](){
addMessageText(macro);
auto values = buildMacroValues();
addMessageText(replaceMacros(macro, values, true));
if(m_config.transmit_directed()) toggleTx(true);
});

View File

@ -277,6 +277,8 @@ private slots:
void buildBandActivitySortByMenu(QMenu * menu);
void buildCallActivitySortByMenu(QMenu * menu);
void buildQueryMenu(QMenu *, QString callsign);
QMap<QString, QString> buildMacroValues();
QString replaceMacros(QString const &text, QMap<QString, QString> values, bool prune);
void buildSavedMessagesMenu(QMenu *menu);
void buildRelayMenu(QMenu *menu);
QAction* buildRelayAction(QString call);