@@ -159,47 +159,45 @@ private async Task SetAsOpenFileDialogAsync()
159
159
160
160
private async Task ImportSettingsAsync()
161
161
{
162
- FileOpenPicker filePicker = InitializeWithWindow ( new FileOpenPicker ( ) ) ;
163
- filePicker . FileTypeFilter . Add ( ".zip" ) ;
162
+ string [ ] extensions = [ "ZipFileCapitalized" . GetLocalizedResource ( ) , "*.zip" ] ;
163
+ CommonDialogService . Open_FileOpenDialog ( MainWindow . Instance . WindowHandle , false , extensions , Environment . SpecialFolder . Desktop , out var filePath ) ;
164
164
165
- StorageFile file = await filePicker . PickSingleFileAsync ( ) ;
166
- if ( file is not null )
165
+ try
167
166
{
168
- try
169
- {
170
- var zipFolder = await ZipStorageFolder . FromStorageFileAsync ( file ) ;
171
- if ( zipFolder is null )
172
- return;
173
-
174
- var localFolderPath = ApplicationData. Current. LocalFolder. Path;
175
- var settingsFolder = await StorageFolder . GetFolderFromPathAsync ( Path . Combine ( localFolderPath , Constants . LocalSettings . SettingsFolderName ) ) ;
176
-
177
- // Import user settings
178
- var userSettingsFile = await zipFolder . GetFileAsync ( Constants . LocalSettings . UserSettingsFileName ) ;
179
- string importSettings = await userSettingsFile . ReadTextAsync ( ) ;
180
- UserSettingsService . ImportSettings ( importSettings ) ;
181
-
182
- // Import file tags list and DB
183
- var fileTagsList = await zipFolder . GetFileAsync ( Constants . LocalSettings . FileTagSettingsFileName ) ;
184
- string importTags = await fileTagsList . ReadTextAsync ( ) ;
185
- fileTagsSettingsService . ImportSettings ( importTags ) ;
186
- var fileTagsDB = await zipFolder . GetFileAsync ( Constants . LocalSettings . FileTagSettingsDatabaseFileName ) ;
187
- string importTagsDB = await fileTagsDB . ReadTextAsync ( ) ;
188
- var tagDbInstance = FileTagsHelper. GetDbInstance( ) ;
189
- tagDbInstance . Import ( importTagsDB ) ;
190
-
191
- // Import layout preferences and DB
192
- var layoutPrefsDB = await zipFolder . GetFileAsync ( Constants . LocalSettings . UserSettingsDatabaseFileName ) ;
193
- string importPrefsDB = await layoutPrefsDB . ReadTextAsync ( ) ;
194
- var layoutDbInstance = LayoutPreferencesManager. GetDatabaseManagerInstance( ) ;
195
- layoutDbInstance . Import ( importPrefsDB ) ;
196
- }
197
- catch ( Exception ex )
198
- {
199
- App . Logger . LogWarning ( ex , "Error importing settings" ) ;
200
- UIHelpers. CloseAllDialogs ( ) ;
201
- await DialogDisplayHelper. ShowDialogAsync ( "SettingsImportErrorTitle" . GetLocalizedResource ( ) , "SettingsImportErrorDescription" . GetLocalizedResource ( ) ) ;
202
- }
167
+ var file = await StorageHelpers . ToStorageItem < BaseStorageFile > ( filePath ) ;
168
+
169
+ var zipFolder = await ZipStorageFolder . FromStorageFileAsync ( file ) ;
170
+ if ( zipFolder is null )
171
+ return;
172
+
173
+ var localFolderPath = ApplicationData. Current. LocalFolder. Path;
174
+ var settingsFolder = await StorageFolder . GetFolderFromPathAsync ( Path . Combine ( localFolderPath , Constants . LocalSettings . SettingsFolderName ) ) ;
175
+
176
+ // Import user settings
177
+ var userSettingsFile = await zipFolder . GetFileAsync ( Constants . LocalSettings . UserSettingsFileName ) ;
178
+ string importSettings = await userSettingsFile . ReadTextAsync ( ) ;
179
+ UserSettingsService. ImportSettings ( importSettings ) ;
180
+
181
+ // Import file tags list and DB
182
+ var fileTagsList = await zipFolder . GetFileAsync ( Constants . LocalSettings . FileTagSettingsFileName ) ;
183
+ string importTags = await fileTagsList . ReadTextAsync ( ) ;
184
+ fileTagsSettingsService. ImportSettings ( importTags ) ;
185
+ var fileTagsDB = await zipFolder . GetFileAsync ( Constants . LocalSettings . FileTagSettingsDatabaseFileName ) ;
186
+ string importTagsDB = await fileTagsDB . ReadTextAsync ( ) ;
187
+ var tagDbInstance = FileTagsHelper. GetDbInstance( ) ;
188
+ tagDbInstance . Import ( importTagsDB ) ;
189
+
190
+ // Import layout preferences and DB
191
+ var layoutPrefsDB = await zipFolder . GetFileAsync ( Constants . LocalSettings . UserSettingsDatabaseFileName ) ;
192
+ string importPrefsDB = await layoutPrefsDB . ReadTextAsync ( ) ;
193
+ var layoutDbInstance = LayoutPreferencesManager. GetDatabaseManagerInstance( ) ;
194
+ layoutDbInstance . Import ( importPrefsDB ) ;
195
+ }
196
+ catch ( Exception ex )
197
+ {
198
+ App . Logger . LogWarning ( ex , "Error importing settings" ) ;
199
+ UIHelpers. CloseAllDialogs ( ) ;
200
+ await DialogDisplayHelper. ShowDialogAsync ( "SettingsImportErrorTitle" . GetLocalizedResource ( ) , "SettingsImportErrorDescription" . GetLocalizedResource ( ) ) ;
203
201
}
204
202
}
205
203
@@ -208,39 +206,48 @@ private async Task ExportSettingsAsync()
208
206
string [ ] extensions = [ "ZipFileCapitalized" . GetLocalizedResource ( ) , "*.zip" ] ;
209
207
CommonDialogService . Open_FileSaveDialog ( MainWindow . Instance . WindowHandle , false , extensions , Environment . SpecialFolder . Desktop , out var filePath ) ;
210
208
211
- var file = await StorageHelpers. ToStorageItem < StorageFile > ( filePath ) ;
212
- if ( file is not null )
209
+ try
213
210
{
214
- try
215
- {
216
- await ZipStorageFolder. InitArchive ( file , OutArchiveFormat . Zip ) ;
211
+ var handle = Win32PInvoke. CreateFileFromAppW(
212
+ filePath ,
213
+ Win32PInvoke . GENERIC_READ | Win32PInvoke . GENERIC_WRITE ,
214
+ Win32PInvoke . FILE_SHARE_READ | Win32PInvoke . FILE_SHARE_WRITE ,
215
+ nint . Zero ,
216
+ Win32PInvoke . CREATE_NEW ,
217
+ 0 ,
218
+ nint . Zero ) ;
217
219
218
- var zipFolder = ( ZipStorageFolder ) await ZipStorageFolder. FromStorageFileAsync ( file ) ;
219
- if ( zipFolder is null )
220
- return;
220
+ Win32PInvoke . CloseHandle ( handle ) ;
221
221
222
- var localFolderPath = ApplicationData . Current . LocalFolder . Path ;
222
+ var file = await StorageHelpers . ToStorageItem < BaseStorageFile > ( filePath ) ;
223
223
224
- // Export user settings
225
- var exportSettings = UTF8Encoding . UTF8 . GetBytes ( ( string ) UserSettingsService . ExportSettings ( ) ) ;
226
- await zipFolder. CreateFileAsync ( new MemoryStream ( exportSettings ) , Constants . LocalSettings . UserSettingsFileName , CreationCollisionOption . ReplaceExisting ) ;
224
+ await ZipStorageFolder . InitArchive ( file , OutArchiveFormat . Zip ) ;
227
225
228
- // Export file tags list and DB
229
- var exportTags = UTF8Encoding. UTF8 . GetBytes ( ( string ) fileTagsSettingsService . ExportSettings ( ) ) ;
230
- await zipFolder. CreateFileAsync ( new MemoryStream ( exportTags ) , Constants . LocalSettings . FileTagSettingsFileName , CreationCollisionOption . ReplaceExisting ) ;
231
- var tagDbInstance = FileTagsHelper. GetDbInstance ( ) ;
232
- byte [ ] exportTagsDB = UTF8Encoding . UTF8 . GetBytes ( tagDbInstance . Export ( ) ) ;
233
- await zipFolder . CreateFileAsync ( new MemoryStream ( exportTagsDB ) , Constants . LocalSettings . FileTagSettingsDatabaseFileName , CreationCollisionOption . ReplaceExisting ) ;
226
+ var zipFolder = ( ZipStorageFolder ) await ZipStorageFolder . FromStorageFileAsync ( file ) ;
227
+ if ( zipFolder is null )
228
+ return;
234
229
235
- // Export layout preferences DB
236
- var layoutDbInstance = LayoutPreferencesManager. GetDatabaseManagerInstance( ) ;
237
- byte [ ] exportPrefsDB = UTF8Encoding . UTF8 . GetBytes ( layoutDbInstance . Export ( ) ) ;
238
- await zipFolder . CreateFileAsync ( new MemoryStream ( exportPrefsDB ) , Constants . LocalSettings . UserSettingsDatabaseFileName , CreationCollisionOption . ReplaceExisting ) ;
239
- }
240
- catch ( Exception ex )
241
- {
242
- App. Logger . LogWarning ( ex , "Error exporting settings" ) ;
243
- }
230
+ var localFolderPath = ApplicationData. Current . LocalFolder . Path ;
231
+
232
+ // Export user settings
233
+ var exportSettings = UTF8Encoding . UTF8 . GetBytes ( ( string ) UserSettingsService . ExportSettings ( ) ) ;
234
+ await zipFolder. CreateFileAsync ( new MemoryStream ( exportSettings ) , Constants . LocalSettings . UserSettingsFileName , CreationCollisionOption . ReplaceExisting ) ;
235
+
236
+ // Export file tags list and DB
237
+ var exportTags = UTF8Encoding . UTF8 . GetBytes ( ( string ) fileTagsSettingsService . ExportSettings ( ) ) ;
238
+ await zipFolder. CreateFileAsync ( new MemoryStream ( exportTags ) , Constants . LocalSettings . FileTagSettingsFileName , CreationCollisionOption . ReplaceExisting ) ;
239
+ var tagDbInstance = FileTagsHelper. GetDbInstance ( ) ;
240
+ byte [ ] exportTagsDB = UTF8Encoding . UTF8 . GetBytes ( tagDbInstance . Export ( ) ) ;
241
+ await zipFolder . CreateFileAsync ( new MemoryStream ( exportTagsDB ) , Constants . LocalSettings . FileTagSettingsDatabaseFileName , CreationCollisionOption . ReplaceExisting ) ;
242
+
243
+ // Export layout preferences DB
244
+ var layoutDbInstance = LayoutPreferencesManager . GetDatabaseManagerInstance ( ) ;
245
+ byte [ ] exportPrefsDB = UTF8Encoding . UTF8 . GetBytes ( layoutDbInstance . Export ( ) ) ;
246
+ await zipFolder. CreateFileAsync ( new MemoryStream ( exportPrefsDB ) , Constants . LocalSettings . UserSettingsDatabaseFileName , CreationCollisionOption . ReplaceExisting ) ;
247
+ }
248
+ catch ( Exception ex )
249
+ {
250
+ App. Logger . LogWarning ( ex , "Error exporting settings" ) ;
244
251
}
245
252
}
246
253
0 commit comments