Added a new, more obvious frequency control and a menu item for setting the frequency

This commit is contained in:
Jordan Sherer 2019-01-21 17:45:52 -05:00
parent d3f398e538
commit 8738132836
5 changed files with 135 additions and 2 deletions

View File

@ -27,3 +27,18 @@ bool EnterKeyPressEater::eventFilter(QObject *obj, QEvent *event){
// standard event processing
return QObject::eventFilter(obj, event);
}
bool MousePressEater::eventFilter(QObject *obj, QEvent *event){
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
bool processed = false;
emit this->mousePressed(obj, mouseEvent, &processed);
if(processed){
return true;
}
}
// standard event processing
return QObject::eventFilter(obj, event);
}

View File

@ -3,6 +3,7 @@
#include <QObject>
#include <QKeyEvent>
#include <QMouseEvent>
class EscapeKeyPressEater : public QObject
{
@ -29,5 +30,22 @@ public:
Q_SIGNAL void enterKeyPressed(QObject *obj, QKeyEvent *evt, bool *pProcessed);
};
class MousePressEater : public QObject
{
Q_OBJECT
public:
MousePressEater(){}
virtual ~MousePressEater(){}
protected:
bool eventFilter(QObject *obj, QEvent *event);
public:
Q_SIGNAL void mousePressed(QObject *obj, QMouseEvent *evt, bool *pProcessed);
};
#endif // KEYEATER_H

View File

@ -791,6 +791,18 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
});
// Hook up working frequencies.
ui->currentFreq->setCursor(QCursor(Qt::PointingHandCursor));
ui->currentFreq->display("14.078 000");
auto mp = new MousePressEater();
connect(mp, &MousePressEater::mousePressed, this, [this](QObject *, QMouseEvent * e, bool *pProcessed){
QMenu * menu = new QMenu(ui->currentFreq);
buildFrequencyMenu(menu);
menu->popup(e->globalPos());
if(pProcessed) *pProcessed = true;
});
ui->currentFreq->installEventFilter(mp);
ui->bandComboBox->setVisible(false);
ui->bandComboBox->setModel (m_config.frequencies ());
ui->bandComboBox->setModelColumn (FrequencyList_v2::frequency_mhz_column);
@ -2409,6 +2421,13 @@ void rebuildMacQAction(QMenu *menu, QAction *existingAction){
}
void MainWindow::on_menuControl_aboutToShow(){
QMenu * freqMenu = new QMenu(this->menuBar());
buildFrequencyMenu(freqMenu);
ui->actionSetFrequency->setMenu(freqMenu);
#if __APPLE__
rebuildMacQAction(ui->menuControl, ui->actionSetFrequency);
#endif
ui->actionEnable_Spotting->setChecked(ui->spotButton->isChecked());
ui->actionEnable_Auto_Reply->setChecked(ui->autoReplyButton->isChecked());
@ -2924,6 +2943,10 @@ void MainWindow::displayDialFrequency (){
update_dynamic_property (ui->labDialFreq, "oob", !valid);
ui->labDialFreq->setText (Radio::pretty_frequency_MHz_string (dial_frequency));
auto sFreq = Radio::pretty_frequency_MHz_string (dial_frequency);
ui->currentFreq->setDigitCount(sFreq.length());
ui->currentFreq->display(sFreq);
if(m_splitMode && m_transmitting){
audio_frequency -= m_XIT;
}
@ -6775,6 +6798,35 @@ void MainWindow::on_clearAction_triggered(QObject * sender){
}
}
void MainWindow::buildFrequencyMenu(QMenu *menu){
auto custom = menu->addAction("Set a Custom Frequency...");
connect(custom, &QAction::triggered, this, [this](){
bool ok = false;
auto currentFreq = Radio::frequency_MHz_string(dialFrequency());
QString newFreq = QInputDialog::getText(this, tr("Set a Custom Frequency..."),
tr("Frequency in MHz:"), QLineEdit::Normal,
currentFreq, &ok).toUpper().trimmed();
if(!ok){
return;
}
setRig(Radio::frequency(newFreq, 6));
});
menu->addSeparator();
foreach(auto f, m_config.frequencies()->frequency_list()){
auto freq = Radio::pretty_frequency_MHz_string(f.frequency_);
auto const& band = m_config.bands ()->find (f.frequency_);
auto a = menu->addAction(QString("(%1)%2%2%3 MHz").arg(band).arg(QString(" ").repeated(6-band.length())).arg(freq));
connect(a, &QAction::triggered, this, [this, f](){
setRig(f.frequency_);
});
}
}
void MainWindow::buildHeartbeatMenu(QMenu *menu){
buildRepeatMenu(menu, ui->hbMacroButton, &m_hbInterval);

View File

@ -277,6 +277,7 @@ private slots:
void on_rbGenMsg_clicked(bool checked);
void on_rbFreeText_clicked(bool checked);
void on_clearAction_triggered(QObject * sender);
void buildFrequencyMenu(QMenu *menu);
void buildHeartbeatMenu(QMenu *menu);
void buildCQMenu(QMenu *menu);
void buildRepeatMenu(QMenu *menu, QPushButton * button, int * interval);

View File

@ -194,6 +194,40 @@
</property>
</spacer>
</item>
<item>
<widget class="QLCDNumber" name="currentFreq">
<property name="minimumSize">
<size>
<width>200</width>
<height>40</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="smallDecimalPoint">
<bool>false</bool>
</property>
<property name="digitCount">
<number>10</number>
</property>
<property name="segmentStyle">
<enum>QLCDNumber::Flat</enum>
</property>
<property name="value" stdset="0">
<double>1234567890.000000000000000</double>
</property>
<property name="intValue" stdset="0">
<number>1234567890</number>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="bandComboBox">
<property name="minimumSize">
@ -203,7 +237,7 @@
</size>
</property>
<property name="visible">
<bool>true</bool>
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -224,6 +258,9 @@
</item>
<item>
<widget class="QPushButton" name="labDialFreq">
<property name="visible">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
font-family: MS Shell Dlg 2;
@ -253,6 +290,9 @@ QPushButton[oob=&quot;true&quot;] {
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="visible">
<bool>true</bool>
</property>
<property name="toolTip">
<string>Current frequency offset</string>
</property>
@ -1118,7 +1158,7 @@ QTextEdit[transmitting=&quot;true&quot;] {
</property>
<widget class="QTextBrowser" name="callDetailTextBrowser">
<property name="visible">
<bool>false</bool>
<bool>false</bool>
</property>
<property name="frameShape">
<enum>QFrame::Box</enum>
@ -4705,6 +4745,8 @@ list. The list can be maintained in Settings (F2).</string>
<property name="title">
<string>C&amp;ontrol</string>
</property>
<addaction name="actionSetFrequency"/>
<addaction name="separator"/>
<addaction name="actionEnable_Spotting"/>
<addaction name="actionEnable_Auto_Reply"/>
<addaction name="separator"/>
@ -5589,6 +5631,11 @@ list. The list can be maintained in Settings (F2).</string>
<string>Show Statusbar</string>
</property>
</action>
<action name="actionSetFrequency">
<property name="text">
<string>Set Frequency...</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>