+}
+
+void MainWindow::save_ui_settings()
+{
+ QSettings settings;
+
+ map<string, string> dev_info;
+ list<string> key_list;
+
+ settings.beginGroup("MainWindow");
+ settings.setValue("state", saveState());
+ settings.setValue("geometry", saveGeometry());
+ settings.endGroup();
+
+ if (_session.get_device()) {
+ 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");
+
+ dev_info = _device_manager.get_device_info(
+ _session.get_device());
+
+ for (string key : key_list) {
+
+ if (dev_info.count(key))
+ settings.setValue(QString::fromUtf8(key.c_str()),
+ QString::fromUtf8(dev_info.at(key).c_str()));
+ else
+ settings.remove(QString::fromUtf8(key.c_str()));
+ }
+
+ 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");