From: Soeren Apel <[email protected]>

My last patch introduced window state saving and restoring. It also
introduced two unwanted messages in the debug output that I didn't
notice before:

QMainWindow::saveState(): 'objectName' not set for QToolBar 'Main Toolbar'
QMainWindow::saveState(): 'objectName' not set for QToolBar 'Sampling Bar'

As this change is so minor, I also added device selection persistence.
The device title is the only method of identification available, so I'm
using it here despite its non-uniqueness when using multiple devices of
the same kind. This fixes 50% of #139 as well.


---
 pv/mainwindow.cpp           |   24 ++++++++++++++++++++++++
 pv/toolbars/samplingbar.cpp |    2 ++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp
index 719d608..2970cc1 100644
--- a/pv/mainwindow.cpp
+++ b/pv/mainwindow.cpp
@@ -240,6 +240,7 @@ void MainWindow::setup_ui()
 
        // Setup the toolbar
        QToolBar *const toolbar = new QToolBar(tr("Main Toolbar"), this);
+       toolbar->setObjectName(QString::fromUtf8("MainToolbar"));
        toolbar->addAction(action_open);
        toolbar->addAction(action_save_as);
        toolbar->addSeparator();
@@ -276,11 +277,20 @@ void MainWindow::save_ui_settings()
        settings.setValue("state", saveState());
        settings.setValue("geometry", saveGeometry());
        settings.endGroup();
+
+       settings.beginGroup("Device");
+       if (_session.get_device())
+               settings.setValue("last_device",
+                               
QString(_session.get_device()->format_device_title().c_str()));
+       settings.endGroup();
 }
 
 void MainWindow::restore_ui_settings()
 {
        QSettings settings("sigrok", "PulseView");
+       QString last_device;
+       list< shared_ptr<device::Device> > devices;
+       list< shared_ptr<device::Device> >::const_iterator dev_iter;
 
        settings.beginGroup("MainWindow");
 
@@ -291,6 +301,20 @@ void MainWindow::restore_ui_settings()
                resize(1000, 720);
 
        settings.endGroup();
+
+       settings.beginGroup("Device");
+       if (settings.contains("last_device"))
+               last_device = settings.value("last_device").toString();
+       settings.endGroup();
+
+       // Re-select last used device if possible.
+       devices = _device_manager.devices();
+       if (!last_device.isEmpty() && (devices.size() > 0))
+               for (dev_iter = devices.begin(); dev_iter != devices.end(); 
dev_iter++)
+                       if ((*dev_iter)->format_device_title() == 
last_device.toStdString()) {
+                               _session.set_device(*dev_iter);
+                               update_device_list();
+                       }
 }
 
 void MainWindow::session_error(
diff --git a/pv/toolbars/samplingbar.cpp b/pv/toolbars/samplingbar.cpp
index 550fc84..526f382 100644
--- a/pv/toolbars/samplingbar.cpp
+++ b/pv/toolbars/samplingbar.cpp
@@ -66,6 +66,8 @@ SamplingBar::SamplingBar(SigSession &session, QWidget 
*parent) :
        _icon_grey(":/icons/status-grey.svg"),
        _run_stop_button(this)
 {
+       setObjectName(QString::fromUtf8("SamplingBar"));
+
        connect(&_run_stop_button, SIGNAL(clicked()),
                this, SLOT(on_run_stop()));
        connect(&_device_selector, SIGNAL(currentIndexChanged (int)),
-- 
1.7.8.6


------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to