fix basic bindings
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
00056c4aa2
commit
7777304ef3
@ -1,52 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="ShoopNCook.Views.CounterView"
|
||||
x:Name="Counter">
|
||||
<Grid
|
||||
ColumnDefinitions="*, Auto, *">
|
||||
|
||||
<Border
|
||||
Grid.Column="0"
|
||||
Stroke="Transparent"
|
||||
StrokeShape="RoundRectangle 100"
|
||||
BackgroundColor="{StaticResource Selected}">
|
||||
<ImageButton
|
||||
Source="minus.svg"
|
||||
WidthRequest="40"
|
||||
HeightRequest="40"
|
||||
Clicked="OnMinus"/>
|
||||
</Border>
|
||||
|
||||
<HorizontalStackLayout
|
||||
Grid.Column="1"
|
||||
Spacing="3"
|
||||
Margin="10, 0, 10, 0">
|
||||
<Label
|
||||
x:Name="CountLabel"
|
||||
Text="{Binding Count, Source={x:Reference Counter}}"
|
||||
TextColor="{StaticResource TextColorPrimary}"
|
||||
VerticalTextAlignment="Center"
|
||||
FontFamily="PoppinsMedium"/>
|
||||
|
||||
<Label
|
||||
x:Name="CounterLabel"
|
||||
Text="{Binding CounterText, Source={x:Reference Counter}}"
|
||||
TextColor="{StaticResource TextColorPrimary}"
|
||||
VerticalTextAlignment="Center"
|
||||
FontFamily="PoppinsMedium"/>
|
||||
</HorizontalStackLayout>
|
||||
|
||||
<Border
|
||||
Grid.Column="2"
|
||||
Stroke="Transparent"
|
||||
StrokeShape="RoundRectangle 100"
|
||||
BackgroundColor="{StaticResource Selected}">
|
||||
<ImageButton
|
||||
Source="plus.svg"
|
||||
WidthRequest="40"
|
||||
HeightRequest="40"
|
||||
Clicked="OnPlus"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</ContentView>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="ShoopNCook.Views.CounterView"
|
||||
x:Name="Counter">
|
||||
<Grid
|
||||
ColumnDefinitions="*, Auto, *">
|
||||
|
||||
<Border
|
||||
Grid.Column="0"
|
||||
Stroke="Transparent"
|
||||
StrokeShape="RoundRectangle 100"
|
||||
BackgroundColor="{StaticResource Selected}">
|
||||
<ImageButton
|
||||
Source="minus.svg"
|
||||
WidthRequest="40"
|
||||
HeightRequest="40"
|
||||
Clicked="OnMinus"/>
|
||||
</Border>
|
||||
|
||||
<HorizontalStackLayout
|
||||
Grid.Column="1"
|
||||
Spacing="3"
|
||||
Margin="10, 0, 10, 0">
|
||||
<Label
|
||||
x:Name="CountLabel"
|
||||
Text="{Binding Count, Source={x:Reference Counter}}"
|
||||
TextColor="{StaticResource TextColorPrimary}"
|
||||
VerticalTextAlignment="Center"
|
||||
FontFamily="PoppinsMedium"/>
|
||||
|
||||
<Label
|
||||
x:Name="CounterLabel"
|
||||
Text="{Binding CounterText, Source={x:Reference Counter}}"
|
||||
TextColor="{StaticResource TextColorPrimary}"
|
||||
VerticalTextAlignment="Center"
|
||||
FontFamily="PoppinsMedium"/>
|
||||
</HorizontalStackLayout>
|
||||
|
||||
<Border
|
||||
Grid.Column="2"
|
||||
Stroke="Transparent"
|
||||
StrokeShape="RoundRectangle 100"
|
||||
BackgroundColor="{StaticResource Selected}">
|
||||
<ImageButton
|
||||
Source="plus.svg"
|
||||
WidthRequest="40"
|
||||
HeightRequest="40"
|
||||
Clicked="OnPlus"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
</ContentView>
|
@ -1,51 +1,51 @@
|
||||
namespace ShoopNCook.Views;
|
||||
|
||||
public partial class CounterView : ContentView
|
||||
{
|
||||
|
||||
private readonly BindableProperty CountProperty =
|
||||
BindableProperty.Create(nameof(CountLabel), typeof(uint), typeof(CounterView), default(uint) + 1);
|
||||
|
||||
private readonly BindableProperty CounterLabelProperty =
|
||||
BindableProperty.Create(nameof(CounterLabel), typeof(string), typeof(CounterView), default(string));
|
||||
|
||||
public CounterView()
|
||||
{
|
||||
InitializeComponent();
|
||||
CountLabel.BindingContext = this;
|
||||
CountLabel.SetBinding(Label.TextProperty, nameof(Count));
|
||||
|
||||
CounterLabel.BindingContext = this;
|
||||
CounterLabel.SetBinding(Label.TextProperty, nameof(CounterText));
|
||||
}
|
||||
|
||||
public uint Count
|
||||
{
|
||||
get => (uint)GetValue(CountProperty);
|
||||
set
|
||||
{
|
||||
SetValue(CountProperty, value <= 1 ? 1 : uint.Parse(value.ToString()));
|
||||
OnPropertyChanged(nameof(Count));
|
||||
}
|
||||
}
|
||||
|
||||
public string CounterText
|
||||
{
|
||||
get => (string)GetValue(CounterLabelProperty);
|
||||
set
|
||||
{
|
||||
SetValue(CounterLabelProperty, value);
|
||||
OnPropertyChanged(nameof(CounterText));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlus(object o, EventArgs e)
|
||||
{
|
||||
Count += 1;
|
||||
}
|
||||
|
||||
private void OnMinus(object o, EventArgs e)
|
||||
{
|
||||
Count -= 1;
|
||||
}
|
||||
namespace ShoopNCook.Views;
|
||||
|
||||
public partial class CounterView : ContentView
|
||||
{
|
||||
|
||||
private readonly BindableProperty CountProperty =
|
||||
BindableProperty.Create(nameof(CountLabel), typeof(uint), typeof(CounterView), default(uint) + 1);
|
||||
|
||||
private readonly BindableProperty CounterLabelProperty =
|
||||
BindableProperty.Create(nameof(CounterLabel), typeof(string), typeof(CounterView), default(string));
|
||||
|
||||
public CounterView()
|
||||
{
|
||||
InitializeComponent();
|
||||
CountLabel.BindingContext = this;
|
||||
CountLabel.SetBinding(Label.TextProperty, nameof(Count));
|
||||
|
||||
CounterLabel.BindingContext = this;
|
||||
CounterLabel.SetBinding(Label.TextProperty, nameof(CounterText));
|
||||
}
|
||||
|
||||
public uint Count
|
||||
{
|
||||
get => (uint)GetValue(CountProperty);
|
||||
set
|
||||
{
|
||||
SetValue(CountProperty, value <= 1 ? 1 : uint.Parse(value.ToString()));
|
||||
OnPropertyChanged(nameof(Count));
|
||||
}
|
||||
}
|
||||
|
||||
public string CounterText
|
||||
{
|
||||
get => (string)GetValue(CounterLabelProperty);
|
||||
set
|
||||
{
|
||||
SetValue(CounterLabelProperty, value);
|
||||
OnPropertyChanged(nameof(CounterText));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlus(object o, EventArgs e)
|
||||
{
|
||||
Count += 1;
|
||||
}
|
||||
|
||||
private void OnMinus(object o, EventArgs e)
|
||||
{
|
||||
Count -= 1;
|
||||
}
|
||||
}
|
@ -1,113 +1,113 @@
|
||||
using ShoopNCook.Views;
|
||||
using System.Windows.Input;
|
||||
using Models;
|
||||
using LocalEndpoint;
|
||||
using Endpoint;
|
||||
|
||||
namespace ShoopNCook.Pages;
|
||||
|
||||
public partial class RecipePage : ContentPage
|
||||
{
|
||||
private readonly IAccountRecipesPreferences preferences;
|
||||
private readonly IUserNotifier notifier;
|
||||
|
||||
using ShoopNCook.Views;
|
||||
using System.Windows.Input;
|
||||
using Models;
|
||||
using LocalEndpoint;
|
||||
using Endpoint;
|
||||
|
||||
namespace ShoopNCook.Pages;
|
||||
|
||||
public partial class RecipePage : ContentPage
|
||||
{
|
||||
private readonly IAccountRecipesPreferences preferences;
|
||||
private readonly IUserNotifier notifier;
|
||||
|
||||
public Recipe Recipe { get; init; }
|
||||
|
||||
private uint note;
|
||||
private bool isFavorite;
|
||||
|
||||
|
||||
public ICommand StarCommand => new Command<string>(count => SetNote(uint.Parse(count)));
|
||||
|
||||
public RecipePage(Recipe recipe, IUserNotifier notifier, IAccountRecipesPreferences preferences, uint amount)
|
||||
{
|
||||
private uint note;
|
||||
private bool isFavorite;
|
||||
|
||||
|
||||
public ICommand StarCommand => new Command<string>(count => SetNote(uint.Parse(count)));
|
||||
|
||||
public RecipePage(Recipe recipe, IUserNotifier notifier, IAccountRecipesPreferences preferences, uint amount)
|
||||
{
|
||||
Recipe = recipe;
|
||||
BindingContext = this;
|
||||
BindingContext = this;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
this.preferences = preferences;
|
||||
this.notifier = notifier;
|
||||
|
||||
RecipeRate rate = preferences.GetRate(recipe.Info);
|
||||
|
||||
note = rate.Rate;
|
||||
isFavorite = rate.IsFavorite;
|
||||
|
||||
SetFavorite(isFavorite);
|
||||
SetNote(note);
|
||||
|
||||
Counter.Count = amount;
|
||||
|
||||
if (recipe.Info.Image != null)
|
||||
RecipeImage.Source = ImageSource.FromUri(recipe.Info.Image);
|
||||
|
||||
foreach (Ingredient ingredient in recipe.Ingredients)
|
||||
IngredientList.Add(new IngredientView(ingredient));
|
||||
|
||||
//retrieves the app's styles
|
||||
var styles = Application.Current.Resources.MergedDictionaries.ElementAt(1);
|
||||
|
||||
int count = 0;
|
||||
foreach (PreparationStep step in recipe.Steps) {
|
||||
//TODO display name of PreparationSteps.
|
||||
Label label = new Label();
|
||||
label.Style = (Style)styles["Small"];
|
||||
label.Text = "Step " + ++count + ": " + step.Description;
|
||||
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);
|
||||
if (isFavorite)
|
||||
preferences.AddToFavorites(Recipe.Info);
|
||||
else
|
||||
preferences.RemoveFromFavorites(Recipe.Info);
|
||||
}
|
||||
|
||||
private void OnSubmitReviewClicked(object o, EventArgs e)
|
||||
{
|
||||
preferences.SetReviewScore(Recipe.Info, note);
|
||||
notifier.Success("Your review has been successfuly submited");
|
||||
}
|
||||
|
||||
private void OnAddToMyListClicked(object o, EventArgs e)
|
||||
{
|
||||
if (!preferences.AddToWeeklyList(Recipe.Info, Counter.Count))
|
||||
notifier.Notice("You already added this recipe to you weekly list!");
|
||||
else
|
||||
notifier.Success("Recipe added to your weekly list.");
|
||||
}
|
||||
|
||||
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 OnBackButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
Navigation.PopAsync();
|
||||
}
|
||||
|
||||
|
||||
this.preferences = preferences;
|
||||
this.notifier = notifier;
|
||||
|
||||
RecipeRate rate = preferences.GetRate(recipe.Info);
|
||||
|
||||
note = rate.Rate;
|
||||
isFavorite = rate.IsFavorite;
|
||||
|
||||
SetFavorite(isFavorite);
|
||||
SetNote(note);
|
||||
|
||||
Counter.Count = amount;
|
||||
|
||||
if (recipe.Info.Image != null)
|
||||
RecipeImage.Source = ImageSource.FromUri(recipe.Info.Image);
|
||||
|
||||
foreach (Ingredient ingredient in recipe.Ingredients)
|
||||
IngredientList.Add(new IngredientView(ingredient));
|
||||
|
||||
//retrieves the app's styles
|
||||
var styles = Application.Current.Resources.MergedDictionaries.ElementAt(1);
|
||||
|
||||
int count = 0;
|
||||
foreach (PreparationStep step in recipe.Steps) {
|
||||
//TODO display name of PreparationSteps.
|
||||
Label label = new Label();
|
||||
label.Style = (Style)styles["Small"];
|
||||
label.Text = "Step " + ++count + ": " + step.Description;
|
||||
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);
|
||||
if (isFavorite)
|
||||
preferences.AddToFavorites(Recipe.Info);
|
||||
else
|
||||
preferences.RemoveFromFavorites(Recipe.Info);
|
||||
}
|
||||
|
||||
private void OnSubmitReviewClicked(object o, EventArgs e)
|
||||
{
|
||||
preferences.SetReviewScore(Recipe.Info, note);
|
||||
notifier.Success("Your review has been successfuly submited");
|
||||
}
|
||||
|
||||
private void OnAddToMyListClicked(object o, EventArgs e)
|
||||
{
|
||||
if (!preferences.AddToWeeklyList(Recipe.Info, Counter.Count))
|
||||
notifier.Notice("You already added this recipe to you weekly list!");
|
||||
else
|
||||
notifier.Success("Recipe added to your weekly list.");
|
||||
}
|
||||
|
||||
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 OnBackButtonClicked(object sender, EventArgs e)
|
||||
{
|
||||
Navigation.PopAsync();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue