예제 #1
0
        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();
        }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }