Exemple #1
0
        public async void RefreshModProjects()
        {
            if (MainAppData.ProgressActive)
            {
                return;
            }

            if (Data.CanClickRefresh)
            {
                Data.CanClickRefresh = false;

                await Task.Run(() =>
                {
                    DOS2Commands.RefreshManagedProjects(Data);
                    Data.CanClickRefresh = true;
                });
            }
        }
Exemple #2
0
        public void Start()
        {
            DOS2Commands.SetData(Data);

            LoadDataDirectory();
            LoadDirectoryLayout();
            InitModuleKeywords();

            DOS2Commands.LoadAll(Data);

            Data.UpdateManageButtonsText();

            if (saveModuleSettings)
            {
                FileCommands.Save.SaveModuleSettings(Data);
                saveModuleSettings = false;
            }
#if DEBUG
            //TestView();
#endif
        }
Exemple #3
0
        public async void RefreshAllProjects()
        {
            if (MainAppData.ProgressActive)
            {
                return;
            }

            if (Data.CanClickRefresh)
            {
                Data.CanClickRefresh = false;

                await Task.Run(() =>
                {
                    DOS2Commands.LoadAll(Data);
                    Data.CanClickRefresh = true;
                });
            }
            else
            {
                //Log.Here().Activity("Currently refreshing.");
            }
        }
Exemple #4
0
        public void AddProjects(List <AvailableProjectViewData> selectedItems)
        {
            bool bSaveData = false;

            foreach (AvailableProjectViewData project in selectedItems)
            {
                Log.Here().Activity($"Adding project {project.Name} data to managed projects.");
                var modData = Data.ModProjects.Where(p => p.ProjectName == project.Name).FirstOrDefault();
                if (modData != null)
                {
                    //ManagedProjects.Add(new ProjectEntryData(modData.ProjectInfo, modData.ModInfo));
                    Data.ManagedProjects.Add(modData);
                    var availableProject = Data.NewProjects.Where(p => p.Name == project.Name).FirstOrDefault();
                    if (availableProject != null)
                    {
                        Data.NewProjects.Remove(availableProject);
                    }

                    if (Data.ManagedProjectsData.SavedProjects.Items.Any(p => p.UUID == modData.UUID))
                    {
                        if (modData.ProjectAppData == null)
                        {
                            ProjectAppData data = Data.ManagedProjectsData.SavedProjects.Items.Where(p => p.UUID == modData.ModuleInfo.UUID).FirstOrDefault();
                            if (data != null)
                            {
                                modData.ProjectAppData = data;

                                Log.Here().Activity($"Linked project {modData.ProjectName} data to managed project data.");
                            }
                        }
                    }
                    else
                    {
                        ProjectAppData data = new ProjectAppData()
                        {
                            Name          = modData.ProjectName,
                            UUID          = modData.ModuleInfo.UUID,
                            LastBackupUTC = null
                        };
                        Data.ManagedProjectsData.SavedProjects.AddOrUpdate(data);
                        modData.ProjectAppData = data;

                        Log.Here().Activity($"Added project {modData.DisplayName} to managed projects.");

                        bSaveData = true;
                    }
                }
                else
                {
#if DEBUG
                    Data.ManagedProjects.Add(ModProjectData.Test(project.Name));
#else
                    MainWindow.FooterError($"Error adding project {project.Name} to managed projects: Mod data doesn't exist.");
#endif
                }
            }

            Data.RaisePropertyChanged("NewProjects");

            if (bSaveData)
            {
                if (DOS2Commands.SaveManagedProjects(Data))
                {
                    MainWindow.FooterLog("Saved Managed Projects data to {0}.", Data.Settings.AddedProjectsFile);
                }
                else
                {
                    MainWindow.FooterError("Error saving Managed Projects data to {0}.", Data.Settings.AddedProjectsFile);
                }
            }
        }
Exemple #5
0
        private async Task <int> BackupSelectedProjectsAsync(ConcurrentBag <ModProjectData> selectedProjects)
        {
            AppController.Main.Data.ProgressValueMax = selectedProjects.Count * 2;

            int totalSuccess = 0;

            if (selectedProjects != null)
            {
                int i = 0;
                foreach (var project in selectedProjects)
                {
                    AppController.Main.UpdateProgressTitle((selectedProjects.Count > 1 ? "Backing up projects..." : $"Backing up project... ") + $"{i}/{selectedProjects.Count}");

                    //Log.Here().Activity($"[Progress-Backup] Target percentage for this backup iteration is {targetPercentage} => {totalPercentageAmount}. Amount per tick is {amountPerTick}.");

                    AppController.Main.UpdateProgressMessage($"Creating archive for project {project.ProjectName}...");

                    var backupSuccess = await BackupProjectAsync(project, targetBackupOutputDirectory, Data.Settings.BackupMode);

                    if (backupSuccess == FileCreationTaskResult.Success)
                    {
                        totalSuccess += 1;
                        Log.Here().Activity("Successfully created archive for {0}.", project.ProjectName);
                        project.LastBackup = DateTime.Now;
                        var d = Data.ManagedProjectsData.SavedProjects.Items.Where(p => p.UUID == project.UUID).FirstOrDefault();
                        if (d != null)
                        {
                            d.LastBackupUTC = project.LastBackup?.ToUniversalTime().ToString();
                        }

                        AppController.Main.UpdateProgressLog("Archive created.");
                    }
                    else if (backupSuccess == FileCreationTaskResult.Error)
                    {
                        Log.Here().Error("Failed to create archive for {0}.", project.ProjectName);
                        AppController.Main.UpdateProgressLog("Archive creation failed.");
                    }
                    else
                    {
                        totalSuccess += 1;
                        Log.Here().Activity("Skipped archive creation for {0}.", project.ProjectName);
                    }

                    AppController.Main.UpdateProgress(1);

                    AppController.Main.UpdateProgressTitle((selectedProjects.Count > 1 ? "Backing up projects..." : $"Backing up project... ") + $"{i + 1}/{selectedProjects.Count}");
                    i++;
                }
            }

            AppController.Main.UpdateProgressTitle((selectedProjects.Count > 1 ? "Backing up projects..." : $"Backing up project... ") + $"{selectedProjects.Count}/{selectedProjects.Count}");
            AppController.Main.UpdateProgressMessage("Finishing up...");
            AppController.Main.UpdateProgressLog("Backup quest complete. +5 XP");
            AppController.Main.FinishProgress();

            if (totalSuccess > 0)
            {
                DOS2Commands.SaveManagedProjects(this.Data);
            }

            return(totalSuccess);
        }