Saxonite 1.2.11.3. Sandtrap.
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
using Microsoft.Maui.Controls.Internals;
|
||||
using Sarand.Net.Mobile.Maui.App;
|
||||
using Sarand.Net.Mobile.Maui.Controls;
|
||||
using Sarand.Net.Mobile.Maui.Layouts;
|
||||
using Sarand.Net.Mobile.Maui.Utils;
|
||||
using Sarand.Net.Mobile.Maui.Views;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Sarand.Net.Mobile.Maui.Panels
|
||||
{
|
||||
//=======================================================================
|
||||
public class SamPanel_Page_Header : SamPanel
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
// Layout.
|
||||
private SamBoxView panelBorderTop = new SamBoxView() { BackgroundColor = Sam.Visuals.Page.Header.BorderColor, HeightRequest = Sam.Visuals.Page.Header.BorderStrokeWidthTop };
|
||||
private VerticalStackLayout panelHeader = new VerticalStackLayout() { BackgroundColor = Sam.Visuals.Page.Header.BackgroundColor };
|
||||
private SamBoxView panelBorderBottom = new SamBoxView() { BackgroundColor = Sam.Visuals.Page.Header.BorderColor, HeightRequest = Sam.Visuals.Page.Header.BorderStrokeWidthBottom };
|
||||
// Grid.
|
||||
private SamGrid gridHeader = new SamGrid() { Padding = Sam.Visuals.Page.Header.Padding };
|
||||
private ColumnDefinition colLeft = new ColumnDefinition(GridLength.Star);
|
||||
private ColumnDefinition colMiddle = new ColumnDefinition(GridLength.Auto);
|
||||
private ColumnDefinition colRight = new ColumnDefinition(GridLength.Star);
|
||||
// Panels.
|
||||
private VerticalStackLayout panelLeft = new VerticalStackLayout() { HorizontalOptions = LayoutOptions.Start };
|
||||
private VerticalStackLayout panelMiddle = new VerticalStackLayout() { HorizontalOptions = LayoutOptions.Center };
|
||||
private VerticalStackLayout panelRight = new VerticalStackLayout() { HorizontalOptions = LayoutOptions.End };
|
||||
// Caption.
|
||||
private SamLabel labelCaption = new SamLabel() { HorizontalOptions = LayoutOptions.Center };
|
||||
private Sam.DisplayPosition captionDisplay = Sam.DisplayPosition.Middle;
|
||||
// Text labels.
|
||||
private SamLabel labelLeft = new SamLabel() { HorizontalOptions = LayoutOptions.Start };
|
||||
private SamLabel labelRight= new SamLabel() { HorizontalOptions = LayoutOptions.End };
|
||||
// Toolbar.
|
||||
private Sam.DisplayPosition toolbarDisplay = Sam.Visuals.Page.Header.ToolbarDisplay;
|
||||
private HorizontalStackLayout panelToolbar = new HorizontalStackLayout() { };
|
||||
private bool display_ToolbarItem_Back = Sam.Visuals.Page.Header.Display_ToolbarItem_Back;
|
||||
private Button toolbarItem_Back = new Button() { WidthRequest = 16, HeightRequest = 16, Text="<", Padding=new Thickness(0), BorderWidth = 0.0, BorderColor = Colors.DarkOliveGreen };
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SamPanel_Page_Header()
|
||||
{
|
||||
InitialiseComponents();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public String Caption
|
||||
{
|
||||
get { return labelCaption.Text; }
|
||||
set { labelCaption.Text = value; ConfigureComponents(); }
|
||||
}
|
||||
public Sam.DisplayPosition CaptionDisplay
|
||||
{
|
||||
get { return captionDisplay; }
|
||||
set { captionDisplay = value; ConfigureComponents(); }
|
||||
}
|
||||
|
||||
// Text labels.
|
||||
public String TextLeft
|
||||
{
|
||||
get { return labelLeft.Text; }
|
||||
set { labelLeft.Text = value; ConfigureComponents(); }
|
||||
}
|
||||
public String TextRight
|
||||
{
|
||||
get { return labelRight.Text; }
|
||||
set { labelRight.Text = value; ConfigureComponents(); }
|
||||
}
|
||||
|
||||
// Toolbar.
|
||||
public Sam.DisplayPosition ToolbarDisplay
|
||||
{
|
||||
get { return toolbarDisplay; }
|
||||
set { toolbarDisplay = value; ConfigureComponents(); }
|
||||
}
|
||||
public bool Display_ToolbarItem_Back
|
||||
{
|
||||
get { return display_ToolbarItem_Back; }
|
||||
set { display_ToolbarItem_Back = value; ConfigureComponents(); }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Components.
|
||||
|
||||
private void InitialiseComponents()
|
||||
{
|
||||
// Header panel.
|
||||
Content = panelHeader;
|
||||
|
||||
// Top border.
|
||||
panelBorderTop.Margin = new Thickness(0, 0, 0, Sam.Visuals.Page.Header.Padding.Top);
|
||||
panelHeader.Children.Add(panelBorderTop);
|
||||
|
||||
// Header grid.
|
||||
gridHeader.Margin = new Thickness(Sam.Visuals.Page.Header.Padding.Left, 0, Sam.Visuals.Page.Header.Padding.Right, 0);
|
||||
gridHeader.ColumnDefinitions.Add(colLeft);
|
||||
gridHeader.ColumnDefinitions.Add(colMiddle);
|
||||
gridHeader.ColumnDefinitions.Add(colRight);
|
||||
gridHeader.Add(panelLeft, 0, 0);
|
||||
gridHeader.Add(panelMiddle, 1, 0);
|
||||
gridHeader.Add(panelRight, 2, 0);
|
||||
panelHeader.Children.Add(gridHeader);
|
||||
|
||||
// Bottom border.
|
||||
panelBorderBottom.Margin = new Thickness(0, Sam.Visuals.Page.Header.Padding.Bottom, 0, 0);
|
||||
panelHeader.Children.Add(panelBorderBottom);
|
||||
|
||||
// Configure standard toolbar icons.
|
||||
toolbarItem_Back.Clicked += ToolbarItem_Back_Clicked;
|
||||
}
|
||||
|
||||
public override void ConfigureComponents()
|
||||
{
|
||||
base.ConfigureComponents();
|
||||
bool contentDisplayed = false;
|
||||
|
||||
// Caption.
|
||||
panelLeft.Children.Remove(labelCaption);
|
||||
panelMiddle.Children.Remove(labelCaption);
|
||||
panelRight.Children.Remove(labelCaption);
|
||||
if (captionDisplay != Sam.DisplayPosition.None && !StringUtil.IsBlank(labelCaption.Text))
|
||||
{
|
||||
contentDisplayed = true;
|
||||
if (captionDisplay == Sam.DisplayPosition.Left)
|
||||
panelLeft.Children.Add(labelCaption);
|
||||
else if (captionDisplay == Sam.DisplayPosition.Middle)
|
||||
panelMiddle.Children.Add(labelCaption);
|
||||
else if (captionDisplay == Sam.DisplayPosition.Right)
|
||||
panelRight.Children.Add(labelCaption);
|
||||
}
|
||||
|
||||
// Text labels.
|
||||
panelLeft.Children.Remove(labelLeft);
|
||||
if (!StringUtil.IsBlank(labelLeft.Text))
|
||||
{
|
||||
contentDisplayed = true;
|
||||
panelLeft.Children.Add(labelLeft);
|
||||
}
|
||||
panelRight.Children.Remove(labelRight);
|
||||
if (!StringUtil.IsBlank(labelRight.Text))
|
||||
{
|
||||
contentDisplayed = true;
|
||||
panelRight.Children.Add(labelRight);
|
||||
}
|
||||
|
||||
// Toolbar.
|
||||
panelLeft.Children.Remove(panelToolbar);
|
||||
panelMiddle.Children.Remove(panelToolbar);
|
||||
panelRight.Children.Remove(panelToolbar);
|
||||
panelToolbar.Children.Clear();
|
||||
|
||||
// Toolbar icons.
|
||||
if (display_ToolbarItem_Back)
|
||||
panelToolbar.Children.Add(toolbarItem_Back);
|
||||
if (panelToolbar.Children.Any() && ToolbarDisplay != Sam.DisplayPosition.None)
|
||||
{
|
||||
contentDisplayed = true;
|
||||
if (ToolbarDisplay == Sam.DisplayPosition.Left)
|
||||
panelLeft.Children.Add(panelToolbar);
|
||||
else if (ToolbarDisplay == Sam.DisplayPosition.Middle)
|
||||
panelMiddle.Children.Add(panelToolbar);
|
||||
else if (ToolbarDisplay == Sam.DisplayPosition.Right)
|
||||
panelRight.Children.Add(panelToolbar);
|
||||
}
|
||||
|
||||
// Hide panel if nothing displayed.
|
||||
if (contentDisplayed)
|
||||
IsVisible = true;
|
||||
else IsVisible = false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Toolbar actions.
|
||||
|
||||
private void ToolbarItem_Back_Clicked(object? sender, EventArgs e)
|
||||
{
|
||||
//if (Navigation.NavigationStack.Where(item => System.Object.ReferenceEquals(item, this)).Any())
|
||||
Page? page = this.GetPage();
|
||||
if (Navigation.NavigationStack.Any() && System.Object.ReferenceEquals(Navigation.NavigationStack.Last(), page))
|
||||
{
|
||||
Navigation.PopAsync();
|
||||
return;
|
||||
}
|
||||
if (Navigation.ModalStack.Where(item => System.Object.ReferenceEquals(item, page)).Any())
|
||||
{
|
||||
Navigation.PopModalAsync();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user