private void AddRepository(SparkleRepoBase repo) { lock (this.repo_lock) { this.repositories.Add(repo); this.repositories.Sort((x, y) => string.Compare(x.Name, y.Name)); } }
private void AddRepository(string folder_path) { SparkleRepoBase repo = null; string folder_name = Path.GetFileName(folder_path); string backend = this.config.GetBackendForFolder(folder_name); try { repo = (SparkleRepoBase)Activator.CreateInstance( Type.GetType("SparkleLib." + backend + ".SparkleRepo, SparkleLib." + backend), new object [] { folder_path, this.config } ); } catch (Exception e) { SparkleLogger.LogInfo("Controller", "Failed to load '" + backend + "' backend for '" + folder_name + "': " + e.Message); return; } repo.ChangesDetected += delegate { UpdateState(); }; repo.SyncStatusChanged += delegate(SyncStatus status) { if (status == SyncStatus.Idle) { ProgressPercentage = 0.0; ProgressSpeed = ""; } UpdateState(); }; repo.ProgressChanged += delegate(double percentage, string speed) { ProgressPercentage = percentage; ProgressSpeed = speed; UpdateState(); }; repo.NewChangeSet += delegate(SparkleChangeSet change_set) { if (NotificationsEnabled) { NotificationRaised(change_set); } }; repo.ConflictResolved += delegate { if (NotificationsEnabled) { AlertNotificationRaised("Conflict detected", "Don't worry, SparkleShare made a copy of each conflicting file."); } }; this.repositories.Add(repo); repo.Initialize(); }
private void RemoveRepository(string folder_path) { for (int i = 0; i < this.repositories.Count; i++) { SparkleRepoBase repo = this.repositories [i]; if (repo.LocalPath.Equals(folder_path)) { repo.Dispose(); this.repositories.Remove(repo); repo = null; return; } } }
// Removes a repository from the list of repositories and // updates the statusicon menu private void RemoveRepository(string folder_path) { string folder_name = Path.GetFileName(folder_path); for (int i = 0; i < Repositories.Count; i++) { SparkleRepoBase repo = Repositories [i]; if (repo.Name.Equals(folder_name)) { repo.Dispose(); Repositories.Remove(repo); repo = null; break; } } }
private void OnFilesChanged(List <string> changed_files_in_basedir) { List <string> triggered_repos = new List <string> (); foreach (string file in changed_files_in_basedir) { string repo_name; int path_sep_index = file.IndexOf(Path.DirectorySeparatorChar); if (path_sep_index >= 0) { repo_name = file.Substring(0, path_sep_index); } else { repo_name = file; } repo_name = Path.GetFileNameWithoutExtension(repo_name); SparkleRepoBase repo = GetRepoByName(repo_name); if (repo == null) { continue; } if (!triggered_repos.Contains(repo_name)) { triggered_repos.Add(repo_name); FileActivityTask task = MacActivityTask(repo, new FileSystemEventArgs(WatcherChangeTypes.Changed, file, "Unknown")); task(); } } }
private FileActivityTask MacActivityTask(SparkleRepoBase repo, FileSystemEventArgs fse_args) { return(delegate { new Thread(() => { repo.OnFileActivity(fse_args); }).Start(); }); }
private void AddRepository(string folder_path) { SparkleRepoBase repo = null; string folder_name = Path.GetFileName(folder_path); string backend = Config.GetBackendForFolder(folder_name); try { repo = (SparkleRepoBase)Activator.CreateInstance( Type.GetType("SparkleLib." + backend + ".SparkleRepo, SparkleLib." + backend), new object [] { folder_path, Config }); } catch (Exception e) { SparkleLogger.LogInfo("Controller", "Failed to load backend '" + backend + "' for '" + folder_name + "': ", e); return; } repo.ChangesDetected += delegate { UpdateState(); }; repo.SyncStatusChanged += delegate(SyncStatus status) { if (status == SyncStatus.Idle) { ProgressPercentage = 0.0; ProgressSpeedUp = 0.0; ProgressSpeedDown = 0.0; } UpdateState(); }; repo.ProgressChanged += delegate { ProgressPercentage = 0.0; ProgressSpeedUp = 0.0; ProgressSpeedDown = 0.0; double percentage = 0.0; int repo_count = 0; foreach (SparkleRepoBase rep in Repositories) { if (rep.ProgressPercentage > 0) { percentage += rep.ProgressPercentage; repo_count++; } if (rep.Status == SyncStatus.SyncUp) { ProgressSpeedUp += rep.ProgressSpeed; } if (rep.Status == SyncStatus.SyncDown) { ProgressSpeedDown += rep.ProgressSpeed; } } if (repo_count > 0) { ProgressPercentage = percentage / repo_count; } UpdateState(); }; repo.NewChangeSet += delegate(SparkleChangeSet change_set) { if (AvatarsEnabled) { change_set.User.AvatarFilePath = SparkleAvatars.GetAvatar(change_set.User.Email, 48, Config.FullPath); } NotificationRaised(change_set); }; repo.ConflictResolved += delegate { AlertNotificationRaised("Resolved a file collision", "Local and server versions were kept."); }; AddRepository(repo); repo.Initialize(); }
private void RemoveRepository(SparkleRepoBase repo) { lock (this.repo_lock) this.repositories.Remove(repo); }
private void AddRepository(string folder_path) { SparkleRepoBase repo = null; string folder_name = Path.GetFileName(folder_path); string backend = this.config.GetBackendForFolder(folder_name); try { repo = (SparkleRepoBase)Activator.CreateInstance( Type.GetType("SparkleLib." + backend + ".SparkleRepo, SparkleLib." + backend), new object [] { folder_path, this.config }); } catch (Exception e) { SparkleLogger.LogInfo("Controller", "Failed to load backend '" + backend + "' for '" + folder_name + "': ", e); return; } repo.ChangesDetected += delegate { UpdateState(); }; repo.SyncStatusChanged += delegate(SyncStatus status) { if (status == SyncStatus.Idle) { ProgressPercentage = 0.0; ProgressSpeedUp = 0.0; ProgressSpeedDown = 0.0; } UpdateState(); }; repo.ProgressChanged += delegate { ProgressPercentage = 0.0; ProgressSpeedUp = 0.0; ProgressSpeedDown = 0.0; double percentage = 0.0; int repo_count = 0; foreach (SparkleRepoBase rep in Repositories) { if (rep.ProgressPercentage > 0) { percentage += rep.ProgressPercentage; repo_count++; } if (rep.Status == SyncStatus.SyncUp) { ProgressSpeedUp += rep.ProgressSpeed; } if (rep.Status == SyncStatus.SyncDown) { ProgressSpeedDown += rep.ProgressSpeed; } } if (repo_count > 0) { ProgressPercentage = percentage / repo_count; } UpdateState(); }; repo.NewChangeSet += delegate(SparkleChangeSet change_set) { NotificationRaised(change_set); }; repo.ConflictResolved += delegate { AlertNotificationRaised("Conflict happened", "Don't worry, we've made a copy of each conflicting file."); }; this.repositories.Add(repo); repo.Initialize(); }
public ProjectInfo(SparkleRepoBase repo) { this.repo = repo; }
// Adds a repository to the list of repositories private void AddRepository(string folder_path) { SparkleRepoBase repo = null; string folder_name = Path.GetFileName(folder_path); string backend = SparkleConfig.DefaultConfig.GetBackendForFolder(folder_name); try { repo = (SparkleRepoBase)Activator.CreateInstance( Type.GetType("SparkleLib." + backend + ".SparkleRepo, SparkleLib." + backend), folder_path ); } catch { SparkleHelpers.DebugInfo("Controller", "Failed to load \"" + backend + "\" backend for \"" + folder_name + "\""); return; } repo.NewChangeSet += delegate(SparkleChangeSet change_set) { if (NotificationRaised != null) { NotificationRaised(change_set); } }; repo.ConflictResolved += delegate { if (AlertNotificationRaised != null) { AlertNotificationRaised("Conflict detected", "Don't worry, SparkleShare made a copy of each conflicting file."); } }; repo.SyncStatusChanged += delegate(SyncStatus status) { if (status == SyncStatus.Idle) { ProgressPercentage = 0.0; ProgressSpeed = ""; } if (status == SyncStatus.Idle || status == SyncStatus.SyncUp || status == SyncStatus.SyncDown || status == SyncStatus.Error) { UpdateState(); } }; repo.ProgressChanged += delegate(double percentage, string speed) { ProgressPercentage = percentage; ProgressSpeed = speed; UpdateState(); }; repo.ChangesDetected += delegate { UpdateState(); }; this.repositories.Add(repo); repo.Initialize(); }