setup controller: remove hooked up delegates after fetcher has finished
This commit is contained in:
parent
e1053ada73
commit
4aed67a534
|
@ -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 = "";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue