protected override View createViewForSingleItem(NewsfeedItemWebModel item) { try { NewsfeedItemBaseControl ctrl = null; if (item.ItemType == NewsfeedItemTypeEnum.Post) { ctrl = new NewsfeedItemPostControl(item, true); } else if (item.ItemType == NewsfeedItemTypeEnum.Result) { ctrl = new NewsfeedItemResultControl(item, true); } else if (item.ItemType == NewsfeedItemTypeEnum.Score) { ctrl = new NewsfeedItemScoreControl(item, true); } else if (item.ItemType == NewsfeedItemTypeEnum.GameHost) { ctrl = new NewsfeedItemGameHostControl(item, true); } else if (item.ItemType == NewsfeedItemTypeEnum.NewUser) { ctrl = new NewsfeedItemNewUserControl(item, true); } else { throw new Exception("Unknown type of NewsfeedItem"); } ctrl.NeedsARefresh += (s1, e1) => { this.onNeedsARefresh(); }; return(ctrl); } catch (Exception exc) { return(new BybLabel() { Text = TraceHelper.ExceptionToString(exc) }); } }
public NewsfeedItemPage(NewsfeedItemWebModel item, bool isModal) { this.isModal = isModal; this.item = item; NewsfeedItemBaseControl newsfeedItemControl; if (item.ItemType == NewsfeedItemTypeEnum.Post) { newsfeedItemControl = new NewsfeedItemPostControl(item, false); } else if (item.ItemType == NewsfeedItemTypeEnum.Result) { newsfeedItemControl = new NewsfeedItemResultControl(item, false); } else if (item.ItemType == NewsfeedItemTypeEnum.Score) { newsfeedItemControl = new NewsfeedItemScoreControl(item, false); } else if (item.ItemType == NewsfeedItemTypeEnum.GameHost) { newsfeedItemControl = new NewsfeedItemGameHostControl(item, false); } else if (item.ItemType == NewsfeedItemTypeEnum.NewUser) { newsfeedItemControl = new NewsfeedItemNewUserControl(item, true); } else { throw new NotImplementedException(); } newsfeedItemControl.ShowCommentsCount = false; newsfeedItemControl.TreatAsASingleItem = false; newsfeedItemControl.NeedsARefresh += (s1, e1) => { this.AnythingChanged = true; }; //newsfeedItemControl.Padding = new Thickness(0); this.labelLoading = new BybLabel() { HeightRequest = 40, VerticalTextAlignment = TextAlignment.Center, HorizontalOptions = LayoutOptions.Center, TextColor = Config.ColorBlackTextOnWhite, IsVisible = true, Text = "Loading...", }; this.listOfCommentsControl = new ListOfCommentsControl() { Padding = new Thickness(10, 10, 0, 0), }; this.editor = new BybEditor() { HeightRequest = 40, }; this.editor.Unfocused += editor_Unfocused; this.editor.Focused += editor_Focused; this.editor.Completed += editor_Completed; this.buttonCancel = new BybButton { Text = "Close", Style = (Style)App.Current.Resources["BlackButtonStyle"] }; buttonCancel.Clicked += buttonCancel_Clicked; Button buttonPostComment = new BybButton { Text = "Done", Style = (Style)App.Current.Resources["SimpleButtonStyle"], HorizontalOptions = LayoutOptions.End }; buttonPostComment.Clicked += buttonPostComment_Clicked; this.panelWithButtons = new StackLayout() { Orientation = StackOrientation.Horizontal, //BackgroundColor = Config.ColorBackground, HorizontalOptions = LayoutOptions.FillAndExpand, HeightRequest = Config.OkCancelButtonsHeight, Padding = new Thickness(10, 0, 10, 0), Spacing = 0, IsVisible = false, Children = { buttonPostComment, //buttonCancel2, } }; var stackLayout = new StackLayout { Spacing = 0, Padding = new Thickness(0, 0, 0, 0), Children = { new StackLayout { Padding = new Thickness(10, 10, 10, 0), Orientation = StackOrientation.Vertical, HorizontalOptions = LayoutOptions.FillAndExpand, Children = { newsfeedItemControl, } }, this.labelLoading, new ScrollView { Padding = new Thickness(10, 0, 10, 10), VerticalOptions = LayoutOptions.FillAndExpand, Content = new StackLayout { Orientation = StackOrientation.Vertical, Children = { this.listOfCommentsControl, new StackLayout { Orientation = StackOrientation.Horizontal, BackgroundColor = Config.ColorGrayBackground, Padding = new Thickness(10, 10, 0, 0), Children = { new BybLabel { Text = "Enter your comments here:", VerticalOptions = LayoutOptions.Center, TextColor = Config.ColorGrayTextOnWhite }, panelWithButtons, }, }, // new Frame // { // BackgroundColor = Config.ColorGrayBackground, // Padding = new Thickness(10,10,0,0), // Content = new BybLabel // { // Text = "Enter your comments here:" // } // }, //panelWithButtons, new Frame { BackgroundColor = Config.ColorGrayBackground, Padding = new Thickness(15, 5, 5, 5), Content = editor, }, } } }, new StackLayout() { Orientation = StackOrientation.Horizontal, //BackgroundColor = Config.ColorBackground, HorizontalOptions = LayoutOptions.Fill, HeightRequest = Config.OkCancelButtonsHeight, Padding = new Thickness(Config.OkCancelButtonsPadding), Children = { buttonCancel, } } } }; if (this.isModal) { stackLayout.Children.Insert(0, new BybTitle("Comments")); } this.Content = stackLayout; this.Padding = new Thickness(0, 0, 0, 0); this.BackgroundColor = Config.ColorGrayBackground; this.Title = "Comments"; }