public void RemoveRepositoryFromSync(string reponame) { lock (this.repo_lock) { RepoInfo f = ConfigManager.CurrentConfig.GetRepoInfo(reponame); if (f != null) { Edit edit = null; if (this.edits.TryGetValue(reponame, out edit)) { edit.Controller.CloseWindow(); } this.RemoveRepository(f); ConfigManager.CurrentConfig.Folders.Remove(f); ConfigManager.CurrentConfig.Save(); } else { Logger.Warn("Reponame \"" + reponame + "\" could not be found: Removing Repository failed"); } } // Update UI. this.FolderListChanged(); }
private void EditRepository(string reponame, Edit.EditType type) { RepoInfo folder; lock (this.repo_lock) { folder = ConfigManager.CurrentConfig.GetRepoInfo(reponame); if (folder == null) { Logger.Warn("Reponame \"" + reponame + "\" could not be found: Editing Repository failed"); return; } Edit edit = null; if (this.edits.TryGetValue(reponame, out edit)) { edit.Controller.OpenWindow(); return; } CmisRepoCredentials credentials = new CmisRepoCredentials() { Address = folder.Address, UserName = folder.User, Password = new Password() { ObfuscatedPassword = folder.ObfuscatedPassword }, RepoId = folder.RepositoryId }; List <string> oldIgnores = new List <string>(); foreach (var ignore in folder.IgnoredFolders) { if (!string.IsNullOrEmpty(ignore.Path)) { oldIgnores.Add(ignore.Path); } } edit = new Edit(type, credentials, folder.DisplayName, folder.RemotePath, oldIgnores, folder.LocalPath); this.edits.Add(reponame, edit); edit.Controller.SaveFolderEvent += delegate { lock (this.repo_lock) { folder.IgnoredFolders.Clear(); foreach (string ignore in edit.Ignores) { folder.AddIgnorePath(ignore); } folder.SetPassword(edit.Credentials.Password); ConfigManager.CurrentConfig.Save(); foreach (Repository repo in this.repositories) { if (repo.Name == reponame) { repo.Queue.AddEvent(new RepoConfigChangedEvent(folder)); } } } }; edit.Controller.CloseWindowEvent += delegate { lock (this.repo_lock) { this.edits.Remove(reponame); } }; edit.Controller.OpenWindow(); } }
private void EditRepository(string reponame, Edit.EditType type) { RepoInfo folder; lock (this.repoLock) { folder = ConfigManager.CurrentConfig.GetRepoInfo(reponame); if (folder == null) { Logger.Warn("Reponame \"" + reponame + "\" could not be found: Editing Repository failed"); return; } Edit edit = null; if (this.edits.TryGetValue(reponame, out edit)) { edit.Controller.OpenWindow(); return; } CmisRepoCredentials credentials = new CmisRepoCredentials() { Address = folder.Address, Binding = folder.Binding, UserName = folder.User, Password = new Password() { ObfuscatedPassword = folder.ObfuscatedPassword }, RepoId = folder.RepositoryId }; List<string> oldIgnores = new List<string>(); foreach (var ignore in folder.IgnoredFolders) { if (!string.IsNullOrEmpty(ignore.Path)) { oldIgnores.Add(ignore.Path); } } edit = new Edit(type, credentials, folder.DisplayName, folder.RemotePath, oldIgnores, folder.LocalPath); this.edits.Add(reponame, edit); edit.Controller.SaveFolderEvent += delegate { lock (this.repoLock) { folder.IgnoredFolders.Clear(); foreach (string ignore in edit.Ignores) { folder.AddIgnorePath(ignore); } folder.SetPassword(edit.Credentials.Password); ConfigManager.CurrentConfig.Save(); foreach (Repository repo in this.repositories) { if (repo.Name == reponame) { repo.Queue.AddEvent(new RepoConfigChangedEvent(folder)); } } } }; edit.Controller.CleanWindowEvent += delegate { lock (this.repoLock) { this.edits.Remove(reponame); } }; edit.Controller.OpenWindow(); } }