diff options
author | Christian Daniel <cd@maintech.de> | 2013-09-26 23:16:41 +0200 |
---|---|---|
committer | Christian Daniel <cd@maintech.de> | 2013-09-26 23:16:41 +0200 |
commit | 4e2d3f98fc4832ef58b8adc4ac1dad49a525c58a (patch) | |
tree | c0a75c790724988fa414cd8c360039a382156d39 | |
parent | 348366bbe039c8576a1c0bb4d6d01bcc42828ed6 (diff) |
RollupWidget: save and restore state
-rw-r--r-- | include/gui/rollupwidget.h | 7 | ||||
-rw-r--r-- | plugins/channel/CMakeLists.txt (renamed from plugins/demod/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/CMakeLists.txt (renamed from plugins/demod/nfm/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmdemod.cpp (renamed from plugins/demod/nfm/nfmdemod.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmdemod.h (renamed from plugins/demod/nfm/nfmdemod.h) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmdemodgui.cpp (renamed from plugins/demod/nfm/nfmdemodgui.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmdemodgui.h (renamed from plugins/demod/nfm/nfmdemodgui.h) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmdemodgui.ui (renamed from plugins/demod/nfm/nfmdemodgui.ui) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmplugin.cpp (renamed from plugins/demod/nfm/nfmplugin.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/nfm/nfmplugin.h (renamed from plugins/demod/nfm/nfmplugin.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/CMakeLists.txt (renamed from plugins/demod/tcpsrc/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrc.cpp (renamed from plugins/demod/tcpsrc/tcpsrc.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrc.h (renamed from plugins/demod/tcpsrc/tcpsrc.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcgui.cpp (renamed from plugins/demod/tcpsrc/tcpsrcgui.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcgui.h (renamed from plugins/demod/tcpsrc/tcpsrcgui.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcgui.ui (renamed from plugins/demod/tcpsrc/tcpsrcgui.ui) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcplugin.cpp (renamed from plugins/demod/tcpsrc/tcpsrcplugin.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcplugin.h (renamed from plugins/demod/tcpsrc/tcpsrcplugin.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/CMakeLists.txt (renamed from plugins/demod/tetra/CMakeLists.txt) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetrademod.cpp (renamed from plugins/demod/tetra/tetrademod.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetrademod.h (renamed from plugins/demod/tetra/tetrademod.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetrademodgui.cpp (renamed from plugins/demod/tetra/tetrademodgui.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetrademodgui.h (renamed from plugins/demod/tetra/tetrademodgui.h) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetrademodgui.ui (renamed from plugins/demod/tetra/tetrademodgui.ui) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetraplugin.cpp (renamed from plugins/demod/tetra/tetraplugin.cpp) | 0 | ||||
-rw-r--r-- | plugins/channel/tetra/tetraplugin.h (renamed from plugins/demod/tetra/tetraplugin.h) | 0 | ||||
-rw-r--r-- | sdrbase/gui/rollupwidget.cpp | 72 |
27 files changed, 79 insertions, 0 deletions
diff --git a/include/gui/rollupwidget.h b/include/gui/rollupwidget.h index adacc60..8860410 100644 --- a/include/gui/rollupwidget.h +++ b/include/gui/rollupwidget.h @@ -10,7 +10,14 @@ class SDRANGELOVE_API RollupWidget : public QWidget { public: RollupWidget(QWidget* parent = NULL); + QByteArray saveState(int version = 0) const; + bool restoreState(const QByteArray& state, int version = 0); + protected: + enum { + VersionMarker = 0xff + }; + int arrangeRollups(); void paintEvent(QPaintEvent*); diff --git a/plugins/demod/CMakeLists.txt b/plugins/channel/CMakeLists.txt index 19c7962..19c7962 100644 --- a/plugins/demod/CMakeLists.txt +++ b/plugins/channel/CMakeLists.txt diff --git a/plugins/demod/nfm/CMakeLists.txt b/plugins/channel/nfm/CMakeLists.txt index feeb891..feeb891 100644 --- a/plugins/demod/nfm/CMakeLists.txt +++ b/plugins/channel/nfm/CMakeLists.txt diff --git a/plugins/demod/nfm/nfmdemod.cpp b/plugins/channel/nfm/nfmdemod.cpp index fde579b..fde579b 100644 --- a/plugins/demod/nfm/nfmdemod.cpp +++ b/plugins/channel/nfm/nfmdemod.cpp diff --git a/plugins/demod/nfm/nfmdemod.h b/plugins/channel/nfm/nfmdemod.h index 4826f33..4826f33 100644 --- a/plugins/demod/nfm/nfmdemod.h +++ b/plugins/channel/nfm/nfmdemod.h diff --git a/plugins/demod/nfm/nfmdemodgui.cpp b/plugins/channel/nfm/nfmdemodgui.cpp index d507cfd..d507cfd 100644 --- a/plugins/demod/nfm/nfmdemodgui.cpp +++ b/plugins/channel/nfm/nfmdemodgui.cpp diff --git a/plugins/demod/nfm/nfmdemodgui.h b/plugins/channel/nfm/nfmdemodgui.h index 1381b5a..1381b5a 100644 --- a/plugins/demod/nfm/nfmdemodgui.h +++ b/plugins/channel/nfm/nfmdemodgui.h diff --git a/plugins/demod/nfm/nfmdemodgui.ui b/plugins/channel/nfm/nfmdemodgui.ui index 5087276..5087276 100644 --- a/plugins/demod/nfm/nfmdemodgui.ui +++ b/plugins/channel/nfm/nfmdemodgui.ui diff --git a/plugins/demod/nfm/nfmplugin.cpp b/plugins/channel/nfm/nfmplugin.cpp index f252a3a..f252a3a 100644 --- a/plugins/demod/nfm/nfmplugin.cpp +++ b/plugins/channel/nfm/nfmplugin.cpp diff --git a/plugins/demod/nfm/nfmplugin.h b/plugins/channel/nfm/nfmplugin.h index 78db600..78db600 100644 --- a/plugins/demod/nfm/nfmplugin.h +++ b/plugins/channel/nfm/nfmplugin.h diff --git a/plugins/demod/tcpsrc/CMakeLists.txt b/plugins/channel/tcpsrc/CMakeLists.txt index df7c4d4..df7c4d4 100644 --- a/plugins/demod/tcpsrc/CMakeLists.txt +++ b/plugins/channel/tcpsrc/CMakeLists.txt diff --git a/plugins/demod/tcpsrc/tcpsrc.cpp b/plugins/channel/tcpsrc/tcpsrc.cpp index 1876eff..1876eff 100644 --- a/plugins/demod/tcpsrc/tcpsrc.cpp +++ b/plugins/channel/tcpsrc/tcpsrc.cpp diff --git a/plugins/demod/tcpsrc/tcpsrc.h b/plugins/channel/tcpsrc/tcpsrc.h index 9c43bac..9c43bac 100644 --- a/plugins/demod/tcpsrc/tcpsrc.h +++ b/plugins/channel/tcpsrc/tcpsrc.h diff --git a/plugins/demod/tcpsrc/tcpsrcgui.cpp b/plugins/channel/tcpsrc/tcpsrcgui.cpp index 3b3168b..3b3168b 100644 --- a/plugins/demod/tcpsrc/tcpsrcgui.cpp +++ b/plugins/channel/tcpsrc/tcpsrcgui.cpp diff --git a/plugins/demod/tcpsrc/tcpsrcgui.h b/plugins/channel/tcpsrc/tcpsrcgui.h index 9e52fb7..9e52fb7 100644 --- a/plugins/demod/tcpsrc/tcpsrcgui.h +++ b/plugins/channel/tcpsrc/tcpsrcgui.h diff --git a/plugins/demod/tcpsrc/tcpsrcgui.ui b/plugins/channel/tcpsrc/tcpsrcgui.ui index e3549fe..e3549fe 100644 --- a/plugins/demod/tcpsrc/tcpsrcgui.ui +++ b/plugins/channel/tcpsrc/tcpsrcgui.ui diff --git a/plugins/demod/tcpsrc/tcpsrcplugin.cpp b/plugins/channel/tcpsrc/tcpsrcplugin.cpp index 81b654b..81b654b 100644 --- a/plugins/demod/tcpsrc/tcpsrcplugin.cpp +++ b/plugins/channel/tcpsrc/tcpsrcplugin.cpp diff --git a/plugins/demod/tcpsrc/tcpsrcplugin.h b/plugins/channel/tcpsrc/tcpsrcplugin.h index 984cd8f..984cd8f 100644 --- a/plugins/demod/tcpsrc/tcpsrcplugin.h +++ b/plugins/channel/tcpsrc/tcpsrcplugin.h diff --git a/plugins/demod/tetra/CMakeLists.txt b/plugins/channel/tetra/CMakeLists.txt index f46c2bb..f46c2bb 100644 --- a/plugins/demod/tetra/CMakeLists.txt +++ b/plugins/channel/tetra/CMakeLists.txt diff --git a/plugins/demod/tetra/tetrademod.cpp b/plugins/channel/tetra/tetrademod.cpp index f26810a..f26810a 100644 --- a/plugins/demod/tetra/tetrademod.cpp +++ b/plugins/channel/tetra/tetrademod.cpp diff --git a/plugins/demod/tetra/tetrademod.h b/plugins/channel/tetra/tetrademod.h index a2a474b..a2a474b 100644 --- a/plugins/demod/tetra/tetrademod.h +++ b/plugins/channel/tetra/tetrademod.h diff --git a/plugins/demod/tetra/tetrademodgui.cpp b/plugins/channel/tetra/tetrademodgui.cpp index 978f4f7..978f4f7 100644 --- a/plugins/demod/tetra/tetrademodgui.cpp +++ b/plugins/channel/tetra/tetrademodgui.cpp diff --git a/plugins/demod/tetra/tetrademodgui.h b/plugins/channel/tetra/tetrademodgui.h index 9eacae6..9eacae6 100644 --- a/plugins/demod/tetra/tetrademodgui.h +++ b/plugins/channel/tetra/tetrademodgui.h diff --git a/plugins/demod/tetra/tetrademodgui.ui b/plugins/channel/tetra/tetrademodgui.ui index feaef10..feaef10 100644 --- a/plugins/demod/tetra/tetrademodgui.ui +++ b/plugins/channel/tetra/tetrademodgui.ui diff --git a/plugins/demod/tetra/tetraplugin.cpp b/plugins/channel/tetra/tetraplugin.cpp index 9dc48cc..9dc48cc 100644 --- a/plugins/demod/tetra/tetraplugin.cpp +++ b/plugins/channel/tetra/tetraplugin.cpp diff --git a/plugins/demod/tetra/tetraplugin.h b/plugins/channel/tetra/tetraplugin.h index ec94a18..ec94a18 100644 --- a/plugins/demod/tetra/tetraplugin.h +++ b/plugins/channel/tetra/tetraplugin.h diff --git a/sdrbase/gui/rollupwidget.cpp b/sdrbase/gui/rollupwidget.cpp index c5f206d..39bcd55 100644 --- a/sdrbase/gui/rollupwidget.cpp +++ b/sdrbase/gui/rollupwidget.cpp @@ -16,6 +16,78 @@ RollupWidget::RollupWidget(QWidget* parent) : setAttribute(Qt::WA_OpaquePaintEvent, true); } +QByteArray RollupWidget::saveState(int version) const +{ + QByteArray state; + QDataStream stream(&state, QIODevice::WriteOnly); + int count = 0; + + for(int i = 0; i < children().count(); ++i) { + QWidget* r = qobject_cast<QWidget*>(children()[i]); + if(r != NULL) + count++; + } + + stream << VersionMarker; + stream << version; + stream << count; + + for(int i = 0; i < children().count(); ++i) { + QWidget* r = qobject_cast<QWidget*>(children()[i]); + if(r != NULL) { + stream << r->objectName(); + if(r->isHidden()) + stream << (int)0; + else stream << (int)1; + } + } + + return state; +} + +bool RollupWidget::restoreState(const QByteArray& state, int version) +{ + if(state.isEmpty()) + return false; + QByteArray sd = state; + QDataStream stream(&sd, QIODevice::ReadOnly); + int marker, v; + stream >> marker; + stream >> v; + if((stream.status() != QDataStream::Ok) || (marker != VersionMarker) || (v != version)) + return false; + + int count; + stream >> count; + + if(stream.status() != QDataStream::Ok) + return false; + for(int i = 0; i < count; ++i) { + QString name; + int visible; + + stream >> name; + stream >> visible; + + if(stream.status() != QDataStream::Ok) + return false; + + for(int j = 0; j < children().count(); ++j) { + QWidget* r = qobject_cast<QWidget*>(children()[j]); + if(r != NULL) { + if(r->objectName() == name) { + if(visible) + r->show(); + else r->hide(); + break; + } + } + } + } + + return true; +} + int RollupWidget::arrangeRollups() { QFontMetrics fm(font()); |