UITableViewCell GetPrimaryCell(UITableView tableView) { SeriesPrimaryCell cell = tableView.DequeueReusableCell(SeriesPrimaryCell.Identifier) as SeriesPrimaryCell; // if there are no cells to reuse, create a new one if (cell == null) { cell = new SeriesPrimaryCell(UITableViewCellStyle.Default, SeriesCell.Identifier); cell.Parent = this; // take the parent table's width so we inherit its width constraint cell.Bounds = new CGRect(cell.Bounds.X, cell.Bounds.Y, tableView.Bounds.Width, cell.Bounds.Height); // configure the cell colors cell.BackgroundColor = Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.BG_Layer_Color); cell.SelectionStyle = UITableViewCellSelectionStyle.None; } // Banner Image cell.Image.Image = Parent.SeriesBillboard; cell.Image.SizeToFit( ); // resize the image to fit the width of the device float imageAspect = (float)(cell.Image.Bounds.Height / cell.Image.Bounds.Width); cell.Image.Frame = new CGRect(0, 0, cell.Bounds.Width, cell.Bounds.Width * imageAspect); // Title cell.Title.Text = Series.SeriesName; if (Series.SeriesPrivate == true) { cell.Title.Text += " (Private)"; } cell.Title.SizeToFit( ); cell.Desc.Text = Series.Description; cell.Desc.Bounds = new CGRect(0, 0, cell.Frame.Width - 20, float.MaxValue); cell.Desc.SizeToFit( ); cell.Date.Text = Series.DateRanges; cell.Date.SizeToFit( ); // now position the 3 text elements // Title cell.Title.Frame = new CGRect(10, cell.Image.Frame.Bottom + 5, cell.Frame.Width - 20, cell.Title.Frame.Height); // Date cell.Date.Frame = new CGRect(10, cell.Title.Frame.Bottom - 9, cell.Frame.Width - 20, cell.Date.Frame.Height + 5); // Description cell.Desc.Frame = new CGRect(10, cell.Date.Frame.Bottom + 5, cell.Frame.Width - 20, cell.Desc.Frame.Height + 5); PendingPrimaryCellHeight = cell.Desc.Frame.Bottom + 5; return(cell); }
public TableSource(NotesMainUIViewController parent, List <SeriesEntry> series, UIImage imageMainPlaceholder, UIImage imageThumbPlaceholder) { Parent = parent; SeriesEntries = series; ImageMainPlaceholder = imageMainPlaceholder; ImageThumbPlaceholder = imageThumbPlaceholder; // create a dummy cell so we can store the height SeriesPrimaryCell cell = new SeriesPrimaryCell(parent.View.Frame, UITableViewCellStyle.Default, SeriesCell.Identifier, ImageMainPlaceholder); PendingPrimaryCellHeight = cell.BottomBanner.Frame.Bottom; }
UITableViewCell GetPrimaryCell( UITableView tableView ) { SeriesPrimaryCell cell = tableView.DequeueReusableCell( SeriesPrimaryCell.Identifier ) as SeriesPrimaryCell; // if there are no cells to reuse, create a new one if (cell == null) { cell = new SeriesPrimaryCell( tableView.Frame, UITableViewCellStyle.Default, SeriesCell.Identifier, ImageMainPlaceholder ); cell.Parent = this; // take the parent table's width so we inherit its width constraint cell.Bounds = new CGRect( cell.Bounds.X, cell.Bounds.Y, tableView.Bounds.Width, cell.Bounds.Height ); // configure the cell colors cell.BackgroundColor = Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.BG_Layer_Color ); cell.SelectionStyle = UITableViewCellSelectionStyle.None; } // Banner Image if ( SeriesEntries.Count > 0 ) { cell.Image.Image = SeriesEntries[ 0 ].mBillboard != null ? SeriesEntries[ 0 ].mBillboard : ImageMainPlaceholder; // Create the title if ( SeriesEntries[ 0 ].Series.Messages.Count > 0 ) { cell.Title.Text = SeriesEntries[ 0 ].Series.Messages[ 0 ].Name; if( SeriesEntries[ 0 ].Series.Private == true || SeriesEntries[ 0 ].Series.Messages[ 0 ].Private == true ) { cell.Title.Text += " (Private)"; } cell.Title.SizeToFit( ); cell.Title.Frame = new CGRect( 10, cell.Image.Frame.Bottom + 5, cell.Frame.Width - 10, cell.Title.Frame.Height ); // Date & Speaker cell.Date.Text = SeriesEntries[ 0 ].Series.Messages[ 0 ].Date; cell.Date.SizeToFit( ); cell.Date.Frame = new CGRect( 10, cell.Title.Frame.Bottom - 7, cell.Date.Bounds.Width, cell.Date.Bounds.Height ); cell.Speaker.Text = SeriesEntries[ 0 ].Series.Messages[ 0 ].Speaker; cell.Speaker.SizeToFit( ); cell.Speaker.Frame = new CGRect( cell.Bounds.Width - cell.Speaker.Bounds.Width - 10, cell.Title.Frame.Bottom - 7, cell.Speaker.Bounds.Width, cell.Speaker.Bounds.Height ); // Position the Watch Button and icon cell.WatchButton.Bounds = new CGRect( 0, 0, cell.Bounds.Width / 2 + 6, cell.WatchButton.Bounds.Height + 10 ); cell.WatchButton.Layer.Position = new CGPoint( -5, cell.Speaker.Frame.Bottom + 7 ); nfloat labelTotalWidth = cell.WatchButtonIcon.Bounds.Width + cell.WatchButtonLabel.Bounds.Width + 5; cell.WatchButtonIcon.Layer.Position = new CGPoint( (cell.WatchButton.Bounds.Width - labelTotalWidth) / 2 + (cell.WatchButtonIcon.Bounds.Width / 2), cell.WatchButton.Bounds.Height / 2 ); cell.WatchButtonLabel.Layer.Position = new CGPoint( cell.WatchButtonIcon.Frame.Right + (cell.WatchButtonLabel.Bounds.Width / 2), cell.WatchButton.Bounds.Height / 2 ); // Position the Take Notes icon and button cell.TakeNotesButton.Bounds = new CGRect( 0, 0, cell.Bounds.Width / 2 + 5, cell.TakeNotesButton.Bounds.Height + 10 ); cell.TakeNotesButton.Layer.Position = new CGPoint( (cell.Bounds.Width + 5) - cell.TakeNotesButton.Bounds.Width, cell.Speaker.Frame.Bottom + 7 ); labelTotalWidth = cell.TakeNotesButtonIcon.Bounds.Width + cell.TakeNotesButtonLabel.Bounds.Width + 5; cell.TakeNotesButtonIcon.Layer.Position = new CGPoint( (cell.TakeNotesButton.Bounds.Width - labelTotalWidth) / 2 + (cell.TakeNotesButtonIcon.Bounds.Width / 2), cell.TakeNotesButton.Bounds.Height / 2 ); cell.TakeNotesButtonLabel.Layer.Position = new CGPoint( cell.TakeNotesButtonIcon.Frame.Right + (cell.TakeNotesButtonLabel.Bounds.Width / 2), cell.TakeNotesButton.Bounds.Height / 2 ); // Position the Bottom Banner cell.BottomBanner.Bounds = new CGRect( 0, 0, cell.Bounds.Width, cell.BottomBanner.Bounds.Height + 10 ); cell.BottomBanner.Layer.Position = new CGPoint( 0, cell.TakeNotesButton.Frame.Bottom - 1 ); // Watch Button & Labels // disable the button if there's no watch URL if ( string.IsNullOrEmpty( SeriesEntries[ 0 ].Series.Messages[ 0 ].WatchUrl ) ) { cell.ToggleWatchButton( false ); } else { cell.ToggleWatchButton( true ); } // Take Notes Button & Labels // disable the button if there's no note URL if ( string.IsNullOrEmpty( SeriesEntries[ 0 ].Series.Messages[ 0 ].NoteUrl ) ) { cell.ToggleTakeNotesButton( false ); } else { cell.ToggleTakeNotesButton( true ); } } else { cell.ToggleWatchButton( false ); cell.ToggleTakeNotesButton( false ); } } PendingPrimaryCellHeight = cell.BottomBanner.Frame.Bottom; return cell; }
public TableSource (NotesMainUIViewController parent, List<SeriesEntry> series, UIImage imageMainPlaceholder, UIImage imageThumbPlaceholder ) { Parent = parent; SeriesEntries = series; ImageMainPlaceholder = imageMainPlaceholder; ImageThumbPlaceholder = imageThumbPlaceholder; // create a dummy cell so we can store the height SeriesPrimaryCell cell = new SeriesPrimaryCell( parent.View.Frame, UITableViewCellStyle.Default, SeriesCell.Identifier, ImageMainPlaceholder ); PendingPrimaryCellHeight = cell.BottomBanner.Frame.Bottom; }
UITableViewCell GetPrimaryCell(UITableView tableView) { SeriesPrimaryCell cell = tableView.DequeueReusableCell(SeriesPrimaryCell.Identifier) as SeriesPrimaryCell; // if there are no cells to reuse, create a new one if (cell == null) { cell = new SeriesPrimaryCell(tableView.Frame, UITableViewCellStyle.Default, SeriesCell.Identifier, ImageMainPlaceholder); cell.Parent = this; // take the parent table's width so we inherit its width constraint cell.Bounds = new CGRect(cell.Bounds.X, cell.Bounds.Y, tableView.Bounds.Width, cell.Bounds.Height); // configure the cell colors cell.BackgroundColor = Rock.Mobile.UI.Util.GetUIColor(ControlStylingConfig.BG_Layer_Color); cell.SelectionStyle = UITableViewCellSelectionStyle.None; } // Banner Image if (SeriesEntries.Count > 0) { cell.Image.Image = SeriesEntries[0].mBillboard != null ? SeriesEntries[0].mBillboard : ImageMainPlaceholder; // Create the title Series.Message latestMessage = SeriesEntries[0].Series.GetLatestMessage( ); cell.Title.Text = latestMessage.Name; if (SeriesEntries[0].Series.SeriesPrivate == true || latestMessage.Private == true) { cell.Title.Text += " (Private)"; } cell.Title.SizeToFit( ); cell.Title.Frame = new CGRect(10, cell.Image.Frame.Bottom + 5, cell.Frame.Width - 10, cell.Title.Frame.Height); // Date & Speaker cell.Date.Text = latestMessage.Date; cell.Date.SizeToFit( ); cell.Date.Frame = new CGRect(10, cell.Title.Frame.Bottom - 7, cell.Date.Bounds.Width, Math.Max(22, cell.Date.Bounds.Height)); cell.Speaker.Text = latestMessage.Speaker; cell.Speaker.SizeToFit( ); cell.Speaker.Frame = new CGRect(cell.Bounds.Width - cell.Speaker.Bounds.Width - 10, cell.Title.Frame.Bottom - 7, cell.Speaker.Bounds.Width, Math.Max(22, cell.Speaker.Bounds.Height)); // Position the Watch Button and icon cell.WatchButton.Bounds = new CGRect(0, 0, cell.Bounds.Width / 2 + 6, cell.WatchButton.Bounds.Height + 10); cell.WatchButton.Layer.Position = new CGPoint(-5, cell.Speaker.Frame.Bottom + 7); nfloat labelTotalWidth = cell.WatchButtonIcon.Bounds.Width + cell.WatchButtonLabel.Bounds.Width + 5; cell.WatchButtonIcon.Layer.Position = new CGPoint((cell.WatchButton.Bounds.Width - labelTotalWidth) / 2 + (cell.WatchButtonIcon.Bounds.Width / 2), cell.WatchButton.Bounds.Height / 2); cell.WatchButtonLabel.Layer.Position = new CGPoint(cell.WatchButtonIcon.Frame.Right + (cell.WatchButtonLabel.Bounds.Width / 2), cell.WatchButton.Bounds.Height / 2); // Position the Take Notes icon and button cell.TakeNotesButton.Bounds = new CGRect(0, 0, cell.Bounds.Width / 2 + 5, cell.TakeNotesButton.Bounds.Height + 10); cell.TakeNotesButton.Layer.Position = new CGPoint((cell.Bounds.Width + 5) - cell.TakeNotesButton.Bounds.Width, cell.Speaker.Frame.Bottom + 7); labelTotalWidth = cell.TakeNotesButtonIcon.Bounds.Width + cell.TakeNotesButtonLabel.Bounds.Width + 5; cell.TakeNotesButtonIcon.Layer.Position = new CGPoint((cell.TakeNotesButton.Bounds.Width - labelTotalWidth) / 2 + (cell.TakeNotesButtonIcon.Bounds.Width / 2), cell.TakeNotesButton.Bounds.Height / 2); cell.TakeNotesButtonLabel.Layer.Position = new CGPoint(cell.TakeNotesButtonIcon.Frame.Right + (cell.TakeNotesButtonLabel.Bounds.Width / 2), cell.TakeNotesButton.Bounds.Height / 2); // Position the Discussion Guide icon and button cell.DiscussionGuideButton.Bounds = new CGRect(0, 0, cell.Bounds.Width + 6, cell.DiscussionGuideButton.Bounds.Height + 10); cell.DiscussionGuideButton.Layer.Position = new CGPoint(-5, cell.TakeNotesButton.Frame.Bottom); labelTotalWidth = cell.DiscussionGuideButtonIcon.Bounds.Width + cell.DiscussionGuideButtonLabel.Bounds.Width + 5; cell.DiscussionGuideButtonIcon.Layer.Position = new CGPoint((cell.DiscussionGuideButton.Bounds.Width - labelTotalWidth) / 2 + (cell.DiscussionGuideButtonIcon.Bounds.Width / 2), cell.DiscussionGuideButton.Bounds.Height / 2); cell.DiscussionGuideButtonLabel.Layer.Position = new CGPoint(cell.DiscussionGuideButtonIcon.Frame.Right + (cell.DiscussionGuideButtonLabel.Bounds.Width / 2), cell.DiscussionGuideButton.Bounds.Height / 2); // Position the Bottom Banner cell.BottomBanner.Bounds = new CGRect(0, 0, cell.Bounds.Width, cell.BottomBanner.Bounds.Height + 10); cell.BottomBanner.Layer.Position = new CGPoint(0, cell.DiscussionGuideButton.Frame.Bottom - 1); // Watch Button & Labels // disable the button if there's no watch URL if (string.IsNullOrWhiteSpace(latestMessage.WatchUrl)) { cell.ToggleWatchButton(false); } else { cell.ToggleWatchButton(true); } // Take Notes Button & Labels // disable the button if there's no note URL if (string.IsNullOrWhiteSpace(latestMessage.NoteUrl)) { cell.ToggleTakeNotesButton(false); } else { cell.ToggleTakeNotesButton(true); } // DiscussionGuide Button & Labels // disable the button if there's no note URL if (string.IsNullOrWhiteSpace(latestMessage.DiscussionGuideUrl)) { cell.ToggleDiscussionGuideButton(false); } else { cell.ToggleDiscussionGuideButton(true); } } PendingPrimaryCellHeight = cell.BottomBanner.Frame.Bottom; return(cell); }
UITableViewCell GetPrimaryCell( UITableView tableView ) { SeriesPrimaryCell cell = tableView.DequeueReusableCell( SeriesPrimaryCell.Identifier ) as SeriesPrimaryCell; // if there are no cells to reuse, create a new one if (cell == null) { cell = new SeriesPrimaryCell( UITableViewCellStyle.Default, SeriesCell.Identifier ); cell.Parent = this; // take the parent table's width so we inherit its width constraint cell.Bounds = new CGRect( cell.Bounds.X, cell.Bounds.Y, tableView.Bounds.Width, cell.Bounds.Height ); // configure the cell colors cell.BackgroundColor = Rock.Mobile.UI.Util.GetUIColor( ControlStylingConfig.BG_Layer_Color ); cell.SelectionStyle = UITableViewCellSelectionStyle.None; } // Banner Image cell.Image.Image = Parent.SeriesBillboard; cell.Image.SizeToFit( ); // resize the image to fit the width of the device float imageAspect = (float) (cell.Image.Bounds.Height / cell.Image.Bounds.Width); cell.Image.Frame = new CGRect( 0, 0, cell.Bounds.Width, cell.Bounds.Width * imageAspect ); // Title cell.Title.Text = Series.Name; cell.Title.SizeToFit( ); cell.Title.Frame = new CGRect( 5, cell.Image.Frame.Bottom + 5, cell.Frame.Width - 10, cell.Title.Frame.Height + 5 ); // Date cell.Date.Text = Series.DateRanges; cell.Date.SizeToFit( ); cell.Date.Frame = new CGRect( 5, cell.Title.Frame.Bottom - 5, cell.Frame.Width - 5, cell.Date.Frame.Height + 5 ); // Description cell.Desc.Text = Series.Description; cell.Desc.Bounds = new CGRect( 0, 0, cell.Frame.Width - 10, float.MaxValue ); cell.Desc.SizeToFit( ); cell.Desc.Frame = new CGRect( 5, cell.Date.Frame.Bottom, cell.Frame.Width - 10, cell.Desc.Frame.Height + 5 ); PendingPrimaryCellHeight = cell.Desc.Frame.Bottom + 5; return cell; }