public void RemoveTorrent(bool deleteTorrent, bool deleteData) { EventHandler <ShouldRemoveEventArgs> h = ShouldRemove; if (h != null) { ShouldRemoveEventArgs e = new ShouldRemoveEventArgs (SelectedDownloads, deleteData, deleteTorrent); h (this, e); if (!e.ShouldRemove) return; } foreach (Download torrent in SelectedDownloads) { if(torrent.State != Monsoon.State.Stopped) torrent.Stop(); allTorrents.Remove (torrent); if(deleteData){ logger.Info("Deleting {0} data", torrent.Torrent.Name); try{ if (Directory.Exists(Path.Combine(torrent.SavePath, torrent.Torrent.Name))) Directory.Delete(Path.Combine(torrent.SavePath, torrent.Torrent.Name), true); else File.Delete(Path.Combine(torrent.SavePath, torrent.Torrent.Name)); } catch (Exception e) { logger.Error("Failed to delete {0}: {1}", Path.Combine(torrent.SavePath, torrent.Torrent.Name), e.Message); } } if(deleteTorrent){ try{ logger.Info("Deleting torrent file {0} ", torrent.Torrent.TorrentPath); File.Delete(torrent.Torrent.TorrentPath); } catch { logger.Error("Unable to delete " + torrent.Torrent.TorrentPath); } // FIXME: Fast resume is central now, not individual for each torrent. try{ logger.Info("Deleting torrent fast resume file " + torrent.Torrent.TorrentPath); File.Delete(torrent.Torrent.TorrentPath + ".fresume"); } catch { logger.Error("Unable to delete " + torrent.Torrent.TorrentPath + ".fresume"); } } engine.Unregister(torrent.Manager); fastResume.RemoveAll (delegate (FastResume f) { return f.Infohash == torrent.InfoHash; }); logger.Info("Removed torrent " + torrent.Torrent.Name); } foreach (Download download in new List<Download> (SelectedDownloads)) Event.Raise<DownloadAddedEventArgs> (Removed, this, new DownloadAddedEventArgs (download)); SelectedDownloads.Clear (); Select (SelectedDownloads); }
void HandleShouldRemove(object sender, ShouldRemoveEventArgs e) { string title; string message; if (e.DeleteData) { title = _("Delete torrent"); message = _("Remove torrent and delete all data?"); } else { title = _("Remove torrent"); message = _("Are you sure you want to remove the torrent?"); } MessageDialog messageDialog = new MessageDialog (this, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, message); messageDialog.Title = title; e.ShouldRemove = (ResponseType) messageDialog.Run() == ResponseType.Yes; messageDialog.Hide(); messageDialog.Destroy (); }
public void RemoveTorrent(bool deleteTorrent, bool deleteData) { EventHandler <ShouldRemoveEventArgs> h = ShouldRemove; if (h != null) { ShouldRemoveEventArgs e = new ShouldRemoveEventArgs(SelectedDownloads, deleteData, deleteTorrent); h(this, e); if (!e.ShouldRemove) { return; } } foreach (Download torrent in SelectedDownloads) { if (torrent.State != Monsoon.State.Stopped) { torrent.Stop(); } allTorrents.Remove(torrent); if (deleteData) { logger.Info("Deleting {0} data", torrent.Torrent.Name); try{ if (Directory.Exists(Path.Combine(torrent.SavePath, torrent.Torrent.Name))) { Directory.Delete(Path.Combine(torrent.SavePath, torrent.Torrent.Name), true); } else { File.Delete(Path.Combine(torrent.SavePath, torrent.Torrent.Name)); } } catch (Exception e) { logger.Error("Failed to delete {0}: {1}", Path.Combine(torrent.SavePath, torrent.Torrent.Name), e.Message); } } if (deleteTorrent) { try{ logger.Info("Deleting torrent file {0} ", torrent.Torrent.TorrentPath); File.Delete(torrent.Torrent.TorrentPath); } catch { logger.Error("Unable to delete " + torrent.Torrent.TorrentPath); } // FIXME: Fast resume is central now, not individual for each torrent. try{ logger.Info("Deleting torrent fast resume file " + torrent.Torrent.TorrentPath); File.Delete(torrent.Torrent.TorrentPath + ".fresume"); } catch { logger.Error("Unable to delete " + torrent.Torrent.TorrentPath + ".fresume"); } } engine.Unregister(torrent.Manager); fastResume.RemoveAll(delegate(FastResume f) { return(f.Infohash == torrent.InfoHash); }); logger.Info("Removed torrent " + torrent.Torrent.Name); } foreach (Download download in new List <Download> (SelectedDownloads)) { Event.Raise <DownloadAddedEventArgs> (Removed, this, new DownloadAddedEventArgs(download)); } SelectedDownloads.Clear(); Select(SelectedDownloads); }