private async void syncNewUserGroupMenuItem_Click(object sender, EventArgs e) { var ticket = Session.GetTikect(); if (string.IsNullOrWhiteSpace(ticket)) { return; } var group = (UserGroup)null; var syncDirectory = String.Empty; using (var syncNewUserGroup = new SyncNewUserGroupView(ticket)) { if (syncNewUserGroup.ShowDialog() == DialogResult.OK) { group = syncNewUserGroup.Group; syncDirectory = syncNewUserGroup.SyncDirectory; } else { return; } } var directory = string.Format("{0}\\{1}", syncDirectory, group.name); var fileFolderInfoList = new List <FileFolderInfo>(); var fileFolderInfo = new FileFolderInfo() { GroupId = group.id, Path = directory, SyncFolder = true }; fileFolderInfoList.Add(fileFolderInfo); using (var syncProgress = new SyncProgressView()) { if (syncProgress.SyncNewUserGroup(ticket, directory, group)) { fileFolderInfoList.AddRange(syncProgress.FileFolderList); } } //Detect the synchronizer object state if (_syncing || _synchronizer.Paused) { _synchronizer.Synchronize(fileFolderInfoList); } else { await _synchronizer.SynchronizeAsync(ticket, directory, fileFolderInfoList); } WatchingPath(syncDirectory); }
public async Task <List <FileFolderInfo> > SyncFolderAsync(string ticket, string syncDir, UserGroup group, FileFolder folder) { var fileFolderList = new List <FileFolderInfo>(); var folderIndex = 0; var currentFolder = new FileFolderInfo() { GroupId = group.id, FolderId = string.Empty, FileFolder = folder, Path = String.Format("{0}\\{1}", syncDir, folder.name), SyncFolder = false }; //Add the first entry from parameter fileFolderList.Add(currentFolder); //Create directory tree do { currentFolder = fileFolderList[folderIndex]; if (currentFolder != null) { var folders = await DokuFlexService.GetFoldersAsync(ticket, group.id, currentFolder.FileFolder.id); foreach (var folderItem in folders) { fileFolderList.Add( new FileFolderInfo() { GroupId = group.id, FolderId = currentFolder.FileFolder.id, FileFolder = folderItem, Path = string.Format("{0}\\{1}", currentFolder.Path, folderItem.name), SyncFolder = false } ); } } folderIndex++; } while (fileFolderList.Count > folderIndex); var localFileList = new List <FileFolderInfo>(); for (int i = 0; i < fileFolderList.Count; i++) { currentFolder = fileFolderList[i]; var files = await DokuFlexService.GetFilesAsync(ticket, group.id, currentFolder.FileFolder.id); //Files for the current folder foreach (var fileItem in files) { //Create path var path = string.Format("{0}\\{1}", currentFolder.Path, fileItem.name); //Add entry localFileList.Add( new FileFolderInfo() { GroupId = group.id, FolderId = currentFolder.FileFolder.id, FileFolder = fileItem, Path = path, SyncFolder = false } ); } } fileFolderList.AddRange(localFileList); return(fileFolderList); }
public async Task SyncANewUserGroupAsync(string p1, string p2, string p3) { var ticket = Session.GetTikect(); if (string.IsNullOrWhiteSpace(ticket)) { return; } var group = new UserGroup() { id = p1, name = p2 }; var syncDirectory = ConfigurationManager.GetValue(Resources.SyncDirectoryPathKey); if (string.IsNullOrWhiteSpace(syncDirectory)) { using (var syncNewUserGroup = new SyncNewUserGroupView(ticket, group)) { if (syncNewUserGroup.ShowDialog() == DialogResult.OK) { syncDirectory = syncNewUserGroup.SyncDirectory; } else { return; } } } if (SyncTableManager.GetByGroupId(p3) != null) { return; } var directory = string.Format("{0}\\{1}", syncDirectory, group.name); var fileFolderInfoList = new List <FileFolderInfo>(); var fileFolderInfo = new FileFolderInfo() { GroupId = group.id, Path = directory, SyncFolder = true }; fileFolderInfoList.Add(fileFolderInfo); using (var syncProgress = new SyncProgressView()) { if (syncProgress.SyncNewUserGroup(ticket, directory, group)) { fileFolderInfoList.AddRange(syncProgress.FileFolderList); } } //Detect the synchronizer object state if (_syncing || _synchronizer.Paused) { _synchronizer.Synchronize(fileFolderInfoList); } else { await _synchronizer.SynchronizeAsync(ticket, directory, fileFolderInfoList); } WatchingPath(syncDirectory); }