88 lines
No EOL
2.8 KiB
C#
88 lines
No EOL
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Windows.Controls;
|
|
using ActiproSoftware.Windows.Controls.Shell;
|
|
using JD.Asset.Types.Map;
|
|
using Orbit.Module.View;
|
|
using Plume.Core.Logging;
|
|
using Plume.WPF.Commands;
|
|
using Plume.WPF.Mvvm;
|
|
|
|
namespace Orbit.Module.ViewModel
|
|
{
|
|
public class FolderExplorerViewModel : BindableBase, IPhotoshopContext
|
|
{
|
|
private int _selectedIndexTopFolders;
|
|
|
|
public ILogger Logger { get; }
|
|
public ObservableCollection<DirectoryInfo> TopFolders { get; set; } = new ObservableCollection<DirectoryInfo>();
|
|
public ICollection<ShellObjectViewModel> SelectedItems { get; } = new List<ShellObjectViewModel>();
|
|
|
|
public int SelectedIndexTopFolders
|
|
{
|
|
get => _selectedIndexTopFolders;
|
|
set => SetProperty(ref _selectedIndexTopFolders, value);
|
|
}
|
|
|
|
public Map SelectedMap { get; set; }
|
|
|
|
public IEnumerable<string> SelectedFiles
|
|
{
|
|
get { return SelectedItems.Select(x => x.FileSystemPath); }
|
|
}
|
|
|
|
public DelegateCommand ShowImageViewer { get; }
|
|
|
|
public FolderExplorerViewModel(ILogger logger)
|
|
{
|
|
Logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
|
ShowImageViewer = new DelegateCommand(OnShowImageViewer);
|
|
}
|
|
|
|
public void OnSelectionChanged(SelectionChangedEventArgs selectionChangedEventArgs)
|
|
{
|
|
foreach (ShellObjectViewModel removedItem in selectionChangedEventArgs.RemovedItems)
|
|
SelectedItems.Remove(removedItem);
|
|
foreach (ShellObjectViewModel addedItem in selectionChangedEventArgs.AddedItems)
|
|
SelectedItems.Add(addedItem);
|
|
}
|
|
|
|
public void OnSelectedMapChanged(Map map)
|
|
{
|
|
SelectedMap = map;
|
|
|
|
TopFolders.Clear();
|
|
|
|
if (SelectedMap != null)
|
|
{
|
|
TopFolders.Add(new DirectoryInfo(SelectedMap.MenuArtFolder));
|
|
TopFolders.Add(new DirectoryInfo(SelectedMap.BackgroundFolder));
|
|
}
|
|
|
|
int currentSelected = _selectedIndexTopFolders;
|
|
SelectedIndexTopFolders = currentSelected == -1 ? 0 : currentSelected;
|
|
}
|
|
|
|
public void Refresh()
|
|
{
|
|
OnPropertyChanged(nameof(SelectedIndexTopFolders));
|
|
}
|
|
|
|
private void OnShowImageViewer()
|
|
{
|
|
if (!SelectedFiles.Any()) return;
|
|
|
|
var imageViewer = new ImageViewer
|
|
{
|
|
Owner = System.Windows.Application.Current.MainWindow
|
|
};
|
|
imageViewer.Show();
|
|
var imageViewerVm = new ImageViewerViewModel();
|
|
imageViewer.DataContext = imageViewerVm;
|
|
var _ = imageViewerVm.Initialize(SelectedFiles.Last());
|
|
}
|
|
}
|
|
} |