Move more logic from [intro] to [controller]
This commit is contained in:
parent
b5ef0baf39
commit
8bf57aa96e
|
@ -41,7 +41,12 @@ namespace SparkleLib {
|
||||||
|
|
||||||
Server = server;
|
Server = server;
|
||||||
Channel = channel;
|
Channel = channel;
|
||||||
|
|
||||||
|
//TODO: check why nick is sometimes null
|
||||||
|
if (Nick != null)
|
||||||
Nick = nick.Replace ("@", "_at_").Replace (".", "_dot_");
|
Nick = nick.Replace ("@", "_at_").Replace (".", "_dot_");
|
||||||
|
else
|
||||||
|
Nick = "oops";
|
||||||
|
|
||||||
// Keep the nick short
|
// Keep the nick short
|
||||||
if (Nick.Length > 9)
|
if (Nick.Length > 9)
|
||||||
|
|
|
@ -30,6 +30,12 @@ namespace SparkleShare {
|
||||||
public string FolderSize;
|
public string FolderSize;
|
||||||
|
|
||||||
|
|
||||||
|
public event FolderFetchedEventHandler FolderFetched;
|
||||||
|
public delegate void FolderFetchedEventHandler ();
|
||||||
|
|
||||||
|
public event FolderFetchErrorEventHandler FolderFetchError;
|
||||||
|
public delegate void FolderFetchErrorEventHandler ();
|
||||||
|
|
||||||
public event RepositoryListChangedEventHandler RepositoryListChanged;
|
public event RepositoryListChangedEventHandler RepositoryListChanged;
|
||||||
public delegate void RepositoryListChangedEventHandler ();
|
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
|
// Quits the program
|
||||||
public void Quit ()
|
public void Quit ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -358,7 +358,33 @@ namespace SparkleShare {
|
||||||
string url = server + "/" + name;
|
string url = server + "/" + name;
|
||||||
SparkleHelpers.DebugInfo ("Git", "[" + name + "] Formed URL: " + url);
|
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
|
// Enables or disables the 'Next' button depending on the
|
||||||
// entries filled in by the user
|
// entries filled in by the user
|
||||||
private void CheckAccountForm ()
|
private void CheckAccountForm ()
|
||||||
|
|
Loading…
Reference in a new issue