Added feature to store a message locally for another station to retrieve from you later

This commit is contained in:
Jordan Sherer 2019-02-08 19:41:07 -05:00
parent bb348763fb
commit 35cfbbc2e5
2 changed files with 33 additions and 5 deletions

View File

@ -1425,6 +1425,31 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
mw->show();
});
auto localMessageAction = new QAction(QString("Store Message..."), ui->tableWidgetCalls);
connect(localMessageAction, &QAction::triggered, this, [this](){
QString selectedCall = callsignSelected();
if(selectedCall.isEmpty()){
return;
}
auto m = new MessageReplyDialog(this);
m->setWindowTitle("Message");
m->setLabel(QString("Store this message locally for %1:").arg(selectedCall));
if(m->exec() != QMessageBox::Accepted){
return;
}
CommandDetail d = {};
d.cmd = " MSG";
d.to = selectedCall;
d.from = m_config.my_callsign();
d.relayPath = d.from;
d.text = m->textValue();
d.utcTimestamp = DriftingDateTime::currentDateTimeUtc();
addCommandToStorage("STORE", d);
});
ui->tableWidgetCalls->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->tableWidgetCalls->horizontalHeader(), &QHeaderView::customContextMenuRequested, this, [this](QPoint const &point){
QMenu * menu = new QMenu(ui->tableWidgetCalls);
@ -1435,7 +1460,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
});
ui->tableWidgetCalls->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->tableWidgetCalls, &QTableWidget::customContextMenuRequested, this, [this, logAction, historyAction, clearAction4, clearActionAll, addStation, removeStation](QPoint const &point){
connect(ui->tableWidgetCalls, &QTableWidget::customContextMenuRequested, this, [this, logAction, historyAction, localMessageAction, clearAction4, clearActionAll, addStation, removeStation](QPoint const &point){
QMenu * menu = new QMenu(ui->tableWidgetCalls);
ui->tableWidgetRXAll->selectionModel()->clearSelection();
@ -1462,6 +1487,9 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
menu->addAction(historyAction);
historyAction->setDisabled(missingCallsign || isAllCall || isGroupCall || !hasMessageHistory(selectedCall));
menu->addAction(localMessageAction);
localMessageAction->setDisabled(missingCallsign || isAllCall || isGroupCall);
menu->addSeparator();
auto savedMenu = menu->addMenu("Saved messages...");
@ -10054,7 +10082,7 @@ void MainWindow::processCommandActivity() {
qDebug() << "storing message to" << to << ":" << text;
addCommandToInboxStorage("STORE", cd);
addCommandToStorage("STORE", cd);
// we haven't replaced the from with the relay path, so we have to use it for the ack if there is one
reply = QString("%1 ACK").arg(calls.length() > 1 ? d.relayPath : d.from);
@ -10378,10 +10406,10 @@ int MainWindow::addCommandToMyInbox(CommandDetail d){
m_rxInboxCountCache[d.from] = m_rxInboxCountCache.value(d.from, 0) + 1;
// add it to my unread inbox
return addCommandToInboxStorage("UNREAD", d);
return addCommandToStorage("UNREAD", d);
}
int MainWindow::addCommandToInboxStorage(QString type, CommandDetail d){
int MainWindow::addCommandToStorage(QString type, CommandDetail d){
// inbox:
auto inbox = Inbox(inboxPath());
if(!inbox.open()){

View File

@ -954,7 +954,7 @@ private:
void refreshInboxCounts();
bool hasMessageHistory(QString call);
int addCommandToMyInbox(CommandDetail d);
int addCommandToInboxStorage(QString type, CommandDetail d);
int addCommandToStorage(QString type, CommandDetail d);
int getNextMessageIdForCallsign(QString callsign);
QStringList parseRelayPathCallsigns(QString from, QString text);
void processAlertReplyForCommand(CommandDetail d, QString from, QString cmd);