use crate::{MainWindow, RemoteWorkerModel, settings::SettingsPersister};
use slint::ComponentHandle;
use std::sync::Arc;
pub fn setup_remote_batch_lanes(ui: &MainWindow, settings_store: &Arc<SettingsPersister>) {
ui.global::<RemoteWorkerModel>()
.set_remote_batch_lanes(settings_store.snapshot().settings.remote_batch_lanes as i32);
let settings_store = Arc::clone(settings_store);
let ui_weak = ui.as_weak();
ui.global::<RemoteWorkerModel>()
.on_remote_batch_lanes_changed(move |lanes: i32| {
settings_store.update(|s| s.settings.set_remote_batch_lanes(lanes.max(1) as u32));
let stored = settings_store.snapshot().settings.remote_batch_lanes as i32;
if let Some(ui) = ui_weak.upgrade()
&& ui.global::<RemoteWorkerModel>().get_remote_batch_lanes() != stored
{
ui.global::<RemoteWorkerModel>()
.set_remote_batch_lanes(stored);
}
});
}