From 758797f63ae09d43555ad99a8d649934ff5f06dd Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 23 Apr 2022 11:30:06 +0200 Subject: [PATCH] Massive UI revamping (v7): beter handling of expandable rollup sup widgets. Part of #1209 --- .../beamsteeringcwmodgui.cpp | 3 +- .../interferometer/interferometergui.cpp | 23 +++++-- .../channelrx/chanalyzer/chanalyzergui.cpp | 22 ++++-- plugins/channelrx/demodadsb/adsbdemodgui.cpp | 24 +++++-- plugins/channelrx/demodais/aisdemodgui.cpp | 34 ++++++---- plugins/channelrx/demodais/aisdemodgui.ui | 12 ++++ plugins/channelrx/demodam/amdemodgui.cpp | 15 ++-- plugins/channelrx/demodam/amdemodgui.ui | 4 +- plugins/channelrx/demodapt/aptdemodgui.cpp | 24 +++++-- plugins/channelrx/demodatv/atvdemodgui.cpp | 15 ++-- plugins/channelrx/demodbfm/bfmdemodgui.cpp | 23 +++++-- plugins/channelrx/demodbfm/bfmdemodgui.ui | 68 +++++++++++++------ .../demodchirpchat/chirpchatdemodgui.cpp | 23 +++++-- plugins/channelrx/demoddab/dabdemodgui.cpp | 24 +++++-- plugins/channelrx/demoddatv/datvdemodgui.cpp | 16 +++-- plugins/channelrx/demoddsd/dsddemodgui.cpp | 16 +++-- .../channelrx/demodfreedv/freedvdemodgui.cpp | 23 +++++-- plugins/channelrx/demodnfm/nfmdemodgui.cpp | 16 +++-- plugins/channelrx/demodnfm/nfmdemodgui.ui | 4 +- .../channelrx/demodpacket/packetdemodgui.cpp | 24 +++++-- .../channelrx/demodpager/pagerdemodgui.cpp | 34 ++++++---- .../demodradiosonde/radiosondedemodgui.cpp | 32 +++++---- plugins/channelrx/demodssb/ssbdemodgui.cpp | 23 +++++-- plugins/channelrx/demodwfm/wfmdemodgui.cpp | 15 ++-- plugins/channelrx/demodwfm/wfmdemodgui.ui | 10 +-- plugins/channelrx/filesink/filesinkgui.cpp | 23 +++++-- .../channelrx/freqtracker/freqtrackergui.cpp | 23 +++++-- .../channelrx/noisefigure/noisefiguregui.cpp | 24 +++++-- .../radioastronomy/radioastronomygui.cpp | 24 +++++-- .../channelrx/radioclock/radioclockgui.cpp | 34 ++++++---- .../sigmffilesink/sigmffilesinkgui.cpp | 23 +++++-- plugins/channelrx/udpsink/udpsinkgui.cpp | 25 +++++-- sdrgui/channel/channelgui.cpp | 2 + sdrgui/channel/channelgui.h | 1 + sdrgui/gui/rollupcontents.cpp | 30 ++++++++ sdrgui/gui/rollupcontents.h | 2 + 36 files changed, 528 insertions(+), 210 deletions(-) diff --git a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp index 821beacab..bf42379bb 100644 --- a/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp +++ b/plugins/channelmimo/beamsteeringcwmod/beamsteeringcwmodgui.cpp @@ -103,10 +103,11 @@ BeamSteeringCWModGUI::BeamSteeringCWModGUI(PluginAPI* pluginAPI, DeviceUISet *de m_centerFrequency(435000000), m_tickCount(0) { + setAttribute(Qt::WA_DeleteOnClose, true); + m_helpURL = "plugins/channelmimo/beamsteeringcwmod/readme.md"; ui->setupUi(getRollupContents()); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); getRollupContents()->arrangeRollups(); - setAttribute(Qt::WA_DeleteOnClose, true); connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); diff --git a/plugins/channelmimo/interferometer/interferometergui.cpp b/plugins/channelmimo/interferometer/interferometergui.cpp index 8ab582f62..dcd6d6dbe 100644 --- a/plugins/channelmimo/interferometer/interferometergui.cpp +++ b/plugins/channelmimo/interferometer/interferometergui.cpp @@ -106,11 +106,13 @@ InterferometerGUI::InterferometerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI m_centerFrequency(435000000), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); setAttribute(Qt::WA_DeleteOnClose, true); - - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelmimo/interferometer/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_interferometer = (Interferometer*) channelMIMO; @@ -248,7 +250,18 @@ void InterferometerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index 4be9991f5..5b1209bed 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -458,6 +458,17 @@ void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + getRollupContents()->saveState(m_rollupState); applySettings(); } @@ -518,12 +529,13 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device m_doApplySettings(true), m_basebandSampleRate(48000) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/chanalyzer/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/chanalyzer/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_channelAnalyzer = (ChannelAnalyzer*) rxChannel; diff --git a/plugins/channelrx/demodadsb/adsbdemodgui.cpp b/plugins/channelrx/demodadsb/adsbdemodgui.cpp index e8dca5747..6b1116c36 100644 --- a/plugins/channelrx/demodadsb/adsbdemodgui.cpp +++ b/plugins/channelrx/demodadsb/adsbdemodgui.cpp @@ -2765,7 +2765,18 @@ void ADSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -3694,9 +3705,13 @@ ADSBDemodGUI::ADSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb m_highlightAircraft(nullptr), m_progressDialog(nullptr) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); + setAttribute(Qt::WA_DeleteOnClose, true); m_helpURL = "plugins/channelrx/demodadsb/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); m_osmPort = 0; // Pick a free port m_templateServer = new ADSBOSMTemplateServer("q2RVNAe3eFKCH4XsrE3r", m_osmPort); @@ -3707,9 +3722,6 @@ ADSBDemodGUI::ADSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb ui->map->rootContext()->setContextProperty("navAidModel", &m_navAidModel); ui->map->setSource(QUrl(QStringLiteral("qrc:/map/map.qml"))); - setAttribute(Qt::WA_DeleteOnClose, true); - - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(&m_dlm, &HttpDownloadManager::downloadComplete, this, &ADSBDemodGUI::downloadFinished); diff --git a/plugins/channelrx/demodais/aisdemodgui.cpp b/plugins/channelrx/demodais/aisdemodgui.cpp index 2a70598f8..f0320c4d8 100644 --- a/plugins/channelrx/demodais/aisdemodgui.cpp +++ b/plugins/channelrx/demodais/aisdemodgui.cpp @@ -371,18 +371,25 @@ void AISDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { if (widget == ui->scopeContainer) { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { + if (rollDown) { + setMinimumWidth(716); // Make wide enough for scope controls + } else { setMinimumWidth(352); } } - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -444,12 +451,13 @@ AISDemodGUI::AISDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodais/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodais/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_aisDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodais/aisdemodgui.ui b/plugins/channelrx/demodais/aisdemodgui.ui index 7644db826..f7141bae5 100644 --- a/plugins/channelrx/demodais/aisdemodgui.ui +++ b/plugins/channelrx/demodais/aisdemodgui.ui @@ -725,6 +725,12 @@ 341 + + + 0 + 0 + + Waveforms @@ -890,6 +896,12 @@ + + + 0 + 0 + + 200 diff --git a/plugins/channelrx/demodam/amdemodgui.cpp b/plugins/channelrx/demodam/amdemodgui.cpp index ec57930a7..4de5c3ea8 100644 --- a/plugins/channelrx/demodam/amdemodgui.cpp +++ b/plugins/channelrx/demodam/amdemodgui.cpp @@ -75,7 +75,9 @@ bool AMDemodGUI::deserialize(const QByteArray& data) void AMDemodGUI::resizeEvent(QResizeEvent* size) { - adjustSize(); + int maxWidth = getRollupContents()->maximumWidth(); + int minHeight = getRollupContents()->minimumHeight() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width() < maxWidth ? width() : maxWidth, minHeight); size->accept(); } @@ -266,12 +268,13 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS m_samUSB(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodam/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodam/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_amDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodam/amdemodgui.ui b/plugins/channelrx/demodam/amdemodgui.ui index 59ed9e21e..f023316d6 100644 --- a/plugins/channelrx/demodam/amdemodgui.ui +++ b/plugins/channelrx/demodam/amdemodgui.ui @@ -11,7 +11,7 @@ - + 0 0 @@ -24,7 +24,7 @@ - 360 + 560 153 diff --git a/plugins/channelrx/demodapt/aptdemodgui.cpp b/plugins/channelrx/demodapt/aptdemodgui.cpp index 19e0b08c7..e9f430e5f 100644 --- a/plugins/channelrx/demodapt/aptdemodgui.cpp +++ b/plugins/channelrx/demodapt/aptdemodgui.cpp @@ -542,7 +542,18 @@ void APTDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -605,12 +616,13 @@ APTDemodGUI::APTDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_scene(nullptr), m_pixmapItem(nullptr) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodapt/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodapt/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_aptDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodatv/atvdemodgui.cpp b/plugins/channelrx/demodatv/atvdemodgui.cpp index de96854cd..5b2cb5c28 100644 --- a/plugins/channelrx/demodatv/atvdemodgui.cpp +++ b/plugins/channelrx/demodatv/atvdemodgui.cpp @@ -79,7 +79,9 @@ bool ATVDemodGUI::deserialize(const QByteArray& data) void ATVDemodGUI::resizeEvent(QResizeEvent* size) { - adjustSize(); + int maxWidth = getRollupContents()->maximumWidth(); + int minHeight = getRollupContents()->minimumHeight() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width() < maxWidth ? width() : maxWidth, minHeight); size->accept(); } @@ -275,12 +277,13 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Base m_intTickCount(0), m_basebandSampleRate(48000) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodatv/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodatv/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_atvDemod = (ATVDemod*) rxChannel; diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.cpp b/plugins/channelrx/demodbfm/bfmdemodgui.cpp index 02fc49f35..b72257576 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodgui.cpp @@ -315,8 +315,18 @@ void BFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { (void) widget; (void) rollDown; + RollupContents *rollupContents = getRollupContents(); - getRollupContents()->saveState(m_rollupState); + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -379,9 +389,14 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_radiotext_AB_flag(false), m_rate(625000) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); + setAttribute(Qt::WA_DeleteOnClose, true); m_helpURL = "plugins/channelrx/demodbfm/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 8, -99999999, 99999999); @@ -390,8 +405,6 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban CRightClickEnabler *audioMuteRightClickEnabler = new CRightClickEnabler(ui->audioStereo); connect(audioMuteRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(audioSelect())); - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.ui b/plugins/channelrx/demodbfm/bfmdemodgui.ui index 8409d6ab6..80a8ea6b4 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.ui +++ b/plugins/channelrx/demodbfm/bfmdemodgui.ui @@ -6,7 +6,7 @@ 0 0 - 798 + 644 755 @@ -18,7 +18,7 @@ - 642 + 644 670 @@ -40,8 +40,8 @@ - 10 - 20 + 0 + 0 642 151 @@ -57,19 +57,19 @@ - 3 + 1 - 2 + 0 - 2 + 0 - 2 + 0 - 2 + 0 @@ -502,10 +502,10 @@ - 10 - 560 - 311 - 151 + 0 + 460 + 640 + 210 @@ -514,24 +514,30 @@ 0 + + + 640 + 0 + + Baseband Spectrum - 3 + 1 - 2 + 0 - 2 + 0 - 2 + 0 - 2 + 0 @@ -541,6 +547,12 @@ 0 + + + 640 + 200 + + Liberation Mono @@ -552,7 +564,7 @@ - + 0 0 @@ -564,9 +576,9 @@ - 10 - 170 - 791 + 0 + 160 + 640 281 @@ -583,6 +595,18 @@ 1 + + 0 + + + 0 + + + 0 + + + 0 + diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp index 1226ebbae..f0f0b1e0c 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp @@ -329,7 +329,18 @@ void ChirpChatDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -391,11 +402,13 @@ ChirpChatDemodGUI::ChirpChatDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodchirpchat/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodchirpchat/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_chirpChatDemod = (ChirpChatDemod*) rxChannel; diff --git a/plugins/channelrx/demoddab/dabdemodgui.cpp b/plugins/channelrx/demoddab/dabdemodgui.cpp index cee8f38a5..66376a400 100644 --- a/plugins/channelrx/demoddab/dabdemodgui.cpp +++ b/plugins/channelrx/demoddab/dabdemodgui.cpp @@ -392,7 +392,18 @@ void DABDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -454,12 +465,13 @@ DABDemodGUI::DABDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_tickCount(0), m_channelFreq(0.0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demoddab/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demoddab/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_dabDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index d16cd2ffe..2484c4038 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -220,14 +220,17 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba m_modcodCodeRateIndex(-1), m_cstlnSetByModcod(false) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); + setAttribute(Qt::WA_DeleteOnClose, true); m_helpURL = "plugins/channelrx/demoddatv/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + ui->screenTV->setColor(true); ui->screenTV->resizeTVScreen(256,256); - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); @@ -311,7 +314,8 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba DATVDemodGUI::~DATVDemodGUI() { - ui->screenTV->setParent(nullptr); // Prefer memory leak to core dump... ~TVScreen() is buggy + ui->screenTV->setParent(nullptr); // Prefer memory leak to core dump... ~TVScreen() is buggy + ui->screenTV_2->setParent(nullptr); // idem delete ui; } diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index 870d907a0..0f7529fb0 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -85,7 +85,9 @@ bool DSDDemodGUI::deserialize(const QByteArray& data) void DSDDemodGUI::resizeEvent(QResizeEvent* size) { - adjustSize(); + int maxWidth = getRollupContents()->maximumWidth(); + int minHeight = getRollupContents()->minimumHeight() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width() < maxWidth ? width() : maxWidth, minHeight); size->accept(); } @@ -343,15 +345,17 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_tickCount(0), m_dsdStatusTextDialog(0) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); + setAttribute(Qt::WA_DeleteOnClose, true); m_helpURL = "plugins/channelrx/demoddsd/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + ui->screenTV->setColor(true); ui->screenTV->resizeTVScreen(200,200); - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp index 0e46817b6..31cc9ede3 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp @@ -248,7 +248,18 @@ void FreeDVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -268,11 +279,13 @@ FreeDVDemodGUI::FreeDVDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_squelchOpen(false), m_audioSampleRate(-1) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodfreedv/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodfreedv/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_freeDVDemod = (FreeDVDemod*) rxChannel; diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.cpp b/plugins/channelrx/demodnfm/nfmdemodgui.cpp index 22f98352b..43477b8fc 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.cpp +++ b/plugins/channelrx/demodnfm/nfmdemodgui.cpp @@ -58,7 +58,9 @@ bool NFMDemodGUI::deserialize(const QByteArray& data) void NFMDemodGUI::resizeEvent(QResizeEvent* size) { - adjustSize(); + int maxWidth = getRollupContents()->maximumWidth(); + int minHeight = getRollupContents()->minimumHeight() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width() < maxWidth ? width() : maxWidth, minHeight); size->accept(); } @@ -366,13 +368,13 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_dcsShowPositive(false), m_tickCount(0) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodnfm/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodnfm/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_nfmDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodnfm/nfmdemodgui.ui b/plugins/channelrx/demodnfm/nfmdemodgui.ui index 4433218c9..bf7afb910 100644 --- a/plugins/channelrx/demodnfm/nfmdemodgui.ui +++ b/plugins/channelrx/demodnfm/nfmdemodgui.ui @@ -11,7 +11,7 @@ - + 0 0 @@ -24,7 +24,7 @@ - 360 + 560 197 diff --git a/plugins/channelrx/demodpacket/packetdemodgui.cpp b/plugins/channelrx/demodpacket/packetdemodgui.cpp index afae8ef80..b074ff6b4 100644 --- a/plugins/channelrx/demodpacket/packetdemodgui.cpp +++ b/plugins/channelrx/demodpacket/packetdemodgui.cpp @@ -374,7 +374,18 @@ void PacketDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -435,12 +446,13 @@ PacketDemodGUI::PacketDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodpacket/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodpacket/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_packetDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodpager/pagerdemodgui.cpp b/plugins/channelrx/demodpager/pagerdemodgui.cpp index 9989ba94b..28073897d 100644 --- a/plugins/channelrx/demodpager/pagerdemodgui.cpp +++ b/plugins/channelrx/demodpager/pagerdemodgui.cpp @@ -420,18 +420,25 @@ void PagerDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { if (widget == ui->scopeContainer) { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { + if (rollDown) { + setMinimumWidth(716); // Make wide enough for scope controls + } else { setMinimumWidth(352); } } - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -493,12 +500,13 @@ PagerDemodGUI::PagerDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodpager/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodpager/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_pagerDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp b/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp index 1a76963fb..bddb3639d 100644 --- a/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp +++ b/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp @@ -477,17 +477,24 @@ void RadiosondeDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { if (widget == ui->scopeContainer) { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { + if (rollDown) { + setMinimumWidth(716); // Make wide enough for scope controls + } else { setMinimumWidth(352); } } + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + getRollupContents()->saveState(m_rollupState); applySettings(); } @@ -550,12 +557,13 @@ RadiosondeDemodGUI::RadiosondeDemodGUI(PluginAPI* pluginAPI, DeviceUISet *device m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodradiosonde/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodradiosonde/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_radiosondeDemod = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index 05eba5be5..1b7f8fc59 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -288,7 +288,18 @@ void SSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -308,11 +319,13 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_squelchOpen(false), m_audioSampleRate(-1) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodssb/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodssb/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_ssbDemod = (SSBDemod*) rxChannel; diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.cpp b/plugins/channelrx/demodwfm/wfmdemodgui.cpp index b01e10d74..37f4aeabe 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.cpp +++ b/plugins/channelrx/demodwfm/wfmdemodgui.cpp @@ -57,7 +57,9 @@ bool WFMDemodGUI::deserialize(const QByteArray& data) void WFMDemodGUI::resizeEvent(QResizeEvent* size) { - adjustSize(); + int maxWidth = getRollupContents()->maximumWidth(); + int minHeight = getRollupContents()->minimumHeight() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width() < maxWidth ? width() : maxWidth, minHeight); size->accept(); } @@ -224,12 +226,13 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_squelchOpen(false), m_audioSampleRate(-1) { - ui->setupUi(getRollupContents()); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/demodwfm/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/demodwfm/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); diff --git a/plugins/channelrx/demodwfm/wfmdemodgui.ui b/plugins/channelrx/demodwfm/wfmdemodgui.ui index 16090ceb7..7d6e85e69 100644 --- a/plugins/channelrx/demodwfm/wfmdemodgui.ui +++ b/plugins/channelrx/demodwfm/wfmdemodgui.ui @@ -11,7 +11,7 @@ - + 0 0 @@ -24,7 +24,7 @@ - 302 + 560 170 @@ -52,12 +52,6 @@ 0 - - - 300 - 16777215 - - Settings diff --git a/plugins/channelrx/filesink/filesinkgui.cpp b/plugins/channelrx/filesink/filesinkgui.cpp index 04f51aa65..333c2f379 100644 --- a/plugins/channelrx/filesink/filesinkgui.cpp +++ b/plugins/channelrx/filesink/filesinkgui.cpp @@ -189,11 +189,13 @@ FileSinkGUI::FileSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_fixedPosition(false), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/filesink/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/filesink/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_fileSink = (FileSink*) channelrx; @@ -350,7 +352,18 @@ void FileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/freqtracker/freqtrackergui.cpp b/plugins/channelrx/freqtracker/freqtrackergui.cpp index 7aa2512c6..9e808e182 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.cpp +++ b/plugins/channelrx/freqtracker/freqtrackergui.cpp @@ -256,7 +256,18 @@ void FreqTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -320,11 +331,13 @@ FreqTrackerGUI::FreqTrackerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_squelchOpen(false), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/freqtracker/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/freqtracker/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_freqTracker = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/noisefigure/noisefiguregui.cpp b/plugins/channelrx/noisefigure/noisefiguregui.cpp index c2bc9a0db..3cfc61f8d 100644 --- a/plugins/channelrx/noisefigure/noisefiguregui.cpp +++ b/plugins/channelrx/noisefigure/noisefiguregui.cpp @@ -537,7 +537,18 @@ void NoiseFigureGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -601,12 +612,13 @@ NoiseFigureGUI::NoiseFigureGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B m_runningTest(false), m_chart(nullptr) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/noisefigure/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/noisefigure/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_noiseFigure = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/radioastronomy/radioastronomygui.cpp b/plugins/channelrx/radioastronomy/radioastronomygui.cpp index 8a3996162..a008879b0 100644 --- a/plugins/channelrx/radioastronomy/radioastronomygui.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomygui.cpp @@ -1949,7 +1949,18 @@ void RadioAstronomyGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -2062,12 +2073,13 @@ RadioAstronomyGUI::RadioAstronomyGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUI m_bLAB(0.0f), m_downloadingLAB(false) { - qDebug("RadioAstronomyGUI::RadioAstronomyGUI"); - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + qDebug("RadioAstronomyGUI::RadioAstronomyGUI"); + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_radioAstronomy = reinterpret_cast(rxChannel); diff --git a/plugins/channelrx/radioclock/radioclockgui.cpp b/plugins/channelrx/radioclock/radioclockgui.cpp index 675463e1e..0749eed1e 100644 --- a/plugins/channelrx/radioclock/radioclockgui.cpp +++ b/plugins/channelrx/radioclock/radioclockgui.cpp @@ -211,18 +211,25 @@ void RadioClockGUI::onWidgetRolled(QWidget* widget, bool rollDown) { if (widget == ui->scopeContainer) { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { + if (rollDown) { + setMinimumWidth(716); // Make wide enough for scope controls + } else { setMinimumWidth(352); } } - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } @@ -284,12 +291,13 @@ RadioClockGUI::RadioClockGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas m_doApplySettings(true), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/radioclock/readme.md"; - setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/radioclock/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); m_radioClock = reinterpret_cast(rxChannel); m_radioClock->setMessageQueueToGUI(getInputMessageQueue()); diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp index 28606ff7a..3714c3c7a 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp @@ -175,11 +175,13 @@ SigMFFileSinkGUI::SigMFFileSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISe m_fixedPosition(false), m_tickCount(0) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/sigmffilesink/readme.md"; setAttribute(Qt::WA_DeleteOnClose, true); - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + m_helpURL = "plugins/channelrx/sigmffilesink/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_sigMFFileSink = (SigMFFileSink*) channelrx; @@ -342,7 +344,18 @@ void SigMFFileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) widget; (void) rollDown; - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } diff --git a/plugins/channelrx/udpsink/udpsinkgui.cpp b/plugins/channelrx/udpsink/udpsinkgui.cpp index 855c7751d..89ac317b7 100644 --- a/plugins/channelrx/udpsink/udpsinkgui.cpp +++ b/plugins/channelrx/udpsink/udpsinkgui.cpp @@ -160,12 +160,14 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS m_doApplySettings(true), m_rfBandwidthChanged(false) { - ui->setupUi(getRollupContents()); - getRollupContents()->arrangeRollups(); - m_helpURL = "plugins/channelrx/udpsink/readme.md"; - connect(getRollupContents(), SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); - connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); setAttribute(Qt::WA_DeleteOnClose, true); + m_helpURL = "plugins/channelrx/udpsink/readme.md"; + RollupContents *rollupContents = getRollupContents(); + ui->setupUi(rollupContents); + setSizePolicy(rollupContents->sizePolicy()); + rollupContents->arrangeRollups(); + connect(rollupContents, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); + connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); m_udpSink = (UDPSink*) rxChannel; m_spectrumVis = m_udpSink->getSpectrumVis(); @@ -598,7 +600,18 @@ void UDPSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) m_udpSink->enableSpectrum(rollDown); } - getRollupContents()->saveState(m_rollupState); + RollupContents *rollupContents = getRollupContents(); + + if (rollupContents->hasExpandableWidgets()) { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); + } else { + setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); + } + + int h = rollupContents->height() + rollupContents->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); + + rollupContents->saveState(m_rollupState); applySettings(); } diff --git a/sdrgui/channel/channelgui.cpp b/sdrgui/channel/channelgui.cpp index 63297c098..a32689fc8 100644 --- a/sdrgui/channel/channelgui.cpp +++ b/sdrgui/channel/channelgui.cpp @@ -303,6 +303,8 @@ void ChannelGUI::shrinkWindow() { qDebug("ChannelGUI::shrinkWindow"); adjustSize(); + int h = getRollupContents()->height() + getRollupContents()->getAdditionalHeiht() + getAdditionalHeight(); + resize(width(), h); } void ChannelGUI::setTitle(const QString& title) diff --git a/sdrgui/channel/channelgui.h b/sdrgui/channel/channelgui.h index a933ac339..7d26ea08d 100644 --- a/sdrgui/channel/channelgui.h +++ b/sdrgui/channel/channelgui.h @@ -92,6 +92,7 @@ protected: void mouseMoveEvent(QMouseEvent* event); void resetContextMenuType() { m_contextMenuType = ContextMenuNone; } void updateIndexLabel(); + int getAdditionalHeight() { return 2*20 + 12; } DeviceType m_deviceType; int m_deviceSetIndex; diff --git a/sdrgui/gui/rollupcontents.cpp b/sdrgui/gui/rollupcontents.cpp index 19294e78e..cce640575 100644 --- a/sdrgui/gui/rollupcontents.cpp +++ b/sdrgui/gui/rollupcontents.cpp @@ -92,6 +92,36 @@ void RollupContents::setHighlighted(bool highlighted) } } +int RollupContents::getAdditionalHeiht() +{ + int pos = 0; + + for (int i = 0; i < children().count(); ++i) + { + QWidget* r = qobject_cast(children()[i]); + + if (r && isRollupChild(r) && !r->isHidden()) { + pos += 5; + } + } + + return pos; +} + +bool RollupContents::hasExpandableWidgets() +{ + for (int i = 0; i < children().count(); ++i) + { + QWidget* r = qobject_cast(children()[i]); + + if (r && isRollupChild(r) && !r->isHidden() && (r->sizePolicy().verticalPolicy() == QSizePolicy::Expanding)) { + return true; + } + } + + return false; +} + int RollupContents::arrangeRollups() { QFontMetrics fm(font()); diff --git a/sdrgui/gui/rollupcontents.h b/sdrgui/gui/rollupcontents.h index 649398a17..2777b6f78 100644 --- a/sdrgui/gui/rollupcontents.h +++ b/sdrgui/gui/rollupcontents.h @@ -34,6 +34,8 @@ public: void saveState(RollupState& state) const; void restoreState(const RollupState& state); int arrangeRollups(); + int getAdditionalHeiht(); + bool hasExpandableWidgets(); signals: void widgetRolled(QWidget* widget, bool rollDown);