You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ShopNCook/Pages/RecipePage.xaml.cs

115 lines
2.8 KiB

using ShoopNCook.Views;
using System.Windows.Input;
namespace ShoopNCook.Pages;
public partial class RecipePage : ContentPage
{
private uint note;
private uint nbPers;
private bool isFavorite;
public ICommand StarCommand => new Command<string>(count =>
{
SetNote(uint.Parse(count));
});
public RecipePage() :
this("Recipe Sample", 32, 250,
true, 2, 0,
new List<IngredientView> {
new IngredientView("Chocolate", 25, "g"),
new IngredientView("Flour", 250, "g"),
new IngredientView("Sugar", 0.5F, "kg")
},
new List<string> { "This is the first preparation step", "add to furnace and wait", "Enjoy !" }
)
{}
public RecipePage(
string name,
uint cookTime,
uint energy,
bool isFavorite,
uint nbPers,
uint note,
List<IngredientView> ingredients,
List<string> steps
)
{
InitializeComponent();
SetNbPers(nbPers);
SetFavorite(isFavorite);
SetNote(note);
CookTime.Text = cookTime.ToString();
Energy.Text = energy.ToString();
RecipeName.Text = name;
foreach (IngredientView iv in ingredients)
IngredientList.Add(iv);
var styles = Application.Current.Resources.MergedDictionaries.ElementAt(1);
int count = 0;
foreach (string step in steps) {
Label label = new Label();
label.Style = (Style)styles["Small"];
label.Text = "Step " + ++count + ": " + step;
StepList.Add(label);
}
}
private void SetNote(uint note)
{
this.note = note;
int i = 1;
foreach (ImageButton img in Stars.Children)
{
if (i <= note)
{
img.Source = ImageSource.FromFile("star_full.svg");
i++;
}
else
{
img.Source = ImageSource.FromFile("star_empty.svg");
}
}
}
private void OnFavorite(object o, EventArgs e)
{
SetFavorite(!isFavorite);
}
private void SetFavorite(bool isFavorite)
{
this.isFavorite = isFavorite;
if (isFavorite)
{
Favorite.Source = ImageSource.FromFile("hearth_on.svg");
}
else
{
Favorite.Source = ImageSource.FromFile("hearth_off.svg");
}
}
private void OnPlus(object o, EventArgs e)
{
SetNbPers(nbPers + 1);
}
private void OnMinus(object o, EventArgs e)
{
SetNbPers(nbPers - 1);
}
private void SetNbPers(uint nbPers)
{
this.nbPers = nbPers <= 1 ? 1 : nbPers;
NbPersLabel.Text = this.nbPers.ToString();
}
}