/// <summary> /// Returns contents of specified part. /// </summary> /// <param name="cell">Multiline cell.</param> /// <param name="part">Part.</param> /// <returns>Eves object in specified part.</returns> protected override EvasObject OnGetContent(Cell cell, string part) { MultilineCell multilineCell = (MultilineCell)cell; if (part == _iconPart && multilineCell.Icon != null) { var image = new NImage(Forms.NativeParent); SetUpImage(multilineCell, image); return(image); } else if (part == _endPart && multilineCell.IsCheckVisible) { var check = new Check(Forms.NativeParent); check.SetAlignment(-1, -1); check.SetWeight(1, 1); check.IsChecked = multilineCell.IsChecked; //It is a temporary way to prevent that the check of the Cell gets focus until the UX about views in the Cell for TV is defined. if (Device.Idiom == TargetIdiom.TV) { check.AllowFocus(false); } return(check); } return(null); }
/// <summary> /// Handles cell's properties change. /// Updates view properties. /// </summary> /// <param name="cell">Actual multiline cell.</param> /// <param name="property">Property name.</param> /// <param name="realizedView">Set of corresponding properties names and Evas Objects.</param> /// <returns>False if property has been changed. True otherwise.</returns> protected override bool OnCellPropertyChanged(Cell cell, string property, Dictionary <string, EvasObject> realizedView) { MultilineCell multilineCell = (MultilineCell)cell; if (property == MultilineCell.IconProperty.PropertyName) { if (!realizedView.ContainsKey(_iconPart) || multilineCell.Icon == null) { return(true); } var image = realizedView[_iconPart] as NImage; SetUpImage(multilineCell, image); return(false); } else if (property == MultilineCell.IsCheckedProperty.PropertyName && realizedView.ContainsKey(_endPart)) { var check = realizedView[_endPart] as Check; check.IsChecked = multilineCell.IsChecked; return(false); } else if (property == MultilineCell.IsCheckVisibleProperty.PropertyName || property == MultilineCell.TextProperty.PropertyName || property == MultilineCell.MultilineProperty.PropertyName) { return(true); } return(base.OnCellPropertyChanged(cell, property, realizedView)); }
/// <summary> /// Returns EvasObject which constitutes the cell /// </summary> /// <param name="cell">Cell</param> /// <param name="part">Cell's style name</param> /// <returns>EvasObject</returns> protected override EvasObject OnGetContent(Cell cell, string part) { MultilineCell multilineCell = (MultilineCell)cell; if (part == _iconPart && multilineCell.Icon != null) { var image = new NImage(Forms.Context.MainWindow); SetUpImage(multilineCell, image); return(image); } else if (part == _endPart && multilineCell.IsCheckVisible) { var check = new Check(Forms.Context.MainWindow) { Style = "toggle" }; check.SetAlignment(-1, -1); check.SetWeight(1, 1); check.IsChecked = multilineCell.IsChecked; check.StateChanged += (sender, e) => { multilineCell.IsChecked = e.NewState; }; return(check); } return(null); }
/// <summary> /// Loads image. /// Sets images dimensions. /// </summary> /// <param name="cell">Multiline cell element.</param> /// <param name="image">Image element.</param> void SetUpImage(MultilineCell cell, NImage image) { if (cell.IconHeight > 0 && cell.IconWidth > 0) { image.MinimumWidth = cell.IconWidth; image.MinimumHeight = cell.IconHeight; } else { image.LoadingCompleted += (sender, e) => { image.MinimumWidth = image.ObjectSize.Width; image.MinimumHeight = image.ObjectSize.Height; }; } image.LoadFromImageSourceAsync(cell.Icon); }
/// <summary> /// Returns new span component. /// </summary> /// <param name="cell">Cell element.</param> /// <param name="part">Source element.</param> /// <returns>Span component.</returns> protected override Span OnGetText(Cell cell, string part) { MultilineCell multilineCell = (MultilineCell)cell; if (part == "elm.text") { return(new Span() { Text = multilineCell.Text, FontSize = -1 }); } else if (part == "elm.text.multiline") { return(new Span() { Text = multilineCell.Multiline, FontSize = -1 }); } return(null); }