From 8bf57aa96e66b0ae3014552370a9ac31e5337577 Mon Sep 17 00:00:00 2001 From: Hylke Bons Date: Fri, 19 Nov 2010 01:07:59 +0000 Subject: [PATCH] Move more logic from [intro] to [controller] --- SparkleLib/SparkleListener.cs | 7 +- SparkleShare/SparkleController.cs | 96 +++++++++++++++++++++++ SparkleShare/SparkleIntro.cs | 124 +++++++----------------------- 3 files changed, 129 insertions(+), 98 deletions(-) diff --git a/SparkleLib/SparkleListener.cs b/SparkleLib/SparkleListener.cs index 9494c59f..73fd9530 100644 --- a/SparkleLib/SparkleListener.cs +++ b/SparkleLib/SparkleListener.cs @@ -41,8 +41,13 @@ namespace SparkleLib { Server = server; Channel = channel; + + //TODO: check why nick is sometimes null + if (Nick != null) Nick = nick.Replace ("@", "_at_").Replace (".", "_dot_"); - + else + Nick = "oops"; + // Keep the nick short if (Nick.Length > 9) Nick = Nick.Substring (0, 9); diff --git a/SparkleShare/SparkleController.cs b/SparkleShare/SparkleController.cs index 31672846..17e83608 100644 --- a/SparkleShare/SparkleController.cs +++ b/SparkleShare/SparkleController.cs @@ -30,6 +30,12 @@ namespace SparkleShare { public string FolderSize; + public event FolderFetchedEventHandler FolderFetched; + public delegate void FolderFetchedEventHandler (); + + public event FolderFetchErrorEventHandler FolderFetchError; + public delegate void FolderFetchErrorEventHandler (); + public event RepositoryListChangedEventHandler RepositoryListChanged; public delegate void RepositoryListChangedEventHandler (); @@ -617,6 +623,96 @@ namespace SparkleShare { } + public void FetchFolder (string url, string name) + { + + // Strip the '.git' from the name + string canonical_name = System.IO.Path.GetFileNameWithoutExtension (name); + string tmp_folder = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, canonical_name); + + SparkleFetcher fetcher = new SparkleFetcher (url, tmp_folder); + + + bool folder_exists = Directory.Exists ( + SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name)); + + // Add a numbered suffix to the nameif a folder with the same name + // already exists. Example: "Folder (2)" + int i = 1; + while (folder_exists) { + + i++; + folder_exists = Directory.Exists ( + SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name + " (" + i + ")")); + + } + + string target_folder_name = canonical_name; + + if (i > 1) + target_folder_name += " (" + i + ")"; + + + fetcher.CloningStarted += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning Repository"); + + }; + + + fetcher.CloningFinished += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Repository cloned"); + + SparkleHelpers.ClearAttributes (tmp_folder); + + try { + + string target_folder_path = SparkleHelpers.CombineMore (SparklePaths.SparklePath, + target_folder_name); + + Directory.Move (tmp_folder, target_folder_path); + + } catch (Exception e) { + + SparkleHelpers.DebugInfo ("Git", "[" + name + "] Error moving folder: " + e.Message); + + } + + + if (FolderFetched != null) + FolderFetched (); + + if (RepositoryListChanged != null) + RepositoryListChanged (); + + }; + + + fetcher.CloningFailed += delegate { + + SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning failed"); + + if (Directory.Exists (tmp_folder)) { + + SparkleHelpers.ClearAttributes (tmp_folder); + Directory.Delete (tmp_folder, true); + + SparkleHelpers.DebugInfo ("Config", "[" + name + "] Deleted temporary directory"); + + } + + + if (FolderFetchError != null) + FolderFetchError (); + + }; + + fetcher.Clone (); + + } + + // Quits the program public void Quit () { diff --git a/SparkleShare/SparkleIntro.cs b/SparkleShare/SparkleIntro.cs index a0a346b8..a329517f 100644 --- a/SparkleShare/SparkleIntro.cs +++ b/SparkleShare/SparkleIntro.cs @@ -358,8 +358,34 @@ namespace SparkleShare { string url = server + "/" + name; SparkleHelpers.DebugInfo ("Git", "[" + name + "] Formed URL: " + url); - FetchFolder (url, name); + string canonical_name = System.IO.Path.GetFileNameWithoutExtension (name); + + DeleteEvent += PreventClose; + ShowSyncingPage (canonical_name); + + + SparkleShare.Controller.FolderFetched += delegate { + + DeleteEvent -= PreventClose; + + Application.Invoke (delegate { + ShowSuccessPage (name); + }); + + }; + + SparkleShare.Controller.FolderFetchError += delegate { + + DeleteEvent -= PreventClose; + + Application.Invoke (delegate { ShowErrorPage (); }); + + }; + + + SparkleShare.Controller.FetchFolder (url, name); + }; @@ -614,102 +640,6 @@ namespace SparkleShare { } - private void FetchFolder (string url, string name) - { - - // Strip the '.git' from the name - string canonical_name = System.IO.Path.GetFileNameWithoutExtension (name); - string tmp_folder = SparkleHelpers.CombineMore (SparklePaths.SparkleTmpPath, canonical_name); - - ShowSyncingPage (canonical_name); - SparkleFetcher fetcher = new SparkleFetcher (url, tmp_folder); - - - bool folder_exists = Directory.Exists ( - SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name)); - - int i = 1; - while (folder_exists) { - - i++; - folder_exists = Directory.Exists ( - SparkleHelpers.CombineMore (SparklePaths.SparklePath, canonical_name + " (" + i + ")")); - - } - - string target_folder_name = canonical_name; - - if (i > 1) - target_folder_name += " (" + i + ")"; - - - fetcher.CloningStarted += delegate { - - DeleteEvent += PreventClose; - - SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning Repository"); - - }; - - - fetcher.Progress.ProgressChanged += delegate { - Application.Invoke (delegate { ProgressBar.Fraction = fetcher.Progress.Fraction; - ProgressBar.ShowAll (); - }); - Console.WriteLine ("!!!!!!!!!!!UPDATED BAR!!!!!!!!1"); - }; - - - fetcher.CloningFinished += delegate { - - DeleteEvent -= PreventClose; - - SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Repository cloned"); - - SparkleHelpers.ClearAttributes (tmp_folder); - - try { - - string target_folder_path = SparkleHelpers.CombineMore (SparklePaths.SparklePath, - target_folder_name); - - Directory.Move (tmp_folder, target_folder_path); - - } catch (Exception e) { - - SparkleHelpers.DebugInfo ("Git", "[" + name + "] Error moving folder: " + e.Message); - - } - - Application.Invoke (delegate { ShowSuccessPage (target_folder_name); }); - - }; - - - fetcher.CloningFailed += delegate { - - DeleteEvent -= PreventClose; - - SparkleHelpers.DebugInfo ("Git", "[" + canonical_name + "] Cloning failed"); - - if (Directory.Exists (tmp_folder)) { - - SparkleHelpers.ClearAttributes (tmp_folder); - Directory.Delete (tmp_folder, true); - - SparkleHelpers.DebugInfo ("Config", "[" + name + "] Deleted temporary directory"); - - } - - Application.Invoke (delegate { ShowErrorPage (); }); - - }; - - fetcher.Clone (); - - } - - // Enables or disables the 'Next' button depending on the // entries filled in by the user private void CheckAccountForm ()