[longomatch] Cascade players' tags deletion too
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Cascade players' tags deletion too
- Date: Sat, 27 Aug 2011 09:31:33 +0000 (UTC)
commit 2feef50d930714499dad8dc6fac29f23288e3ece
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Fri Aug 26 19:16:20 2011 +0200
Cascade players' tags deletion too
LongoMatch/Gui/Component/TemplatesEditorBase.cs | 29 ++++++++++++++++++++++-
LongoMatch/Store/Project.cs | 9 +++++++
LongoMatch/Store/TagStore.cs | 10 ++++++-
3 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/LongoMatch/Gui/Component/TemplatesEditorBase.cs b/LongoMatch/Gui/Component/TemplatesEditorBase.cs
index 41a7da7..e1ca812 100644
--- a/LongoMatch/Gui/Component/TemplatesEditorBase.cs
+++ b/LongoMatch/Gui/Component/TemplatesEditorBase.cs
@@ -224,7 +224,6 @@ namespace LongoMatch.Gui.Component
Edited = true;
}
-
protected override void RemoveSelected (){
if(Project != null) {
MessageDialog dialog = new MessageDialog((Gtk.Window)this.Toplevel,DialogFlags.Modal,MessageType.Question,
@@ -352,5 +351,33 @@ namespace LongoMatch.Gui.Component
selected = new List<Player>();
selected.Add(player);
}
+
+ protected override void RemoveSelected (){
+ if(Project != null) {
+ MessageDialog dialog = new MessageDialog((Gtk.Window)this.Toplevel,DialogFlags.Modal,MessageType.Question,
+ ButtonsType.YesNo,true,
+ Catalog.GetString("You are about to delete a player and all " +
+ "its tags. Do you want to proceed?"));
+ if(dialog.Run() == (int)ResponseType.Yes) {
+ try {
+ foreach(var player in selected)
+ Project.RemovePlayer (template, player);
+ } catch {
+ MessagePopup.PopupMessage(this,MessageType.Warning,
+ Catalog.GetString("A template needs at least one category"));
+ }
+ }
+ dialog.Destroy();
+ } else {
+ try {
+ foreach(var player in selected)
+ Template.Remove(player);
+ } catch {
+ MessagePopup.PopupMessage(this,MessageType.Warning,
+ Catalog.GetString("A template needs at least one category"));
+ }
+ }
+ base.RemoveSelected();
+ }
}
}
diff --git a/LongoMatch/Store/Project.cs b/LongoMatch/Store/Project.cs
index 65f8cdf..ca0ae45 100644
--- a/LongoMatch/Store/Project.cs
+++ b/LongoMatch/Store/Project.cs
@@ -184,6 +184,15 @@ namespace LongoMatch.Store
timeline.RemoveAll(p => p.Category.UUID == category.UUID);
}
+ public void RemovePlayer(TeamTemplate template, Player player) {
+ if(template.Count == 1)
+ throw new Exception("You can't remove the last Player");
+ template.Remove(player);
+ foreach (var play in timeline) {
+ play.Players.RemoveByPlayer(player);
+ }
+ }
+
public void DeleteSubcategoryTags(Category cat, List<ISubCategory> subcategories) {
foreach (var play in timeline.Where(p => p.Category == cat)) {
foreach (var subcat in subcategories) {
diff --git a/LongoMatch/Store/TagStore.cs b/LongoMatch/Store/TagStore.cs
index 3310f52..6e442cd 100644
--- a/LongoMatch/Store/TagStore.cs
+++ b/LongoMatch/Store/TagStore.cs
@@ -27,7 +27,7 @@ namespace LongoMatch.Store
[Serializable]
public class TagsStore<T, W> where T:ITag<W>
{
- private List<T> tagsList;
+ protected List<T> tagsList;
public TagsStore(){
tagsList = new List<T>();
@@ -83,7 +83,13 @@ namespace LongoMatch.Store
public class StringTagStore: TagsStore<StringTag, string> {}
[Serializable]
- public class PlayersTagStore: TagsStore<PlayerTag, Player> {}
+ public class PlayersTagStore: TagsStore<PlayerTag, Player> {
+
+ public void RemoveByPlayer(Player player) {
+ tagsList.RemoveAll(t => t.Value == player);
+ }
+
+ }
[Serializable]
public class TeamsTagStore: TagsStore<TeamTag, Team> {}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]