You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 lines
2.0 KiB

#pragma once
#include "ptt_key_chord.h"
#include <QWidget>
#include <QVector>
#include <QMap>
class DbManager;
class QPushButton;
class QLabel;
class QHideEvent;
class QShowEvent;
class QSpinBox;
class QCheckBox;
class QButtonGroup;
class RadioLevelMeter;
/* Общий редактор вкладки и мини-блока; метрики не перезаписывают редактируемые настройки. */
class RadioActivationSettings : public QWidget {
Q_OBJECT
public:
explicit RadioActivationSettings(bool compact, QWidget* parent = nullptr);
void loadSettings();
bool apply();
bool canApply() const;
signals:
void changed();
private:
QMap<QString, int> values() const;
void updateControls();
void updateMeters();
bool m_compact, m_loaded = false;
QButtonGroup* m_mode;
QSpinBox *m_threshold, *m_hangover, *m_txGain = nullptr, *m_vadGain, *m_levelOn, *m_levelOff;
QCheckBox* m_compressor = nullptr;
RadioLevelMeter *m_levelMeter, *m_vadMeter;
QLabel *m_levelText, *m_vadText, *m_gainText, *m_error;
};
// Запись глобальных сочетаний PTT, включая отдельные левые/правые модификаторы.
class RadioSettingsPage : public QWidget {
Q_OBJECT
public:
explicit RadioSettingsPage(DbManager* db, QWidget* parent = nullptr);
~RadioSettingsPage() override;
void loadFromDb();
QStringList hotkeys() const;
bool apply();
protected:
bool eventFilter(QObject* object, QEvent* event) override;
void showEvent(QShowEvent* event) override;
void hideEvent(QHideEvent* event) override;
private:
void updatePortalLabels();
RadioActivationSettings* m_activation;
QLabel* m_portalStatus = nullptr;
void startCapture(int index);
void finishCapture(bool save);
void updateLabel(int index);
DbManager* m_db;
QVector<PttKeyChord> m_chords;
QVector<QPushButton*> m_buttons;
QVector<QLabel*> m_labels;
PttChordCapture m_capture;
int m_captureIndex = -1;
};