| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -67,7 +67,7 @@ object BackupRestoreUi { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    fun selectBackupFolder(fragment: Fragment) { | 
					 | 
					 | 
					 | 
					    fun selectBackupFolder(fragment: Fragment) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        fragment.alert { | 
					 | 
					 | 
					 | 
					        fragment.alert { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            titleResource = R.string.select_folder | 
					 | 
					 | 
					 | 
					            titleResource = R.string.select_folder | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            items(arrayListOf("默认路径", "系统文件夹选择器", "自带文件夹选择器")) { _, index -> | 
					 | 
					 | 
					 | 
					            items(fragment.resources.getStringArray(R.array.select_folder).toList()) { _, index -> | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                when (index) { | 
					 | 
					 | 
					 | 
					                when (index) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    0 -> PermissionsCompat.Builder(fragment) | 
					 | 
					 | 
					 | 
					                    0 -> PermissionsCompat.Builder(fragment) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        .addPermissions(*Permissions.Group.STORAGE) | 
					 | 
					 | 
					 | 
					                        .addPermissions(*Permissions.Group.STORAGE) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -118,23 +118,38 @@ object BackupRestoreUi { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private fun selectRestoreFolder(fragment: Fragment) { | 
					 | 
					 | 
					 | 
					    private fun selectRestoreFolder(fragment: Fragment) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        fragment.alert { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) | 
					 | 
					 | 
					 | 
					            titleResource = R.string.select_folder | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) | 
					 | 
					 | 
					 | 
					            items(fragment.resources.getStringArray(R.array.select_folder).toList()) { _, index -> | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            fragment.startActivityForResult(intent, restoreSelectRequestCode) | 
					 | 
					 | 
					 | 
					                when (index) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (e: java.lang.Exception) { | 
					 | 
					 | 
					 | 
					                    0 -> PermissionsCompat.Builder(fragment) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            PermissionsCompat.Builder(fragment) | 
					 | 
					 | 
					 | 
					                        .addPermissions(*Permissions.Group.STORAGE) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .addPermissions(*Permissions.Group.STORAGE) | 
					 | 
					 | 
					 | 
					                        .rationale(R.string.tip_perm_request_storage) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .rationale(R.string.tip_perm_request_storage) | 
					 | 
					 | 
					 | 
					                        .onGranted { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .onGranted { | 
					 | 
					 | 
					 | 
					                            Coroutine.async { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    Coroutine.async { | 
					 | 
					 | 
					 | 
					                                AppConfig.backupPath = Backup.legadoPath | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        Restore.restore(Backup.legadoPath) | 
					 | 
					 | 
					 | 
					                                Restore.restore(Backup.legadoPath) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    }.onSuccess { | 
					 | 
					 | 
					 | 
					                            }.onSuccess { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        fragment.toast(R.string.restore_success) | 
					 | 
					 | 
					 | 
					                                fragment.toast(R.string.restore_success) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        .request() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    1 -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            fragment.startActivityForResult(intent, restoreSelectRequestCode) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } catch (e: java.lang.Exception) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            e.printStackTrace() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            fragment.toast(e.localizedMessage ?: "ERROR") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    2 -> { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                .request() | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        }.show() | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { | 
					 | 
					 | 
					 | 
					    fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |