Files
Common-VS2019/SacsStandardMob/Mobile/Forms/Panels/SaxPanel_ItemListSummary.cs
T
2021-05-05 15:36:28 +01:00

129 lines
4.8 KiB
C#

using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Mobile.Forms.Controls;
using Sarand.Net.Standard.Mobile.Forms.Layouts;
using Sarand.Net.Standard.Mobile.Forms.Views;
using Sarand.Net.Standard.Mobile.Utils;
using System;
using System.Collections.Generic;
using System.Text;
using Xamarin.Forms;
namespace Sarand.Net.Standard.Mobile.Forms.Panels
{
//=======================================================================
/// <summary>
/// Panel to display with item list where no filter required, eg. items associated with parent.
/// <para>- Message shown to left</para>
/// <para>- Buttons shown to right</para>
/// </summary>
public class SaxPanel_ItemListSummary : SaxContentView
{
//-------------------------------------------------------------------
// Definitions.
//-------------------------------------------------------------------
// Data members.
private SacsMessage message;
private bool showAddButton = false;
private double actionButtonSpacing = 4.0;
// Panel layout.
private SaxStackLayout panelLayout = new SaxStackLayout() { Orientation = Xamarin.Forms.StackOrientation.Horizontal };
private SaxContentView panelMessage = new SaxContentView();
private SaxLabel labelMessage = new SaxLabel() { HorizontalOptions = LayoutOptions.Start};
// Action butons.
private SaxStackLayout panelActions = new SaxStackLayout() { Orientation = Xamarin.Forms.StackOrientation.Horizontal };
private SaxImageButton buttonAddItem = new SaxImageButton() { IsVisible = false, HorizontalOptions = LayoutOptions.End, VerticalOptions = LayoutOptions.Start };
//-------------------------------------------------------------------
// Construction.
public SaxPanel_ItemListSummary ()
{
// Panel layout.
panelLayout.HorizontalOptions = LayoutOptions.Fill;
Content = panelLayout;
// Message.
panelMessage.HorizontalOptions = LayoutOptions.Fill;
panelMessage.VerticalOptions = LayoutOptions.Fill;
//panelMessage.BackgroundColor = Color.LightGoldenrodYellow;
panelLayout.Children.Add(panelMessage);
labelMessage.HorizontalOptions = LayoutOptions.Center;
labelMessage.VerticalOptions = LayoutOptions.Center;
panelMessage.Content = labelMessage;
// Action buttons.
panelActions.HorizontalOptions = LayoutOptions.EndAndExpand;
panelLayout.Children.Add(panelActions);
// 'Add' button.
buttonAddItem.IsVisible = showAddButton;
buttonAddItem.Padding = new Thickness(0, 0, actionButtonSpacing, 0);
buttonAddItem.BackgroundColor = Color.Transparent;
buttonAddItem.Source = SacsImageUtils.GetImageFromByteArray(SacsResourceHelper.GetImageResource(SacsResourceHelper.ImageResource.IconShock_Add_Green_72_png));
buttonAddItem.Clicked += ButtonAddItem_Clicked;
panelActions.Children.Add(buttonAddItem);
}
//-------------------------------------------------------------------
// Properties.
// Message.
public double DefaultMessageFontSize { get { return labelMessage.DefaultFontSize; } }
public double MessageFontSize
{
get { return labelMessage.FontSize; }
set { labelMessage.FontSize = value; }
}
// Action buttons.
public double ActionButtonSpacing
{
get { return actionButtonSpacing; }
set
{
if (actionButtonSpacing == value) return;
buttonAddItem.Padding = new Thickness(0, 0, actionButtonSpacing, 0);
}
}
public bool ShowAddButton
{
get { return showAddButton; }
set { if (showAddButton == value) return; showAddButton = value; buttonAddItem.IsVisible = showAddButton; }
}
//-------------------------------------------------------------------
// M e s s a g e
//-------------------------------------------------------------------
public void ClearMessage ()
{
message = null;
labelMessage.Text = "";
}
public void SetMessage (String message, SaMessageLevel messageLevel = SaMessageLevel.Info)
{
SetMessage(new SacsMessage(message, messageLevel));
}
public void SetMessage (SacsMessage message)
{
this.message = message;
labelMessage.Text = (message != null ? message.Message : "");
}
//-------------------------------------------------------------------
// A c t i o n B u t t o n s
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// P a n e l E v e n t s
//-------------------------------------------------------------------
public event EventHandler<EventArgs> AddClicked;
protected virtual void ButtonAddItem_Clicked (object sender, EventArgs e)
{
if (AddClicked != null) AddClicked.Invoke(sender, e);
}
//-------------------------------------------------------------------
}
//=======================================================================
}