public MetaDataViewModel(MediaFileWatcher mediaFileWatcher, IEventAggregator eventAggregator) { //Items = new ObservableCollection<MediaFileItem>(); itemsLock = new Object(); DynamicProperties = new ObservableCollection <Tuple <string, string> >(); BindingOperations.EnableCollectionSynchronization(DynamicProperties, itemsLock); EventAggregator = eventAggregator; Tags = new ObservableCollection <Tag>(); tagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(Tags, tagsLock); AddTags = new ObservableCollection <Tag>(); addTagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(AddTags, addTagsLock); RemoveTags = new ObservableCollection <Tag>(); removeTagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(RemoveTags, removeTagsLock); MetaDataPresets = new ObservableCollection <PresetMetadata>(); loadMetaDataPresets(); clear(); BatchMode = false; IsEnabled = false; IsReadOnly = true; WriteMetaDataCommand = new AsyncCommand(async() => { CancellableOperationProgressView metaDataUpdateView = new CancellableOperationProgressView(); MetaDataUpdateViewModel vm = new MetaDataUpdateViewModel(mediaFileWatcher, EventAggregator); metaDataUpdateView.DataContext = vm; metaDataUpdateView.Show(); await vm.writeMetaDataAsync(new MetaDataUpdateViewModelAsyncState(this)); }); FilenamePresetsCommand = new Command(() => { FilenameRegexView filenamePreset = new FilenameRegexView(); FilenameRegexViewModel vm = (FilenameRegexViewModel)filenamePreset.DataContext; if (filenamePreset.ShowDialog() == true) { if (!vm.SelectedRegex.IsEmpty) { Filename = vm.SelectedRegex.Regex; ReplaceFilename = vm.SelectedRegex.Replace; } } }); DirectoryPickerCommand = new Command(() => { DirectoryPickerView directoryPicker = new DirectoryPickerView(); DirectoryPickerViewModel vm = (DirectoryPickerViewModel)directoryPicker.DataContext; vm.SelectedPath = String.IsNullOrEmpty(Location) ? mediaFileWatcher.Path : Location; lock (Items) { vm.SelectedItems = new List <MediaFileItem>(Items); } vm.PathHistory = Settings.Default.MetaDataUpdateDirectoryHistory; if (directoryPicker.ShowDialog() == true) { Location = vm.SelectedPath; } }); MetaDataPresetsCommand = new Command(() => { MetaDataPresetsView metaDataPresets = new MetaDataPresetsView(); metaDataPresets.ShowDialog(); loadMetaDataPresets(); }); ClearRatingCommand = new Command(() => { Rating = null; }); mediaFileWatcher.MediaFileState.ItemPropertyChanged += MediaState_ItemPropertiesChanged; FilenameHistory = Settings.Default.FilenameHistory; ReplaceFilenameHistory = Settings.Default.ReplaceFilenameHistory; MovePathHistory = Settings.Default.MetaDataUpdateDirectoryHistory; FavoriteLocations = Settings.Default.FavoriteLocations; IsRegexEnabled = false; ReplaceFilename = ""; }
public MetaDataViewModel(MediaFileWatcher mediaFileWatcher, IEventAggregator eventAggregator) { //Items = new ObservableCollection<MediaFileItem>(); itemsLock = new Object(); DynamicProperties = new ObservableCollection<Tuple<string, string>>(); BindingOperations.EnableCollectionSynchronization(DynamicProperties, itemsLock); EventAggregator = eventAggregator; Tags = new ObservableCollection<Tag>(); tagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(Tags, tagsLock); AddTags = new ObservableCollection<Tag>(); addTagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(AddTags, addTagsLock); RemoveTags = new ObservableCollection<Tag>(); removeTagsLock = new Object(); BindingOperations.EnableCollectionSynchronization(RemoveTags, removeTagsLock); MetaDataPresets = new ObservableCollection<PresetMetadata>(); loadMetaDataPresets(); clear(); BatchMode = false; IsEnabled = false; IsReadOnly = true; WriteMetaDataCommand = new AsyncCommand(async () => { CancellableOperationProgressView metaDataUpdateView = new CancellableOperationProgressView(); MetaDataUpdateViewModel vm = new MetaDataUpdateViewModel(mediaFileWatcher, EventAggregator); metaDataUpdateView.DataContext = vm; metaDataUpdateView.Show(); await vm.writeMetaDataAsync(new MetaDataUpdateViewModelAsyncState(this)); }); FilenamePresetsCommand = new Command(() => { FilenameRegexView filenamePreset = new FilenameRegexView(); FilenameRegexViewModel vm = (FilenameRegexViewModel)filenamePreset.DataContext; if (filenamePreset.ShowDialog() == true) { if (!vm.SelectedRegex.IsEmpty) { Filename = vm.SelectedRegex.Regex; ReplaceFilename = vm.SelectedRegex.Replace; } } }); DirectoryPickerCommand = new Command(() => { DirectoryPickerView directoryPicker = new DirectoryPickerView(); DirectoryPickerViewModel vm = (DirectoryPickerViewModel)directoryPicker.DataContext; vm.SelectedPath = String.IsNullOrEmpty(Location) ? mediaFileWatcher.Path : Location; lock (Items) { vm.SelectedItems = new List<MediaFileItem>(Items); } vm.PathHistory = Settings.Default.MetaDataUpdateDirectoryHistory; if (directoryPicker.ShowDialog() == true) { Location = vm.SelectedPath; } }); MetaDataPresetsCommand = new Command(() => { MetaDataPresetsView metaDataPresets = new MetaDataPresetsView(); metaDataPresets.ShowDialog(); loadMetaDataPresets(); }); ClearRatingCommand = new Command(() => { Rating = null; }); mediaFileWatcher.MediaFileState.ItemPropertyChanged += MediaState_ItemPropertiesChanged; FilenameHistory = Settings.Default.FilenameHistory; ReplaceFilenameHistory = Settings.Default.ReplaceFilenameHistory; MovePathHistory = Settings.Default.MetaDataUpdateDirectoryHistory; FavoriteLocations = Settings.Default.FavoriteLocations; IsRegexEnabled = false; ReplaceFilename = ""; }