示例#1
0
        public void SettersNotAppliedOnAttachIfOneConditionIsFalse()
        {
            var conditionbp  = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null);
            var setterbp     = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null);
            var element      = new MockElement();
            var multiTrigger = new MultiTrigger(typeof(VisualElement))
            {
                Conditions =
                {
                    new PropertyCondition {
                        Property = conditionbp, Value = "foobar"
                    },
                    new BindingCondition  {
                        Binding = new Binding("baz"), Value = "foobaz"
                    },
                },
                Setters =
                {
                    new Setter {
                        Property = setterbp, Value = "qux"
                    },
                }
            };

            element.SetValue(setterbp, "default");
            element.SetValue(conditionbp, "foobar");
            element.BindingContext = new { baz = "foobazXX" };
            Assert.AreEqual("default", element.GetValue(setterbp));
            element.Triggers.Add(multiTrigger);
            Assert.AreEqual("default", element.GetValue(setterbp));
        }
示例#2
0
        internal static Style GetUpDownBaseStyle <T>()
        {
            if (_upDownStyles == null)
            {
                _upDownStyles = new Dictionary <Type, Style>();
            }

            Style style;

            if (!_upDownStyles.TryGetValue(typeof(T), out style))
            {
                style = new Style(typeof(UpDownBase <T>));
                var trigger = new MultiTrigger();
                trigger.Conditions.Add(new Condition(Control.IsKeyboardFocusWithinProperty, false));
                trigger.Conditions.Add(new Condition(Control.IsMouseOverProperty, false));
                trigger.Setters.Add(
                    new Setter(Control.BorderBrushProperty, new SolidColorBrush(Colors.Transparent)));
                trigger.Setters.Add(
                    new Setter(UpDownBase <T> .ShowButtonSpinnerProperty, false));
                style.Triggers.Add(trigger);

                _upDownStyles.Add(typeof(T), style);
            }
            return(style);
        }
示例#3
0
        private void Value_AddMultiTriggerClicked(Controls.Value val)
        {
            if (val.ParentValue != null && val.ParentEvent != null)
            {
                if (val.ParentEvent.values.Contains(val.ParentValue))
                {
                    Controls.Event e = events.Find(x => x.ParentEvent == val.ParentEvent);
                    if (e != null)
                    {
                        int index = e.Values.ToList().FindIndex(x => x.ParentValue == val.ParentValue);
                        if (index >= 0)
                        {
                            Controls.Value v = e.Values[index];
                            if (v != null)
                            {
                                var multitrigger = new MultiTrigger();
                                val.ParentValue.triggers.Add(multitrigger);

                                Controls.MultiTrigger uiMultiTrigger = CreateMultiTrigger(multitrigger, val.ParentValue, val.ParentEvent);

                                var trigger = new Trigger();
                                multitrigger.triggers.Add(trigger);

                                Controls.Trigger uiTrigger = CreateTrigger(trigger, uiMultiTrigger.ParentValue, uiMultiTrigger.ParentEvent);
                                uiTrigger.modifier_COMBO.SelectedItem = "Equal To";
                                uiMultiTrigger.Triggers.Add(uiTrigger);

                                val.Triggers.Add(uiMultiTrigger);
                            }
                        }
                    }
                }
            }
        }
示例#4
0
		public void SettersUnappliedOnDetach ()
		{
			var conditionbp = BindableProperty.Create ("foo", typeof(string), typeof(BindableObject), null);
			var setterbp = BindableProperty.Create ("bar", typeof(string), typeof(BindableObject), null);
			var element = new MockElement ();
			var multiTrigger = new MultiTrigger (typeof(VisualElement)) {
				Conditions = {
					new PropertyCondition { Property = conditionbp, Value = "foobar" },
					new BindingCondition { Binding = new Binding ("baz"), Value = "foobaz" },
				},
				Setters = {
					new Setter { Property = setterbp, Value = "qux" },
				}
			};

			element.SetValue (setterbp, "default");
			element.BindingContext = new {baz = "" };
			element.Triggers.Add (multiTrigger);
			Assert.AreEqual ("default", element.GetValue (setterbp)); //both conditions false

			element.SetValue (conditionbp, "foobar");
			Assert.AreEqual ("default", element.GetValue (setterbp)); //one condition false

			element.BindingContext = new {baz = "foobaz"};
			Assert.AreEqual ("qux", element.GetValue (setterbp)); //both condition true
			element.Triggers.Remove (multiTrigger);
			Assert.AreEqual ("default", element.GetValue (setterbp));
		}
示例#5
0
        public void MultiTriggerConstructor()
        {
            tlog.Debug(tag, $"MultiTriggerConstructor START");
            MultiTrigger dt = new MultiTrigger(typeof(View));

            Assert.IsNotNull(dt, "Should not be null");
            tlog.Debug(tag, $"MultiTriggerConstructor END");
        }
示例#6
0
        public void SettersTest()
        {
            tlog.Debug(tag, $"SettersTest START");
            MultiTrigger dt = new MultiTrigger(typeof(View));

            Assert.IsNotNull(dt, "Should not be null");
            var ret = dt.Setters; //null

            Assert.AreEqual(0, ret.Count, "Should be equal");
            tlog.Debug(tag, $"SettersTest END");
        }
    //SerializedProperty prop;

    private void OnEnable()
    {
        trig   = (MultiTrigger)target;
        curbox = -1;
        //prop = serializedObject.FindProperty("Triggers");
        list = new ReorderableList(serializedObject, serializedObject.FindProperty("Triggers"), true, true, true, true);

        list.elementHeight       = EditorGUIUtility.singleLineHeight * 5f + 5f;
        list.drawElementCallback = BuildGUI;
        list.drawHeaderCallback  = BuildTitle;
        list.onSelectCallback    = OnSelectItem;
    }
示例#8
0
        public void SettersAppliedAndUnappliedOnConditionsChange()
        {
            var conditionbp  = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null);
            var setterbp     = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null);
            var element      = new MockElement();
            var multiTrigger = new MultiTrigger(typeof(VisualElement))
            {
                Conditions =
                {
                    new PropertyCondition {
                        Property = conditionbp, Value = "foobar"
                    },
                    new BindingCondition  {
                        Binding = new Binding("baz"), Value = "foobaz"
                    },
                },
                Setters =
                {
                    new Setter {
                        Property = setterbp, Value = "qux"
                    },
                }
            };

            element.SetValue(setterbp, "default");
            element.BindingContext = new { baz = "" };
            element.Triggers.Add(multiTrigger);
            Assert.AreEqual("default", element.GetValue(setterbp));               //both conditions false

            element.SetValue(conditionbp, "foobar");
            Assert.AreEqual("default", element.GetValue(setterbp));               //one condition false

            element.BindingContext = new { baz = "foobaz" };
            Assert.AreEqual("qux", element.GetValue(setterbp));               //both condition true

            element.BindingContext = new { baz = "" };
            Assert.AreEqual("default", element.GetValue(setterbp));               //one condition false

            element.BindingContext = new { baz = "foobaz" };
            Assert.AreEqual("qux", element.GetValue(setterbp));               //both condition true

            element.SetValue(conditionbp, "");
            Assert.AreEqual("default", element.GetValue(setterbp));               //one condition false

            element.SetValue(conditionbp, "foobar");
            Assert.AreEqual("qux", element.GetValue(setterbp));               //both condition true

            element.SetValue(conditionbp, "");
            element.BindingContext = new { baz = "foobaz" };
            Assert.AreEqual("default", element.GetValue(setterbp));               //both conditions false
        }
示例#9
0
        /// <summary>
        /// Рассчитывает стиль линии в зависимости от предоставленной кисти
        /// </summary>
        public static Style CalculateRectangleStyle(Brush brush)
        {
            Brush b     = (VisualBrush)XamlReader.Parse(DrawTool.HatchBrushXaml);
            Style style = new Style();

            style.TargetType = typeof(Path);
            style.Setters.Add(new Setter(Path.FillProperty, brush));

            Trigger t = new Trigger()
            {
                Property = Path.TagProperty, Value = ShapeTag.Select
            };

            t.Setters.Add(new Setter(Path.StrokeProperty, Brushes.Red));
            t.Setters.Add(new Setter(Path.StrokeThicknessProperty, 2.0));
            style.Triggers.Add(t);

            MultiTrigger mt = new MultiTrigger();

            mt.Conditions.Add(new Condition(Path.IsMouseOverProperty, true));
            mt.Conditions.Add(new Condition(Path.TagProperty, ShapeTag.None));
            mt.Setters.Add(new Setter(Path.StrokeProperty, Brushes.Red));
            mt.Setters.Add(new Setter(Path.StrokeDashArrayProperty, new DoubleCollection(new double[] { 2, 2 })));
            mt.Setters.Add(new Setter(Path.StrokeThicknessProperty, 2.0));
            style.Triggers.Add(mt);

            t = new Trigger()
            {
                Property = Path.TagProperty, Value = ShapeTag.Select | ShapeTag.Deleting
            };
            t.Setters.Add(new Setter(Path.StrokeProperty, Brushes.Red));
            t.Setters.Add(new Setter(Path.StrokeThicknessProperty, 2.0));
            t.Setters.Add(new Setter(Path.FillProperty, b));
            style.Triggers.Add(t);

            t = new Trigger()
            {
                Property = Path.TagProperty, Value = ShapeTag.Deleting
            };
            t.Setters.Add(new Setter(Path.StrokeProperty, Brushes.Red));
            t.Setters.Add(new Setter(Path.StrokeThicknessProperty, 2.0));
            t.Setters.Add(new Setter(Path.FillProperty, b));
            style.Triggers.Add(t);

            return(style);
        }
示例#10
0
        public void AddEvent_containMultiTrigger_TheAddedEventGetsFired()
        {
            TriggerManager tm = new TriggerManager();

            bool eventfired = false;

            MultiTrigger mt = new MultiTrigger();

            tm.Register(mt);

            mt.AddAction<XmasEvent>(e => eventfired = true);

            mt.RegisterEvent<UnitTakesDamagePostEvent>();

            tm.Raise(new UnitTakesDamagePostEvent(null, null, 0, 0));

            Assert.IsTrue(eventfired);
        }
示例#11
0
        public ListBoxHotColor(Color hotColor)
        {
            var setter = new Setter();

            setter.Property = ListBoxItem.BackgroundProperty;
            setter.Value    = new SolidColorBrush(hotColor);

            var trigger = new MultiTrigger();

            trigger.Conditions.Add(new Condition(ListBoxItem.IsMouseOverProperty, true));
            trigger.Conditions.Add(new Condition(ListBoxItem.IsSelectedProperty, false));
            trigger.Setters.Add(setter);

            var listBoxStyle = new Style(typeof(ListBoxItem));

            listBoxStyle.Triggers.Add(trigger);

            _listBoxStyle = listBoxStyle;
        }
示例#12
0
        public static Style CalculatePolylineStyle(Brush brush, double stroke)
        {
            Brush b     = (VisualBrush)XamlReader.Parse(DrawTool.HatchBrushXaml);
            Style style = new Style
            {
                TargetType = typeof(Line)
            };

            style.Setters.Add(new Setter(Line.StrokeProperty, brush));
            style.Setters.Add(new Setter(Line.StrokeThicknessProperty, stroke));
            style.Setters.Add(new Setter(Line.StrokeLineJoinProperty, PenLineJoin.Round));

            MultiTrigger mt = new MultiTrigger();

            mt.Conditions.Add(new Condition(Line.IsMouseOverProperty, true));
            mt.Conditions.Add(new Condition(Line.TagProperty, ShapeTag.None));
            mt.Setters.Add(new Setter(Line.StrokeProperty, Brushes.Red));
            style.Triggers.Add(mt);

            Trigger t = new Trigger()
            {
                Property = Line.TagProperty, Value = ShapeTag.Select
            };

            t.Setters.Add(new Setter(Line.StrokeProperty, Brushes.Red));
            style.Triggers.Add(t);

            t = new Trigger()
            {
                Property = Line.TagProperty, Value = ShapeTag.Select | ShapeTag.Deleting
            };
            t.Setters.Add(new Setter(Line.StrokeProperty, b));
            style.Triggers.Add(t);

            t = new Trigger()
            {
                Property = Line.TagProperty, Value = ShapeTag.Deleting
            };
            t.Setters.Add(new Setter(Line.StrokeProperty, b));
            style.Triggers.Add(t);

            return(style);
        }
示例#13
0
        public void TriggerOverlapTest()
        {
            Trigger trigger1 = new Trigger {
                Property = new DependencyPropertyPathElement(Value1Property), Value = 1
            };

            trigger1.Setters.Add(new Setter {
                Property = new DependencyPropertyPathElement(Value3Property), Value = 1
            });

            MultiTrigger trigger2 = new MultiTrigger();

            trigger2.Conditions.Add(new Condition {
                Property = new DependencyPropertyPathElement(Value1Property), Value = 1
            });
            trigger2.Conditions.Add(new Condition {
                Property = new DependencyPropertyPathElement(Value2Property), Value = 2
            });
            trigger2.Setters.Add(new Setter {
                Property = new DependencyPropertyPathElement(Value3Property), Value = 2
            });

            FrameworkElement element = new FrameworkElement();

            element.Triggers.Add(trigger1);
            element.Triggers.Add(trigger2);

            element.SetValue(Value1Property, 1);
            element.SetValue(Value2Property, 0);

            Assert.AreEqual(1, element.GetValue(Value3Property));

            element.SetValue(Value1Property, 1);
            element.SetValue(Value2Property, 2);

            Assert.AreEqual(2, element.GetValue(Value3Property));

            element.SetValue(Value1Property, 1);
            element.SetValue(Value2Property, 0);

            Assert.AreEqual(1, element.GetValue(Value3Property));
        }
示例#14
0
        Controls.MultiTrigger CreateMultiTrigger(MultiTrigger t, Value v, Event e)
        {
            var result = new Controls.MultiTrigger();

            result.ParentPage         = this;
            result.ParentEvent        = e;
            result.ParentValue        = v;
            result.ParentMultiTrigger = t;

            foreach (var trigger in t.triggers)
            {
                result.Triggers.Add(CreateTrigger(trigger, v, e));
            }

            result.AddTriggerClicked += MultiTrigger_AddTriggerClicked;
            result.SettingChanged    += MultiTrigger_SettingChanged;
            result.RemoveClicked     += MultiTrigger_RemoveClicked;

            return(result);
        }
示例#15
0
        public void AddAction_containMultiTrigger_TheActionIsNotFired()
        {
            TriggerManager tm = new TriggerManager();

            bool actionfired = false;

            MultiTrigger mt = new MultiTrigger();

            Action<UnitTakesDamagePostEvent> action = (e => actionfired = true);

            mt.RegisterEvent<UnitTakesDamagePostEvent>();

            tm.Register(mt);

            mt.AddAction(action);

            tm.Raise(new UnitTakesDamagePostEvent(null, null, 0, 0));

            Assert.IsTrue(actionfired);
        }
示例#16
0
        public void AddEventToUnit_containMultiTrigger_TheAddedEventGetsFired()
        {
            EventManager gem = new EventManager();

            Unit A = new Unit();

            gem.AddEntity(A);

            bool eventfired = false;

            MultiTrigger mt = new MultiTrigger();

            A.Register(mt);

            mt.AddAction<XmasEvent>(e => eventfired = true);

            mt.RegisterEvent<UnitTakesDamagePostEvent>();

            A.Raise(new UnitTakesDamagePostEvent(null, null, 0, 0));

            Assert.IsTrue(eventfired);
        }
示例#17
0
        public void MultiTriggerBasicTest()
        {
            Condition condition1 = new Condition {
                Property = new DependencyPropertyPathElement(Value1Property), Value = 1
            };
            Condition condition2 = new Condition {
                Property = new DependencyPropertyPathElement(Value2Property), Value = 2
            };

            MultiTrigger multiTrigger = new MultiTrigger();

            multiTrigger.Conditions.Add(condition1);
            multiTrigger.Conditions.Add(condition2);
            multiTrigger.Setters.Add(new Setter {
                Property = new DependencyPropertyPathElement(Value3Property), Value = 3
            });


            FrameworkElement element = new FrameworkElement();

            element.SetValue(Value1Property, 1);
            element.SetValue(Value2Property, 2);

            Assert.AreEqual(1, element.GetValue(Value1Property));
            Assert.AreEqual(2, element.GetValue(Value2Property));
            Assert.AreEqual(0, element.GetValue(Value3Property));

            element.Triggers.Add(multiTrigger);
            Assert.AreEqual(3, element.GetValue(Value3Property));

            element.SetValue(Value1Property, 2);
            Assert.AreEqual(0, element.GetValue(Value3Property));

            element.SetValue(Value1Property, 1);
            Assert.AreEqual(3, element.GetValue(Value3Property));

            element.Triggers.Remove(multiTrigger);
            Assert.AreEqual(0, element.GetValue(Value3Property));
        }
示例#18
0
        void SaveMultiTrigger(MultiTrigger mt, Value v, Event e, DataTable dt)
        {
            string adr = "/GeneratedData/GeneratedEvents/Event||" + e.id.ToString("00");

            adr += "/Value||" + v.id.ToString("00") + "/Triggers";
            adr += "/MultiTrigger";

            int id = DataTable_Functions.TrakHound.GetUnusedAddressId(adr, dt);

            adr = adr + "||" + id.ToString("00");

            // Set Attributes
            string attr = "";

            attr += "id||" + id.ToString("00") + ";";

            DataTable_Functions.UpdateTableValue(dt, "address", adr, "attributes", attr);

            foreach (var trigger in mt.triggers)
            {
                SaveTrigger(trigger, v, e, dt, adr);
            }
        }
示例#19
0
        protected override void Invoke(SwitchGroupLayout sender)
        {
            MultiTrigger     _trigger   = new MultiTrigger(typeof(SwitchGroupLayout));
            BindingCondition _condition = new BindingCondition()
            {
            };
            List <Switch> lista = new List <Switch>();
            var           _this = sender as Layout <View>;

            foreach (var view in _this.Children)
            {
                if (view is Switch && view != sender)
                {
                    /*
                     * _trigger.Conditions.Add(new BindingCondition() {
                     *
                     *  Binding:((Switch)view).BindingContext.ToString(),source:"IsToggled"
                     *
                     * });
                     * //lista.Add((Switch)view);*/
                }
            }
            //_trigger.Conditions.Add();
        }
示例#20
0
        static MultiTrigger GetMultiTriggerFromRow(Value v, DataRow row)
        {
            MultiTrigger result = null;

            string adr = row["address"].ToString();

            if (adr.Contains("MultiTrigger"))
            {
                int eventIndex     = adr.IndexOf("MultiTrigger");
                int separatorIndex = adr.IndexOf("||", eventIndex);
                int slashIndex     = adr.IndexOf("/", separatorIndex + 1);

                if (slashIndex > separatorIndex || slashIndex == -1)
                {
                    string val   = row["value"].ToString();
                    string strId = null;
                    if (slashIndex >= 0)
                    {
                        strId = adr.Substring(separatorIndex + 2, 2);
                    }
                    else
                    {
                        strId = adr.Substring(separatorIndex + 2);
                    }

                    int id;
                    if (int.TryParse(strId, out id))
                    {
                        result    = new MultiTrigger();
                        result.id = id;
                    }
                }
            }

            return(result);
        }
示例#21
0
 public void deregMulti(MultiTrigger trigger)
 {
     trigger.DeregisteredEvent -= trigger_DeregisteredEvent;
     trigger.RegisteredEvent -= trigger_RegisteredEvent;
 }
示例#22
0
        public static bool CreaBloccoAnimazioni(Style stile, List <Condition> condizioni, List <Timeline> animazioniEntrata, List <Timeline> animazioniUscita = null,
                                                bool RemoveStbInUscita = true, Mess logMess = null)
        {
            if (logMess == null)
            {
                logMess = new Mess(LogType.Warn, Log.main.warnUserText);
            }

            if (stile == null)
            {
                logMess.testoDaLoggare = "ricevuto stile a null";
                Log.main.Add(logMess);
                return(false);
            }

            if (condizioni == null)
            {
                logMess.testoDaLoggare = "ricevuto condizioni a null";
                Log.main.Add(logMess);
                return(false);
            }

            if (animazioniEntrata == null)
            {
                logMess.testoDaLoggare = "ricevuto animazioniEntrata a null";
                Log.main.Add(logMess);
                return(false);
            }

            if (animazioniEntrata.Count == 0)
            {
                logMess.testoDaLoggare = "ricevuta lista animazioniEntrata vuota";
                Log.main.Add(logMess);
                return(false);
            }


            object     trgMain = null;
            Storyboard stbMain = new Storyboard();

            switch (condizioni.Count)
            {
            case 0:
                logMess.testoDaLoggare = "ricevuta lista condizioni vuota";
                Log.main.Add(logMess);
                return(false);

            case 1:
                trgMain = new Trigger();
                (trgMain as Trigger).Property = condizioni[0].Property;
                (trgMain as Trigger).Value    = condizioni[0].Value;
                break;

            case int n when(n > 1):
                trgMain = new MultiTrigger();

                foreach (Condition condizione in condizioni)
                {
                    (trgMain as MultiTrigger).Conditions.Add(condizione);
                }
                break;
            }

            //Animazioni in trigger EnterActions
            Storyboard stbEnterAction = new Storyboard();

            foreach (Timeline animazione in animazioniEntrata)
            {
                stbEnterAction.Children.Add(animazione);
            }

            //Animazioni in trigger ExitActions
            Storyboard stbExitAction;

            if (animazioniUscita != null && animazioniUscita.Count == 0)
            {
                animazioniUscita = null;
            }

            if (animazioniUscita != null)
            {
                stbExitAction = new Storyboard();
                foreach (Timeline animazione in animazioniEntrata)
                {
                    stbEnterAction.Children.Add(animazione);
                }
            }

            string nomeBeginStoryboard = Str.GeneraRandom(5, Str.TipiRandom.soloLettere);

            (trgMain as TriggerBase).EnterActions.Add(new BeginStoryboard()
            {
                Name = nomeBeginStoryboard, Storyboard = stbEnterAction
            });
            if (animazioniUscita == null && RemoveStbInUscita == true)
            {
                (trgMain as TriggerBase).ExitActions.Add(new RemoveStoryboard()
                {
                    BeginStoryboardName = nomeBeginStoryboard
                });
            }

            stile.RegisterName(nomeBeginStoryboard, (trgMain as TriggerBase).EnterActions[0]);
            stile.Triggers.Add((trgMain as TriggerBase));

            return(true);
        }
示例#23
0
        public void RemoveCondition_containMultiTrigger_TheActionIsFired()
        {
            TriggerManager tm = new TriggerManager();

            bool actionfired = false;

            MultiTrigger mt = new MultiTrigger();

            Predicate<UnitTakesDamagePostEvent> cond = (e => false);
            mt.AddCondition(cond);
            mt.AddAction<XmasEvent>(e => actionfired = true);
            mt.RegisterEvent<UnitTakesDamagePostEvent>();

            tm.Register(mt);

            mt.RemoveCondition(cond);

            tm.Raise(new UnitTakesDamagePostEvent(null, null, 0, 0));

            Assert.IsTrue(actionfired);
        }
示例#24
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="MultiTriggerItem" /> class.
 /// </summary>
 public MultiTriggerItem(MultiTrigger trigger, DependencyObject source, TriggerSource triggerSource)
     : base(trigger, source, TriggerType.MultiTrigger, triggerSource)
 {
     this.trigger = trigger;
     this.source  = source;
 }
示例#25
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="MultiTriggerItem" /> class.
 /// </summary>
 public MultiTriggerItem(MultiTrigger trigger, FrameworkElement source, TriggerSource triggerSource)
     : base(trigger, source, TriggerType.MultiTrigger, triggerSource)
 {
     this.trigger = trigger;
     this.source  = source;
 }
示例#26
0
        /*public class esCorrecte : IValueConverter
         * {
         *      object IValueConverter.ConvertBack (object value, Type targetType, object parameter, CultureInfo culture)
         *      {
         *              throw new NotImplementedException ();
         *      }
         *      public object Convert(object value, Type TargetType, object parameter, CultureInfo culture)
         *      {
         *              var aux = value as CustomCell;
         *              var a = aux.esPrimerCop ();
         *              var b = aux.esValid2 ();
         *              if (aux.esPrimerCop ())return false;
         *              else {
         *                      return aux.esValid2() ? true : false;
         *              }
         *
         *
         *      }
         * }*/

        private void inicialitzarComponents()
        {
            var a  = new CustomCell(0, "ex: Eolymp Run", "Nom: ", "nomCursa");
            var b  = new CustomCell(1, "ex: 1", "Dorsal: ", "dorsal");
            var c  = new CustomCell(1, "ex: 1", "Posicio: ", "posicio");
            var d  = new CustomCell(1, "en km", "Distancia: ", "distancia");
            var ee = new CustomCell(1, "ex: 1", "Posicio Categoria: ", "posicioCategoria");
            var f  = new CustomCell(0, "ex: Masculina", "Categoria: ", "categoria");
            var g  = new CustomCell(0, "ex: Eolymp club", "Club: ", "club");
            var h  = new CustomCell(2, "HH:MM:SS", "Inici cursa: ", "iniciCursa");
            var i  = new CustomCell(3, "HH:MM:SS", "Temps real: ", "tempsReal");
            var j  = new CustomCell(3, "HH:MM:SS", "Temps oficial: ", "tempsOficial");
            var k  = new CustomCell(2, "HH:MM:SS", "Inici real: ", "iniciReal");
            var l  = new CustomCell(2, "HH:MM:SS", "Hora meta: ", "horaMeta");
            var m  = new CustomCell(3, "HH:MM:SS", "Ritme: ", "ritme");
            var n  = new CustomCell(2, "HH:MM:SS", "Temps Km5: ", "km5");
            var o  = new CustomCell(3, "HH:MM:SS", "Hora Km 5: ", "horaKm5");
            var p  = new CustomCell(2, "HH:MM:SS", "Temps Km 10: ", "km10");
            var q  = new CustomCell(3, "HH:MM:SS", "Hora Km 10: ", "horaKm10");

            var afageix = new Button {
                Text = "Afageix", IsEnabled = false
            };

            afageix.SetBinding(Button.CommandProperty, "Save");
            afageix.Clicked += (sender, e) => {
                DisplayAlert("Guardada!", "La vostre marca ha estat guardada satisfactoriament", "D'acord");
                ((MasterDetailPage)App.Current.MainPage).Detail.Navigation.PopAsync();
            };

            /*var correcte = new Setter {
             *      Property = VisualElement.IsEnabledProperty,
             *      Value = true,
             * };
             * var incorrecte = new Setter {
             *      Property = Button.IsEnabledProperty,
             *      Value = false,
             * };
             *
             * var totCorrecte = new MultiTrigger(typeof(Button)) {
             *      Conditions = {
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: a),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: b),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: c),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: d),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: ee),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: f),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: g),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: h),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: i),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: j),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: k),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: l),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: m),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: n),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: o),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: p),
             *                      Value = true
             *              },
             *              new BindingCondition {
             *                      Binding = new Binding(".",BindingMode.Default,new esCorrecte(), source: q),
             *                      Value = true
             *              },
             *      },
             *      Setters = { correcte },
             * };
             */
            var correcte = new Setter {
                Property = VisualElement.IsEnabledProperty,
                Value    = true,
            };
            var totCorrecte = new MultiTrigger(typeof(Button))
            {
                Conditions =
                {
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: a.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: b.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: c.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: d.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: ee.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: f.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: g.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: h.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: i.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: j.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: k.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: l.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: m.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: n.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: o.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: p.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: q.esCorrecte()),
                        Value   = "                    ",
                    },
                },
                Setters = { correcte },
            };

            afageix.Triggers.Add(totCorrecte);
            //afageix.Triggers.Add (totbuit);
            //afageix.Triggers.Add(multiFormatInvalid);
            //afageix.Triggers.Add (multiCaracterInvalid);

            var tabView = new TableView {
                BackgroundColor = Color.Transparent,
                Intent          = TableIntent.Form,
                Root            = new TableRoot()
                {
                }
            };
            var aux = new TableSection();

            aux.Add(a);
            aux.Add(f);
            aux.Add(g);
            aux.Add(b);
            aux.Add(c);
            aux.Add(d);
            aux.Add(ee);
            aux.Add(m);
            aux.Add(h);
            aux.Add(i);
            aux.Add(j);
            aux.Add(k);
            aux.Add(l);
            aux.Add(n);
            aux.Add(o);
            aux.Add(p);
            aux.Add(q);
            tabView.Root.Add(aux);
            var sl = new StackLayout();

            sl.Children.Add(tabView);
            sl.Children.Add(afageix);
            Content = sl;
        }
示例#27
0
        private void inicialitzarComponents(Dictionary <string, object> info)
        {
            var a       = new CustomCell(0, info["nom"].ToString(), "Nom: ", "nomCursa");
            var b       = new CustomCell(1, info ["dorsal"].ToString(), "Dorsal: ", "dorsal");
            var c       = new CustomCell(1, info ["posicio"].ToString(), "Posicio: ", "posicio");
            var d       = new CustomCell(1, info ["distancia"].ToString(), "Distancia: ", "distancia");
            var ee      = new CustomCell(1, info ["posicioCategoria"].ToString(), "Posicio Categoria: ", "posicioCategoria");
            var f       = new CustomCell(0, info ["categoria"].ToString(), "Categoria: ", "categoria");
            var g       = new CustomCell(0, info ["club"].ToString(), "Club: ", "club");
            var h       = new CustomCell(2, info ["iniciCursa"].ToString(), "Inici cursa: ", "iniciCursa");
            var i       = new CustomCell(3, info ["tempsReal"].ToString(), "Temps real: ", "tempsReal");
            var j       = new CustomCell(3, info ["tempsOficial"].ToString(), "Temps oficial: ", "tempsOficial");
            var k       = new CustomCell(2, info ["iniciReal"].ToString(), "Inici real: ", "iniciReal");
            var l       = new CustomCell(2, info ["horaMeta"].ToString(), "Hora meta: ", "horaMeta");
            var m       = new CustomCell(3, info ["ritme"].ToString(), "Ritme: ", "ritme");
            var n       = new CustomCell(2, info ["k59"].ToString(), "Temps Km5: ", "km5");
            var o       = new CustomCell(3, info ["h59"].ToString(), "Hora Km 5: ", "horaKm5");
            var p       = new CustomCell(2, info ["k10"].ToString(), "Temps Km 10: ", "km10");
            var q       = new CustomCell(3, info ["h10"].ToString(), "Hora Km 10: ", "horaKm10");
            var afageix = new Button {
                Text = "Modifica", IsEnabled = false
            };

            //afageix.SetBinding (Button.CommandProperty, "Modificada");
            afageix.Clicked += (object sender, EventArgs e) => {
                DisplayAlert("Modificada!", "Per veure els canvis feu lliscar la llista cap abaix", "D'acord");
                ((MasterDetailPage)App.Current.MainPage).Detail.Navigation.PopToRootAsync();
            };
            var correcte = new Setter {
                Property = VisualElement.IsEnabledProperty,
                Value    = true,
            };
            var totCorrecte = new MultiTrigger(typeof(Button))
            {
                Conditions =
                {
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: a.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: b.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: c.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: d.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: ee.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: f.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: g.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: h.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: i.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: j.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: k.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: l.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: m.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: n.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: o.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: p.esCorrecte()),
                        Value   = "                    ",
                    },
                    new BindingCondition {
                        Binding = new Binding(Label.TextProperty.PropertyName, source: q.esCorrecte()),
                        Value   = "                    ",
                    },
                },
                Setters = { correcte },
            };

            afageix.Triggers.Add(totCorrecte);



            //a,b,c,d,ee,f,g,h,i,j,k,l,m,n,o,p,q,afageix));



            var tabView = new TableView {
                BackgroundColor = Color.Transparent,
                Intent          = TableIntent.Form,
                Root            = new TableRoot()
                {
                }
            };
            var aux = new TableSection();

            aux.Add(a);
            aux.Add(f);
            aux.Add(g);
            aux.Add(b);
            aux.Add(c);
            aux.Add(d);
            aux.Add(ee);
            aux.Add(m);
            aux.Add(h);
            aux.Add(i);
            aux.Add(j);
            aux.Add(k);
            aux.Add(l);
            aux.Add(n);
            aux.Add(o);
            aux.Add(p);
            aux.Add(q);
            tabView.Root.Add(aux);
            mainStackL = new StackLayout();
            mainStackL.Children.Add(tabView);
            mainStackL.Children.Add(afageix);
            Content = mainStackL;
        }
示例#28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MultiTriggerItem"/> class.
 /// </summary>
 public MultiTriggerItem(MultiTrigger trigger, FrameworkElement source, TriggerSource triggerSource)
     : base(source, TriggerType.MultiTrigger, triggerSource)
 {
     _trigger = trigger;
     _source  = source;
 }
示例#29
0
 private void Awake()
 {
     c  = 0;
     mt = GetComponentInParent <MultiTrigger>();
 }
示例#30
0
 private void regMulti(MultiTrigger trigger)
 {
     trigger.DeregisteredEvent += trigger_DeregisteredEvent;
     trigger.RegisteredEvent += trigger_RegisteredEvent;
 }
示例#31
0
        public static List <Event> GetGeneratedEvents(DataTable dt)
        {
            var result = new List <Event>();

            var      table   = UpdateTable(dt);
            string   address = "/GeneratedEvents/";
            string   filter  = "address LIKE '" + address + "*'";
            DataView dv      = table.AsDataView();

            dv.RowFilter = filter;
            DataTable temp_dt = dv.ToTable();

            temp_dt.PrimaryKey = new DataColumn[] { temp_dt.Columns["address"] };

            // Get Events
            foreach (DataRow row in temp_dt.Rows)
            {
                Event e = GetEventFromRow(result, row);
                if (e != null)
                {
                    result.Add(e);
                }
            }

            // Get Values
            foreach (Event e in result)
            {
                string eventfilter = "address LIKE '" + address + "Event||" + e.id.ToString("00") + "/";
                dv                 = table.AsDataView();
                dv.RowFilter       = eventfilter + "*'";
                temp_dt            = dv.ToTable();
                temp_dt.PrimaryKey = new DataColumn[] { temp_dt.Columns["address"] };

                foreach (DataRow row in temp_dt.Rows)
                {
                    Value v = GetValueFromRow(e, row);
                    if (v != null)
                    {
                        e.values.Add(v);
                    }

                    GetDefaultFromRow(e, row);

                    // Get Capture Items
                    CaptureItem ci = GetCaptureItemFromRow(e, row);
                    if (ci != null)
                    {
                        e.captureItems.Add(ci);
                    }
                }

                foreach (Value v in e.values)
                {
                    filter             = eventfilter + "Value||" + v.id.ToString("00") + "/" + "*'";
                    dv                 = table.AsDataView();
                    dv.RowFilter       = filter;
                    temp_dt            = dv.ToTable();
                    temp_dt.PrimaryKey = new DataColumn[] { temp_dt.Columns["address"] };

                    foreach (DataRow row in temp_dt.Rows)
                    {
                        Trigger t = GetTriggerFromRow(v, row);
                        if (t != null)
                        {
                            var match = GetMultiTriggerFromRow(v, row);
                            if (match != null)
                            {
                                MultiTrigger multiTrigger = v.triggers.OfType <MultiTrigger>().ToList().Find(x => x.id == match.id);
                                if (multiTrigger != null)
                                {
                                    multiTrigger.triggers.Add(t);
                                }
                            }
                            else
                            {
                                v.triggers.Add(t);
                            }
                        }

                        MultiTrigger mt = GetMultiTriggerFromRow(v, row);
                        if (mt != null)
                        {
                            MultiTrigger multiTrigger = v.triggers.OfType <MultiTrigger>().ToList().Find(x => x.id == mt.id);
                            if (multiTrigger == null)
                            {
                                v.triggers.Add(mt);
                            }
                        }

                        GetResultFromRow(v, row);
                    }
                }
            }

            return(result);
        }