Meter Peak hold

#34
1.4.0
PianetaRadio 2022-12-07 20:50:23 +01:00 zatwierdzone przez GitHub
rodzic 724a3dc356
commit dfa37bedec
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
6 zmienionych plików z 125 dodań i 31 usunięć

Wyświetl plik

@ -19,6 +19,7 @@ DialogSetup::DialogSetup(QWidget *parent) :
if (guiConf.vfoDisplayMode) ui->radioButton_vfoDispMode_UD->setChecked(true); if (guiConf.vfoDisplayMode) ui->radioButton_vfoDispMode_UD->setChecked(true);
if (guiConf.darkTheme) ui->radioButton_themeDark->setChecked(true); if (guiConf.darkTheme) ui->radioButton_themeDark->setChecked(true);
if (guiConf.peakHold) ui->checkBox_peakHold->setChecked(true);
} }
DialogSetup::~DialogSetup() DialogSetup::~DialogSetup()
@ -45,4 +46,5 @@ void DialogSetup::on_buttonBox_accepted()
QSettings configFile(QString("catradio.ini"), QSettings::IniFormat); QSettings configFile(QString("catradio.ini"), QSettings::IniFormat);
configFile.setValue("vfoDisplayMode", guiConf.vfoDisplayMode); configFile.setValue("vfoDisplayMode", guiConf.vfoDisplayMode);
configFile.setValue("darkTheme", guiConf.darkTheme); configFile.setValue("darkTheme", guiConf.darkTheme);
configFile.setValue("peakHold", guiConf.peakHold);
} }

Wyświetl plik

@ -14,14 +14,52 @@
<string>Setup</string> <string>Setup</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="3" column="0"> <item row="1" column="0">
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QGroupBox" name="groupBox_theme">
<property name="orientation"> <property name="title">
<enum>Qt::Horizontal</enum> <string>Theme</string>
</property> </property>
<property name="standardButtons"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <item>
<widget class="QRadioButton" name="radioButton_themeDefault">
<property name="text">
<string>Default</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_themeDark">
<property name="text">
<string>Dark</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property> </property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QCheckBox" name="checkBox_peakHold">
<property name="text">
<string>Meter Peak hold</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
@ -50,7 +88,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -63,30 +101,14 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="0"> <item row="4" column="0">
<widget class="QGroupBox" name="groupBox_theme"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="title"> <property name="orientation">
<string>Theme</string> <enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QRadioButton" name="radioButton_themeDefault">
<property name="text">
<string>Default</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_themeDark">
<property name="text">
<string>Dark</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>

Wyświetl plik

@ -7,6 +7,7 @@
typedef struct { typedef struct {
int vfoDisplayMode; //0: use Left/Right mouse button, 1: click digit Up or Down int vfoDisplayMode; //0: use Left/Right mouse button, 1: click digit Up or Down
bool darkTheme; //flag for Dark theme bool darkTheme; //flag for Dark theme
bool peakHold; //meters peak hold
} guiConfig; } guiConfig;

Wyświetl plik

@ -120,6 +120,7 @@ MainWindow::MainWindow(QWidget *parent)
rigCom.fullPoll = configFile.value("fullPolling", true).toBool(); rigCom.fullPoll = configFile.value("fullPolling", true).toBool();
guiConf.vfoDisplayMode = configFile.value("vfoDisplayMode", 0).toInt(); guiConf.vfoDisplayMode = configFile.value("vfoDisplayMode", 0).toInt();
guiConf.darkTheme = configFile.value("darkTheme", false).toBool(); guiConf.darkTheme = configFile.value("darkTheme", false).toBool();
guiConf.peakHold = configFile.value("peakHold", true).toBool();
//Window settings //Window settings
restoreGeometry(configFile.value("WindowSettings/geometry").toByteArray()); restoreGeometry(configFile.value("WindowSettings/geometry").toByteArray());
restoreState(configFile.value("WindowSettings/state").toByteArray()); restoreState(configFile.value("WindowSettings/state").toByteArray());
@ -161,6 +162,10 @@ MainWindow::MainWindow(QWidget *parent)
} }
//Light QFile darkStyleFile(":qdarkstyle/light/lightstyle.qss"); //Light QFile darkStyleFile(":qdarkstyle/light/lightstyle.qss");
//Meter Peak hold
ui->progressBar_Smeter->setPeak(guiConf.peakHold);
ui->progressBar_Smeter->setPeakFactor(rigCom.rigRefresh/1000.0/2);
QApplication::setWheelScrollLines(10); //Mouse wheel scroll step QApplication::setWheelScrollLines(10); //Mouse wheel scroll step
} }

Wyświetl plik

@ -36,9 +36,13 @@ SMeter::SMeter(QWidget *parent) : QWidget(parent)
shortStep = 10; shortStep = 10;
precision = 0; precision = 0;
meterTx = 0; meterTx = false;
currentValue = -54; currentValue = -54;
peakValue = currentValue;
peakFactor = 0.1;
peakHold = true;
} }
void SMeter::paintEvent(QPaintEvent *) void SMeter::paintEvent(QPaintEvent *)
@ -53,6 +57,7 @@ void SMeter::paintEvent(QPaintEvent *)
drawMeter(&painter); drawMeter(&painter);
drawProgress(&painter); drawProgress(&painter);
if (peakHold) drawPeak(&painter);
drawScaleSMeter(&painter); drawScaleSMeter(&painter);
drawScalePWRMeter(&painter); drawScalePWRMeter(&painter);
} }
@ -94,6 +99,8 @@ void SMeter::drawProgress(QPainter *painter)
double increment = length / (max - min); double increment = length / (max - min);
double initX, initXX; double initX, initXX;
if (currentValue>max) currentValue = max;
if (currentValue>gate) if (currentValue>gate)
{ {
initX = (gate - min) * increment; initX = (gate - min) * increment;
@ -116,6 +123,47 @@ void SMeter::drawProgress(QPainter *painter)
painter->restore(); painter->restore();
} }
void SMeter::drawPeak(QPainter *painter)
{
double max, min;
painter->save();
painter->setPen(Qt::NoPen);
if (meterTx) //RF power meter
{
max = maxValue;
min = minValue;
}
else //SMeter
{
max = 60;
min = -54;
}
double length = width()-14;
double increment = length / (max - min);
double initX;
if (currentValue>=peakValue) peakValue = currentValue;
else peakValue = peakValue - peakFactor*(peakValue - currentValue);
if (peakValue>max) peakValue = max;
if (peakValue>=gateValue) painter->setBrush(QColor(Qt::red));
else painter->setBrush(progressColor);
initX = (peakValue - min) * increment;
QRect rect(initX - 2, height()/3+2+1, 2, height()/3-4-2);
painter->drawRect(rect);
//QPointF topPot = QPointF(initX, height()/3+2+1);
//QPointF bottomPot = QPointF(initX, height()*2/3-2-1);
//painter->drawLine(topPot, bottomPot);
painter->restore();
}
void SMeter::drawScalePWRMeter(QPainter *painter) void SMeter::drawScalePWRMeter(QPainter *painter)
{ {
painter->save(); painter->save();
@ -338,3 +386,13 @@ void SMeter::setTx(bool Tx)
{ {
meterTx = Tx; meterTx = Tx;
} }
void SMeter::setPeak(bool Peak)
{
peakHold = Peak;
}
void SMeter::setPeakFactor(double factor)
{
peakFactor = factor;
}

Wyświetl plik

@ -46,11 +46,14 @@ public slots:
void setValue(int value); void setValue(int value);
void setTx(bool Tx); void setTx(bool Tx);
void setPeak(bool Peak);
void setPeakFactor(double factor);
protected: protected:
void paintEvent(QPaintEvent *); void paintEvent(QPaintEvent *);
void drawMeter(QPainter *painter); void drawMeter(QPainter *painter);
void drawProgress(QPainter *painter); void drawProgress(QPainter *painter);
void drawPeak(QPainter *painter);
void drawScaleSMeter(QPainter *painter); void drawScaleSMeter(QPainter *painter);
void drawScalePWRMeter(QPainter *painter); void drawScalePWRMeter(QPainter *painter);
@ -64,8 +67,11 @@ private:
double value; //target value double value; //target value
double currentValue; //current value double currentValue; //current value
double peakValue; //peak value
double peakFactor; //peak factor
bool meterTx; //Switch between SMeter or PowerMeter bool meterTx; //Switch between SMeter or PowerMeter
bool peakHold; //Peak hold
QColor bgColor; //background color QColor bgColor; //background color
QColor lineColor; //line color QColor lineColor; //line color