+ settings.endGroup();
+ }
+}
+
+void MainWindow::restore_ui_settings()
+{
+ QSettings settings;
+
+ shared_ptr<HardwareDevice> device;
+
+ map<string, string> dev_info;
+ list<string> key_list;
+ string value;
+
+ settings.beginGroup("MainWindow");
+
+ if (settings.contains("geometry")) {
+ restoreGeometry(settings.value("geometry").toByteArray());
+ restoreState(settings.value("state").toByteArray());
+ } else
+ resize(1000, 720);
+
+ settings.endGroup();
+
+ // Re-select last used device if possible.
+ settings.beginGroup("Device");
+ key_list.push_back("vendor");
+ key_list.push_back("model");
+ key_list.push_back("version");
+ key_list.push_back("serial_num");
+ key_list.push_back("connection_id");
+
+ for (string key : key_list) {
+ if (!settings.contains(QString::fromUtf8(key.c_str())))
+ continue;
+
+ value = settings.value(QString::fromUtf8(key.c_str())).toString().toStdString();
+
+ if (value.size() > 0)
+ dev_info.insert(std::make_pair(key, value));
+ }
+
+ device = _device_manager.find_device_from_info(dev_info);
+
+ if (device) {
+ _session.set_device(device);
+ update_device_list();
+ }
+
+ settings.endGroup();