setup controller: remove hooked up delegates after fetcher has finished

This commit is contained in:
Hylke Bons 2012-03-01 18:56:02 +00:00
parent e1053ada73
commit 4aed67a534

View file

@ -305,43 +305,54 @@ namespace SparkleShare {
} }
public void AddPageCompleted (string address, string path) public void AddPageCompleted (string address, string remote_path)
{ {
SyncingFolder = Path.GetFileNameWithoutExtension (path); SyncingFolder = Path.GetFileNameWithoutExtension (remote_path);
PreviousAddress = address; PreviousAddress = address;
PreviousPath = path; PreviousPath = remote_path;
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Syncing, null); ChangePageEvent (PageType.Syncing, null);
// TODO: Remove events afterwards Program.Controller.FolderFetched += AddPageFetchedDelegate;
Program.Controller.FolderFetchError += AddPageFetchErrorDelegate;
Program.Controller.FolderFetching += SyncingPageFetchingDelegate;
Program.Controller.FetchFolder (address, remote_path, SelectedPlugin.AnnouncementsUrl);
}
// The following private methods are
// delegates used by the previous method
private void AddPageFetchedDelegate (string [] warnings)
{
SyncingFolder = "";
Program.Controller.FolderFetched += delegate (string [] warnings) {
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Finished, warnings); ChangePageEvent (PageType.Finished, warnings);
PreviousAddress = ""; Program.Controller.FolderFetched -= AddPageFetchedDelegate;
SyncingFolder = ""; Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate;
PreviousUrl = ""; Program.Controller.FolderFetching -= SyncingPageFetchingDelegate;
SelectedPlugin = Plugins [0]; }
};
Program.Controller.FolderFetchError += delegate (string remote_url) { private void AddPageFetchErrorDelegate (string remote_url)
Thread.Sleep (1000); {
SyncingFolder = "";
PreviousUrl = remote_url; PreviousUrl = remote_url;
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Error, null); ChangePageEvent (PageType.Error, null);
SyncingFolder = ""; Program.Controller.FolderFetched -= AddPageFetchedDelegate;
}; Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate;
Program.Controller.FolderFetching -= SyncingPageFetchingDelegate;
}
Program.Controller.FolderFetching += delegate (double percentage) { private void SyncingPageFetchingDelegate (double percentage)
{
if (UpdateProgressBarEvent != null) if (UpdateProgressBarEvent != null)
UpdateProgressBarEvent (percentage); UpdateProgressBarEvent (percentage);
};
Program.Controller.FetchFolder (address, path, SelectedPlugin.AnnouncementsUrl);
} }
@ -349,8 +360,7 @@ namespace SparkleShare {
{ {
SyncingFolder = Path.GetFileNameWithoutExtension (PendingInvite.RemotePath); SyncingFolder = Path.GetFileNameWithoutExtension (PendingInvite.RemotePath);
PreviousAddress = PendingInvite.Address; PreviousAddress = PendingInvite.Address;
// TODO: trailing slash should work PreviousPath = PendingInvite.RemotePath; // FIXME: trailing slash should work
PreviousPath = PendingInvite.RemotePath;
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Syncing, null); ChangePageEvent (PageType.Syncing, null);
@ -362,37 +372,41 @@ namespace SparkleShare {
return; return;
} }
Program.Controller.FolderFetched += InvitePageFetchedDelegate;
Program.Controller.FolderFetchError += InvitePageFetchErrorDelegate;
Program.Controller.FolderFetching += SyncingPageFetchingDelegate;
// TODO: Remove events afterwards Program.Controller.FetchFolder (PendingInvite.Address,
PendingInvite.RemotePath, PendingInvite.AnnouncementsUrl.ToString ());
}
// The following private methods are
// delegates used by the previous method
private void InvitePageFetchedDelegate (string [] warnings)
{
SyncingFolder = "";
PendingInvite = null;
Program.Controller.FolderFetched += delegate (string [] warnings) {
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Finished, warnings); ChangePageEvent (PageType.Finished, warnings);
PreviousAddress = ""; Program.Controller.FolderFetched -= AddPageFetchedDelegate;
Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate;
Program.Controller.FolderFetching -= SyncingPageFetchingDelegate;
}
private void InvitePageFetchErrorDelegate (string remote_url)
{
SyncingFolder = ""; SyncingFolder = "";
PreviousUrl = "";
SelectedPlugin = Plugins [0];
PendingInvite = null;
};
Program.Controller.FolderFetchError += delegate (string remote_url) {
PreviousUrl = remote_url; PreviousUrl = remote_url;
if (ChangePageEvent != null) if (ChangePageEvent != null)
ChangePageEvent (PageType.Error, null); ChangePageEvent (PageType.Error, null);
SyncingFolder = ""; Program.Controller.FolderFetched -= AddPageFetchedDelegate;
}; Program.Controller.FolderFetchError -= AddPageFetchErrorDelegate;
Program.Controller.FolderFetching -= SyncingPageFetchingDelegate;
Program.Controller.FolderFetching += delegate (double percentage) {
if (UpdateProgressBarEvent != null)
UpdateProgressBarEvent (percentage);
};
Program.Controller.FetchFolder (PendingInvite.Address,
PendingInvite.RemotePath, PendingInvite.AnnouncementsUrl.ToString ());
} }
@ -433,6 +447,8 @@ namespace SparkleShare {
public void FinishPageCompleted () public void FinishPageCompleted ()
{ {
SelectedPlugin = Plugins [0];
PreviousUrl = "";
PreviousAddress = ""; PreviousAddress = "";
PreviousPath = ""; PreviousPath = "";