summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Daniel <cd@maintech.de>2013-09-26 23:16:41 +0200
committerChristian Daniel <cd@maintech.de>2013-09-26 23:16:41 +0200
commit4e2d3f98fc4832ef58b8adc4ac1dad49a525c58a (patch)
treec0a75c790724988fa414cd8c360039a382156d39
parent348366bbe039c8576a1c0bb4d6d01bcc42828ed6 (diff)
RollupWidget: save and restore state
-rw-r--r--include/gui/rollupwidget.h7
-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.cpp72
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());