diff --git a/plugins/channelrx/demoddsd/CMakeLists.txt b/plugins/channelrx/demoddsd/CMakeLists.txt index 87ea94025..c4c35e25a 100644 --- a/plugins/channelrx/demoddsd/CMakeLists.txt +++ b/plugins/channelrx/demoddsd/CMakeLists.txt @@ -9,6 +9,7 @@ set(dsddemod_SOURCES dsddemodbaudrates.cpp dsddemodsettings.cpp dsddecoder.cpp + dsdstatustextdialog.cpp ) set(dsddemod_HEADERS @@ -18,10 +19,12 @@ set(dsddemod_HEADERS dsddemodbaudrates.h dsddemodsettings.h dsddecoder.h + dsdstatustextdialog.h ) set(dsddemod_FORMS dsddemodgui.ui + dsdstatustextdialog.ui ) if (BUILD_DEBIAN) diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index d8e8e8edf..ccd4e2937 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -265,6 +265,12 @@ void DSDDemodGUI::onMenuDialogCalled(const QPoint &p) applySettings(); } +void DSDDemodGUI::on_viewStatusLog_clicked() +{ + qDebug("DSDDemodGUI::on_viewStatusLog_clicked"); + m_dsdStatusTextDialog.exec(); +} + DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : RollupWidget(parent), ui(new Ui::DSDDemodGUI), @@ -279,7 +285,8 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban m_slot2On(false), m_tdmaStereo(false), m_squelchOpen(false), - m_tickCount(0) + m_tickCount(0), + m_dsdStatusTextDialog(0) { ui->setupUi(this); ui->screenTV->setColor(true); @@ -681,6 +688,10 @@ void DSDDemodGUI::tick() formatStatusText(); ui->formatStatusText->setText(QString(m_formatStatusText)); + if (ui->activateStatusLog->isChecked()) { + m_dsdStatusTextDialog.addLine(QString(m_formatStatusText)); + } + if (m_formatStatusText[0] == '\0') { ui->formatStatusText->setStyleSheet("QLabel { background:rgb(53,53,53); }"); // turn off background } else { diff --git a/plugins/channelrx/demoddsd/dsddemodgui.h b/plugins/channelrx/demoddsd/dsddemodgui.h index 77edd0f09..728fdf446 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.h +++ b/plugins/channelrx/demoddsd/dsddemodgui.h @@ -28,6 +28,7 @@ #include "util/messagequeue.h" #include "dsddemodsettings.h" +#include "dsdstatustextdialog.h" class PluginAPI; class DeviceUISet; @@ -98,6 +99,8 @@ private: MessageQueue m_inputMessageQueue; + DSDStatusTextDialog m_dsdStatusTextDialog; + explicit DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); virtual ~DSDDemodGUI(); @@ -132,6 +135,7 @@ private slots: void on_symbolPLLLock_toggled(bool checked); void onWidgetRolled(QWidget* widget, bool rollDown); void onMenuDialogCalled(const QPoint& p); + void on_viewStatusLog_clicked(); void audioSelect(); void tick(); }; diff --git a/plugins/channelrx/demoddsd/dsddemodgui.ui b/plugins/channelrx/demoddsd/dsddemodgui.ui index 8d1ed6a0c..e110fc2e4 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.ui +++ b/plugins/channelrx/demoddsd/dsddemodgui.ui @@ -6,7 +6,7 @@ 0 0 - 610 + 613 392 @@ -254,6 +254,62 @@ + + + + Activate status text log + + + + + + + + + + + 24 + 0 + + + + + 24 + 16777215 + + + + View status text log + + + + + + + :/listing.png:/listing.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Vertical + + + @@ -309,22 +365,16 @@ - + - Qt::Horizontal + Qt::Vertical - - - 40 - 20 - - - + - Sq + Sq @@ -487,6 +537,9 @@ 9 + + Status text + QFrame::Box diff --git a/plugins/channelrx/demoddsd/dsdstatustextdialog.cpp b/plugins/channelrx/demoddsd/dsdstatustextdialog.cpp new file mode 100644 index 000000000..47a843e8c --- /dev/null +++ b/plugins/channelrx/demoddsd/dsdstatustextdialog.cpp @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2018 F4EXB // +// written by Edouard Griffiths // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include "dsdstatustextdialog.h" +#include "ui_dsdstatustextdialog.h" + +#include +#include + +DSDStatusTextDialog::DSDStatusTextDialog(QWidget* parent) : + QDialog(parent), + ui(new Ui::DSDStatusTextDialog) +{ + ui->setupUi(this); +} + +DSDStatusTextDialog::~DSDStatusTextDialog() +{ + delete ui; +} + +void DSDStatusTextDialog::addLine(const QString& line) +{ + if ((line.size() > 0) && (line != m_lastLine)) + { + QDateTime dt = QDateTime::currentDateTime(); + QString dateStr = dt.toString("hh:mm:ss"); + QTextCursor cursor = ui->logEdit->textCursor(); + cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor); + cursor.insertText(tr("%1 %2\n").arg(dateStr).arg(line)); + if (ui->pinToLastLine->isChecked()) { + ui->logEdit->verticalScrollBar()->setValue(ui->logEdit->verticalScrollBar()->maximum()); + } + m_lastLine = line; + } +} + +void DSDStatusTextDialog::on_clear_clicked() +{ + ui->logEdit->clear(); +} diff --git a/plugins/channelrx/demoddsd/dsdstatustextdialog.h b/plugins/channelrx/demoddsd/dsdstatustextdialog.h new file mode 100644 index 000000000..f5d5a0718 --- /dev/null +++ b/plugins/channelrx/demoddsd/dsdstatustextdialog.h @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2018 F4EXB // +// written by Edouard Griffiths // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef PLUGINS_CHANNELRX_DEMODDSD_DSDSTATUSTEXTDIALOG_H_ +#define PLUGINS_CHANNELRX_DEMODDSD_DSDSTATUSTEXTDIALOG_H_ + +#include + +namespace Ui { + class DSDStatusTextDialog; +} + +class DSDStatusTextDialog : public QDialog { + Q_OBJECT + +public: + explicit DSDStatusTextDialog(QWidget* parent = 0); + ~DSDStatusTextDialog(); + + void addLine(const QString& line); + +private: + Ui::DSDStatusTextDialog* ui; + QString m_lastLine; + +private slots: + void on_clear_clicked(); +}; + + +#endif /* PLUGINS_CHANNELRX_DEMODDSD_DSDSTATUSTEXTDIALOG_H_ */ diff --git a/plugins/channelrx/demoddsd/dsdstatustextdialog.ui b/plugins/channelrx/demoddsd/dsdstatustextdialog.ui new file mode 100644 index 000000000..675e41047 --- /dev/null +++ b/plugins/channelrx/demoddsd/dsdstatustextdialog.ui @@ -0,0 +1,178 @@ + + + DSDStatusTextDialog + + + + 0 + 0 + 740 + 380 + + + + + Sans Serif + 9 + + + + Status text log + + + + :/sdrangel_icon.png:/sdrangel_icon.png + + + + + + + + + 24 + 24 + + + + Clear log + + + + + + + :/sweep.png:/sweep.png + + + false + + + + + + + Pin to last line + + + + + + + :/pin_last.png:/pin_last.png + + + + + + + + 24 + 24 + + + + Save log to file + + + + + + + :/save.png:/save.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + true + + + + Monospace + + + + Log + + + true + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + ButtonSwitch + QToolButton +
gui/buttonswitch.h
+
+
+ + buttonBox + + + + + + + buttonBox + accepted() + DSDStatusTextDialog + accept() + + + 257 + 194 + + + 157 + 203 + + + + + buttonBox + rejected() + DSDStatusTextDialog + reject() + + + 314 + 194 + + + 286 + 203 + + + + +
diff --git a/sdrgui/resources/pin_last.png b/sdrgui/resources/pin_last.png new file mode 100644 index 000000000..165a0f0b7 Binary files /dev/null and b/sdrgui/resources/pin_last.png differ diff --git a/sdrgui/resources/res.qrc b/sdrgui/resources/res.qrc index 245206864..9f6b124e8 100644 --- a/sdrgui/resources/res.qrc +++ b/sdrgui/resources/res.qrc @@ -1,95 +1,97 @@ - - minusrx.png - plusrx.png - microphone.png - checkmark.png - questionmark.png - export.png - import.png - compressed.png - locked.png - appicon.png - unlocked.png - histogram.png - waterfall.png - preset-load.png - preset-save.png - preset-update.png - preset-delete.png - horizontal.png - vertical.png - maxhold.png - grid.png - invertspectrum.png - preset-last.png - display1.png - display2.png - slopen_icon.png - slopep_icon.png - display1_w.png - display2_w.png - horizontal_w.png - vertical_w.png - current.png - slopeb_icon.png - clear.png - playloop.png - play.png - pause.png - stop.png - sdrangel_logo.png - sdrangel_icon.png - minus.png - plus.png - record_off.png - record_on.png - mem.png - minusw.png - plusw.png - mono.png - stereo.png - sound_off.png - sound_on.png - dsb.png - usb.png - flip_lr.png - flip_rl.png - carrier.png - rds.png - recycle.png - lsb.png - constellation.png - slot1_off.png - slot1_on.png - slot2_off.png - slot2_on.png - iambickey.png - morsekey.png - txoff.png - txon.png - arrow_down.png - arrow_up.png - film_reel.png - film.png - picture.png - camera.png - filter_bandpass.png - stream.png - antenna.png - link.png - choose.png - clocksource.png - flip_sidebands.png - filter_highpass.png - edit.png - listing.png - create.png - duplicate.png - bin.png - save.png - load.png - keyboard.png - kill.png - + + pin_last.png + sweep.png + minusrx.png + plusrx.png + microphone.png + checkmark.png + questionmark.png + export.png + import.png + compressed.png + locked.png + appicon.png + unlocked.png + histogram.png + waterfall.png + preset-load.png + preset-save.png + preset-update.png + preset-delete.png + horizontal.png + vertical.png + maxhold.png + grid.png + invertspectrum.png + preset-last.png + display1.png + display2.png + slopen_icon.png + slopep_icon.png + display1_w.png + display2_w.png + horizontal_w.png + vertical_w.png + current.png + slopeb_icon.png + clear.png + playloop.png + play.png + pause.png + stop.png + sdrangel_logo.png + sdrangel_icon.png + minus.png + plus.png + record_off.png + record_on.png + mem.png + minusw.png + plusw.png + mono.png + stereo.png + sound_off.png + sound_on.png + dsb.png + usb.png + flip_lr.png + flip_rl.png + carrier.png + rds.png + recycle.png + lsb.png + constellation.png + slot1_off.png + slot1_on.png + slot2_off.png + slot2_on.png + iambickey.png + morsekey.png + txoff.png + txon.png + arrow_down.png + arrow_up.png + film_reel.png + film.png + picture.png + camera.png + filter_bandpass.png + stream.png + antenna.png + link.png + choose.png + clocksource.png + flip_sidebands.png + filter_highpass.png + edit.png + listing.png + create.png + duplicate.png + bin.png + save.png + load.png + keyboard.png + kill.png + diff --git a/sdrgui/resources/sweep.png b/sdrgui/resources/sweep.png new file mode 100644 index 000000000..4fa3db92c Binary files /dev/null and b/sdrgui/resources/sweep.png differ