-void MainBar::select_device(shared_ptr<devices::Device> device)
-{
- try {
- if (device)
- session_.set_device(device);
- else
- session_.set_default_device();
- } catch (const QString &e) {
- QMessageBox msg(this);
- msg.setText(e);
- msg.setInformativeText(tr("Failed to Select Device"));
- msg.setStandardButtons(QMessageBox::Ok);
- msg.setIcon(QMessageBox::Warning);
- msg.exec();
- }
-}
-
-void MainBar::select_init_device()
-{
- QSettings settings;
- map<string, string> dev_info;
- list<string> key_list;
- shared_ptr<devices::HardwareDevice> device;
-
- DeviceManager& device_manager = session_.device_manager();
-
- // Re-select last used device if possible but only if it's not demo
- 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) {
- const QString k = QString::fromStdString(key);
- if (!settings.contains(k))
- continue;
-
- const string value = settings.value(k).toString().toStdString();
- if (!value.empty())
- dev_info.insert(std::make_pair(key, value));
- }
-
- if (dev_info.count("model") > 0)
- if (dev_info.at("model").find("Demo device") == std::string::npos)
- device = device_manager.find_device_from_info(dev_info);
-
- // When we can't find a device similar to the one we used last
- // time and there is at least one device aside from demo, use it
- if (!device) {
- for (shared_ptr<devices::HardwareDevice> dev : device_manager.devices()) {
- dev_info = device_manager.get_device_info(dev);
-
- if (dev_info.count("model") > 0)
- if (dev_info.at("model").find("Demo device") == std::string::npos) {
- device = dev;
- break;
- }
- }
- }
-
- select_device(device);
- update_device_list();
-
- settings.endGroup();
-}
-