Esempio n. 1
0
        public async Task DumpAsync()
        {
            if (!isChanged)
            {
                return;
            }

            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream    ms        = new MemoryStream();

            formatter.Serialize(ms, CustomPatterns);
            FileActionRequestEventArgs args = new FileActionRequestEventArgs(Name + "CustomPatterns", ms.ToArray());

            await OnWriteToFileRequest(args);

            Dictionary <string, Dictionary <string, object> > currentState = new Dictionary <string, Dictionary <string, object> >();

            foreach (PatternViewModel pattern in PatternEntries)
            {
                Dictionary <string, object> entry = new Dictionary <string, object>();
                entry.Add("PatternCommondDownloadFolderPath", pattern.PatternCommondDownloadFolderPathText);
                entry.Add("PatternEntries", pattern.PatternEntries.ToList());
                currentState.Add(pattern.SelectedPattern, entry);
            }

            formatter = new BinaryFormatter();
            ms        = new MemoryStream();
            formatter.Serialize(ms, currentState);
            args = new FileActionRequestEventArgs(Name + "State", ms.ToArray());
            await OnWriteToFileRequest(args);
        }
Esempio n. 2
0
        public async Task RestoreAsync()
        {
            SavePatternWindow = new ObservableCollection <AddNewPatternViewModel>();
            FileActionRequestEventArgs args = new FileActionRequestEventArgs(Name + "State");

            await OnReadFromFileRequest(args);

            if (args.Exception != null)
            {
                throw args.Exception;
            }

            Patterns = new List <Pattern>();
            Patterns.Add(GetDefaultPattern());
            await GetCustomPatterns();

            Patterns.AddRange(CustomPatterns);

            if (args.InOutData == null)
            {
                PatternEntries = new ObservableCollection <PatternViewModel>();
                var entry = new PatternViewModel(Patterns, this);
                entry.SelectedPattern = Pattern.Default;
                entry.PatternChanged += OnPatternEntryChanged;
                PatternEntries.Add(entry);
                return;
            }
            await Task.Run(() =>
            {
                MemoryStream ms = new MemoryStream();
                ms.Write(args.InOutData, 0, args.InOutData.Length);
                ms.Position = 0;

                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Binder          = new Binder();
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
                var pluginViewModelState = (Dictionary <string, Dictionary <string, object> >)formatter.Deserialize(ms);
                PatternEntries           = new ObservableCollection <PatternViewModel>();

                foreach (string key in pluginViewModelState.Keys)
                {
                    PatternViewModel patternView = new PatternViewModel(Patterns, this);
                    patternView.PatternChanged  += OnPatternEntryChanged;
                    patternView.SelectedPattern  = key;
                    patternView.PatternEntries.Clear();
                    patternView.PatternCommondDownloadFolderPathText = (string)pluginViewModelState[key]["PatternCommondDownloadFolderPath"];
                    foreach (PatternEntryViewModel entry in (List <PatternEntryViewModel>)pluginViewModelState[key]["PatternEntries"])
                    {
                        entry.PatternDownloadStatusVisibility = Visibility.Collapsed;
                        patternView.AddPatternEntry(entry);
                    }
                    PatternEntries.Add(patternView);
                }
            });
        }
Esempio n. 3
0
        private async Task GetCustomPatterns()
        {
            FileActionRequestEventArgs args = new FileActionRequestEventArgs(Name + "CustomPatterns");

            await OnReadFromFileRequest(args);

            if (args.Exception != null)
            {
                throw args.Exception;
            }
            if (args.InOutData != null)
            {
                MemoryStream ms = new MemoryStream();
                ms.Write(args.InOutData, 0, args.InOutData.Length);
                ms.Position = 0;

                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Binder = new Binder();
                CustomPatterns   = (List <Pattern>)formatter.Deserialize(ms);
            }
        }
Esempio n. 4
0
 protected virtual async Task OnWriteToFileRequest(FileActionRequestEventArgs args)
 {
     await WriteToFileRequest?.Invoke(this, args);
 }
Esempio n. 5
0
 protected virtual async Task OnReadFromFileRequest(FileActionRequestEventArgs args)
 {
     await ReadFromFileRequest?.Invoke(this, args);
 }