using ImageCatalog_2.Commands;
using ImageCatalog_2.Services;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace ImageCatalog_2
{
    public class DataModel : ViewModelBase
    {

        public ICommand TestCommand { get; }

        public ICommand AsyncTestCommand { get; }
        
        public ICommand ProcessImagesCommand { get; }

        private readonly ITestService _service;
        public DataModel(ITestService testService)
        {
            _service = testService;

            TestCommand = new RelayCommand(Test);
            AsyncTestCommand = new AsyncCommand(TestAsync);

            ProcessImagesCommand = new AsyncCommand(ProcessImages);
        }

        private string _sourcePath;

        public string SourcePath
        {
            get => _sourcePath;
            set
            {
                _sourcePath = value;
                NotifyPropertyChanged();
            }
        }

        private string _destinationPath;
        public string DestinationPath
        {
            get => _destinationPath;
            set
            {
                _destinationPath = value;
                NotifyPropertyChanged();
            }
        }

        private string _horizontalText;

        public string HorizontalText
        {
            get => _horizontalText;
            set
            {
                _horizontalText = value;
                NotifyPropertyChanged();
            }
        }
        
        private string _verticalText;
        public string VerticalText
        {
            get => _verticalText;
            set
            {
                _verticalText = value;
                NotifyPropertyChanged();
            }
        }

        private bool _uiEnabled = true;

        public bool UiEnabled
        {
            get => _uiEnabled;
            set
            {
                _uiEnabled = value;
                NotifyPropertyChanged();
            }
        }

        private void Test(object parameter)
        {
            Debug.WriteLine("Yep");
            this.UiEnabled = !this.UiEnabled;
        }

        private async Task TestAsync()
        {
            Debug.WriteLine("Yep c");
        }

        private async Task ProcessImages()
        {
            
        }
        
    }
}
