[longomatch] Support multiple selection modes in the teams tagger
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Support multiple selection modes in the teams tagger
- Date: Wed, 24 Sep 2014 20:21:50 +0000 (UTC)
commit 932be5f05a0c98ac6815f1c5ac4cd379c09184e4
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Tue Sep 2 11:38:35 2014 +0200
Support multiple selection modes in the teams tagger
.../CanvasObjects/PlayersTaggerObject.cs | 32 ++++++++++++++++----
LongoMatch.Drawing/Widgets/TeamTagger.cs | 14 ++++++++-
2 files changed, 39 insertions(+), 7 deletions(-)
---
diff --git a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
index 57fc23e..ac5a6fa 100644
--- a/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
+++ b/LongoMatch.Drawing/CanvasObjects/PlayersTaggerObject.cs
@@ -96,6 +96,11 @@ namespace LongoMatch.Drawing.CanvasObjects
set;
}
+ public MultiSelectionMode SelectionMode {
+ set;
+ get;
+ }
+
public bool Compact {
get;
set;
@@ -128,7 +133,18 @@ namespace LongoMatch.Drawing.CanvasObjects
field.Update ();
}
- public void Select (Player player)
+ public void Select (List<Player> players)
+ {
+ ResetSelection ();
+ foreach (Player p in players) {
+ Select (p, true);
+ }
+ if (PlayersSelectionChangedEvent != null) {
+ PlayersSelectionChangedEvent (SelectedPlayers);
+ }
+ }
+
+ public void Select (Player player, bool silent=false)
{
PlayerObject po;
@@ -137,10 +153,12 @@ namespace LongoMatch.Drawing.CanvasObjects
po = awayPlayers.FirstOrDefault (p => p.Player == player);
}
if (po != null) {
- ResetSelection ();
+ if (!silent) {
+ ResetSelection ();
+ }
SelectedPlayers.Add (player);
po.Active = true;
- if (PlayersSelectionChangedEvent != null) {
+ if (!silent && PlayersSelectionChangedEvent != null) {
PlayersSelectionChangedEvent (SelectedPlayers);
}
}
@@ -426,9 +444,11 @@ namespace LongoMatch.Drawing.CanvasObjects
public override void ClickPressed (Point point, ButtonModifier modif)
{
Selection selection = null;
-
- if (modif == ButtonModifier.None && !SubstitutionMode) {
- ResetSelection ();
+
+ if (!SubstitutionMode && SelectionMode != MultiSelectionMode.Multiple) {
+ if (SelectionMode == MultiSelectionMode.Single || modif ==
ButtonModifier.None) {
+ ResetSelection ();
+ }
}
point = Utils.ToUserCoords (point, offset, scaleX, scaleY);
diff --git a/LongoMatch.Drawing/Widgets/TeamTagger.cs b/LongoMatch.Drawing/Widgets/TeamTagger.cs
index 1b0be8e..b7aff43 100644
--- a/LongoMatch.Drawing/Widgets/TeamTagger.cs
+++ b/LongoMatch.Drawing/Widgets/TeamTagger.cs
@@ -41,9 +41,9 @@ namespace LongoMatch.Drawing.Widgets
public TeamTagger (IWidget widget): base (widget)
{
Accuracy = 0;
- SelectionMode = MultiSelectionMode.MultipleWithModifier;
widget.SizeChangedEvent += HandleSizeChangedEvent;
tagger = new PlayersTaggerObject ();
+ tagger.SelectionMode = MultiSelectionMode.Single;
tagger.PlayersSubstitutionEvent += HandlePlayersSubstitutionEvent;
tagger.PlayersSelectionChangedEvent += HandlePlayersSelectionChangedEvent;
ObjectsCanMove = false;
@@ -80,6 +80,18 @@ namespace LongoMatch.Drawing.Widgets
}
}
+ public new MultiSelectionMode SelectionMode {
+ set {
+ tagger.SelectionMode = value;
+ }
+ }
+
+ public void Select (List<Player> players)
+ {
+ tagger.Select (players);
+ widget.ReDraw ();
+ }
+
public void Select (Player p)
{
tagger.Select (p);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]