From fd3c79a483a33717b6fb27f329be380a08a7c5b2 Mon Sep 17 00:00:00 2001 From: Alex Saez Date: Sun, 31 Mar 2019 14:40:58 -0300 Subject: [PATCH 1/3] Screen is made --- .../Resources/Resource.designer.cs | 8 +-- VisualChallenge/VisualChallenge/App.xaml.cs | 4 +- .../Images/ico_sprouts_color.png | Bin 0 -> 9702 bytes .../ViewModels/CropItemViewModel.cs | 43 +++++++++++++++ .../VisualChallengePageViewModel.cs | 48 +++++++++++++++++ .../VisualChallenge/VisualChallenge.csproj | 9 ++++ .../VisualChallenge/VisualChallengePage.xaml | 49 +++++++++++++++--- .../VisualChallengePage.xaml.cs | 8 +-- 8 files changed, 151 insertions(+), 18 deletions(-) create mode 100644 VisualChallenge/VisualChallenge/Images/ico_sprouts_color.png create mode 100644 VisualChallenge/VisualChallenge/ViewModels/CropItemViewModel.cs create mode 100644 VisualChallenge/VisualChallenge/ViewModels/VisualChallengePageViewModel.cs diff --git a/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs b/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs index 1f086b3..4727a74 100644 --- a/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs +++ b/VisualChallenge/VisualChallenge.Android/Resources/Resource.designer.cs @@ -1,11 +1,11 @@ #pragma warning disable 1591 //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. // //------------------------------------------------------------------------------ diff --git a/VisualChallenge/VisualChallenge/App.xaml.cs b/VisualChallenge/VisualChallenge/App.xaml.cs index 2ab3c58..c651e4c 100644 --- a/VisualChallenge/VisualChallenge/App.xaml.cs +++ b/VisualChallenge/VisualChallenge/App.xaml.cs @@ -1,4 +1,5 @@ -using Xamarin.Forms; +using DLToolkit.Forms.Controls; +using Xamarin.Forms; namespace VisualChallenge { @@ -10,6 +11,7 @@ public App() InitializeComponent(); MainPage = new AppShell(); + FlowListView.Init(); } protected override void OnStart() diff --git a/VisualChallenge/VisualChallenge/Images/ico_sprouts_color.png b/VisualChallenge/VisualChallenge/Images/ico_sprouts_color.png new file mode 100644 index 0000000000000000000000000000000000000000..806ffbda12b094315aa4be5a166e9688f73f2794 GIT binary patch literal 9702 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 literal 0 HcmV?d00001 diff --git a/VisualChallenge/VisualChallenge/ViewModels/CropItemViewModel.cs b/VisualChallenge/VisualChallenge/ViewModels/CropItemViewModel.cs new file mode 100644 index 0000000..23a3828 --- /dev/null +++ b/VisualChallenge/VisualChallenge/ViewModels/CropItemViewModel.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; +using Xamarin.Forms; + +namespace VisualChallenge.ViewModels +{ + public class CropItemViewModel : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + public void OnPropertyChanged(string propertyName) + { + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + private ImageSource imageSource; + + public ImageSource ImageSource + { + get { return imageSource; } + set { imageSource = value; OnPropertyChanged(nameof(ImageSource)); } + } + + private string name; + + public string Name + { + get { return name; } + set { name = value; OnPropertyChanged(nameof(name)); } + } + + private bool isSelected; + + public bool IsSelected + { + get { return isSelected; } + set { isSelected = value; OnPropertyChanged(nameof(IsSelected)); } + } + + } +} diff --git a/VisualChallenge/VisualChallenge/ViewModels/VisualChallengePageViewModel.cs b/VisualChallenge/VisualChallenge/ViewModels/VisualChallengePageViewModel.cs new file mode 100644 index 0000000..65d8570 --- /dev/null +++ b/VisualChallenge/VisualChallenge/ViewModels/VisualChallengePageViewModel.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Text; +using Xamarin.Forms; + +namespace VisualChallenge.ViewModels +{ + public class VisualChallengePageViewModel : INotifyPropertyChanged + { + + public VisualChallengePageViewModel() + { + BuildCrops(); + } + + public event PropertyChangedEventHandler PropertyChanged; + + public void OnPropertyChanged(string propertyName) + { + this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + + private ObservableCollection crops; + + public ObservableCollection Crops + { + get { return crops; } + set { crops = value; OnPropertyChanged(nameof(Crops)); } + } + + private void BuildCrops() + { + Crops = new ObservableCollection(); + for(var i = 0; i < 21; i++) + { + Crops.Add(new CropItemViewModel + { + Name = $"Item {i}", + IsSelected = false, + ImageSource = ImageSource.FromResource("VisualChallenge.Images.ico_sprouts_color.png") + }); + } + } + + } +} diff --git a/VisualChallenge/VisualChallenge/VisualChallenge.csproj b/VisualChallenge/VisualChallenge/VisualChallenge.csproj index c971abe..9201461 100644 --- a/VisualChallenge/VisualChallenge/VisualChallenge.csproj +++ b/VisualChallenge/VisualChallenge/VisualChallenge.csproj @@ -11,6 +11,15 @@ + + + + + + + + + diff --git a/VisualChallenge/VisualChallenge/VisualChallengePage.xaml b/VisualChallenge/VisualChallenge/VisualChallengePage.xaml index 305cee4..4530bb1 100644 --- a/VisualChallenge/VisualChallenge/VisualChallengePage.xaml +++ b/VisualChallenge/VisualChallenge/VisualChallengePage.xaml @@ -2,22 +2,57 @@ - - + + -