diff --git a/Configuration.ui b/Configuration.ui
index 128fdad..884eb97 100644
--- a/Configuration.ui
+++ b/Configuration.ui
@@ -6,7 +6,7 @@
0
0
- 692
+ 750
735
@@ -1573,7 +1573,7 @@ radio interface behave as expected.
- A&udio
+ &Audio
Audio interface settings
@@ -1844,88 +1844,6 @@ both here.
-
-
- Tx &Macros
-
-
- Canned free text messages setup
-
-
- -
-
-
- &Add
-
-
-
- -
-
-
- -
-
-
- &Delete
-
-
-
- -
-
-
- Qt::ActionsContextMenu
-
-
- Drag and drop items to rearrange order
-Right click for item specific actions
-Click, SHIFT+Click and, CRTL+Click to select items
-
-
- QListView {
- show-decoration-selected: 1; /* make the selection span the entire width of the view */
-}
-
-QListView::item:alternate {
- background: #EEEEEE;
-}
-
-QListView::item:selected {
- border: 1px solid #6a6ea9;
-}
-
-QListView::item:selected:!active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #ABAFE5, stop: 1 #8588B2);
-}
-
-QListView::item:selected:active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #6a6ea9, stop: 1 #888dd9);
-}
-
-QListView::item:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #FAFBFE, stop: 1 #DCDEF1);
-}
-
-
- QAbstractItemView::InternalMove
-
-
- Qt::MoveAction
-
-
- true
-
-
- QAbstractItemView::ExtendedSelection
-
-
- true
-
-
-
-
-
Reportin&g
@@ -2340,7 +2258,7 @@ for assessing propagation and system performance.
- Frequencies
+ &Frequencies
Default frequencies and band specific station details setup
@@ -2572,9 +2490,91 @@ Right click for insert and delete options.
+
+
+ Saved &Messages
+
+
+ Canned free text messages setup
+
+
+ -
+
+
+ &Add
+
+
+
+ -
+
+
+ -
+
+
+ &Delete
+
+
+
+ -
+
+
+ Qt::ActionsContextMenu
+
+
+ Drag and drop items to rearrange order
+Right click for item specific actions
+Click, SHIFT+Click and, CRTL+Click to select items
+
+
+ QListView {
+ show-decoration-selected: 1; /* make the selection span the entire width of the view */
+}
+
+QListView::item:alternate {
+ background: #EEEEEE;
+}
+
+QListView::item:selected {
+ border: 1px solid #6a6ea9;
+}
+
+QListView::item:selected:!active {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #ABAFE5, stop: 1 #8588B2);
+}
+
+QListView::item:selected:active {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #6a6ea9, stop: 1 #888dd9);
+}
+
+QListView::item:hover {
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #FAFBFE, stop: 1 #DCDEF1);
+}
+
+
+ QAbstractItemView::InternalMove
+
+
+ Qt::MoveAction
+
+
+ true
+
+
+ QAbstractItemView::ExtendedSelection
+
+
+ true
+
+
+
+
+
- Notifications
+ &Notifications
-
@@ -2724,7 +2724,7 @@ Right click for insert and delete options.
- UI
+ &UI
-
@@ -3690,11 +3690,11 @@ soundcard changes
-
-
-
+
+
+
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 2590b7d..1e2cda8 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -1205,6 +1205,9 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
restoreAction->setDisabled(m_lastTxMessage.isEmpty());
menu->addAction(restoreAction);
+ auto savedMenu = menu->addMenu("Saved messages...");
+ buildSavedMessagesMenu(savedMenu);
+
auto relayMenu = menu->addMenu("Relay via...");
relayMenu->setDisabled(ui->extFreeTextMsgEdit->toPlainText().isEmpty() || m_callActivity.isEmpty());
buildRelayMenu(relayMenu);
@@ -7544,6 +7547,14 @@ void MainWindow::on_qthMacroButton_clicked(){
addMessageText(QString("QTH %1").arg(qth));
}
+void MainWindow::on_qtcMacroButton_clicked(){
+ QString qtc = m_config.my_station();
+ if(qtc.isEmpty()){
+ return;
+ }
+ addMessageText(QString("QTC %1").arg(qtc));
+}
+
void MainWindow::setSortBy(QString key, QString value){
m_sortCache[key] = QVariant(value);
displayBandActivity();
@@ -7981,6 +7992,33 @@ void MainWindow::buildEditMenu(QMenu *menu, QTextEdit *edit){
connect(paste, &QAction::triggered, edit, &QTextEdit::paste);
}
+void MainWindow::buildSavedMessagesMenu(QMenu *menu){
+ foreach(QString macro, m_config.macros()->stringList()){
+ QAction *action = menu->addAction(macro);
+ connect(action, &QAction::triggered, this, [this, macro](){ addMessageText(macro); });
+ }
+
+ menu->addSeparator();
+
+ auto editAction = new QAction(QIcon::fromTheme("edit-edit"), QString("&Edit Saved Messages"), menu);
+ menu->addAction(editAction);
+ connect(editAction, &QAction::triggered, this, [this](){
+ openSettings(5);
+ });
+
+ auto saveAction = new QAction(QString("&Save Current Message"), menu);
+ saveAction->setDisabled(ui->extFreeTextMsgEdit->toPlainText().isEmpty());
+ menu->addAction(saveAction);
+ connect(saveAction, &QAction::triggered, this, [this](){
+ auto macros = m_config.macros();
+ if(macros->insertRow(macros->rowCount())){
+ auto index = macros->index(macros->rowCount()-1);
+ macros->setData(index, ui->extFreeTextMsgEdit->toPlainText());
+ writeSettings();
+ }
+ });
+}
+
void MainWindow::on_queryButton_pressed(){
QMenu *menu = ui->queryButton->menu();
if(!menu){
@@ -7995,28 +8033,13 @@ void MainWindow::on_queryButton_pressed(){
}
void MainWindow::on_macrosMacroButton_pressed(){
- if(m_config.macros()->stringList().isEmpty()){
- openSettings(3);
- return;
- }
-
QMenu *menu = ui->macrosMacroButton->menu();
if(!menu){
menu = new QMenu(ui->macrosMacroButton);
}
menu->clear();
- foreach(QString macro, m_config.macros()->stringList()){
- QAction *action = menu->addAction(macro);
- connect(action, &QAction::triggered, this, [this, macro](){ addMessageText(macro); });
- }
-
- menu->addSeparator();
- auto action = new QAction(QIcon::fromTheme("edit-edit"), QString("Edit"), menu);
- menu->addAction(action);
- connect(action, &QAction::triggered, this, [this](){
- openSettings(3);
- });
+ buildSavedMessagesMenu(menu);
ui->macrosMacroButton->setMenu(menu);
ui->macrosMacroButton->showMenu();
@@ -9120,6 +9143,8 @@ void MainWindow::updateButtonDisplay(){
ui->cqMacroButton->setDisabled(isTransmitting);
ui->replyMacroButton->setDisabled(isTransmitting || emptyCallsign);
+ ui->qthMacroButton->setDisabled(isTransmitting || m_config.my_station().isEmpty());
+ ui->qtcMacroButton->setDisabled(isTransmitting || m_config.my_qth().isEmpty());
ui->macrosMacroButton->setDisabled(isTransmitting);
ui->queryButton->setDisabled(isTransmitting || emptyCallsign);
ui->deselectButton->setDisabled(isTransmitting || emptyCallsign);
diff --git a/mainwindow.h b/mainwindow.h
index a7ef933..f91b3cd 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -267,12 +267,14 @@ private slots:
void on_cqMacroButton_clicked();
void on_replyMacroButton_clicked();
void on_qthMacroButton_clicked();
+ void on_qtcMacroButton_clicked();
void setSortBy(QString key, QString value);
QString getSortBy(QString key, QString defaultValue);
void buildSortByMenu(QMenu * menu, QString key, QString defaultValue, QList > values);
void buildBandActivitySortByMenu(QMenu * menu);
void buildCallActivitySortByMenu(QMenu * menu);
void buildQueryMenu(QMenu *, QString callsign);
+ void buildSavedMessagesMenu(QMenu *menu);
void buildRelayMenu(QMenu *menu);
QAction* buildRelayAction(QString call);
void buildEditMenu(QMenu *, QTextEdit *);
diff --git a/mainwindow.ui b/mainwindow.ui
index 3830da4..b6ca287 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -1311,9 +1311,6 @@ background:yellow;
30
-
- false
-
<html><head/><body><p>Send your station location message</p></body></html>
@@ -1347,10 +1344,10 @@ background:yellow;
- <html><head/><body><p>Send a macro</p></body></html>
+ <html><head/><body><p>Send a saved message</p></body></html>
- Macros
+ Saved
@@ -1397,11 +1394,46 @@ background:yellow;
30
+
+ <html><head/><body><p>Deselect the current callsign for directed messaging</p></body></html>
+
Deselect
+ -
+
+
+
+ 0
+ 30
+
+
+
+ <html><head/><body><p>Send your station message</p></body></html>
+
+
+ QTC
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 40
+ 20
+
+
+
+