public OtherSettingsViewModel(ConfigRepository configRepository, IOtherSettingsView view)
        {
            _view = view;

            _otherSettings = new ObservableCollection<SettingViewModel>();
            foreach (var kv in configRepository.OtherSettings)
            {
                _otherSettings.Add(new SettingViewModel(kv.Key, kv.Value));
            }
            SettingsView = CollectionViewSource.GetDefaultView(_otherSettings);
            SettingsView.SortDescriptions.Add(new SortDescription("Key", ListSortDirection.Ascending));

            AddCmd = new RelayCommand(OnAdd);
            RemoveCmd = new RelayCommand<object>(OnRemove);
        }
        public ChosenMeasurementViewModel(ConfigRepository configRepository, MeasRepository measRepository)
        {
            // there may be duplicate keys in "InputMeasurementKeys"
            // but for each key, there is only one Measurement related
            ChosenMeasurements = new ObservableCollection<MeasurementViewModel>(
                from key in configRepository.InputMeasurementKeys
                join meas in measRepository.Measurements
                on key equals meas.Key
                select new MeasurementViewModel(meas));

            DeselectCmd = new RelayCommand(OnDeselect);
            SelectAllCmd = new RelayCommand(OnSelectAll);

            UpCmd = new RelayCommand(OnMoveUp, () => this.SelectedIndex > 0);
            DownCmd = new RelayCommand(OnMoveDown, () => this.SelectedIndex < ChosenMeasurements.Count - 1);
        }
        public MainViewModel(IMainWindow view, IOtherSettingsView viewOtherSettings)
        {
            _view = view;

            _measRepository = new MeasRepository("data/measurements.csv");
            _configRepository = new ConfigRepository("data/OmsLite.exe.config");

            _vmOtherSettings = new OtherSettingsViewModel(_configRepository, viewOtherSettings);
            _vmChosenMeasurement = new ChosenMeasurementViewModel(_configRepository, _measRepository);
            _vmAllMeasurements = new AllMeasurementsViewModel(_measRepository, _vmChosenMeasurement);

            // ----------------- commands
            SaveCmd = new RelayCommand(Save, () => _dirty);

            // ----------------- messages
            Messenger.Default.Register<bool>(this, _ => { _dirty = true; });
        }
 public void Save(ConfigRepository configRepository)
 {
     configRepository.OtherSettings =
         from setting in _otherSettings
         select new KeyValuePair<string, string>(setting.Key, setting.Value);
 }
 public void Save(ConfigRepository configRepository)
 {
     configRepository.InputMeasurementKeys = from mvm in ChosenMeasurements
                                             select mvm.Key;
 }