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.
dvmhost/src/host/setup/SymbLevelAdjustWnd.h

170 lines
6.1 KiB

// SPDX-License-Identifier: GPL-2.0-only
/**
* Digital Voice Modem - Modem Host Software
* GPLv2 Open Source. Use is subject to license terms.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* @package DVM / Modem Host Software
* @license GPLv2 License (https://opensource.org/licenses/GPL-2.0)
*
* Copyright (C) 2023 Bryan Biedenkapp, N2PLL
*
*/
#if !defined(__SYMB_LEVEL_ADJUST_WND_H__)
#define __SYMB_LEVEL_ADJUST_WND_H__
#include "common/Thread.h"
#include "setup/HostSetup.h"
#include "setup/AdjustWndBase.h"
#include <final/final.h>
using namespace finalcut;
// ---------------------------------------------------------------------------
// Class Declaration
// This class implements the symbol level adjustment window.
// ---------------------------------------------------------------------------
class HOST_SW_API SymbLevelAdjustWnd final : public AdjustWndBase {
public:
/// <summary>
/// Initializes a new instance of the SymbLevelAdjustWnd class.
/// </summary>
/// <param name="setup"></param>
/// <param name="widget"></param>
explicit SymbLevelAdjustWnd(HostSetup* setup, FWidget* widget = nullptr) : AdjustWndBase{setup, widget}
{
/* stub */
}
private:
FLabel m_symbLevelLabel{"Symbol Levels", this};
FLabel m_dmr3LevelLabel{"DMR +/- 3 Symbol Level: ", this};
FLabel m_dmr1LevelLabel{"DMR +/- 1 Symbol Level: ", this};
FLabel m_p253LevelLabel{"P25 +/- 3 Symbol Level: ", this};
FLabel m_p251LevelLabel{"P25 +/- 1 Symbol Level: ", this};
FLabel m_nxdn3LevelLabel{"NXDN +/- 3 Symbol Level: ", this};
FLabel m_nxdn1LevelLabel{"NXDN +/- 1 Symbol Level: ", this};
FSpinBox m_dmr3Level{this};
FSpinBox m_dmr1Level{this};
FSpinBox m_p253Level{this};
FSpinBox m_p251Level{this};
FSpinBox m_nxdn3Level{this};
FSpinBox m_nxdn1Level{this};
/// <summary>
///
/// </summary>
void initLayout() override
{
FDialog::setText("Symbol Level Adjustment");
FDialog::setSize(FSize{60, 16});
AdjustWndBase::initLayout();
}
/// <summary>
///
/// </summary>
void initControls() override
{
// symbol levels
{
m_symbLevelLabel.setGeometry(FPoint(2, 1), FSize(20, 2));
m_symbLevelLabel.setEmphasis();
m_symbLevelLabel.setAlignment(Align::Center);
m_dmr3LevelLabel.setGeometry(FPoint(2, 3), FSize(25, 1));
m_dmr3Level.setGeometry(FPoint(28, 3), FSize(10, 1));
m_dmr3Level.setRange(-127, 127);
m_dmr3Level.setValue(m_setup->m_modem->m_dmrSymLevel3Adj);
m_dmr3Level.setShadow(false);
m_dmr3Level.addCallback("changed", [&]() {
m_setup->m_modem->m_dmrSymLevel3Adj = m_dmr3Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
m_dmr1LevelLabel.setGeometry(FPoint(2, 4), FSize(25, 1));
m_dmr1Level.setGeometry(FPoint(28, 4), FSize(10, 1));
m_dmr1Level.setRange(-127, 127);
m_dmr1Level.setValue(m_setup->m_modem->m_dmrSymLevel1Adj);
m_dmr1Level.setShadow(false);
m_dmr1Level.addCallback("changed", [&]() {
m_setup->m_modem->m_dmrSymLevel1Adj = m_dmr1Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
m_p253LevelLabel.setGeometry(FPoint(2, 5), FSize(25, 1));
m_p253Level.setGeometry(FPoint(28, 5), FSize(10, 1));
m_p253Level.setRange(-127, 127);
m_p253Level.setValue(m_setup->m_modem->m_p25SymLevel3Adj);
m_p253Level.setShadow(false);
m_p253Level.addCallback("changed", [&]() {
m_setup->m_modem->m_p25SymLevel3Adj = m_p253Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
m_p251LevelLabel.setGeometry(FPoint(2, 6), FSize(25, 1));
m_p251Level.setGeometry(FPoint(28, 6), FSize(10, 1));
m_p251Level.setRange(-127, 127);
m_p251Level.setValue(m_setup->m_modem->m_p25SymLevel1Adj);
m_p251Level.setShadow(false);
m_p251Level.addCallback("changed", [&]() {
m_setup->m_modem->m_p25SymLevel1Adj = m_p251Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
m_nxdn3LevelLabel.setGeometry(FPoint(2, 7), FSize(25, 1));
m_nxdn3Level.setGeometry(FPoint(28, 7), FSize(10, 1));
m_nxdn3Level.setRange(-127, 127);
m_nxdn3Level.setValue(m_setup->m_modem->m_nxdnSymLevel3Adj);
m_nxdn3Level.setShadow(false);
m_nxdn3Level.addCallback("changed", [&]() {
m_setup->m_modem->m_nxdnSymLevel3Adj = m_nxdn3Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
m_nxdn1LevelLabel.setGeometry(FPoint(2, 8), FSize(25, 1));
m_nxdn1Level.setGeometry(FPoint(28, 8), FSize(10, 1));
m_nxdn1Level.setRange(-127, 127);
m_nxdn1Level.setValue(m_setup->m_modem->m_nxdnSymLevel1Adj);
m_nxdn1Level.setShadow(false);
m_nxdn1Level.addCallback("changed", [&]() {
m_setup->m_modem->m_nxdnSymLevel1Adj = m_nxdn1Level.getValue();
Thread::sleep(2);
m_setup->writeConfig();
});
}
// setup control states
if (m_setup->m_isConnected) {
if (m_setup->m_modem->m_isHotspot) {
m_dmr3Level.setDisable();
m_dmr1Level.setDisable();
m_p253Level.setDisable();
m_p251Level.setDisable();
m_nxdn3Level.setDisable();
m_nxdn1Level.setDisable();
}
else {
m_dmr3Level.setEnable();
m_dmr1Level.setEnable();
m_p253Level.setEnable();
m_p251Level.setEnable();
m_nxdn3Level.setEnable();
m_nxdn1Level.setEnable();
}
}
AdjustWndBase::initControls();
}
};
#endif // __SYMB_LEVEL_ADJUST_WND_H__

Powered by TurnKey Linux.