Skip to content

Commit b276205

Browse files
committed
Settings now moved correctly if the user don't want to overwrite files
1 parent 19c3c84 commit b276205

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

Source/NETworkManager/Models/Settings/SettingsManager.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Linq;
34
using System.Reflection;
45
using System.Threading.Tasks;
56
using System.Xml.Serialization;
@@ -128,12 +129,12 @@ public static void Save()
128129
Current.SettingsChanged = false;
129130
}
130131

131-
public static Task MoveSettingsAsync(string sourceLocation, string targedLocation, bool overwrite)
132+
public static Task MoveSettingsAsync(string sourceLocation, string targedLocation, bool overwrite, string[] filesTargedLocation)
132133
{
133-
return Task.Run(() => MoveSettings(sourceLocation, targedLocation, overwrite));
134+
return Task.Run(() => MoveSettings(sourceLocation, targedLocation, overwrite, filesTargedLocation));
134135
}
135136

136-
private static void MoveSettings(string sourceLocation, string targedLocation, bool overwrite)
137+
private static void MoveSettings(string sourceLocation, string targedLocation, bool overwrite, string[] filesTargedLocation = null)
137138
{
138139
string[] sourceFiles = Directory.GetFiles(sourceLocation);
139140

@@ -143,9 +144,9 @@ private static void MoveSettings(string sourceLocation, string targedLocation, b
143144
foreach (string file in sourceFiles)
144145
{
145146
// Skip if file exists and user don't want to overwrite it
146-
if (!overwrite && File.Exists(file))
147+
if (!overwrite && ((filesTargedLocation.Any(x => Path.GetFileName(x) == Path.GetFileName(file)))))
147148
continue;
148-
149+
149150
File.Copy(file, Path.Combine(targedLocation, Path.GetFileName(file)), overwrite);
150151
}
151152

Source/NETworkManager/ViewModels/SettingsSettingsViewModel.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,8 +429,10 @@ private async void ChangeSettingsAction()
429429
bool overwrite = false;
430430
bool forceRestart = false;
431431

432+
string[] filesTargedLocation = Directory.GetFiles(LocationSelectedPath);
433+
432434
// Check if there are any settings files in the folder...
433-
if (FilesContainsSettingsFiles(Directory.GetFiles(LocationSelectedPath)))
435+
if (FilesContainsSettingsFiles(filesTargedLocation))
434436
{
435437
MetroDialogSettings settings = AppearanceManager.MetroDialog;
436438

@@ -459,7 +461,7 @@ private async void ChangeSettingsAction()
459461
// Try moving files (permissions, file is in use...)
460462
try
461463
{
462-
await SettingsManager.MoveSettingsAsync(SettingsManager.GetSettingsLocation(), LocationSelectedPath, overwrite);
464+
await SettingsManager.MoveSettingsAsync(SettingsManager.GetSettingsLocation(), LocationSelectedPath, overwrite, filesTargedLocation);
463465

464466
Properties.Settings.Default.Settings_CustomSettingsLocation = LocationSelectedPath;
465467

@@ -468,7 +470,11 @@ private async void ChangeSettingsAction()
468470
}
469471
catch (Exception ex)
470472
{
471-
await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error") as string, ex.Message, MessageDialogStyle.Affirmative, AppearanceManager.MetroDialog);
473+
MetroDialogSettings settings = AppearanceManager.MetroDialog;
474+
475+
settings.AffirmativeButtonText = LocalizationManager.GetStringByKey("String_Button_OK");
476+
477+
await dialogCoordinator.ShowMessageAsync(this, LocalizationManager.GetStringByKey("String_Header_Error") as string, ex.Message, MessageDialogStyle.Affirmative, settings);
472478
}
473479

474480
LocationSelectedPath = string.Empty;

0 commit comments

Comments
 (0)